diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.4.5`
+`1.5.0`
 
 
 ## Description
diff --git a/amazonka-ssm.cabal b/amazonka-ssm.cabal
--- a/amazonka-ssm.cabal
+++ b/amazonka-ssm.cabal
@@ -1,13 +1,13 @@
 name:                  amazonka-ssm
-version:               1.4.5
+version:               1.5.0
 synopsis:              Amazon Simple Systems Manager (SSM) SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               OtherLicense
+license:               MPL-2.0
 license-file:          LICENSE
 author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2016 Brendan Hay
+maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+copyright:             Copyright (c) 2013-2017 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 cabal-version:         >= 1.10
@@ -29,14 +29,19 @@
     to get started.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/amazonka.git
+    type:              git
+    location:          git://github.com/brendanhay/amazonka.git
+    subdir:            amazonka-ssm
 
 library
     default-language:  Haskell2010
     hs-source-dirs:    src gen
 
-    ghc-options:       -Wall
+    ghc-options:
+        -Wall
+        -fwarn-incomplete-uni-patterns
+        -fwarn-incomplete-record-updates
+        -funbox-strict-fields
 
     exposed-modules:
           Network.AWS.SSM
@@ -47,22 +52,33 @@
         , Network.AWS.SSM.CreateAssociationBatch
         , Network.AWS.SSM.CreateDocument
         , Network.AWS.SSM.CreateMaintenanceWindow
+        , Network.AWS.SSM.CreatePatchBaseline
+        , Network.AWS.SSM.CreateResourceDataSync
         , Network.AWS.SSM.DeleteActivation
         , Network.AWS.SSM.DeleteAssociation
         , Network.AWS.SSM.DeleteDocument
         , Network.AWS.SSM.DeleteMaintenanceWindow
         , Network.AWS.SSM.DeleteParameter
+        , Network.AWS.SSM.DeleteParameters
+        , Network.AWS.SSM.DeletePatchBaseline
+        , Network.AWS.SSM.DeleteResourceDataSync
         , Network.AWS.SSM.DeregisterManagedInstance
+        , Network.AWS.SSM.DeregisterPatchBaselineForPatchGroup
         , Network.AWS.SSM.DeregisterTargetFromMaintenanceWindow
         , Network.AWS.SSM.DeregisterTaskFromMaintenanceWindow
         , Network.AWS.SSM.DescribeActivations
         , Network.AWS.SSM.DescribeAssociation
         , Network.AWS.SSM.DescribeAutomationExecutions
+        , Network.AWS.SSM.DescribeAvailablePatches
         , Network.AWS.SSM.DescribeDocument
         , Network.AWS.SSM.DescribeDocumentPermission
         , Network.AWS.SSM.DescribeEffectiveInstanceAssociations
+        , Network.AWS.SSM.DescribeEffectivePatchesForPatchBaseline
         , Network.AWS.SSM.DescribeInstanceAssociationsStatus
         , Network.AWS.SSM.DescribeInstanceInformation
+        , Network.AWS.SSM.DescribeInstancePatchStates
+        , Network.AWS.SSM.DescribeInstancePatchStatesForPatchGroup
+        , Network.AWS.SSM.DescribeInstancePatches
         , Network.AWS.SSM.DescribeMaintenanceWindowExecutionTaskInvocations
         , Network.AWS.SSM.DescribeMaintenanceWindowExecutionTasks
         , Network.AWS.SSM.DescribeMaintenanceWindowExecutions
@@ -70,29 +86,49 @@
         , Network.AWS.SSM.DescribeMaintenanceWindowTasks
         , Network.AWS.SSM.DescribeMaintenanceWindows
         , Network.AWS.SSM.DescribeParameters
+        , Network.AWS.SSM.DescribePatchBaselines
+        , Network.AWS.SSM.DescribePatchGroupState
+        , Network.AWS.SSM.DescribePatchGroups
         , Network.AWS.SSM.GetAutomationExecution
         , Network.AWS.SSM.GetCommandInvocation
+        , Network.AWS.SSM.GetDefaultPatchBaseline
+        , Network.AWS.SSM.GetDeployablePatchSnapshotForInstance
         , Network.AWS.SSM.GetDocument
         , Network.AWS.SSM.GetInventory
         , Network.AWS.SSM.GetInventorySchema
         , Network.AWS.SSM.GetMaintenanceWindow
         , Network.AWS.SSM.GetMaintenanceWindowExecution
         , Network.AWS.SSM.GetMaintenanceWindowExecutionTask
+        , Network.AWS.SSM.GetMaintenanceWindowExecutionTaskInvocation
+        , Network.AWS.SSM.GetMaintenanceWindowTask
+        , Network.AWS.SSM.GetParameter
         , Network.AWS.SSM.GetParameterHistory
         , Network.AWS.SSM.GetParameters
+        , Network.AWS.SSM.GetParametersByPath
+        , Network.AWS.SSM.GetPatchBaseline
+        , Network.AWS.SSM.GetPatchBaselineForPatchGroup
+        , Network.AWS.SSM.ListAssociationVersions
         , Network.AWS.SSM.ListAssociations
         , Network.AWS.SSM.ListCommandInvocations
         , Network.AWS.SSM.ListCommands
+        , Network.AWS.SSM.ListComplianceItems
+        , Network.AWS.SSM.ListComplianceSummaries
         , Network.AWS.SSM.ListDocumentVersions
         , Network.AWS.SSM.ListDocuments
         , Network.AWS.SSM.ListInventoryEntries
+        , Network.AWS.SSM.ListResourceComplianceSummaries
+        , Network.AWS.SSM.ListResourceDataSync
         , Network.AWS.SSM.ListTagsForResource
         , Network.AWS.SSM.ModifyDocumentPermission
+        , Network.AWS.SSM.PutComplianceItems
         , Network.AWS.SSM.PutInventory
         , Network.AWS.SSM.PutParameter
+        , Network.AWS.SSM.RegisterDefaultPatchBaseline
+        , Network.AWS.SSM.RegisterPatchBaselineForPatchGroup
         , Network.AWS.SSM.RegisterTargetWithMaintenanceWindow
         , Network.AWS.SSM.RegisterTaskWithMaintenanceWindow
         , Network.AWS.SSM.RemoveTagsFromResource
+        , Network.AWS.SSM.SendAutomationSignal
         , Network.AWS.SSM.SendCommand
         , Network.AWS.SSM.StartAutomationExecution
         , Network.AWS.SSM.StopAutomationExecution
@@ -102,7 +138,10 @@
         , Network.AWS.SSM.UpdateDocument
         , Network.AWS.SSM.UpdateDocumentDefaultVersion
         , Network.AWS.SSM.UpdateMaintenanceWindow
+        , Network.AWS.SSM.UpdateMaintenanceWindowTarget
+        , Network.AWS.SSM.UpdateMaintenanceWindowTask
         , Network.AWS.SSM.UpdateManagedInstanceRole
+        , Network.AWS.SSM.UpdatePatchBaseline
         , Network.AWS.SSM.Waiters
 
     other-modules:
@@ -110,7 +149,7 @@
         , Network.AWS.SSM.Types.Sum
 
     build-depends:
-          amazonka-core == 1.4.5.*
+          amazonka-core == 1.5.0.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ssm-test
@@ -130,9 +169,9 @@
         , Test.AWS.SSM.Internal
 
     build-depends:
-          amazonka-core == 1.4.5.*
-        , amazonka-test == 1.4.5.*
-        , amazonka-ssm == 1.4.5.*
+          amazonka-core == 1.5.0.*
+        , amazonka-test == 1.5.0.*
+        , amazonka-ssm
         , base
         , bytestring
         , tasty
diff --git a/fixture/CreatePatchBaseline.yaml b/fixture/CreatePatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreatePatchBaselineResponse.proto b/fixture/CreatePatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreatePatchBaselineResponse.proto
diff --git a/fixture/CreateResourceDataSync.yaml b/fixture/CreateResourceDataSync.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResourceDataSync.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateResourceDataSyncResponse.proto b/fixture/CreateResourceDataSyncResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateResourceDataSyncResponse.proto
diff --git a/fixture/DeleteParameters.yaml b/fixture/DeleteParameters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteParameters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteParametersResponse.proto b/fixture/DeleteParametersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteParametersResponse.proto
diff --git a/fixture/DeletePatchBaseline.yaml b/fixture/DeletePatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeletePatchBaselineResponse.proto b/fixture/DeletePatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeletePatchBaselineResponse.proto
diff --git a/fixture/DeleteResourceDataSync.yaml b/fixture/DeleteResourceDataSync.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourceDataSync.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteResourceDataSyncResponse.proto b/fixture/DeleteResourceDataSyncResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteResourceDataSyncResponse.proto
diff --git a/fixture/DeregisterPatchBaselineForPatchGroup.yaml b/fixture/DeregisterPatchBaselineForPatchGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterPatchBaselineForPatchGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeregisterPatchBaselineForPatchGroupResponse.proto b/fixture/DeregisterPatchBaselineForPatchGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeregisterPatchBaselineForPatchGroupResponse.proto
diff --git a/fixture/DescribeAvailablePatches.yaml b/fixture/DescribeAvailablePatches.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAvailablePatches.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeAvailablePatchesResponse.proto b/fixture/DescribeAvailablePatchesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeAvailablePatchesResponse.proto
diff --git a/fixture/DescribeEffectivePatchesForPatchBaseline.yaml b/fixture/DescribeEffectivePatchesForPatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEffectivePatchesForPatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeEffectivePatchesForPatchBaselineResponse.proto b/fixture/DescribeEffectivePatchesForPatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeEffectivePatchesForPatchBaselineResponse.proto
diff --git a/fixture/DescribeInstancePatchStates.yaml b/fixture/DescribeInstancePatchStates.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatchStates.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInstancePatchStatesForPatchGroup.yaml b/fixture/DescribeInstancePatchStatesForPatchGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatchStatesForPatchGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInstancePatchStatesForPatchGroupResponse.proto b/fixture/DescribeInstancePatchStatesForPatchGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatchStatesForPatchGroupResponse.proto
diff --git a/fixture/DescribeInstancePatchStatesResponse.proto b/fixture/DescribeInstancePatchStatesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatchStatesResponse.proto
diff --git a/fixture/DescribeInstancePatches.yaml b/fixture/DescribeInstancePatches.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatches.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeInstancePatchesResponse.proto b/fixture/DescribeInstancePatchesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeInstancePatchesResponse.proto
diff --git a/fixture/DescribePatchBaselines.yaml b/fixture/DescribePatchBaselines.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchBaselines.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePatchBaselinesResponse.proto b/fixture/DescribePatchBaselinesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchBaselinesResponse.proto
diff --git a/fixture/DescribePatchGroupState.yaml b/fixture/DescribePatchGroupState.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchGroupState.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePatchGroupStateResponse.proto b/fixture/DescribePatchGroupStateResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchGroupStateResponse.proto
diff --git a/fixture/DescribePatchGroups.yaml b/fixture/DescribePatchGroups.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchGroups.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribePatchGroupsResponse.proto b/fixture/DescribePatchGroupsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribePatchGroupsResponse.proto
diff --git a/fixture/GetDefaultPatchBaseline.yaml b/fixture/GetDefaultPatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDefaultPatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetDefaultPatchBaselineResponse.proto b/fixture/GetDefaultPatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDefaultPatchBaselineResponse.proto
diff --git a/fixture/GetDeployablePatchSnapshotForInstance.yaml b/fixture/GetDeployablePatchSnapshotForInstance.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeployablePatchSnapshotForInstance.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetDeployablePatchSnapshotForInstanceResponse.proto b/fixture/GetDeployablePatchSnapshotForInstanceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetDeployablePatchSnapshotForInstanceResponse.proto
diff --git a/fixture/GetMaintenanceWindowExecutionTaskInvocation.yaml b/fixture/GetMaintenanceWindowExecutionTaskInvocation.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMaintenanceWindowExecutionTaskInvocation.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetMaintenanceWindowExecutionTaskInvocationResponse.proto b/fixture/GetMaintenanceWindowExecutionTaskInvocationResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMaintenanceWindowExecutionTaskInvocationResponse.proto
diff --git a/fixture/GetMaintenanceWindowTask.yaml b/fixture/GetMaintenanceWindowTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetMaintenanceWindowTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetMaintenanceWindowTaskResponse.proto b/fixture/GetMaintenanceWindowTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetMaintenanceWindowTaskResponse.proto
diff --git a/fixture/GetParameter.yaml b/fixture/GetParameter.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetParameter.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetParameterResponse.proto b/fixture/GetParameterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetParameterResponse.proto
diff --git a/fixture/GetParametersByPath.yaml b/fixture/GetParametersByPath.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetParametersByPath.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetParametersByPathResponse.proto b/fixture/GetParametersByPathResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetParametersByPathResponse.proto
diff --git a/fixture/GetPatchBaseline.yaml b/fixture/GetPatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPatchBaselineForPatchGroup.yaml b/fixture/GetPatchBaselineForPatchGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetPatchBaselineForPatchGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetPatchBaselineForPatchGroupResponse.proto b/fixture/GetPatchBaselineForPatchGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPatchBaselineForPatchGroupResponse.proto
diff --git a/fixture/GetPatchBaselineResponse.proto b/fixture/GetPatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetPatchBaselineResponse.proto
diff --git a/fixture/ListAssociationVersions.yaml b/fixture/ListAssociationVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssociationVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListAssociationVersionsResponse.proto b/fixture/ListAssociationVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListAssociationVersionsResponse.proto
diff --git a/fixture/ListComplianceItems.yaml b/fixture/ListComplianceItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListComplianceItems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListComplianceItemsResponse.proto b/fixture/ListComplianceItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListComplianceItemsResponse.proto
diff --git a/fixture/ListComplianceSummaries.yaml b/fixture/ListComplianceSummaries.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListComplianceSummaries.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListComplianceSummariesResponse.proto b/fixture/ListComplianceSummariesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListComplianceSummariesResponse.proto
diff --git a/fixture/ListResourceComplianceSummaries.yaml b/fixture/ListResourceComplianceSummaries.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourceComplianceSummaries.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListResourceComplianceSummariesResponse.proto b/fixture/ListResourceComplianceSummariesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourceComplianceSummariesResponse.proto
diff --git a/fixture/ListResourceDataSync.yaml b/fixture/ListResourceDataSync.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourceDataSync.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListResourceDataSyncResponse.proto b/fixture/ListResourceDataSyncResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListResourceDataSyncResponse.proto
diff --git a/fixture/PutComplianceItems.yaml b/fixture/PutComplianceItems.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutComplianceItems.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutComplianceItemsResponse.proto b/fixture/PutComplianceItemsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutComplianceItemsResponse.proto
diff --git a/fixture/RegisterDefaultPatchBaseline.yaml b/fixture/RegisterDefaultPatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterDefaultPatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RegisterDefaultPatchBaselineResponse.proto b/fixture/RegisterDefaultPatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterDefaultPatchBaselineResponse.proto
diff --git a/fixture/RegisterPatchBaselineForPatchGroup.yaml b/fixture/RegisterPatchBaselineForPatchGroup.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterPatchBaselineForPatchGroup.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RegisterPatchBaselineForPatchGroupResponse.proto b/fixture/RegisterPatchBaselineForPatchGroupResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RegisterPatchBaselineForPatchGroupResponse.proto
diff --git a/fixture/SendAutomationSignal.yaml b/fixture/SendAutomationSignal.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SendAutomationSignal.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendAutomationSignalResponse.proto b/fixture/SendAutomationSignalResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SendAutomationSignalResponse.proto
diff --git a/fixture/UpdateMaintenanceWindowTarget.yaml b/fixture/UpdateMaintenanceWindowTarget.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMaintenanceWindowTarget.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateMaintenanceWindowTargetResponse.proto b/fixture/UpdateMaintenanceWindowTargetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMaintenanceWindowTargetResponse.proto
diff --git a/fixture/UpdateMaintenanceWindowTask.yaml b/fixture/UpdateMaintenanceWindowTask.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMaintenanceWindowTask.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateMaintenanceWindowTaskResponse.proto b/fixture/UpdateMaintenanceWindowTaskResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateMaintenanceWindowTaskResponse.proto
diff --git a/fixture/UpdatePatchBaseline.yaml b/fixture/UpdatePatchBaseline.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePatchBaseline.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/ssm/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  ssm.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdatePatchBaselineResponse.proto b/fixture/UpdatePatchBaselineResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdatePatchBaselineResponse.proto
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
@@ -5,19 +5,22 @@
 
 -- |
 -- Module      : Network.AWS.SSM
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Amazon EC2 Systems Manager is a collection of capabilities that helps you automate management tasks such as collecting system inventory, applying operating system (OS) patches, automating the creation of Amazon Machine Images (AMIs), and configuring operating systems (OSs) and applications at scale. Systems Manager works with managed instances: Amazon EC2 instances and servers or virtual machines (VMs) in your on-premises environment that are configured for Systems Manager.
+-- __Amazon EC2 Systems Manager__
 --
+-- Amazon EC2 Systems Manager is a collection of capabilities that helps you automate management tasks such as collecting system inventory, applying operating system (OS) patches, automating the creation of Amazon Machine Images (AMIs), and configuring operating systems (OSs) and applications at scale. Systems Manager lets you remotely and securely manage the configuration of your managed instances. A /managed instance/ is any Amazon EC2 instance or on-premises machine in your hybrid environment that has been configured for Systems Manager.
 --
--- This references is intended to be used with the EC2 Systems Manager User Guide (<http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/systems-manager.html Linux> ) (<http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/systems-manager.html Windows> ).
+-- This reference is intended to be used with the <http://docs.aws.amazon.com/systems-manager/latest/userguide/ Amazon EC2 Systems Manager User Guide> .
 --
--- To get started, verify prerequisites and configure managed instances (<http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/systems-manager-prereqs.html Linux> ) (<http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/systems-manager-prereqs.html Windows> ).
+-- To get started, verify prerequisites and configure managed instances. For more information, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up.html Systems Manager Prerequisites> .
 --
+-- For information about other API actions you can perform on Amazon EC2 instances, see the <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ Amazon EC2 API Reference> . For information about how to use a Query API, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/making-api-requests.html Making API Requests> .
+--
 module Network.AWS.SSM
     (
     -- * Service Configuration
@@ -32,6 +35,9 @@
     -- ** InvalidDocumentVersion
     , _InvalidDocumentVersion
 
+    -- ** HierarchyTypeMismatchException
+    , _HierarchyTypeMismatchException
+
     -- ** InvalidSchedule
     , _InvalidSchedule
 
@@ -41,6 +47,15 @@
     -- ** InvalidPluginName
     , _InvalidPluginName
 
+    -- ** FeatureNotAvailableException
+    , _FeatureNotAvailableException
+
+    -- ** InvalidAutomationSignalException
+    , _InvalidAutomationSignalException
+
+    -- ** ResourceDataSyncCountExceededException
+    , _ResourceDataSyncCountExceededException
+
     -- ** UnsupportedPlatformType
     , _UnsupportedPlatformType
 
@@ -50,12 +65,21 @@
     -- ** InvalidItemContentException
     , _InvalidItemContentException
 
+    -- ** InvalidFilterOption
+    , _InvalidFilterOption
+
+    -- ** ParameterPatternMismatchException
+    , _ParameterPatternMismatchException
+
     -- ** InvalidPermissionType
     , _InvalidPermissionType
 
     -- ** AssociatedInstances
     , _AssociatedInstances
 
+    -- ** UnsupportedOperatingSystem
+    , _UnsupportedOperatingSystem
+
     -- ** InvalidInstanceId
     , _InvalidInstanceId
 
@@ -77,6 +101,9 @@
     -- ** ResourceLimitExceededException
     , _ResourceLimitExceededException
 
+    -- ** ResourceDataSyncInvalidConfigurationException
+    , _ResourceDataSyncInvalidConfigurationException
+
     -- ** InvalidCommandId
     , _InvalidCommandId
 
@@ -107,9 +134,18 @@
     -- ** InvalidTypeNameException
     , _InvalidTypeNameException
 
+    -- ** ResourceDataSyncNotFoundException
+    , _ResourceDataSyncNotFoundException
+
+    -- ** ParameterMaxVersionLimitExceeded
+    , _ParameterMaxVersionLimitExceeded
+
     -- ** ItemSizeLimitExceededException
     , _ItemSizeLimitExceededException
 
+    -- ** ResourceDataSyncAlreadyExistsException
+    , _ResourceDataSyncAlreadyExistsException
+
     -- ** DoesNotExistException
     , _DoesNotExistException
 
@@ -131,6 +167,9 @@
     -- ** AssociationAlreadyExists
     , _AssociationAlreadyExists
 
+    -- ** ComplianceTypeCountLimitExceededException
+    , _ComplianceTypeCountLimitExceededException
+
     -- ** InvalidDocumentContent
     , _InvalidDocumentContent
 
@@ -140,15 +179,27 @@
     -- ** AssociationLimitExceeded
     , _AssociationLimitExceeded
 
+    -- ** InvalidAssociationVersion
+    , _InvalidAssociationVersion
+
     -- ** AssociationDoesNotExist
     , _AssociationDoesNotExist
 
     -- ** ParameterNotFound
     , _ParameterNotFound
 
+    -- ** TargetInUseException
+    , _TargetInUseException
+
     -- ** InternalServerError
     , _InternalServerError
 
+    -- ** UnsupportedInventoryItemContextException
+    , _UnsupportedInventoryItemContextException
+
+    -- ** AssociationVersionLimitExceeded
+    , _AssociationVersionLimitExceeded
+
     -- ** InvalidRole
     , _InvalidRole
 
@@ -164,6 +215,9 @@
     -- ** MaxDocumentSizeExceeded
     , _MaxDocumentSizeExceeded
 
+    -- ** ParameterVersionNotFound
+    , _ParameterVersionNotFound
+
     -- ** InvalidUpdate
     , _InvalidUpdate
 
@@ -173,6 +227,9 @@
     -- ** InvalidTarget
     , _InvalidTarget
 
+    -- ** HierarchyLevelLimitExceededException
+    , _HierarchyLevelLimitExceededException
+
     -- ** InvalidDocumentOperation
     , _InvalidDocumentOperation
 
@@ -194,12 +251,21 @@
     -- ** InvalidResourceId
     , _InvalidResourceId
 
+    -- ** InvalidAllowedPatternException
+    , _InvalidAllowedPatternException
+
     -- ** InvalidNotificationConfig
     , _InvalidNotificationConfig
 
+    -- ** InvalidInventoryItemContextException
+    , _InvalidInventoryItemContextException
+
     -- ** TotalSizeLimitExceededException
     , _TotalSizeLimitExceededException
 
+    -- ** SubTypeCountLimitExceededException
+    , _SubTypeCountLimitExceededException
+
     -- ** TooManyTagsError
     , _TooManyTagsError
 
@@ -215,30 +281,63 @@
     -- ** DocumentLimitExceeded
     , _DocumentLimitExceeded
 
+    -- ** AlreadyExistsException
+    , _AlreadyExistsException
+
     -- ** InvalidFilter
     , _InvalidFilter
 
+    -- ** ResourceInUseException
+    , _ResourceInUseException
+
     -- * Waiters
     -- $waiters
 
     -- * Operations
     -- $operations
 
+    -- ** DescribeInstancePatches
+    , module Network.AWS.SSM.DescribeInstancePatches
+
     -- ** GetInventory
     , module Network.AWS.SSM.GetInventory
 
     -- ** GetParameters
     , module Network.AWS.SSM.GetParameters
 
+    -- ** DeletePatchBaseline
+    , module Network.AWS.SSM.DeletePatchBaseline
+
+    -- ** UpdatePatchBaseline
+    , module Network.AWS.SSM.UpdatePatchBaseline
+
+    -- ** GetParameter
+    , module Network.AWS.SSM.GetParameter
+
     -- ** UpdateDocumentDefaultVersion
     , module Network.AWS.SSM.UpdateDocumentDefaultVersion
 
-    -- ** DescribeParameters
+    -- ** ListResourceDataSync
+    , module Network.AWS.SSM.ListResourceDataSync
+
+    -- ** GetDeployablePatchSnapshotForInstance
+    , module Network.AWS.SSM.GetDeployablePatchSnapshotForInstance
+
+    -- ** DescribeParameters (Paginated)
     , module Network.AWS.SSM.DescribeParameters
 
-    -- ** DescribeActivations
+    -- ** GetParametersByPath
+    , module Network.AWS.SSM.GetParametersByPath
+
+    -- ** PutComplianceItems
+    , module Network.AWS.SSM.PutComplianceItems
+
+    -- ** DescribeActivations (Paginated)
     , module Network.AWS.SSM.DescribeActivations
 
+    -- ** GetMaintenanceWindowTask
+    , module Network.AWS.SSM.GetMaintenanceWindowTask
+
     -- ** ListTagsForResource
     , module Network.AWS.SSM.ListTagsForResource
 
@@ -257,6 +356,9 @@
     -- ** GetInventorySchema
     , module Network.AWS.SSM.GetInventorySchema
 
+    -- ** ListComplianceSummaries
+    , module Network.AWS.SSM.ListComplianceSummaries
+
     -- ** StartAutomationExecution
     , module Network.AWS.SSM.StartAutomationExecution
 
@@ -272,6 +374,9 @@
     -- ** DescribeMaintenanceWindowExecutionTasks
     , module Network.AWS.SSM.DescribeMaintenanceWindowExecutionTasks
 
+    -- ** GetDefaultPatchBaseline
+    , module Network.AWS.SSM.GetDefaultPatchBaseline
+
     -- ** GetMaintenanceWindowExecutionTask
     , module Network.AWS.SSM.GetMaintenanceWindowExecutionTask
 
@@ -281,21 +386,42 @@
     -- ** RemoveTagsFromResource
     , module Network.AWS.SSM.RemoveTagsFromResource
 
+    -- ** DeleteParameters
+    , module Network.AWS.SSM.DeleteParameters
+
+    -- ** DescribePatchGroupState
+    , module Network.AWS.SSM.DescribePatchGroupState
+
     -- ** ListCommandInvocations (Paginated)
     , module Network.AWS.SSM.ListCommandInvocations
 
     -- ** DeregisterTargetFromMaintenanceWindow
     , module Network.AWS.SSM.DeregisterTargetFromMaintenanceWindow
 
+    -- ** DescribeEffectivePatchesForPatchBaseline
+    , module Network.AWS.SSM.DescribeEffectivePatchesForPatchBaseline
+
     -- ** DescribeMaintenanceWindowTargets
     , module Network.AWS.SSM.DescribeMaintenanceWindowTargets
 
+    -- ** RegisterPatchBaselineForPatchGroup
+    , module Network.AWS.SSM.RegisterPatchBaselineForPatchGroup
+
     -- ** ListDocuments (Paginated)
     , module Network.AWS.SSM.ListDocuments
 
+    -- ** DescribeInstancePatchStates
+    , module Network.AWS.SSM.DescribeInstancePatchStates
+
+    -- ** GetPatchBaselineForPatchGroup
+    , module Network.AWS.SSM.GetPatchBaselineForPatchGroup
+
     -- ** UpdateManagedInstanceRole
     , module Network.AWS.SSM.UpdateManagedInstanceRole
 
+    -- ** ListComplianceItems
+    , module Network.AWS.SSM.ListComplianceItems
+
     -- ** GetDocument
     , module Network.AWS.SSM.GetDocument
 
@@ -308,6 +434,9 @@
     -- ** GetCommandInvocation
     , module Network.AWS.SSM.GetCommandInvocation
 
+    -- ** DescribeInstancePatchStatesForPatchGroup
+    , module Network.AWS.SSM.DescribeInstancePatchStatesForPatchGroup
+
     -- ** DeregisterManagedInstance
     , module Network.AWS.SSM.DeregisterManagedInstance
 
@@ -317,12 +446,24 @@
     -- ** ModifyDocumentPermission
     , module Network.AWS.SSM.ModifyDocumentPermission
 
+    -- ** DeleteResourceDataSync
+    , module Network.AWS.SSM.DeleteResourceDataSync
+
     -- ** UpdateAssociationStatus
     , module Network.AWS.SSM.UpdateAssociationStatus
 
+    -- ** DescribeAvailablePatches
+    , module Network.AWS.SSM.DescribeAvailablePatches
+
     -- ** ListDocumentVersions
     , module Network.AWS.SSM.ListDocumentVersions
 
+    -- ** DeregisterPatchBaselineForPatchGroup
+    , module Network.AWS.SSM.DeregisterPatchBaselineForPatchGroup
+
+    -- ** DescribePatchGroups
+    , module Network.AWS.SSM.DescribePatchGroups
+
     -- ** GetMaintenanceWindow
     , module Network.AWS.SSM.GetMaintenanceWindow
 
@@ -332,6 +473,15 @@
     -- ** RegisterTaskWithMaintenanceWindow
     , module Network.AWS.SSM.RegisterTaskWithMaintenanceWindow
 
+    -- ** RegisterDefaultPatchBaseline
+    , module Network.AWS.SSM.RegisterDefaultPatchBaseline
+
+    -- ** ListResourceComplianceSummaries
+    , module Network.AWS.SSM.ListResourceComplianceSummaries
+
+    -- ** ListAssociationVersions
+    , module Network.AWS.SSM.ListAssociationVersions
+
     -- ** DescribeMaintenanceWindowTasks
     , module Network.AWS.SSM.DescribeMaintenanceWindowTasks
 
@@ -344,6 +494,9 @@
     -- ** ListInventoryEntries
     , module Network.AWS.SSM.ListInventoryEntries
 
+    -- ** UpdateMaintenanceWindowTask
+    , module Network.AWS.SSM.UpdateMaintenanceWindowTask
+
     -- ** GetParameterHistory
     , module Network.AWS.SSM.GetParameterHistory
 
@@ -356,16 +509,22 @@
     -- ** GetMaintenanceWindowExecution
     , module Network.AWS.SSM.GetMaintenanceWindowExecution
 
+    -- ** SendAutomationSignal
+    , module Network.AWS.SSM.SendAutomationSignal
+
     -- ** PutParameter
     , module Network.AWS.SSM.PutParameter
 
     -- ** DescribeMaintenanceWindowExecutionTaskInvocations
     , module Network.AWS.SSM.DescribeMaintenanceWindowExecutionTaskInvocations
 
+    -- ** GetMaintenanceWindowExecutionTaskInvocation
+    , module Network.AWS.SSM.GetMaintenanceWindowExecutionTaskInvocation
+
     -- ** DeleteParameter
     , module Network.AWS.SSM.DeleteParameter
 
-    -- ** DescribeInstanceInformation
+    -- ** DescribeInstanceInformation (Paginated)
     , module Network.AWS.SSM.DescribeInstanceInformation
 
     -- ** ListAssociations (Paginated)
@@ -392,6 +551,12 @@
     -- ** SendCommand
     , module Network.AWS.SSM.SendCommand
 
+    -- ** DescribePatchBaselines
+    , module Network.AWS.SSM.DescribePatchBaselines
+
+    -- ** GetPatchBaseline
+    , module Network.AWS.SSM.GetPatchBaseline
+
     -- ** RegisterTargetWithMaintenanceWindow
     , module Network.AWS.SSM.RegisterTargetWithMaintenanceWindow
 
@@ -410,6 +575,15 @@
     -- ** CreateAssociationBatch
     , module Network.AWS.SSM.CreateAssociationBatch
 
+    -- ** UpdateMaintenanceWindowTarget
+    , module Network.AWS.SSM.UpdateMaintenanceWindowTarget
+
+    -- ** CreateResourceDataSync
+    , module Network.AWS.SSM.CreateResourceDataSync
+
+    -- ** CreatePatchBaseline
+    , module Network.AWS.SSM.CreatePatchBaseline
+
     -- * Types
 
     -- ** AssociationFilterKey
@@ -436,6 +610,15 @@
     -- ** CommandStatus
     , CommandStatus (..)
 
+    -- ** ComplianceQueryOperatorType
+    , ComplianceQueryOperatorType (..)
+
+    -- ** ComplianceSeverity
+    , ComplianceSeverity (..)
+
+    -- ** ComplianceStatus
+    , ComplianceStatus (..)
+
     -- ** DescribeActivationsFilterKeys
     , DescribeActivationsFilterKeys (..)
 
@@ -463,12 +646,18 @@
     -- ** InstanceInformationFilterKey
     , InstanceInformationFilterKey (..)
 
+    -- ** InstancePatchStateOperatorType
+    , InstancePatchStateOperatorType (..)
+
     -- ** InventoryAttributeDataType
     , InventoryAttributeDataType (..)
 
     -- ** InventoryQueryOperatorType
     , InventoryQueryOperatorType (..)
 
+    -- ** LastResourceDataSyncStatus
+    , LastResourceDataSyncStatus (..)
+
     -- ** MaintenanceWindowExecutionStatus
     , MaintenanceWindowExecutionStatus (..)
 
@@ -484,24 +673,48 @@
     -- ** NotificationType
     , NotificationType (..)
 
+    -- ** OperatingSystem
+    , OperatingSystem (..)
+
     -- ** ParameterType
     , ParameterType (..)
 
     -- ** ParametersFilterKey
     , ParametersFilterKey (..)
 
+    -- ** PatchComplianceDataState
+    , PatchComplianceDataState (..)
+
+    -- ** PatchComplianceLevel
+    , PatchComplianceLevel (..)
+
+    -- ** PatchDeploymentStatus
+    , PatchDeploymentStatus (..)
+
+    -- ** PatchFilterKey
+    , PatchFilterKey (..)
+
+    -- ** PatchOperationType
+    , PatchOperationType (..)
+
     -- ** PingStatus
     , PingStatus (..)
 
     -- ** PlatformType
     , PlatformType (..)
 
+    -- ** ResourceDataSyncS3Format
+    , ResourceDataSyncS3Format (..)
+
     -- ** ResourceType
     , ResourceType (..)
 
     -- ** ResourceTypeForTagging
     , ResourceTypeForTagging (..)
 
+    -- ** SignalType
+    , SignalType (..)
+
     -- ** Activation
     , Activation
     , activation
@@ -526,6 +739,8 @@
     , aName
     , aTargets
     , aDocumentVersion
+    , aAssociationVersion
+    , aAssociationName
 
     -- ** AssociationDescription
     , AssociationDescription
@@ -544,6 +759,8 @@
     , adTargets
     , adParameters
     , adDocumentVersion
+    , adAssociationVersion
+    , adAssociationName
 
     -- ** AssociationFilter
     , AssociationFilter
@@ -566,6 +783,20 @@
     , asName
     , asMessage
 
+    -- ** AssociationVersionInfo
+    , AssociationVersionInfo
+    , associationVersionInfo
+    , aviAssociationId
+    , aviCreatedDate
+    , aviScheduleExpression
+    , aviName
+    , aviOutputLocation
+    , aviTargets
+    , aviParameters
+    , aviDocumentVersion
+    , aviAssociationVersion
+    , aviAssociationName
+
     -- ** AutomationExecution
     , AutomationExecution
     , automationExecution
@@ -632,20 +863,20 @@
     -- ** CommandInvocation
     , CommandInvocation
     , commandInvocation
-    , ciInstanceId
-    , ciStatus
-    , ciNotificationConfig
-    , ciCommandPlugins
-    , ciDocumentName
-    , ciStandardErrorURL
-    , ciStatusDetails
-    , ciStandardOutputURL
-    , ciCommandId
-    , ciComment
-    , ciTraceOutput
-    , ciInstanceName
-    , ciRequestedDateTime
-    , ciServiceRole
+    , comInstanceId
+    , comStatus
+    , comNotificationConfig
+    , comCommandPlugins
+    , comDocumentName
+    , comStandardErrorURL
+    , comStatusDetails
+    , comStandardOutputURL
+    , comCommandId
+    , comComment
+    , comTraceOutput
+    , comInstanceName
+    , comRequestedDateTime
+    , comServiceRole
 
     -- ** CommandPlugin
     , CommandPlugin
@@ -663,6 +894,55 @@
     , cpOutputS3BucketName
     , cpResponseFinishDateTime
 
+    -- ** ComplianceExecutionSummary
+    , ComplianceExecutionSummary
+    , complianceExecutionSummary
+    , cesExecutionId
+    , cesExecutionType
+    , cesExecutionTime
+
+    -- ** ComplianceItem
+    , ComplianceItem
+    , complianceItem
+    , ciStatus
+    , ciResourceId
+    , ciResourceType
+    , ciSeverity
+    , ciExecutionSummary
+    , ciDetails
+    , ciId
+    , ciComplianceType
+    , ciTitle
+
+    -- ** ComplianceItemEntry
+    , ComplianceItemEntry
+    , complianceItemEntry
+    , cieDetails
+    , cieId
+    , cieTitle
+    , cieSeverity
+    , cieStatus
+
+    -- ** ComplianceStringFilter
+    , ComplianceStringFilter
+    , complianceStringFilter
+    , csfValues
+    , csfKey
+    , csfType
+
+    -- ** ComplianceSummaryItem
+    , ComplianceSummaryItem
+    , complianceSummaryItem
+    , csiNonCompliantSummary
+    , csiCompliantSummary
+    , csiComplianceType
+
+    -- ** CompliantSummary
+    , CompliantSummary
+    , compliantSummary
+    , csCompliantCount
+    , csSeveritySummary
+
     -- ** CreateAssociationBatchRequestEntry
     , CreateAssociationBatchRequestEntry
     , createAssociationBatchRequestEntry
@@ -672,6 +952,7 @@
     , cabreTargets
     , cabreParameters
     , cabreDocumentVersion
+    , cabreAssociationName
     , cabreName
 
     -- ** DescribeActivationsFilter
@@ -703,6 +984,7 @@
     , dParameters
     , dDocumentVersion
     , dDescription
+    , dTags
     , dLatestVersion
 
     -- ** DocumentFilter
@@ -720,7 +1002,14 @@
     , diPlatformTypes
     , diName
     , diDocumentVersion
+    , diTags
 
+    -- ** DocumentKeyValuesFilter
+    , DocumentKeyValuesFilter
+    , documentKeyValuesFilter
+    , dkvfValues
+    , dkvfKey
+
     -- ** DocumentParameter
     , DocumentParameter
     , documentParameter
@@ -737,6 +1026,12 @@
     , dviDocumentVersion
     , dviIsDefaultVersion
 
+    -- ** EffectivePatch
+    , EffectivePatch
+    , effectivePatch
+    , epPatch
+    , epPatchStatus
+
     -- ** FailedCreateAssociation
     , FailedCreateAssociation
     , failedCreateAssociation
@@ -744,6 +1039,13 @@
     , fcaFault
     , fcaMessage
 
+    -- ** FailureDetails
+    , FailureDetails
+    , failureDetails
+    , fdFailureType
+    , fdFailureStage
+    , fdDetails
+
     -- ** InstanceAggregatedAssociationOverview
     , InstanceAggregatedAssociationOverview
     , instanceAggregatedAssociationOverview
@@ -756,6 +1058,7 @@
     , iaAssociationId
     , iaInstanceId
     , iaContent
+    , iaAssociationVersion
 
     -- ** InstanceAssociationOutputLocation
     , InstanceAssociationOutputLocation
@@ -779,7 +1082,9 @@
     , iasiName
     , iasiErrorCode
     , iasiDocumentVersion
+    , iasiAssociationVersion
     , iasiExecutionDate
+    , iasiAssociationName
 
     -- ** InstanceInformation
     , InstanceInformation
@@ -816,6 +1121,30 @@
     , iisfKey
     , iisfValues
 
+    -- ** InstancePatchState
+    , InstancePatchState
+    , instancePatchState
+    , ipsOwnerInformation
+    , ipsFailedCount
+    , ipsInstalledOtherCount
+    , ipsMissingCount
+    , ipsNotApplicableCount
+    , ipsInstalledCount
+    , ipsSnapshotId
+    , ipsInstanceId
+    , ipsPatchGroup
+    , ipsBaselineId
+    , ipsOperationStartTime
+    , ipsOperationEndTime
+    , ipsOperation
+
+    -- ** InstancePatchStateFilter
+    , InstancePatchStateFilter
+    , instancePatchStateFilter
+    , ipsfKey
+    , ipsfValues
+    , ipsfType
+
     -- ** InventoryFilter
     , InventoryFilter
     , inventoryFilter
@@ -826,6 +1155,7 @@
     -- ** InventoryItem
     , InventoryItem
     , inventoryItem
+    , iiContext
     , iiContentHash
     , iiContent
     , iiTypeName
@@ -867,6 +1197,12 @@
     , liS3BucketName
     , liS3Region
 
+    -- ** MaintenanceWindowAutomationParameters
+    , MaintenanceWindowAutomationParameters
+    , maintenanceWindowAutomationParameters
+    , mwapParameters
+    , mwapDocumentVersion
+
     -- ** MaintenanceWindowExecution
     , MaintenanceWindowExecution
     , maintenanceWindowExecution
@@ -898,6 +1234,7 @@
     , mwetiiStartTime
     , mwetiiInvocationId
     , mwetiiOwnerInformation
+    , mwetiiTaskType
     , mwetiiWindowTargetId
     , mwetiiWindowExecutionId
     , mwetiiStatusDetails
@@ -916,16 +1253,45 @@
     , mwiEnabled
     , mwiName
     , mwiCutoff
+    , mwiDescription
     , mwiDuration
     , mwiWindowId
 
+    -- ** MaintenanceWindowLambdaParameters
+    , MaintenanceWindowLambdaParameters
+    , maintenanceWindowLambdaParameters
+    , mwlpPayload
+    , mwlpQualifier
+    , mwlpClientContext
+
+    -- ** MaintenanceWindowRunCommandParameters
+    , MaintenanceWindowRunCommandParameters
+    , maintenanceWindowRunCommandParameters
+    , mwrcpServiceRoleARN
+    , mwrcpNotificationConfig
+    , mwrcpDocumentHashType
+    , mwrcpOutputS3KeyPrefix
+    , mwrcpParameters
+    , mwrcpDocumentHash
+    , mwrcpTimeoutSeconds
+    , mwrcpComment
+    , mwrcpOutputS3BucketName
+
+    -- ** MaintenanceWindowStepFunctionsParameters
+    , MaintenanceWindowStepFunctionsParameters
+    , maintenanceWindowStepFunctionsParameters
+    , mwsfpInput
+    , mwsfpName
+
     -- ** MaintenanceWindowTarget
     , MaintenanceWindowTarget
     , maintenanceWindowTarget
     , mResourceType
     , mOwnerInformation
     , mWindowTargetId
+    , mName
     , mTargets
+    , mDescription
     , mWindowId
 
     -- ** MaintenanceWindowTask
@@ -937,17 +1303,33 @@
     , mwtPriority
     , mwtTaskARN
     , mwtMaxErrors
+    , mwtName
     , mwtTargets
     , mwtLoggingInfo
     , mwtType
+    , mwtDescription
     , mwtMaxConcurrency
     , mwtWindowId
 
+    -- ** MaintenanceWindowTaskInvocationParameters
+    , MaintenanceWindowTaskInvocationParameters
+    , maintenanceWindowTaskInvocationParameters
+    , mwtipAutomation
+    , mwtipStepFunctions
+    , mwtipRunCommand
+    , mwtipLambda
+
     -- ** MaintenanceWindowTaskParameterValueExpression
     , MaintenanceWindowTaskParameterValueExpression
     , maintenanceWindowTaskParameterValueExpression
     , mwtpveValues
 
+    -- ** NonCompliantSummary
+    , NonCompliantSummary
+    , nonCompliantSummary
+    , ncsNonCompliantCount
+    , ncsSeveritySummary
+
     -- ** NotificationConfig
     , NotificationConfig
     , notificationConfig
@@ -960,6 +1342,7 @@
     , parameter
     , pValue
     , pName
+    , pVersion
     , pType
 
     -- ** ParameterHistory
@@ -969,7 +1352,9 @@
     , phKeyId
     , phValue
     , phName
+    , phVersion
     , phLastModifiedUser
+    , phAllowedPattern
     , phType
     , phDescription
 
@@ -979,16 +1364,134 @@
     , pmLastModifiedDate
     , pmKeyId
     , pmName
+    , pmVersion
     , pmLastModifiedUser
+    , pmAllowedPattern
     , pmType
     , pmDescription
 
+    -- ** ParameterStringFilter
+    , ParameterStringFilter
+    , parameterStringFilter
+    , psfValues
+    , psfOption
+    , psfKey
+
     -- ** ParametersFilter
     , ParametersFilter
     , parametersFilter
+    , pKey
+    , pValues
+
+    -- ** Patch
+    , Patch
+    , patch
+    , pVendor
+    , pMsrcSeverity
+    , pProductFamily
+    , pClassification
+    , pMsrcNumber
+    , pLanguage
+    , pKbNumber
+    , pContentURL
+    , pId
+    , pReleaseDate
+    , pTitle
+    , pProduct
+    , pDescription
+
+    -- ** PatchBaselineIdentity
+    , PatchBaselineIdentity
+    , patchBaselineIdentity
+    , pbiBaselineName
+    , pbiBaselineDescription
+    , pbiOperatingSystem
+    , pbiDefaultBaseline
+    , pbiBaselineId
+
+    -- ** PatchComplianceData
+    , PatchComplianceData
+    , patchComplianceData
+    , pcdTitle
+    , pcdKBId
+    , pcdClassification
+    , pcdSeverity
+    , pcdState
+    , pcdInstalledTime
+
+    -- ** PatchFilter
+    , PatchFilter
+    , patchFilter
     , pfKey
     , pfValues
 
+    -- ** PatchFilterGroup
+    , PatchFilterGroup
+    , patchFilterGroup
+    , pfgPatchFilters
+
+    -- ** PatchGroupPatchBaselineMapping
+    , PatchGroupPatchBaselineMapping
+    , patchGroupPatchBaselineMapping
+    , pgpbmBaselineIdentity
+    , pgpbmPatchGroup
+
+    -- ** PatchOrchestratorFilter
+    , PatchOrchestratorFilter
+    , patchOrchestratorFilter
+    , pofValues
+    , pofKey
+
+    -- ** PatchRule
+    , PatchRule
+    , patchRule
+    , prComplianceLevel
+    , prPatchFilterGroup
+    , prApproveAfterDays
+
+    -- ** PatchRuleGroup
+    , PatchRuleGroup
+    , patchRuleGroup
+    , prgPatchRules
+
+    -- ** PatchStatus
+    , PatchStatus
+    , patchStatus
+    , psApprovalDate
+    , psDeploymentStatus
+    , psComplianceLevel
+
+    -- ** ResourceComplianceSummaryItem
+    , ResourceComplianceSummaryItem
+    , resourceComplianceSummaryItem
+    , rcsiNonCompliantSummary
+    , rcsiStatus
+    , rcsiResourceId
+    , rcsiResourceType
+    , rcsiCompliantSummary
+    , rcsiExecutionSummary
+    , rcsiOverallSeverity
+    , rcsiComplianceType
+
+    -- ** ResourceDataSyncItem
+    , ResourceDataSyncItem
+    , resourceDataSyncItem
+    , rdsiSyncCreatedTime
+    , rdsiLastSyncTime
+    , rdsiSyncName
+    , rdsiLastStatus
+    , rdsiS3Destination
+    , rdsiLastSuccessfulSyncTime
+
+    -- ** ResourceDataSyncS3Destination
+    , ResourceDataSyncS3Destination
+    , resourceDataSyncS3Destination
+    , rdssdPrefix
+    , rdssdAWSKMSKeyARN
+    , rdssdBucketName
+    , rdssdSyncFormat
+    , rdssdRegion
+
     -- ** ResultAttribute
     , ResultAttribute
     , resultAttribute
@@ -1006,9 +1509,20 @@
     , s3OutputURL
     , souOutputURL
 
+    -- ** SeveritySummary
+    , SeveritySummary
+    , severitySummary
+    , ssLowCount
+    , ssUnspecifiedCount
+    , ssHighCount
+    , ssMediumCount
+    , ssInformationalCount
+    , ssCriticalCount
+
     -- ** StepExecution
     , StepExecution
     , stepExecution
+    , seFailureDetails
     , seInputs
     , seStepName
     , seExecutionEndTime
@@ -1033,70 +1547,104 @@
     , tKey
     ) where
 
-import           Network.AWS.SSM.AddTagsToResource
-import           Network.AWS.SSM.CancelCommand
-import           Network.AWS.SSM.CreateActivation
-import           Network.AWS.SSM.CreateAssociation
-import           Network.AWS.SSM.CreateAssociationBatch
-import           Network.AWS.SSM.CreateDocument
-import           Network.AWS.SSM.CreateMaintenanceWindow
-import           Network.AWS.SSM.DeleteActivation
-import           Network.AWS.SSM.DeleteAssociation
-import           Network.AWS.SSM.DeleteDocument
-import           Network.AWS.SSM.DeleteMaintenanceWindow
-import           Network.AWS.SSM.DeleteParameter
-import           Network.AWS.SSM.DeregisterManagedInstance
-import           Network.AWS.SSM.DeregisterTargetFromMaintenanceWindow
-import           Network.AWS.SSM.DeregisterTaskFromMaintenanceWindow
-import           Network.AWS.SSM.DescribeActivations
-import           Network.AWS.SSM.DescribeAssociation
-import           Network.AWS.SSM.DescribeAutomationExecutions
-import           Network.AWS.SSM.DescribeDocument
-import           Network.AWS.SSM.DescribeDocumentPermission
-import           Network.AWS.SSM.DescribeEffectiveInstanceAssociations
-import           Network.AWS.SSM.DescribeInstanceAssociationsStatus
-import           Network.AWS.SSM.DescribeInstanceInformation
-import           Network.AWS.SSM.DescribeMaintenanceWindowExecutions
-import           Network.AWS.SSM.DescribeMaintenanceWindowExecutionTaskInvocations
-import           Network.AWS.SSM.DescribeMaintenanceWindowExecutionTasks
-import           Network.AWS.SSM.DescribeMaintenanceWindows
-import           Network.AWS.SSM.DescribeMaintenanceWindowTargets
-import           Network.AWS.SSM.DescribeMaintenanceWindowTasks
-import           Network.AWS.SSM.DescribeParameters
-import           Network.AWS.SSM.GetAutomationExecution
-import           Network.AWS.SSM.GetCommandInvocation
-import           Network.AWS.SSM.GetDocument
-import           Network.AWS.SSM.GetInventory
-import           Network.AWS.SSM.GetInventorySchema
-import           Network.AWS.SSM.GetMaintenanceWindow
-import           Network.AWS.SSM.GetMaintenanceWindowExecution
-import           Network.AWS.SSM.GetMaintenanceWindowExecutionTask
-import           Network.AWS.SSM.GetParameterHistory
-import           Network.AWS.SSM.GetParameters
-import           Network.AWS.SSM.ListAssociations
-import           Network.AWS.SSM.ListCommandInvocations
-import           Network.AWS.SSM.ListCommands
-import           Network.AWS.SSM.ListDocuments
-import           Network.AWS.SSM.ListDocumentVersions
-import           Network.AWS.SSM.ListInventoryEntries
-import           Network.AWS.SSM.ListTagsForResource
-import           Network.AWS.SSM.ModifyDocumentPermission
-import           Network.AWS.SSM.PutInventory
-import           Network.AWS.SSM.PutParameter
-import           Network.AWS.SSM.RegisterTargetWithMaintenanceWindow
-import           Network.AWS.SSM.RegisterTaskWithMaintenanceWindow
-import           Network.AWS.SSM.RemoveTagsFromResource
-import           Network.AWS.SSM.SendCommand
-import           Network.AWS.SSM.StartAutomationExecution
-import           Network.AWS.SSM.StopAutomationExecution
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.UpdateAssociation
-import           Network.AWS.SSM.UpdateAssociationStatus
-import           Network.AWS.SSM.UpdateDocument
-import           Network.AWS.SSM.UpdateDocumentDefaultVersion
-import           Network.AWS.SSM.UpdateMaintenanceWindow
-import           Network.AWS.SSM.UpdateManagedInstanceRole
-import           Network.AWS.SSM.Waiters
+import Network.AWS.SSM.AddTagsToResource
+import Network.AWS.SSM.CancelCommand
+import Network.AWS.SSM.CreateActivation
+import Network.AWS.SSM.CreateAssociation
+import Network.AWS.SSM.CreateAssociationBatch
+import Network.AWS.SSM.CreateDocument
+import Network.AWS.SSM.CreateMaintenanceWindow
+import Network.AWS.SSM.CreatePatchBaseline
+import Network.AWS.SSM.CreateResourceDataSync
+import Network.AWS.SSM.DeleteActivation
+import Network.AWS.SSM.DeleteAssociation
+import Network.AWS.SSM.DeleteDocument
+import Network.AWS.SSM.DeleteMaintenanceWindow
+import Network.AWS.SSM.DeleteParameter
+import Network.AWS.SSM.DeleteParameters
+import Network.AWS.SSM.DeletePatchBaseline
+import Network.AWS.SSM.DeleteResourceDataSync
+import Network.AWS.SSM.DeregisterManagedInstance
+import Network.AWS.SSM.DeregisterPatchBaselineForPatchGroup
+import Network.AWS.SSM.DeregisterTargetFromMaintenanceWindow
+import Network.AWS.SSM.DeregisterTaskFromMaintenanceWindow
+import Network.AWS.SSM.DescribeActivations
+import Network.AWS.SSM.DescribeAssociation
+import Network.AWS.SSM.DescribeAutomationExecutions
+import Network.AWS.SSM.DescribeAvailablePatches
+import Network.AWS.SSM.DescribeDocument
+import Network.AWS.SSM.DescribeDocumentPermission
+import Network.AWS.SSM.DescribeEffectiveInstanceAssociations
+import Network.AWS.SSM.DescribeEffectivePatchesForPatchBaseline
+import Network.AWS.SSM.DescribeInstanceAssociationsStatus
+import Network.AWS.SSM.DescribeInstanceInformation
+import Network.AWS.SSM.DescribeInstancePatches
+import Network.AWS.SSM.DescribeInstancePatchStates
+import Network.AWS.SSM.DescribeInstancePatchStatesForPatchGroup
+import Network.AWS.SSM.DescribeMaintenanceWindowExecutions
+import Network.AWS.SSM.DescribeMaintenanceWindowExecutionTaskInvocations
+import Network.AWS.SSM.DescribeMaintenanceWindowExecutionTasks
+import Network.AWS.SSM.DescribeMaintenanceWindows
+import Network.AWS.SSM.DescribeMaintenanceWindowTargets
+import Network.AWS.SSM.DescribeMaintenanceWindowTasks
+import Network.AWS.SSM.DescribeParameters
+import Network.AWS.SSM.DescribePatchBaselines
+import Network.AWS.SSM.DescribePatchGroups
+import Network.AWS.SSM.DescribePatchGroupState
+import Network.AWS.SSM.GetAutomationExecution
+import Network.AWS.SSM.GetCommandInvocation
+import Network.AWS.SSM.GetDefaultPatchBaseline
+import Network.AWS.SSM.GetDeployablePatchSnapshotForInstance
+import Network.AWS.SSM.GetDocument
+import Network.AWS.SSM.GetInventory
+import Network.AWS.SSM.GetInventorySchema
+import Network.AWS.SSM.GetMaintenanceWindow
+import Network.AWS.SSM.GetMaintenanceWindowExecution
+import Network.AWS.SSM.GetMaintenanceWindowExecutionTask
+import Network.AWS.SSM.GetMaintenanceWindowExecutionTaskInvocation
+import Network.AWS.SSM.GetMaintenanceWindowTask
+import Network.AWS.SSM.GetParameter
+import Network.AWS.SSM.GetParameterHistory
+import Network.AWS.SSM.GetParameters
+import Network.AWS.SSM.GetParametersByPath
+import Network.AWS.SSM.GetPatchBaseline
+import Network.AWS.SSM.GetPatchBaselineForPatchGroup
+import Network.AWS.SSM.ListAssociations
+import Network.AWS.SSM.ListAssociationVersions
+import Network.AWS.SSM.ListCommandInvocations
+import Network.AWS.SSM.ListCommands
+import Network.AWS.SSM.ListComplianceItems
+import Network.AWS.SSM.ListComplianceSummaries
+import Network.AWS.SSM.ListDocuments
+import Network.AWS.SSM.ListDocumentVersions
+import Network.AWS.SSM.ListInventoryEntries
+import Network.AWS.SSM.ListResourceComplianceSummaries
+import Network.AWS.SSM.ListResourceDataSync
+import Network.AWS.SSM.ListTagsForResource
+import Network.AWS.SSM.ModifyDocumentPermission
+import Network.AWS.SSM.PutComplianceItems
+import Network.AWS.SSM.PutInventory
+import Network.AWS.SSM.PutParameter
+import Network.AWS.SSM.RegisterDefaultPatchBaseline
+import Network.AWS.SSM.RegisterPatchBaselineForPatchGroup
+import Network.AWS.SSM.RegisterTargetWithMaintenanceWindow
+import Network.AWS.SSM.RegisterTaskWithMaintenanceWindow
+import Network.AWS.SSM.RemoveTagsFromResource
+import Network.AWS.SSM.SendAutomationSignal
+import Network.AWS.SSM.SendCommand
+import Network.AWS.SSM.StartAutomationExecution
+import Network.AWS.SSM.StopAutomationExecution
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.UpdateAssociation
+import Network.AWS.SSM.UpdateAssociationStatus
+import Network.AWS.SSM.UpdateDocument
+import Network.AWS.SSM.UpdateDocumentDefaultVersion
+import Network.AWS.SSM.UpdateMaintenanceWindow
+import Network.AWS.SSM.UpdateMaintenanceWindowTarget
+import Network.AWS.SSM.UpdateMaintenanceWindowTask
+import Network.AWS.SSM.UpdateManagedInstanceRole
+import Network.AWS.SSM.UpdatePatchBaseline
+import Network.AWS.SSM.Waiters
 
 {- $errors
 Error matchers are designed for use with the functions provided by
diff --git a/gen/Network/AWS/SSM/AddTagsToResource.hs b/gen/Network/AWS/SSM/AddTagsToResource.hs
--- a/gen/Network/AWS/SSM/AddTagsToResource.hs
+++ b/gen/Network/AWS/SSM/AddTagsToResource.hs
@@ -12,18 +12,20 @@
 
 -- |
 -- Module      : Network.AWS.SSM.AddTagsToResource
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Adds or overwrites one or more tags for the specified resource. Tags are metadata that you assign to your managed instances. Tags enable you to categorize your managed instances in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test. Each resource can have a maximum of 10 tags.
+-- Adds or overwrites one or more tags for the specified resource. Tags are metadata that you can assign to your documents, managed instances, Maintenance Windows, Parameter Store parameters, and patch baselines. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key and an optional value, both of which you define. For example, you could define a set of tags for your account's managed instances that helps you track each instance's owner and stack level. For example: Key=Owner and Value=DbAdmin, SysAdmin, or Dev. Or Key=Stack and Value=Production, Pre-Production, or Test.
 --
 --
+-- Each resource can have a maximum of 10 tags.
+--
 -- We recommend that you devise a set of tag keys that meets your needs for each resource type. Using a consistent set of tag keys makes it easier for you to manage your resources. You can search and filter the resources based on the tags you add. Tags don't have any semantic meaning to Amazon EC2 and are interpreted strictly as a string of characters.
 --
--- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Amazon EC2 Resources> in the Amazon EC2 User Guide.
+-- For more information about tags, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html Tagging Your Amazon EC2 Resources> in the /Amazon EC2 User Guide/ .
 --
 module Network.AWS.SSM.AddTagsToResource
     (
@@ -42,27 +44,28 @@
     , attrrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'addTagsToResource' smart constructor.
 data AddTagsToResource = AddTagsToResource'
-    { _attrResourceType :: !ResourceTypeForTagging
-    , _attrResourceId   :: !Text
-    , _attrTags         :: ![Tag]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _attrResourceType :: !ResourceTypeForTagging
+  , _attrResourceId   :: !Text
+  , _attrTags         :: ![Tag]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddTagsToResource' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'attrResourceType' - Specifies the type of resource you are tagging.
 --
--- * 'attrResourceId' - The resource ID you want to tag.
+-- * 'attrResourceId' - The resource ID you want to tag. For the ManagedInstance, MaintenanceWindow, and PatchBaseline values, use the ID of the resource, such as mw-01234361858c9b57b for a Maintenance Window. For the Document and Parameter values, use the name of the resource.
 --
 -- * 'attrTags' - One or more tags. The value parameter is required, but if you don't want the tag to have a value, specify the parameter with no value, and we set the value to an empty string.
 addTagsToResource
@@ -70,17 +73,18 @@
     -> Text -- ^ 'attrResourceId'
     -> AddTagsToResource
 addTagsToResource pResourceType_ pResourceId_ =
-    AddTagsToResource'
-    { _attrResourceType = pResourceType_
-    , _attrResourceId = pResourceId_
-    , _attrTags = mempty
-    }
+  AddTagsToResource'
+  { _attrResourceType = pResourceType_
+  , _attrResourceId = pResourceId_
+  , _attrTags = mempty
+  }
 
+
 -- | Specifies the type of resource you are tagging.
 attrResourceType :: Lens' AddTagsToResource ResourceTypeForTagging
 attrResourceType = lens _attrResourceType (\ s a -> s{_attrResourceType = a});
 
--- | The resource ID you want to tag.
+-- | The resource ID you want to tag. For the ManagedInstance, MaintenanceWindow, and PatchBaseline values, use the ID of the resource, such as mw-01234361858c9b57b for a Maintenance Window. For the Document and Parameter values, use the name of the resource.
 attrResourceId :: Lens' AddTagsToResource Text
 attrResourceId = lens _attrResourceId (\ s a -> s{_attrResourceId = a});
 
@@ -96,9 +100,9 @@
               (\ s h x ->
                  AddTagsToResourceResponse' <$> (pure (fromEnum s)))
 
-instance Hashable AddTagsToResource
+instance Hashable AddTagsToResource where
 
-instance NFData AddTagsToResource
+instance NFData AddTagsToResource where
 
 instance ToHeaders AddTagsToResource where
         toHeaders
@@ -125,9 +129,10 @@
 
 -- | /See:/ 'addTagsToResourceResponse' smart constructor.
 newtype AddTagsToResourceResponse = AddTagsToResourceResponse'
-    { _attrrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _attrrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AddTagsToResourceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -137,12 +142,11 @@
     :: Int -- ^ 'attrrsResponseStatus'
     -> AddTagsToResourceResponse
 addTagsToResourceResponse pResponseStatus_ =
-    AddTagsToResourceResponse'
-    { _attrrsResponseStatus = pResponseStatus_
-    }
+  AddTagsToResourceResponse' {_attrrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 attrrsResponseStatus :: Lens' AddTagsToResourceResponse Int
 attrrsResponseStatus = lens _attrrsResponseStatus (\ s a -> s{_attrrsResponseStatus = a});
 
-instance NFData AddTagsToResourceResponse
+instance NFData AddTagsToResourceResponse where
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
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CancelCommand
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,12 +37,12 @@
     , ccrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- |
 --
@@ -50,10 +50,11 @@
 --
 -- /See:/ 'cancelCommand' smart constructor.
 data CancelCommand = CancelCommand'
-    { _ccInstanceIds :: !(Maybe [Text])
-    , _ccCommandId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ccInstanceIds :: !(Maybe [Text])
+  , _ccCommandId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CancelCommand' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,11 +66,9 @@
     :: Text -- ^ 'ccCommandId'
     -> CancelCommand
 cancelCommand pCommandId_ =
-    CancelCommand'
-    { _ccInstanceIds = Nothing
-    , _ccCommandId = pCommandId_
-    }
+  CancelCommand' {_ccInstanceIds = Nothing, _ccCommandId = pCommandId_}
 
+
 -- | (Optional) A list of instance IDs on which you want to cancel the command. If not provided, the command is canceled on every instance on which it was requested.
 ccInstanceIds :: Lens' CancelCommand [Text]
 ccInstanceIds = lens _ccInstanceIds (\ s a -> s{_ccInstanceIds = a}) . _Default . _Coerce;
@@ -86,9 +85,9 @@
               (\ s h x ->
                  CancelCommandResponse' <$> (pure (fromEnum s)))
 
-instance Hashable CancelCommand
+instance Hashable CancelCommand where
 
-instance NFData CancelCommand
+instance NFData CancelCommand where
 
 instance ToHeaders CancelCommand where
         toHeaders
@@ -118,9 +117,10 @@
 --
 -- /See:/ 'cancelCommandResponse' smart constructor.
 newtype CancelCommandResponse = CancelCommandResponse'
-    { _ccrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ccrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CancelCommandResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -130,12 +130,11 @@
     :: Int -- ^ 'ccrsResponseStatus'
     -> CancelCommandResponse
 cancelCommandResponse pResponseStatus_ =
-    CancelCommandResponse'
-    { _ccrsResponseStatus = pResponseStatus_
-    }
+  CancelCommandResponse' {_ccrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 ccrsResponseStatus :: Lens' CancelCommandResponse Int
 ccrsResponseStatus = lens _ccrsResponseStatus (\ s a -> s{_ccrsResponseStatus = a});
 
-instance NFData CancelCommandResponse
+instance NFData CancelCommandResponse where
diff --git a/gen/Network/AWS/SSM/CreateActivation.hs b/gen/Network/AWS/SSM/CreateActivation.hs
--- a/gen/Network/AWS/SSM/CreateActivation.hs
+++ b/gen/Network/AWS/SSM/CreateActivation.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateActivation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Registers your on-premises server or virtual machine with Amazon EC2 so that you can manage these resources using Run Command. An on-premises server or virtual machine that has been registered with EC2 is called a managed instance. For more information about activations, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managed-instances.html Setting Up Managed Instances (Linux)> or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/managed-instances.html Setting Up Managed Instances (Windows)> in the Amazon EC2 User Guide.
+-- Registers your on-premises server or virtual machine with Amazon EC2 so that you can manage these resources using Run Command. An on-premises server or virtual machine that has been registered with EC2 is called a managed instance. For more information about activations, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-managedinstances.html Setting Up Systems Manager in Hybrid Environments> .
 --
 --
 module Network.AWS.SSM.CreateActivation
@@ -42,22 +42,23 @@
     , carsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'createActivation' smart constructor.
 data CreateActivation = CreateActivation'
-    { _caDefaultInstanceName :: !(Maybe Text)
-    , _caRegistrationLimit   :: !(Maybe Nat)
-    , _caExpirationDate      :: !(Maybe POSIX)
-    , _caDescription         :: !(Maybe Text)
-    , _caIAMRole             :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _caDefaultInstanceName :: !(Maybe Text)
+  , _caRegistrationLimit   :: !(Maybe Nat)
+  , _caExpirationDate      :: !(Maybe POSIX)
+  , _caDescription         :: !(Maybe Text)
+  , _caIAMRole             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateActivation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,21 +69,22 @@
 --
 -- * 'caExpirationDate' - The date by which this activation request should expire. The default value is 24 hours.
 --
--- * 'caDescription' - A user-defined description of the resource that you want to register with Amazon EC2.
+-- * 'caDescription' - A userdefined description of the resource that you want to register with Amazon EC2.
 --
 -- * 'caIAMRole' - The Amazon Identity and Access Management (IAM) role that you want to assign to the managed instance.
 createActivation
     :: Text -- ^ 'caIAMRole'
     -> CreateActivation
 createActivation pIAMRole_ =
-    CreateActivation'
-    { _caDefaultInstanceName = Nothing
-    , _caRegistrationLimit = Nothing
-    , _caExpirationDate = Nothing
-    , _caDescription = Nothing
-    , _caIAMRole = pIAMRole_
-    }
+  CreateActivation'
+  { _caDefaultInstanceName = Nothing
+  , _caRegistrationLimit = Nothing
+  , _caExpirationDate = Nothing
+  , _caDescription = Nothing
+  , _caIAMRole = pIAMRole_
+  }
 
+
 -- | The name of the registered, managed instance as it will appear in the Amazon EC2 console or when you use the AWS command line tools to list EC2 resources.
 caDefaultInstanceName :: Lens' CreateActivation (Maybe Text)
 caDefaultInstanceName = lens _caDefaultInstanceName (\ s a -> s{_caDefaultInstanceName = a});
@@ -95,7 +97,7 @@
 caExpirationDate :: Lens' CreateActivation (Maybe UTCTime)
 caExpirationDate = lens _caExpirationDate (\ s a -> s{_caExpirationDate = a}) . mapping _Time;
 
--- | A user-defined description of the resource that you want to register with Amazon EC2.
+-- | A userdefined description of the resource that you want to register with Amazon EC2.
 caDescription :: Lens' CreateActivation (Maybe Text)
 caDescription = lens _caDescription (\ s a -> s{_caDescription = a});
 
@@ -113,9 +115,9 @@
                    (x .?> "ActivationId") <*> (x .?> "ActivationCode")
                      <*> (pure (fromEnum s)))
 
-instance Hashable CreateActivation
+instance Hashable CreateActivation where
 
-instance NFData CreateActivation
+instance NFData CreateActivation where
 
 instance ToHeaders CreateActivation where
         toHeaders
@@ -145,11 +147,12 @@
 
 -- | /See:/ 'createActivationResponse' smart constructor.
 data CreateActivationResponse = CreateActivationResponse'
-    { _carsActivationId   :: !(Maybe Text)
-    , _carsActivationCode :: !(Maybe Text)
-    , _carsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _carsActivationId   :: !(Maybe Text)
+  , _carsActivationCode :: !(Maybe Text)
+  , _carsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateActivationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -163,12 +166,13 @@
     :: Int -- ^ 'carsResponseStatus'
     -> CreateActivationResponse
 createActivationResponse pResponseStatus_ =
-    CreateActivationResponse'
-    { _carsActivationId = Nothing
-    , _carsActivationCode = Nothing
-    , _carsResponseStatus = pResponseStatus_
-    }
+  CreateActivationResponse'
+  { _carsActivationId = Nothing
+  , _carsActivationCode = Nothing
+  , _carsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The ID number generated by the system when it processed the activation. The activation ID functions like a user name.
 carsActivationId :: Lens' CreateActivationResponse (Maybe Text)
 carsActivationId = lens _carsActivationId (\ s a -> s{_carsActivationId = a});
@@ -181,4 +185,4 @@
 carsResponseStatus :: Lens' CreateActivationResponse Int
 carsResponseStatus = lens _carsResponseStatus (\ s a -> s{_carsResponseStatus = a});
 
-instance NFData CreateActivationResponse
+instance NFData CreateActivationResponse where
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
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateAssociation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Associates the specified SSM document with the specified instances or targets.
+-- Associates the specified Systems Manager document with the specified instances or targets.
 --
 --
--- When you associate an SSM document with one or more instances using instance IDs or tags, the SSM agent running on the instance processes the document and configures the instance as specified.
+-- When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified.
 --
 -- If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception.
 --
@@ -37,6 +37,7 @@
     , caTargets
     , caParameters
     , caDocumentVersion
+    , caAssociationName
     , caName
 
     -- * Destructuring the Response
@@ -47,68 +48,74 @@
     , crsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'createAssociation' smart constructor.
 data CreateAssociation = CreateAssociation'
-    { _caInstanceId         :: !(Maybe Text)
-    , _caScheduleExpression :: !(Maybe Text)
-    , _caOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
-    , _caTargets            :: !(Maybe [Target])
-    , _caParameters         :: !(Maybe (Map Text [Text]))
-    , _caDocumentVersion    :: !(Maybe Text)
-    , _caName               :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _caInstanceId         :: !(Maybe Text)
+  , _caScheduleExpression :: !(Maybe Text)
+  , _caOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
+  , _caTargets            :: !(Maybe [Target])
+  , _caParameters         :: !(Maybe (Map Text [Text]))
+  , _caDocumentVersion    :: !(Maybe Text)
+  , _caAssociationName    :: !(Maybe Text)
+  , _caName               :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAssociation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'caInstanceId' - The instance ID.
 --
--- * 'caScheduleExpression' - A cron expression when the association will be applied to the target(s). Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0 0 10 ? * SUN *) to run every Sunday at 10 a.m.
+-- * 'caScheduleExpression' - A cron expression when the association will be applied to the target(s).
 --
--- * 'caOutputLocation' - An Amazon S3 bucket where you want to store the output details of the request. For example: @"{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\": \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"@
+-- * 'caOutputLocation' - An Amazon S3 bucket where you want to store the output details of the request.
 --
--- * 'caTargets' - The targets (either instances or tags) for the association. Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+-- * 'caTargets' - The targets (either instances or tags) for the association.
 --
 -- * 'caParameters' - The parameters for the documents runtime configuration.
 --
 -- * 'caDocumentVersion' - The document version you want to associate with the target(s). Can be a specific version or the default version.
 --
--- * 'caName' - The name of the SSM document.
+-- * 'caAssociationName' - Specify a descriptive name for the association.
+--
+-- * 'caName' - The name of the Systems Manager document.
 createAssociation
     :: Text -- ^ 'caName'
     -> CreateAssociation
 createAssociation pName_ =
-    CreateAssociation'
-    { _caInstanceId = Nothing
-    , _caScheduleExpression = Nothing
-    , _caOutputLocation = Nothing
-    , _caTargets = Nothing
-    , _caParameters = Nothing
-    , _caDocumentVersion = Nothing
-    , _caName = pName_
-    }
+  CreateAssociation'
+  { _caInstanceId = Nothing
+  , _caScheduleExpression = Nothing
+  , _caOutputLocation = Nothing
+  , _caTargets = Nothing
+  , _caParameters = Nothing
+  , _caDocumentVersion = Nothing
+  , _caAssociationName = Nothing
+  , _caName = pName_
+  }
 
+
 -- | The instance ID.
 caInstanceId :: Lens' CreateAssociation (Maybe Text)
 caInstanceId = lens _caInstanceId (\ s a -> s{_caInstanceId = a});
 
--- | A cron expression when the association will be applied to the target(s). Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0 0 10 ? * SUN *) to run every Sunday at 10 a.m.
+-- | A cron expression when the association will be applied to the target(s).
 caScheduleExpression :: Lens' CreateAssociation (Maybe Text)
 caScheduleExpression = lens _caScheduleExpression (\ s a -> s{_caScheduleExpression = a});
 
--- | An Amazon S3 bucket where you want to store the output details of the request. For example: @"{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\": \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"@
+-- | An Amazon S3 bucket where you want to store the output details of the request.
 caOutputLocation :: Lens' CreateAssociation (Maybe InstanceAssociationOutputLocation)
 caOutputLocation = lens _caOutputLocation (\ s a -> s{_caOutputLocation = a});
 
--- | The targets (either instances or tags) for the association. Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+-- | The targets (either instances or tags) for the association.
 caTargets :: Lens' CreateAssociation [Target]
 caTargets = lens _caTargets (\ s a -> s{_caTargets = a}) . _Default . _Coerce;
 
@@ -120,7 +127,11 @@
 caDocumentVersion :: Lens' CreateAssociation (Maybe Text)
 caDocumentVersion = lens _caDocumentVersion (\ s a -> s{_caDocumentVersion = a});
 
--- | The name of the SSM document.
+-- | Specify a descriptive name for the association.
+caAssociationName :: Lens' CreateAssociation (Maybe Text)
+caAssociationName = lens _caAssociationName (\ s a -> s{_caAssociationName = a});
+
+-- | The name of the Systems Manager document.
 caName :: Lens' CreateAssociation Text
 caName = lens _caName (\ s a -> s{_caName = a});
 
@@ -134,9 +145,9 @@
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable CreateAssociation
+instance Hashable CreateAssociation where
 
-instance NFData CreateAssociation
+instance NFData CreateAssociation where
 
 instance ToHeaders CreateAssociation where
         toHeaders
@@ -157,6 +168,7 @@
                   ("Targets" .=) <$> _caTargets,
                   ("Parameters" .=) <$> _caParameters,
                   ("DocumentVersion" .=) <$> _caDocumentVersion,
+                  ("AssociationName" .=) <$> _caAssociationName,
                   Just ("Name" .= _caName)])
 
 instance ToPath CreateAssociation where
@@ -167,10 +179,11 @@
 
 -- | /See:/ 'createAssociationResponse' smart constructor.
 data CreateAssociationResponse = CreateAssociationResponse'
-    { _crsAssociationDescription :: !(Maybe AssociationDescription)
-    , _crsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _crsAssociationDescription :: !(Maybe AssociationDescription)
+  , _crsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAssociationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -182,11 +195,10 @@
     :: Int -- ^ 'crsResponseStatus'
     -> CreateAssociationResponse
 createAssociationResponse pResponseStatus_ =
-    CreateAssociationResponse'
-    { _crsAssociationDescription = Nothing
-    , _crsResponseStatus = pResponseStatus_
-    }
+  CreateAssociationResponse'
+  {_crsAssociationDescription = Nothing, _crsResponseStatus = pResponseStatus_}
 
+
 -- | Information about the association.
 crsAssociationDescription :: Lens' CreateAssociationResponse (Maybe AssociationDescription)
 crsAssociationDescription = lens _crsAssociationDescription (\ s a -> s{_crsAssociationDescription = a});
@@ -195,4 +207,4 @@
 crsResponseStatus :: Lens' CreateAssociationResponse Int
 crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
 
-instance NFData CreateAssociationResponse
+instance NFData CreateAssociationResponse where
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
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateAssociationBatch
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Associates the specified SSM document with the specified instances or targets.
+-- Associates the specified Systems Manager document with the specified instances or targets.
 --
 --
--- When you associate an SSM document with one or more instances using instance IDs or tags, the SSM agent running on the instance processes the document and configures the instance as specified.
+-- When you associate a document with one or more instances using instance IDs or tags, the SSM Agent running on the instance processes the document and configures the instance as specified.
 --
 -- If you associate a document with an instance that already has an associated document, the system throws the AssociationAlreadyExists exception.
 --
@@ -42,18 +42,19 @@
     , cabrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'createAssociationBatch' smart constructor.
 newtype CreateAssociationBatch = CreateAssociationBatch'
-    { _cabEntries :: List1 CreateAssociationBatchRequestEntry
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cabEntries :: List1 CreateAssociationBatchRequestEntry
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAssociationBatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,10 +64,9 @@
     :: NonEmpty CreateAssociationBatchRequestEntry -- ^ 'cabEntries'
     -> CreateAssociationBatch
 createAssociationBatch pEntries_ =
-    CreateAssociationBatch'
-    { _cabEntries = _List1 # pEntries_
-    }
+  CreateAssociationBatch' {_cabEntries = _List1 # pEntries_}
 
+
 -- | One or more associations.
 cabEntries :: Lens' CreateAssociationBatch (NonEmpty CreateAssociationBatchRequestEntry)
 cabEntries = lens _cabEntries (\ s a -> s{_cabEntries = a}) . _List1;
@@ -83,9 +83,9 @@
                      (x .?> "Failed" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable CreateAssociationBatch
+instance Hashable CreateAssociationBatch where
 
-instance NFData CreateAssociationBatch
+instance NFData CreateAssociationBatch where
 
 instance ToHeaders CreateAssociationBatch where
         toHeaders
@@ -109,11 +109,12 @@
 
 -- | /See:/ 'createAssociationBatchResponse' smart constructor.
 data CreateAssociationBatchResponse = CreateAssociationBatchResponse'
-    { _cabrsSuccessful     :: !(Maybe [AssociationDescription])
-    , _cabrsFailed         :: !(Maybe [FailedCreateAssociation])
-    , _cabrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cabrsSuccessful     :: !(Maybe [AssociationDescription])
+  , _cabrsFailed         :: !(Maybe [FailedCreateAssociation])
+  , _cabrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateAssociationBatchResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -127,12 +128,13 @@
     :: Int -- ^ 'cabrsResponseStatus'
     -> CreateAssociationBatchResponse
 createAssociationBatchResponse pResponseStatus_ =
-    CreateAssociationBatchResponse'
-    { _cabrsSuccessful = Nothing
-    , _cabrsFailed = Nothing
-    , _cabrsResponseStatus = pResponseStatus_
-    }
+  CreateAssociationBatchResponse'
+  { _cabrsSuccessful = Nothing
+  , _cabrsFailed = Nothing
+  , _cabrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the associations that succeeded.
 cabrsSuccessful :: Lens' CreateAssociationBatchResponse [AssociationDescription]
 cabrsSuccessful = lens _cabrsSuccessful (\ s a -> s{_cabrsSuccessful = a}) . _Default . _Coerce;
@@ -145,4 +147,4 @@
 cabrsResponseStatus :: Lens' CreateAssociationBatchResponse Int
 cabrsResponseStatus = lens _cabrsResponseStatus (\ s a -> s{_cabrsResponseStatus = a});
 
-instance NFData CreateAssociationBatchResponse
+instance NFData CreateAssociationBatchResponse where
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
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateDocument
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates an SSM document.
+-- Creates a Systems Manager document.
 --
 --
--- After you create an SSM document, you can use CreateAssociation to associate it with one or more running instances.
+-- After you create a document, you can use CreateAssociation to associate it with one or more running instances.
 --
 module Network.AWS.SSM.CreateDocument
     (
@@ -41,20 +41,21 @@
     , cdrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'createDocument' smart constructor.
 data CreateDocument = CreateDocument'
-    { _cdDocumentType :: !(Maybe DocumentType)
-    , _cdContent      :: !Text
-    , _cdName         :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cdDocumentType :: !(Maybe DocumentType)
+  , _cdContent      :: !Text
+  , _cdName         :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,18 +64,16 @@
 --
 -- * 'cdContent' - A valid JSON string.
 --
--- * 'cdName' - A name for the SSM document.
+-- * 'cdName' - A name for the Systems Manager document.
 createDocument
     :: Text -- ^ 'cdContent'
     -> Text -- ^ 'cdName'
     -> CreateDocument
 createDocument pContent_ pName_ =
-    CreateDocument'
-    { _cdDocumentType = Nothing
-    , _cdContent = pContent_
-    , _cdName = pName_
-    }
+  CreateDocument'
+  {_cdDocumentType = Nothing, _cdContent = pContent_, _cdName = pName_}
 
+
 -- | The type of document to create. Valid document types include: Policy, Automation, and Command.
 cdDocumentType :: Lens' CreateDocument (Maybe DocumentType)
 cdDocumentType = lens _cdDocumentType (\ s a -> s{_cdDocumentType = a});
@@ -83,7 +82,7 @@
 cdContent :: Lens' CreateDocument Text
 cdContent = lens _cdContent (\ s a -> s{_cdContent = a});
 
--- | A name for the SSM document.
+-- | A name for the Systems Manager document.
 cdName :: Lens' CreateDocument Text
 cdName = lens _cdName (\ s a -> s{_cdName = a});
 
@@ -97,9 +96,9 @@
                    (x .?> "DocumentDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable CreateDocument
+instance Hashable CreateDocument where
 
-instance NFData CreateDocument
+instance NFData CreateDocument where
 
 instance ToHeaders CreateDocument where
         toHeaders
@@ -126,27 +125,27 @@
 
 -- | /See:/ 'createDocumentResponse' smart constructor.
 data CreateDocumentResponse = CreateDocumentResponse'
-    { _cdrsDocumentDescription :: !(Maybe DocumentDescription)
-    , _cdrsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cdrsDocumentDescription :: !(Maybe DocumentDescription)
+  , _cdrsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateDocumentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdrsDocumentDescription' - Information about the SSM document.
+-- * 'cdrsDocumentDescription' - Information about the Systems Manager document.
 --
 -- * 'cdrsResponseStatus' - -- | The response status code.
 createDocumentResponse
     :: Int -- ^ 'cdrsResponseStatus'
     -> CreateDocumentResponse
 createDocumentResponse pResponseStatus_ =
-    CreateDocumentResponse'
-    { _cdrsDocumentDescription = Nothing
-    , _cdrsResponseStatus = pResponseStatus_
-    }
+  CreateDocumentResponse'
+  {_cdrsDocumentDescription = Nothing, _cdrsResponseStatus = pResponseStatus_}
 
--- | Information about the SSM document.
+
+-- | Information about the Systems Manager document.
 cdrsDocumentDescription :: Lens' CreateDocumentResponse (Maybe DocumentDescription)
 cdrsDocumentDescription = lens _cdrsDocumentDescription (\ s a -> s{_cdrsDocumentDescription = a});
 
@@ -154,4 +153,4 @@
 cdrsResponseStatus :: Lens' CreateDocumentResponse Int
 cdrsResponseStatus = lens _cdrsResponseStatus (\ s a -> s{_cdrsResponseStatus = a});
 
-instance NFData CreateDocumentResponse
+instance NFData CreateDocumentResponse where
diff --git a/gen/Network/AWS/SSM/CreateMaintenanceWindow.hs b/gen/Network/AWS/SSM/CreateMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/CreateMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/CreateMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.CreateMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -28,6 +28,7 @@
     , CreateMaintenanceWindow
     -- * Request Lenses
     , cmwClientToken
+    , cmwDescription
     , cmwName
     , cmwSchedule
     , cmwDuration
@@ -42,29 +43,33 @@
     , cmwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'createMaintenanceWindow' smart constructor.
 data CreateMaintenanceWindow = CreateMaintenanceWindow'
-    { _cmwClientToken              :: !(Maybe Text)
-    , _cmwName                     :: !Text
-    , _cmwSchedule                 :: !Text
-    , _cmwDuration                 :: !Nat
-    , _cmwCutoff                   :: !Nat
-    , _cmwAllowUnassociatedTargets :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cmwClientToken              :: !(Maybe Text)
+  , _cmwDescription              :: !(Maybe (Sensitive Text))
+  , _cmwName                     :: !Text
+  , _cmwSchedule                 :: !Text
+  , _cmwDuration                 :: !Nat
+  , _cmwCutoff                   :: !Nat
+  , _cmwAllowUnassociatedTargets :: !Bool
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'cmwClientToken' - User-provided idempotency token.
 --
+-- * 'cmwDescription' - An optional description for the Maintenance Window. We recommend specifying a description to help you organize your Maintenance Windows.
+--
 -- * 'cmwName' - The name of the Maintenance Window.
 --
 -- * 'cmwSchedule' - The schedule of the Maintenance Window in the form of a cron or rate expression.
@@ -73,7 +78,7 @@
 --
 -- * 'cmwCutoff' - The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution.
 --
--- * 'cmwAllowUnassociatedTargets' - Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.
+-- * 'cmwAllowUnassociatedTargets' - Enables a Maintenance Window task to execute on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the Maintenance Window  If you don't enable this option, then you must specify previously-registered targets when you register a task with the Maintenance Window.
 createMaintenanceWindow
     :: Text -- ^ 'cmwName'
     -> Text -- ^ 'cmwSchedule'
@@ -82,19 +87,25 @@
     -> Bool -- ^ 'cmwAllowUnassociatedTargets'
     -> CreateMaintenanceWindow
 createMaintenanceWindow pName_ pSchedule_ pDuration_ pCutoff_ pAllowUnassociatedTargets_ =
-    CreateMaintenanceWindow'
-    { _cmwClientToken = Nothing
-    , _cmwName = pName_
-    , _cmwSchedule = pSchedule_
-    , _cmwDuration = _Nat # pDuration_
-    , _cmwCutoff = _Nat # pCutoff_
-    , _cmwAllowUnassociatedTargets = pAllowUnassociatedTargets_
-    }
+  CreateMaintenanceWindow'
+  { _cmwClientToken = Nothing
+  , _cmwDescription = Nothing
+  , _cmwName = pName_
+  , _cmwSchedule = pSchedule_
+  , _cmwDuration = _Nat # pDuration_
+  , _cmwCutoff = _Nat # pCutoff_
+  , _cmwAllowUnassociatedTargets = pAllowUnassociatedTargets_
+  }
 
+
 -- | User-provided idempotency token.
 cmwClientToken :: Lens' CreateMaintenanceWindow (Maybe Text)
 cmwClientToken = lens _cmwClientToken (\ s a -> s{_cmwClientToken = a});
 
+-- | An optional description for the Maintenance Window. We recommend specifying a description to help you organize your Maintenance Windows.
+cmwDescription :: Lens' CreateMaintenanceWindow (Maybe Text)
+cmwDescription = lens _cmwDescription (\ s a -> s{_cmwDescription = a}) . mapping _Sensitive;
+
 -- | The name of the Maintenance Window.
 cmwName :: Lens' CreateMaintenanceWindow Text
 cmwName = lens _cmwName (\ s a -> s{_cmwName = a});
@@ -111,7 +122,7 @@
 cmwCutoff :: Lens' CreateMaintenanceWindow Natural
 cmwCutoff = lens _cmwCutoff (\ s a -> s{_cmwCutoff = a}) . _Nat;
 
--- | Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.
+-- | Enables a Maintenance Window task to execute on managed instances, even if you have not registered those instances as targets. If enabled, then you must specify the unregistered instances (by instance ID) when you register a task with the Maintenance Window  If you don't enable this option, then you must specify previously-registered targets when you register a task with the Maintenance Window.
 cmwAllowUnassociatedTargets :: Lens' CreateMaintenanceWindow Bool
 cmwAllowUnassociatedTargets = lens _cmwAllowUnassociatedTargets (\ s a -> s{_cmwAllowUnassociatedTargets = a});
 
@@ -125,9 +136,9 @@
                  CreateMaintenanceWindowResponse' <$>
                    (x .?> "WindowId") <*> (pure (fromEnum s)))
 
-instance Hashable CreateMaintenanceWindow
+instance Hashable CreateMaintenanceWindow where
 
-instance NFData CreateMaintenanceWindow
+instance NFData CreateMaintenanceWindow where
 
 instance ToHeaders CreateMaintenanceWindow where
         toHeaders
@@ -143,6 +154,7 @@
           = object
               (catMaybes
                  [("ClientToken" .=) <$> _cmwClientToken,
+                  ("Description" .=) <$> _cmwDescription,
                   Just ("Name" .= _cmwName),
                   Just ("Schedule" .= _cmwSchedule),
                   Just ("Duration" .= _cmwDuration),
@@ -159,10 +171,11 @@
 
 -- | /See:/ 'createMaintenanceWindowResponse' smart constructor.
 data CreateMaintenanceWindowResponse = CreateMaintenanceWindowResponse'
-    { _cmwrsWindowId       :: !(Maybe Text)
-    , _cmwrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _cmwrsWindowId       :: !(Maybe Text)
+  , _cmwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CreateMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -174,11 +187,10 @@
     :: Int -- ^ 'cmwrsResponseStatus'
     -> CreateMaintenanceWindowResponse
 createMaintenanceWindowResponse pResponseStatus_ =
-    CreateMaintenanceWindowResponse'
-    { _cmwrsWindowId = Nothing
-    , _cmwrsResponseStatus = pResponseStatus_
-    }
+  CreateMaintenanceWindowResponse'
+  {_cmwrsWindowId = Nothing, _cmwrsResponseStatus = pResponseStatus_}
 
+
 -- | The ID of the created Maintenance Window.
 cmwrsWindowId :: Lens' CreateMaintenanceWindowResponse (Maybe Text)
 cmwrsWindowId = lens _cmwrsWindowId (\ s a -> s{_cmwrsWindowId = a});
@@ -187,4 +199,4 @@
 cmwrsResponseStatus :: Lens' CreateMaintenanceWindowResponse Int
 cmwrsResponseStatus = lens _cmwrsResponseStatus (\ s a -> s{_cmwrsResponseStatus = a});
 
-instance NFData CreateMaintenanceWindowResponse
+instance NFData CreateMaintenanceWindowResponse where
diff --git a/gen/Network/AWS/SSM/CreatePatchBaseline.hs b/gen/Network/AWS/SSM/CreatePatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/CreatePatchBaseline.hs
@@ -0,0 +1,217 @@
+{-# 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.SSM.CreatePatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a patch baseline.
+--
+--
+module Network.AWS.SSM.CreatePatchBaseline
+    (
+    -- * Creating a Request
+      createPatchBaseline
+    , CreatePatchBaseline
+    -- * Request Lenses
+    , cpbApprovalRules
+    , cpbClientToken
+    , cpbOperatingSystem
+    , cpbGlobalFilters
+    , cpbApprovedPatchesComplianceLevel
+    , cpbApprovedPatches
+    , cpbRejectedPatches
+    , cpbDescription
+    , cpbName
+
+    -- * Destructuring the Response
+    , createPatchBaselineResponse
+    , CreatePatchBaselineResponse
+    -- * Response Lenses
+    , cpbrsBaselineId
+    , cpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'createPatchBaseline' smart constructor.
+data CreatePatchBaseline = CreatePatchBaseline'
+  { _cpbApprovalRules                  :: !(Maybe PatchRuleGroup)
+  , _cpbClientToken                    :: !(Maybe Text)
+  , _cpbOperatingSystem                :: !(Maybe OperatingSystem)
+  , _cpbGlobalFilters                  :: !(Maybe PatchFilterGroup)
+  , _cpbApprovedPatchesComplianceLevel :: !(Maybe PatchComplianceLevel)
+  , _cpbApprovedPatches                :: !(Maybe [Text])
+  , _cpbRejectedPatches                :: !(Maybe [Text])
+  , _cpbDescription                    :: !(Maybe Text)
+  , _cpbName                           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreatePatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpbApprovalRules' - A set of rules used to include patches in the baseline.
+--
+-- * 'cpbClientToken' - User-provided idempotency token.
+--
+-- * 'cpbOperatingSystem' - Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS.
+--
+-- * 'cpbGlobalFilters' - A set of global filters used to exclude patches from the baseline.
+--
+-- * 'cpbApprovedPatchesComplianceLevel' - Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. Valid compliance severity levels include the following: CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL, UNSPECIFIED. The default value is UNSPECIFIED.
+--
+-- * 'cpbApprovedPatches' - A list of explicitly approved patches for the baseline.
+--
+-- * 'cpbRejectedPatches' - A list of explicitly rejected patches for the baseline.
+--
+-- * 'cpbDescription' - A description of the patch baseline.
+--
+-- * 'cpbName' - The name of the patch baseline.
+createPatchBaseline
+    :: Text -- ^ 'cpbName'
+    -> CreatePatchBaseline
+createPatchBaseline pName_ =
+  CreatePatchBaseline'
+  { _cpbApprovalRules = Nothing
+  , _cpbClientToken = Nothing
+  , _cpbOperatingSystem = Nothing
+  , _cpbGlobalFilters = Nothing
+  , _cpbApprovedPatchesComplianceLevel = Nothing
+  , _cpbApprovedPatches = Nothing
+  , _cpbRejectedPatches = Nothing
+  , _cpbDescription = Nothing
+  , _cpbName = pName_
+  }
+
+
+-- | A set of rules used to include patches in the baseline.
+cpbApprovalRules :: Lens' CreatePatchBaseline (Maybe PatchRuleGroup)
+cpbApprovalRules = lens _cpbApprovalRules (\ s a -> s{_cpbApprovalRules = a});
+
+-- | User-provided idempotency token.
+cpbClientToken :: Lens' CreatePatchBaseline (Maybe Text)
+cpbClientToken = lens _cpbClientToken (\ s a -> s{_cpbClientToken = a});
+
+-- | Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS.
+cpbOperatingSystem :: Lens' CreatePatchBaseline (Maybe OperatingSystem)
+cpbOperatingSystem = lens _cpbOperatingSystem (\ s a -> s{_cpbOperatingSystem = a});
+
+-- | A set of global filters used to exclude patches from the baseline.
+cpbGlobalFilters :: Lens' CreatePatchBaseline (Maybe PatchFilterGroup)
+cpbGlobalFilters = lens _cpbGlobalFilters (\ s a -> s{_cpbGlobalFilters = a});
+
+-- | Defines the compliance level for approved patches. This means that if an approved patch is reported as missing, this is the severity of the compliance violation. Valid compliance severity levels include the following: CRITICAL, HIGH, MEDIUM, LOW, INFORMATIONAL, UNSPECIFIED. The default value is UNSPECIFIED.
+cpbApprovedPatchesComplianceLevel :: Lens' CreatePatchBaseline (Maybe PatchComplianceLevel)
+cpbApprovedPatchesComplianceLevel = lens _cpbApprovedPatchesComplianceLevel (\ s a -> s{_cpbApprovedPatchesComplianceLevel = a});
+
+-- | A list of explicitly approved patches for the baseline.
+cpbApprovedPatches :: Lens' CreatePatchBaseline [Text]
+cpbApprovedPatches = lens _cpbApprovedPatches (\ s a -> s{_cpbApprovedPatches = a}) . _Default . _Coerce;
+
+-- | A list of explicitly rejected patches for the baseline.
+cpbRejectedPatches :: Lens' CreatePatchBaseline [Text]
+cpbRejectedPatches = lens _cpbRejectedPatches (\ s a -> s{_cpbRejectedPatches = a}) . _Default . _Coerce;
+
+-- | A description of the patch baseline.
+cpbDescription :: Lens' CreatePatchBaseline (Maybe Text)
+cpbDescription = lens _cpbDescription (\ s a -> s{_cpbDescription = a});
+
+-- | The name of the patch baseline.
+cpbName :: Lens' CreatePatchBaseline Text
+cpbName = lens _cpbName (\ s a -> s{_cpbName = a});
+
+instance AWSRequest CreatePatchBaseline where
+        type Rs CreatePatchBaseline =
+             CreatePatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreatePatchBaselineResponse' <$>
+                   (x .?> "BaselineId") <*> (pure (fromEnum s)))
+
+instance Hashable CreatePatchBaseline where
+
+instance NFData CreatePatchBaseline where
+
+instance ToHeaders CreatePatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.CreatePatchBaseline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreatePatchBaseline where
+        toJSON CreatePatchBaseline'{..}
+          = object
+              (catMaybes
+                 [("ApprovalRules" .=) <$> _cpbApprovalRules,
+                  ("ClientToken" .=) <$> _cpbClientToken,
+                  ("OperatingSystem" .=) <$> _cpbOperatingSystem,
+                  ("GlobalFilters" .=) <$> _cpbGlobalFilters,
+                  ("ApprovedPatchesComplianceLevel" .=) <$>
+                    _cpbApprovedPatchesComplianceLevel,
+                  ("ApprovedPatches" .=) <$> _cpbApprovedPatches,
+                  ("RejectedPatches" .=) <$> _cpbRejectedPatches,
+                  ("Description" .=) <$> _cpbDescription,
+                  Just ("Name" .= _cpbName)])
+
+instance ToPath CreatePatchBaseline where
+        toPath = const "/"
+
+instance ToQuery CreatePatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'createPatchBaselineResponse' smart constructor.
+data CreatePatchBaselineResponse = CreatePatchBaselineResponse'
+  { _cpbrsBaselineId     :: !(Maybe Text)
+  , _cpbrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreatePatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpbrsBaselineId' - The ID of the created patch baseline.
+--
+-- * 'cpbrsResponseStatus' - -- | The response status code.
+createPatchBaselineResponse
+    :: Int -- ^ 'cpbrsResponseStatus'
+    -> CreatePatchBaselineResponse
+createPatchBaselineResponse pResponseStatus_ =
+  CreatePatchBaselineResponse'
+  {_cpbrsBaselineId = Nothing, _cpbrsResponseStatus = pResponseStatus_}
+
+
+-- | The ID of the created patch baseline.
+cpbrsBaselineId :: Lens' CreatePatchBaselineResponse (Maybe Text)
+cpbrsBaselineId = lens _cpbrsBaselineId (\ s a -> s{_cpbrsBaselineId = a});
+
+-- | -- | The response status code.
+cpbrsResponseStatus :: Lens' CreatePatchBaselineResponse Int
+cpbrsResponseStatus = lens _cpbrsResponseStatus (\ s a -> s{_cpbrsResponseStatus = a});
+
+instance NFData CreatePatchBaselineResponse where
diff --git a/gen/Network/AWS/SSM/CreateResourceDataSync.hs b/gen/Network/AWS/SSM/CreateResourceDataSync.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/CreateResourceDataSync.hs
@@ -0,0 +1,138 @@
+{-# 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.SSM.CreateResourceDataSync
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a resource data sync configuration to a single bucket in Amazon S3. This is an asynchronous operation that returns immediately. After a successful initial sync is completed, the system continuously syncs data to the Amazon S3 bucket. To check the status of the sync, use the <API_ListResourceDataSync.html ListResourceDataSync> operation.
+--
+--
+-- By default, data is not encrypted in Amazon S3. We strongly recommend that you enable encryption in Amazon S3 to ensure secure data storage. We also recommend that you secure access to the Amazon S3 bucket by creating a restrictive bucket policy. To view an example of a restrictive Amazon S3 bucket policy for Resource Data Sync, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-inventory-configuring.html#sysman-inventory-datasync Configuring Resource Data Sync for Inventory> .
+--
+module Network.AWS.SSM.CreateResourceDataSync
+    (
+    -- * Creating a Request
+      createResourceDataSync
+    , CreateResourceDataSync
+    -- * Request Lenses
+    , crdsSyncName
+    , crdsS3Destination
+
+    -- * Destructuring the Response
+    , createResourceDataSyncResponse
+    , CreateResourceDataSyncResponse
+    -- * Response Lenses
+    , crdsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'createResourceDataSync' smart constructor.
+data CreateResourceDataSync = CreateResourceDataSync'
+  { _crdsSyncName      :: !Text
+  , _crdsS3Destination :: !ResourceDataSyncS3Destination
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateResourceDataSync' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crdsSyncName' - A name for the configuration.
+--
+-- * 'crdsS3Destination' - Amazon S3 configuration details for the sync.
+createResourceDataSync
+    :: Text -- ^ 'crdsSyncName'
+    -> ResourceDataSyncS3Destination -- ^ 'crdsS3Destination'
+    -> CreateResourceDataSync
+createResourceDataSync pSyncName_ pS3Destination_ =
+  CreateResourceDataSync'
+  {_crdsSyncName = pSyncName_, _crdsS3Destination = pS3Destination_}
+
+
+-- | A name for the configuration.
+crdsSyncName :: Lens' CreateResourceDataSync Text
+crdsSyncName = lens _crdsSyncName (\ s a -> s{_crdsSyncName = a});
+
+-- | Amazon S3 configuration details for the sync.
+crdsS3Destination :: Lens' CreateResourceDataSync ResourceDataSyncS3Destination
+crdsS3Destination = lens _crdsS3Destination (\ s a -> s{_crdsS3Destination = a});
+
+instance AWSRequest CreateResourceDataSync where
+        type Rs CreateResourceDataSync =
+             CreateResourceDataSyncResponse
+        request = postJSON ssm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 CreateResourceDataSyncResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable CreateResourceDataSync where
+
+instance NFData CreateResourceDataSync where
+
+instance ToHeaders CreateResourceDataSync where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.CreateResourceDataSync" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CreateResourceDataSync where
+        toJSON CreateResourceDataSync'{..}
+          = object
+              (catMaybes
+                 [Just ("SyncName" .= _crdsSyncName),
+                  Just ("S3Destination" .= _crdsS3Destination)])
+
+instance ToPath CreateResourceDataSync where
+        toPath = const "/"
+
+instance ToQuery CreateResourceDataSync where
+        toQuery = const mempty
+
+-- | /See:/ 'createResourceDataSyncResponse' smart constructor.
+newtype CreateResourceDataSyncResponse = CreateResourceDataSyncResponse'
+  { _crdsrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateResourceDataSyncResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crdsrsResponseStatus' - -- | The response status code.
+createResourceDataSyncResponse
+    :: Int -- ^ 'crdsrsResponseStatus'
+    -> CreateResourceDataSyncResponse
+createResourceDataSyncResponse pResponseStatus_ =
+  CreateResourceDataSyncResponse' {_crdsrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+crdsrsResponseStatus :: Lens' CreateResourceDataSyncResponse Int
+crdsrsResponseStatus = lens _crdsrsResponseStatus (\ s a -> s{_crdsrsResponseStatus = a});
+
+instance NFData CreateResourceDataSyncResponse where
diff --git a/gen/Network/AWS/SSM/DeleteActivation.hs b/gen/Network/AWS/SSM/DeleteActivation.hs
--- a/gen/Network/AWS/SSM/DeleteActivation.hs
+++ b/gen/Network/AWS/SSM/DeleteActivation.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteActivation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -33,21 +33,22 @@
     , deleteActivationResponse
     , DeleteActivationResponse
     -- * Response Lenses
-    , daarsResponseStatus
+    , delersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deleteActivation' smart constructor.
 newtype DeleteActivation = DeleteActivation'
-    { _daActivationId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daActivationId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteActivation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -57,10 +58,9 @@
     :: Text -- ^ 'daActivationId'
     -> DeleteActivation
 deleteActivation pActivationId_ =
-    DeleteActivation'
-    { _daActivationId = pActivationId_
-    }
+  DeleteActivation' {_daActivationId = pActivationId_}
 
+
 -- | The ID of the activation that you want to delete.
 daActivationId :: Lens' DeleteActivation Text
 daActivationId = lens _daActivationId (\ s a -> s{_daActivationId = a});
@@ -73,9 +73,9 @@
               (\ s h x ->
                  DeleteActivationResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteActivation
+instance Hashable DeleteActivation where
 
-instance NFData DeleteActivation
+instance NFData DeleteActivation where
 
 instance ToHeaders DeleteActivation where
         toHeaders
@@ -100,24 +100,24 @@
 
 -- | /See:/ 'deleteActivationResponse' smart constructor.
 newtype DeleteActivationResponse = DeleteActivationResponse'
-    { _daarsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delersResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteActivationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'daarsResponseStatus' - -- | The response status code.
+-- * 'delersResponseStatus' - -- | The response status code.
 deleteActivationResponse
-    :: Int -- ^ 'daarsResponseStatus'
+    :: Int -- ^ 'delersResponseStatus'
     -> DeleteActivationResponse
 deleteActivationResponse pResponseStatus_ =
-    DeleteActivationResponse'
-    { _daarsResponseStatus = pResponseStatus_
-    }
+  DeleteActivationResponse' {_delersResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
-daarsResponseStatus :: Lens' DeleteActivationResponse Int
-daarsResponseStatus = lens _daarsResponseStatus (\ s a -> s{_daarsResponseStatus = a});
+delersResponseStatus :: Lens' DeleteActivationResponse Int
+delersResponseStatus = lens _delersResponseStatus (\ s a -> s{_delersResponseStatus = a});
 
-instance NFData DeleteActivationResponse
+instance NFData DeleteActivationResponse where
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
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteAssociation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Disassociates the specified SSM document from the specified instance.
+-- Disassociates the specified Systems Manager document from the specified instance.
 --
 --
--- When you disassociate an SSM document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance.
+-- When you disassociate a document from an instance, it does not change the configuration of the instance. To change the configuration state of an instance after you disassociate a document, you must create a new document with the desired configuration and associate it with the instance.
 --
 module Network.AWS.SSM.DeleteAssociation
     (
@@ -40,20 +40,21 @@
     , delrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deleteAssociation' smart constructor.
 data DeleteAssociation = DeleteAssociation'
-    { _daaAssociationId :: !(Maybe Text)
-    , _daaInstanceId    :: !(Maybe Text)
-    , _daaName          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daaAssociationId :: !(Maybe Text)
+  , _daaInstanceId    :: !(Maybe Text)
+  , _daaName          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAssociation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,16 +63,14 @@
 --
 -- * 'daaInstanceId' - The ID of the instance.
 --
--- * 'daaName' - The name of the SSM document.
+-- * 'daaName' - The name of the Systems Manager document.
 deleteAssociation
     :: DeleteAssociation
 deleteAssociation =
-    DeleteAssociation'
-    { _daaAssociationId = Nothing
-    , _daaInstanceId = Nothing
-    , _daaName = Nothing
-    }
+  DeleteAssociation'
+  {_daaAssociationId = Nothing, _daaInstanceId = Nothing, _daaName = Nothing}
 
+
 -- | The association ID that you want to delete.
 daaAssociationId :: Lens' DeleteAssociation (Maybe Text)
 daaAssociationId = lens _daaAssociationId (\ s a -> s{_daaAssociationId = a});
@@ -80,7 +79,7 @@
 daaInstanceId :: Lens' DeleteAssociation (Maybe Text)
 daaInstanceId = lens _daaInstanceId (\ s a -> s{_daaInstanceId = a});
 
--- | The name of the SSM document.
+-- | The name of the Systems Manager document.
 daaName :: Lens' DeleteAssociation (Maybe Text)
 daaName = lens _daaName (\ s a -> s{_daaName = a});
 
@@ -92,9 +91,9 @@
               (\ s h x ->
                  DeleteAssociationResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteAssociation
+instance Hashable DeleteAssociation where
 
-instance NFData DeleteAssociation
+instance NFData DeleteAssociation where
 
 instance ToHeaders DeleteAssociation where
         toHeaders
@@ -121,9 +120,10 @@
 
 -- | /See:/ 'deleteAssociationResponse' smart constructor.
 newtype DeleteAssociationResponse = DeleteAssociationResponse'
-    { _delrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteAssociationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -133,12 +133,11 @@
     :: Int -- ^ 'delrsResponseStatus'
     -> DeleteAssociationResponse
 deleteAssociationResponse pResponseStatus_ =
-    DeleteAssociationResponse'
-    { _delrsResponseStatus = pResponseStatus_
-    }
+  DeleteAssociationResponse' {_delrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 delrsResponseStatus :: Lens' DeleteAssociationResponse Int
 delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a});
 
-instance NFData DeleteAssociationResponse
+instance NFData DeleteAssociationResponse where
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
@@ -12,16 +12,16 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteDocument
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes the SSM document and all instance associations to the document.
+-- Deletes the Systems Manager document and all instance associations to the document.
 --
 --
--- Before you delete the SSM document, we recommend that you use DeleteAssociation to disassociate all instances that are associated with the document.
+-- Before you delete the document, we recommend that you use 'DeleteAssociation' to disassociate all instances that are associated with the document.
 --
 module Network.AWS.SSM.DeleteDocument
     (
@@ -38,32 +38,31 @@
     , ddrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deleteDocument' smart constructor.
 newtype DeleteDocument = DeleteDocument'
-    { _dddName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dddName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dddName' - The name of the SSM document.
+-- * 'dddName' - The name of the document.
 deleteDocument
     :: Text -- ^ 'dddName'
     -> DeleteDocument
-deleteDocument pName_ =
-    DeleteDocument'
-    { _dddName = pName_
-    }
+deleteDocument pName_ = DeleteDocument' {_dddName = pName_}
 
--- | The name of the SSM document.
+
+-- | The name of the document.
 dddName :: Lens' DeleteDocument Text
 dddName = lens _dddName (\ s a -> s{_dddName = a});
 
@@ -75,9 +74,9 @@
               (\ s h x ->
                  DeleteDocumentResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteDocument
+instance Hashable DeleteDocument where
 
-instance NFData DeleteDocument
+instance NFData DeleteDocument where
 
 instance ToHeaders DeleteDocument where
         toHeaders
@@ -100,9 +99,10 @@
 
 -- | /See:/ 'deleteDocumentResponse' smart constructor.
 newtype DeleteDocumentResponse = DeleteDocumentResponse'
-    { _ddrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteDocumentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -112,12 +112,11 @@
     :: Int -- ^ 'ddrsResponseStatus'
     -> DeleteDocumentResponse
 deleteDocumentResponse pResponseStatus_ =
-    DeleteDocumentResponse'
-    { _ddrsResponseStatus = pResponseStatus_
-    }
+  DeleteDocumentResponse' {_ddrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 ddrsResponseStatus :: Lens' DeleteDocumentResponse Int
 ddrsResponseStatus = lens _ddrsResponseStatus (\ s a -> s{_ddrsResponseStatus = a});
 
-instance NFData DeleteDocumentResponse
+instance NFData DeleteDocumentResponse where
diff --git a/gen/Network/AWS/SSM/DeleteMaintenanceWindow.hs b/gen/Network/AWS/SSM/DeleteMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/DeleteMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/DeleteMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,18 +37,19 @@
     , dmwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deleteMaintenanceWindow' smart constructor.
 newtype DeleteMaintenanceWindow = DeleteMaintenanceWindow'
-    { _dmwWindowId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwWindowId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -58,10 +59,9 @@
     :: Text -- ^ 'dmwWindowId'
     -> DeleteMaintenanceWindow
 deleteMaintenanceWindow pWindowId_ =
-    DeleteMaintenanceWindow'
-    { _dmwWindowId = pWindowId_
-    }
+  DeleteMaintenanceWindow' {_dmwWindowId = pWindowId_}
 
+
 -- | The ID of the Maintenance Window to delete.
 dmwWindowId :: Lens' DeleteMaintenanceWindow Text
 dmwWindowId = lens _dmwWindowId (\ s a -> s{_dmwWindowId = a});
@@ -76,9 +76,9 @@
                  DeleteMaintenanceWindowResponse' <$>
                    (x .?> "WindowId") <*> (pure (fromEnum s)))
 
-instance Hashable DeleteMaintenanceWindow
+instance Hashable DeleteMaintenanceWindow where
 
-instance NFData DeleteMaintenanceWindow
+instance NFData DeleteMaintenanceWindow where
 
 instance ToHeaders DeleteMaintenanceWindow where
         toHeaders
@@ -102,10 +102,11 @@
 
 -- | /See:/ 'deleteMaintenanceWindowResponse' smart constructor.
 data DeleteMaintenanceWindowResponse = DeleteMaintenanceWindowResponse'
-    { _dmwrsWindowId       :: !(Maybe Text)
-    , _dmwrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwrsWindowId       :: !(Maybe Text)
+  , _dmwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -117,11 +118,10 @@
     :: Int -- ^ 'dmwrsResponseStatus'
     -> DeleteMaintenanceWindowResponse
 deleteMaintenanceWindowResponse pResponseStatus_ =
-    DeleteMaintenanceWindowResponse'
-    { _dmwrsWindowId = Nothing
-    , _dmwrsResponseStatus = pResponseStatus_
-    }
+  DeleteMaintenanceWindowResponse'
+  {_dmwrsWindowId = Nothing, _dmwrsResponseStatus = pResponseStatus_}
 
+
 -- | The ID of the deleted Maintenance Window.
 dmwrsWindowId :: Lens' DeleteMaintenanceWindowResponse (Maybe Text)
 dmwrsWindowId = lens _dmwrsWindowId (\ s a -> s{_dmwrsWindowId = a});
@@ -130,4 +130,4 @@
 dmwrsResponseStatus :: Lens' DeleteMaintenanceWindowResponse Int
 dmwrsResponseStatus = lens _dmwrsResponseStatus (\ s a -> s{_dmwrsResponseStatus = a});
 
-instance NFData DeleteMaintenanceWindowResponse
+instance NFData DeleteMaintenanceWindowResponse where
diff --git a/gen/Network/AWS/SSM/DeleteParameter.hs b/gen/Network/AWS/SSM/DeleteParameter.hs
--- a/gen/Network/AWS/SSM/DeleteParameter.hs
+++ b/gen/Network/AWS/SSM/DeleteParameter.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeleteParameter
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,18 +36,19 @@
     , dpprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deleteParameter' smart constructor.
 newtype DeleteParameter = DeleteParameter'
-    { _delName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _delName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteParameter' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -56,11 +57,9 @@
 deleteParameter
     :: Text -- ^ 'delName'
     -> DeleteParameter
-deleteParameter pName_ =
-    DeleteParameter'
-    { _delName = pName_
-    }
+deleteParameter pName_ = DeleteParameter' {_delName = pName_}
 
+
 -- | The name of the parameter to delete.
 delName :: Lens' DeleteParameter Text
 delName = lens _delName (\ s a -> s{_delName = a});
@@ -73,9 +72,9 @@
               (\ s h x ->
                  DeleteParameterResponse' <$> (pure (fromEnum s)))
 
-instance Hashable DeleteParameter
+instance Hashable DeleteParameter where
 
-instance NFData DeleteParameter
+instance NFData DeleteParameter where
 
 instance ToHeaders DeleteParameter where
         toHeaders
@@ -98,9 +97,10 @@
 
 -- | /See:/ 'deleteParameterResponse' smart constructor.
 newtype DeleteParameterResponse = DeleteParameterResponse'
-    { _dpprsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpprsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeleteParameterResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -110,12 +110,11 @@
     :: Int -- ^ 'dpprsResponseStatus'
     -> DeleteParameterResponse
 deleteParameterResponse pResponseStatus_ =
-    DeleteParameterResponse'
-    { _dpprsResponseStatus = pResponseStatus_
-    }
+  DeleteParameterResponse' {_dpprsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dpprsResponseStatus :: Lens' DeleteParameterResponse Int
 dpprsResponseStatus = lens _dpprsResponseStatus (\ s a -> s{_dpprsResponseStatus = a});
 
-instance NFData DeleteParameterResponse
+instance NFData DeleteParameterResponse where
diff --git a/gen/Network/AWS/SSM/DeleteParameters.hs b/gen/Network/AWS/SSM/DeleteParameters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DeleteParameters.hs
@@ -0,0 +1,143 @@
+{-# 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.SSM.DeleteParameters
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Delete a list of parameters. This API is used to delete parameters by using the Amazon EC2 console.
+--
+--
+module Network.AWS.SSM.DeleteParameters
+    (
+    -- * Creating a Request
+      deleteParameters
+    , DeleteParameters
+    -- * Request Lenses
+    , dpNames
+
+    -- * Destructuring the Response
+    , deleteParametersResponse
+    , DeleteParametersResponse
+    -- * Response Lenses
+    , drsDeletedParameters
+    , drsInvalidParameters
+    , drsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'deleteParameters' smart constructor.
+newtype DeleteParameters = DeleteParameters'
+  { _dpNames :: List1 Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpNames' - The names of the parameters to delete.
+deleteParameters
+    :: NonEmpty Text -- ^ 'dpNames'
+    -> DeleteParameters
+deleteParameters pNames_ = DeleteParameters' {_dpNames = _List1 # pNames_}
+
+
+-- | The names of the parameters to delete.
+dpNames :: Lens' DeleteParameters (NonEmpty Text)
+dpNames = lens _dpNames (\ s a -> s{_dpNames = a}) . _List1;
+
+instance AWSRequest DeleteParameters where
+        type Rs DeleteParameters = DeleteParametersResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteParametersResponse' <$>
+                   (x .?> "DeletedParameters") <*>
+                     (x .?> "InvalidParameters")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DeleteParameters where
+
+instance NFData DeleteParameters where
+
+instance ToHeaders DeleteParameters where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DeleteParameters" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteParameters where
+        toJSON DeleteParameters'{..}
+          = object (catMaybes [Just ("Names" .= _dpNames)])
+
+instance ToPath DeleteParameters where
+        toPath = const "/"
+
+instance ToQuery DeleteParameters where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteParametersResponse' smart constructor.
+data DeleteParametersResponse = DeleteParametersResponse'
+  { _drsDeletedParameters :: !(Maybe (List1 Text))
+  , _drsInvalidParameters :: !(Maybe (List1 Text))
+  , _drsResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteParametersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsDeletedParameters' - The names of the deleted parameters.
+--
+-- * 'drsInvalidParameters' - The names of parameters that weren't deleted because the parameters are not valid.
+--
+-- * 'drsResponseStatus' - -- | The response status code.
+deleteParametersResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DeleteParametersResponse
+deleteParametersResponse pResponseStatus_ =
+  DeleteParametersResponse'
+  { _drsDeletedParameters = Nothing
+  , _drsInvalidParameters = Nothing
+  , _drsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The names of the deleted parameters.
+drsDeletedParameters :: Lens' DeleteParametersResponse (Maybe (NonEmpty Text))
+drsDeletedParameters = lens _drsDeletedParameters (\ s a -> s{_drsDeletedParameters = a}) . mapping _List1;
+
+-- | The names of parameters that weren't deleted because the parameters are not valid.
+drsInvalidParameters :: Lens' DeleteParametersResponse (Maybe (NonEmpty Text))
+drsInvalidParameters = lens _drsInvalidParameters (\ s a -> s{_drsInvalidParameters = a}) . mapping _List1;
+
+-- | -- | The response status code.
+drsResponseStatus :: Lens' DeleteParametersResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+
+instance NFData DeleteParametersResponse where
diff --git a/gen/Network/AWS/SSM/DeletePatchBaseline.hs b/gen/Network/AWS/SSM/DeletePatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DeletePatchBaseline.hs
@@ -0,0 +1,133 @@
+{-# 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.SSM.DeletePatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a patch baseline.
+--
+--
+module Network.AWS.SSM.DeletePatchBaseline
+    (
+    -- * Creating a Request
+      deletePatchBaseline
+    , DeletePatchBaseline
+    -- * Request Lenses
+    , dpbBaselineId
+
+    -- * Destructuring the Response
+    , deletePatchBaselineResponse
+    , DeletePatchBaselineResponse
+    -- * Response Lenses
+    , dpbrsBaselineId
+    , dpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'deletePatchBaseline' smart constructor.
+newtype DeletePatchBaseline = DeletePatchBaseline'
+  { _dpbBaselineId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeletePatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbBaselineId' - The ID of the patch baseline to delete.
+deletePatchBaseline
+    :: Text -- ^ 'dpbBaselineId'
+    -> DeletePatchBaseline
+deletePatchBaseline pBaselineId_ =
+  DeletePatchBaseline' {_dpbBaselineId = pBaselineId_}
+
+
+-- | The ID of the patch baseline to delete.
+dpbBaselineId :: Lens' DeletePatchBaseline Text
+dpbBaselineId = lens _dpbBaselineId (\ s a -> s{_dpbBaselineId = a});
+
+instance AWSRequest DeletePatchBaseline where
+        type Rs DeletePatchBaseline =
+             DeletePatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeletePatchBaselineResponse' <$>
+                   (x .?> "BaselineId") <*> (pure (fromEnum s)))
+
+instance Hashable DeletePatchBaseline where
+
+instance NFData DeletePatchBaseline where
+
+instance ToHeaders DeletePatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DeletePatchBaseline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeletePatchBaseline where
+        toJSON DeletePatchBaseline'{..}
+          = object
+              (catMaybes [Just ("BaselineId" .= _dpbBaselineId)])
+
+instance ToPath DeletePatchBaseline where
+        toPath = const "/"
+
+instance ToQuery DeletePatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'deletePatchBaselineResponse' smart constructor.
+data DeletePatchBaselineResponse = DeletePatchBaselineResponse'
+  { _dpbrsBaselineId     :: !(Maybe Text)
+  , _dpbrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeletePatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbrsBaselineId' - The ID of the deleted patch baseline.
+--
+-- * 'dpbrsResponseStatus' - -- | The response status code.
+deletePatchBaselineResponse
+    :: Int -- ^ 'dpbrsResponseStatus'
+    -> DeletePatchBaselineResponse
+deletePatchBaselineResponse pResponseStatus_ =
+  DeletePatchBaselineResponse'
+  {_dpbrsBaselineId = Nothing, _dpbrsResponseStatus = pResponseStatus_}
+
+
+-- | The ID of the deleted patch baseline.
+dpbrsBaselineId :: Lens' DeletePatchBaselineResponse (Maybe Text)
+dpbrsBaselineId = lens _dpbrsBaselineId (\ s a -> s{_dpbrsBaselineId = a});
+
+-- | -- | The response status code.
+dpbrsResponseStatus :: Lens' DeletePatchBaselineResponse Int
+dpbrsResponseStatus = lens _dpbrsResponseStatus (\ s a -> s{_dpbrsResponseStatus = a});
+
+instance NFData DeletePatchBaselineResponse where
diff --git a/gen/Network/AWS/SSM/DeleteResourceDataSync.hs b/gen/Network/AWS/SSM/DeleteResourceDataSync.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DeleteResourceDataSync.hs
@@ -0,0 +1,124 @@
+{-# 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.SSM.DeleteResourceDataSync
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a Resource Data Sync configuration. After the configuration is deleted, changes to inventory data on managed instances are no longer synced with the target Amazon S3 bucket. Deleting a sync configuration does not delete data in the target Amazon S3 bucket.
+--
+--
+module Network.AWS.SSM.DeleteResourceDataSync
+    (
+    -- * Creating a Request
+      deleteResourceDataSync
+    , DeleteResourceDataSync
+    -- * Request Lenses
+    , drdsSyncName
+
+    -- * Destructuring the Response
+    , deleteResourceDataSyncResponse
+    , DeleteResourceDataSyncResponse
+    -- * Response Lenses
+    , drdsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'deleteResourceDataSync' smart constructor.
+newtype DeleteResourceDataSync = DeleteResourceDataSync'
+  { _drdsSyncName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteResourceDataSync' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drdsSyncName' - The name of the configuration to delete.
+deleteResourceDataSync
+    :: Text -- ^ 'drdsSyncName'
+    -> DeleteResourceDataSync
+deleteResourceDataSync pSyncName_ =
+  DeleteResourceDataSync' {_drdsSyncName = pSyncName_}
+
+
+-- | The name of the configuration to delete.
+drdsSyncName :: Lens' DeleteResourceDataSync Text
+drdsSyncName = lens _drdsSyncName (\ s a -> s{_drdsSyncName = a});
+
+instance AWSRequest DeleteResourceDataSync where
+        type Rs DeleteResourceDataSync =
+             DeleteResourceDataSyncResponse
+        request = postJSON ssm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 DeleteResourceDataSyncResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable DeleteResourceDataSync where
+
+instance NFData DeleteResourceDataSync where
+
+instance ToHeaders DeleteResourceDataSync where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DeleteResourceDataSync" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteResourceDataSync where
+        toJSON DeleteResourceDataSync'{..}
+          = object
+              (catMaybes [Just ("SyncName" .= _drdsSyncName)])
+
+instance ToPath DeleteResourceDataSync where
+        toPath = const "/"
+
+instance ToQuery DeleteResourceDataSync where
+        toQuery = const mempty
+
+-- | /See:/ 'deleteResourceDataSyncResponse' smart constructor.
+newtype DeleteResourceDataSyncResponse = DeleteResourceDataSyncResponse'
+  { _drdsrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeleteResourceDataSyncResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drdsrsResponseStatus' - -- | The response status code.
+deleteResourceDataSyncResponse
+    :: Int -- ^ 'drdsrsResponseStatus'
+    -> DeleteResourceDataSyncResponse
+deleteResourceDataSyncResponse pResponseStatus_ =
+  DeleteResourceDataSyncResponse' {_drdsrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+drdsrsResponseStatus :: Lens' DeleteResourceDataSyncResponse Int
+drdsrsResponseStatus = lens _drdsrsResponseStatus (\ s a -> s{_drdsrsResponseStatus = a});
+
+instance NFData DeleteResourceDataSyncResponse where
diff --git a/gen/Network/AWS/SSM/DeregisterManagedInstance.hs b/gen/Network/AWS/SSM/DeregisterManagedInstance.hs
--- a/gen/Network/AWS/SSM/DeregisterManagedInstance.hs
+++ b/gen/Network/AWS/SSM/DeregisterManagedInstance.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeregisterManagedInstance
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don’t plan to use Run Command on the server, we suggest uninstalling the SSM agent first.
+-- Removes the server or virtual machine from the list of registered servers. You can reregister the instance again at any time. If you don't plan to use Run Command on the server, we suggest uninstalling the SSM Agent first.
 --
 --
 module Network.AWS.SSM.DeregisterManagedInstance
@@ -36,18 +36,19 @@
     , dmirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deregisterManagedInstance' smart constructor.
 newtype DeregisterManagedInstance = DeregisterManagedInstance'
-    { _dmiInstanceId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmiInstanceId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterManagedInstance' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -57,10 +58,9 @@
     :: Text -- ^ 'dmiInstanceId'
     -> DeregisterManagedInstance
 deregisterManagedInstance pInstanceId_ =
-    DeregisterManagedInstance'
-    { _dmiInstanceId = pInstanceId_
-    }
+  DeregisterManagedInstance' {_dmiInstanceId = pInstanceId_}
 
+
 -- | The ID assigned to the managed instance when you registered it using the activation process.
 dmiInstanceId :: Lens' DeregisterManagedInstance Text
 dmiInstanceId = lens _dmiInstanceId (\ s a -> s{_dmiInstanceId = a});
@@ -75,9 +75,9 @@
                  DeregisterManagedInstanceResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable DeregisterManagedInstance
+instance Hashable DeregisterManagedInstance where
 
-instance NFData DeregisterManagedInstance
+instance NFData DeregisterManagedInstance where
 
 instance ToHeaders DeregisterManagedInstance where
         toHeaders
@@ -102,9 +102,10 @@
 
 -- | /See:/ 'deregisterManagedInstanceResponse' smart constructor.
 newtype DeregisterManagedInstanceResponse = DeregisterManagedInstanceResponse'
-    { _dmirsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmirsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterManagedInstanceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -114,12 +115,12 @@
     :: Int -- ^ 'dmirsResponseStatus'
     -> DeregisterManagedInstanceResponse
 deregisterManagedInstanceResponse pResponseStatus_ =
-    DeregisterManagedInstanceResponse'
-    { _dmirsResponseStatus = pResponseStatus_
-    }
+  DeregisterManagedInstanceResponse' {_dmirsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 dmirsResponseStatus :: Lens' DeregisterManagedInstanceResponse Int
 dmirsResponseStatus = lens _dmirsResponseStatus (\ s a -> s{_dmirsResponseStatus = a});
 
 instance NFData DeregisterManagedInstanceResponse
+         where
diff --git a/gen/Network/AWS/SSM/DeregisterPatchBaselineForPatchGroup.hs b/gen/Network/AWS/SSM/DeregisterPatchBaselineForPatchGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DeregisterPatchBaselineForPatchGroup.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SSM.DeregisterPatchBaselineForPatchGroup
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes a patch group from a patch baseline.
+--
+--
+module Network.AWS.SSM.DeregisterPatchBaselineForPatchGroup
+    (
+    -- * Creating a Request
+      deregisterPatchBaselineForPatchGroup
+    , DeregisterPatchBaselineForPatchGroup
+    -- * Request Lenses
+    , dpbfpgBaselineId
+    , dpbfpgPatchGroup
+
+    -- * Destructuring the Response
+    , deregisterPatchBaselineForPatchGroupResponse
+    , DeregisterPatchBaselineForPatchGroupResponse
+    -- * Response Lenses
+    , dpbfpgrsBaselineId
+    , dpbfpgrsPatchGroup
+    , dpbfpgrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'deregisterPatchBaselineForPatchGroup' smart constructor.
+data DeregisterPatchBaselineForPatchGroup = DeregisterPatchBaselineForPatchGroup'
+  { _dpbfpgBaselineId :: !Text
+  , _dpbfpgPatchGroup :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeregisterPatchBaselineForPatchGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbfpgBaselineId' - The ID of the patch baseline to deregister the patch group from.
+--
+-- * 'dpbfpgPatchGroup' - The name of the patch group that should be deregistered from the patch baseline.
+deregisterPatchBaselineForPatchGroup
+    :: Text -- ^ 'dpbfpgBaselineId'
+    -> Text -- ^ 'dpbfpgPatchGroup'
+    -> DeregisterPatchBaselineForPatchGroup
+deregisterPatchBaselineForPatchGroup pBaselineId_ pPatchGroup_ =
+  DeregisterPatchBaselineForPatchGroup'
+  {_dpbfpgBaselineId = pBaselineId_, _dpbfpgPatchGroup = pPatchGroup_}
+
+
+-- | The ID of the patch baseline to deregister the patch group from.
+dpbfpgBaselineId :: Lens' DeregisterPatchBaselineForPatchGroup Text
+dpbfpgBaselineId = lens _dpbfpgBaselineId (\ s a -> s{_dpbfpgBaselineId = a});
+
+-- | The name of the patch group that should be deregistered from the patch baseline.
+dpbfpgPatchGroup :: Lens' DeregisterPatchBaselineForPatchGroup Text
+dpbfpgPatchGroup = lens _dpbfpgPatchGroup (\ s a -> s{_dpbfpgPatchGroup = a});
+
+instance AWSRequest
+           DeregisterPatchBaselineForPatchGroup
+         where
+        type Rs DeregisterPatchBaselineForPatchGroup =
+             DeregisterPatchBaselineForPatchGroupResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeregisterPatchBaselineForPatchGroupResponse' <$>
+                   (x .?> "BaselineId") <*> (x .?> "PatchGroup") <*>
+                     (pure (fromEnum s)))
+
+instance Hashable
+           DeregisterPatchBaselineForPatchGroup
+         where
+
+instance NFData DeregisterPatchBaselineForPatchGroup
+         where
+
+instance ToHeaders
+           DeregisterPatchBaselineForPatchGroup
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DeregisterPatchBaselineForPatchGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeregisterPatchBaselineForPatchGroup
+         where
+        toJSON DeregisterPatchBaselineForPatchGroup'{..}
+          = object
+              (catMaybes
+                 [Just ("BaselineId" .= _dpbfpgBaselineId),
+                  Just ("PatchGroup" .= _dpbfpgPatchGroup)])
+
+instance ToPath DeregisterPatchBaselineForPatchGroup
+         where
+        toPath = const "/"
+
+instance ToQuery DeregisterPatchBaselineForPatchGroup
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'deregisterPatchBaselineForPatchGroupResponse' smart constructor.
+data DeregisterPatchBaselineForPatchGroupResponse = DeregisterPatchBaselineForPatchGroupResponse'
+  { _dpbfpgrsBaselineId     :: !(Maybe Text)
+  , _dpbfpgrsPatchGroup     :: !(Maybe Text)
+  , _dpbfpgrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DeregisterPatchBaselineForPatchGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbfpgrsBaselineId' - The ID of the patch baseline the patch group was deregistered from.
+--
+-- * 'dpbfpgrsPatchGroup' - The name of the patch group deregistered from the patch baseline.
+--
+-- * 'dpbfpgrsResponseStatus' - -- | The response status code.
+deregisterPatchBaselineForPatchGroupResponse
+    :: Int -- ^ 'dpbfpgrsResponseStatus'
+    -> DeregisterPatchBaselineForPatchGroupResponse
+deregisterPatchBaselineForPatchGroupResponse pResponseStatus_ =
+  DeregisterPatchBaselineForPatchGroupResponse'
+  { _dpbfpgrsBaselineId = Nothing
+  , _dpbfpgrsPatchGroup = Nothing
+  , _dpbfpgrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The ID of the patch baseline the patch group was deregistered from.
+dpbfpgrsBaselineId :: Lens' DeregisterPatchBaselineForPatchGroupResponse (Maybe Text)
+dpbfpgrsBaselineId = lens _dpbfpgrsBaselineId (\ s a -> s{_dpbfpgrsBaselineId = a});
+
+-- | The name of the patch group deregistered from the patch baseline.
+dpbfpgrsPatchGroup :: Lens' DeregisterPatchBaselineForPatchGroupResponse (Maybe Text)
+dpbfpgrsPatchGroup = lens _dpbfpgrsPatchGroup (\ s a -> s{_dpbfpgrsPatchGroup = a});
+
+-- | -- | The response status code.
+dpbfpgrsResponseStatus :: Lens' DeregisterPatchBaselineForPatchGroupResponse Int
+dpbfpgrsResponseStatus = lens _dpbfpgrsResponseStatus (\ s a -> s{_dpbfpgrsResponseStatus = a});
+
+instance NFData
+           DeregisterPatchBaselineForPatchGroupResponse
+         where
diff --git a/gen/Network/AWS/SSM/DeregisterTargetFromMaintenanceWindow.hs b/gen/Network/AWS/SSM/DeregisterTargetFromMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/DeregisterTargetFromMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/DeregisterTargetFromMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeregisterTargetFromMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -27,6 +27,7 @@
       deregisterTargetFromMaintenanceWindow
     , DeregisterTargetFromMaintenanceWindow
     -- * Request Lenses
+    , dtfmwSafe
     , dtfmwWindowId
     , dtfmwWindowTargetId
 
@@ -39,23 +40,27 @@
     , dtfmwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deregisterTargetFromMaintenanceWindow' smart constructor.
 data DeregisterTargetFromMaintenanceWindow = DeregisterTargetFromMaintenanceWindow'
-    { _dtfmwWindowId       :: !Text
-    , _dtfmwWindowTargetId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtfmwSafe           :: !(Maybe Bool)
+  , _dtfmwWindowId       :: !Text
+  , _dtfmwWindowTargetId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterTargetFromMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dtfmwSafe' - The system checks if the target is being referenced by a task. If the target is being referenced, the system returns an error and does not deregister the target from the Maintenance Window.
+--
 -- * 'dtfmwWindowId' - The ID of the Maintenance Window the target should be removed from.
 --
 -- * 'dtfmwWindowTargetId' - The ID of the target definition to remove.
@@ -64,11 +69,17 @@
     -> Text -- ^ 'dtfmwWindowTargetId'
     -> DeregisterTargetFromMaintenanceWindow
 deregisterTargetFromMaintenanceWindow pWindowId_ pWindowTargetId_ =
-    DeregisterTargetFromMaintenanceWindow'
-    { _dtfmwWindowId = pWindowId_
-    , _dtfmwWindowTargetId = pWindowTargetId_
-    }
+  DeregisterTargetFromMaintenanceWindow'
+  { _dtfmwSafe = Nothing
+  , _dtfmwWindowId = pWindowId_
+  , _dtfmwWindowTargetId = pWindowTargetId_
+  }
 
+
+-- | The system checks if the target is being referenced by a task. If the target is being referenced, the system returns an error and does not deregister the target from the Maintenance Window.
+dtfmwSafe :: Lens' DeregisterTargetFromMaintenanceWindow (Maybe Bool)
+dtfmwSafe = lens _dtfmwSafe (\ s a -> s{_dtfmwSafe = a});
+
 -- | The ID of the Maintenance Window the target should be removed from.
 dtfmwWindowId :: Lens' DeregisterTargetFromMaintenanceWindow Text
 dtfmwWindowId = lens _dtfmwWindowId (\ s a -> s{_dtfmwWindowId = a});
@@ -78,7 +89,8 @@
 dtfmwWindowTargetId = lens _dtfmwWindowTargetId (\ s a -> s{_dtfmwWindowTargetId = a});
 
 instance AWSRequest
-         DeregisterTargetFromMaintenanceWindow where
+           DeregisterTargetFromMaintenanceWindow
+         where
         type Rs DeregisterTargetFromMaintenanceWindow =
              DeregisterTargetFromMaintenanceWindowResponse
         request = postJSON ssm
@@ -90,12 +102,15 @@
                      (pure (fromEnum s)))
 
 instance Hashable
-         DeregisterTargetFromMaintenanceWindow
+           DeregisterTargetFromMaintenanceWindow
+         where
 
 instance NFData DeregisterTargetFromMaintenanceWindow
+         where
 
 instance ToHeaders
-         DeregisterTargetFromMaintenanceWindow where
+           DeregisterTargetFromMaintenanceWindow
+         where
         toHeaders
           = const
               (mconcat
@@ -110,7 +125,8 @@
         toJSON DeregisterTargetFromMaintenanceWindow'{..}
           = object
               (catMaybes
-                 [Just ("WindowId" .= _dtfmwWindowId),
+                 [("Safe" .=) <$> _dtfmwSafe,
+                  Just ("WindowId" .= _dtfmwWindowId),
                   Just ("WindowTargetId" .= _dtfmwWindowTargetId)])
 
 instance ToPath DeregisterTargetFromMaintenanceWindow
@@ -118,16 +134,18 @@
         toPath = const "/"
 
 instance ToQuery
-         DeregisterTargetFromMaintenanceWindow where
+           DeregisterTargetFromMaintenanceWindow
+         where
         toQuery = const mempty
 
 -- | /See:/ 'deregisterTargetFromMaintenanceWindowResponse' smart constructor.
 data DeregisterTargetFromMaintenanceWindowResponse = DeregisterTargetFromMaintenanceWindowResponse'
-    { _dtfmwrsWindowTargetId :: !(Maybe Text)
-    , _dtfmwrsWindowId       :: !(Maybe Text)
-    , _dtfmwrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dtfmwrsWindowTargetId :: !(Maybe Text)
+  , _dtfmwrsWindowId       :: !(Maybe Text)
+  , _dtfmwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterTargetFromMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -141,12 +159,13 @@
     :: Int -- ^ 'dtfmwrsResponseStatus'
     -> DeregisterTargetFromMaintenanceWindowResponse
 deregisterTargetFromMaintenanceWindowResponse pResponseStatus_ =
-    DeregisterTargetFromMaintenanceWindowResponse'
-    { _dtfmwrsWindowTargetId = Nothing
-    , _dtfmwrsWindowId = Nothing
-    , _dtfmwrsResponseStatus = pResponseStatus_
-    }
+  DeregisterTargetFromMaintenanceWindowResponse'
+  { _dtfmwrsWindowTargetId = Nothing
+  , _dtfmwrsWindowId = Nothing
+  , _dtfmwrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The ID of the removed target definition.
 dtfmwrsWindowTargetId :: Lens' DeregisterTargetFromMaintenanceWindowResponse (Maybe Text)
 dtfmwrsWindowTargetId = lens _dtfmwrsWindowTargetId (\ s a -> s{_dtfmwrsWindowTargetId = a});
@@ -160,4 +179,5 @@
 dtfmwrsResponseStatus = lens _dtfmwrsResponseStatus (\ s a -> s{_dtfmwrsResponseStatus = a});
 
 instance NFData
-         DeregisterTargetFromMaintenanceWindowResponse
+           DeregisterTargetFromMaintenanceWindowResponse
+         where
diff --git a/gen/Network/AWS/SSM/DeregisterTaskFromMaintenanceWindow.hs b/gen/Network/AWS/SSM/DeregisterTaskFromMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/DeregisterTaskFromMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/DeregisterTaskFromMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DeregisterTaskFromMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,19 +39,20 @@
     , derrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'deregisterTaskFromMaintenanceWindow' smart constructor.
 data DeregisterTaskFromMaintenanceWindow = DeregisterTaskFromMaintenanceWindow'
-    { _derWindowId     :: !Text
-    , _derWindowTaskId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _derWindowId     :: !Text
+  , _derWindowTaskId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterTaskFromMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,11 +65,10 @@
     -> Text -- ^ 'derWindowTaskId'
     -> DeregisterTaskFromMaintenanceWindow
 deregisterTaskFromMaintenanceWindow pWindowId_ pWindowTaskId_ =
-    DeregisterTaskFromMaintenanceWindow'
-    { _derWindowId = pWindowId_
-    , _derWindowTaskId = pWindowTaskId_
-    }
+  DeregisterTaskFromMaintenanceWindow'
+  {_derWindowId = pWindowId_, _derWindowTaskId = pWindowTaskId_}
 
+
 -- | The ID of the Maintenance Window the task should be removed from.
 derWindowId :: Lens' DeregisterTaskFromMaintenanceWindow Text
 derWindowId = lens _derWindowId (\ s a -> s{_derWindowId = a});
@@ -78,7 +78,8 @@
 derWindowTaskId = lens _derWindowTaskId (\ s a -> s{_derWindowTaskId = a});
 
 instance AWSRequest
-         DeregisterTaskFromMaintenanceWindow where
+           DeregisterTaskFromMaintenanceWindow
+         where
         type Rs DeregisterTaskFromMaintenanceWindow =
              DeregisterTaskFromMaintenanceWindowResponse
         request = postJSON ssm
@@ -90,11 +91,14 @@
                      (pure (fromEnum s)))
 
 instance Hashable DeregisterTaskFromMaintenanceWindow
+         where
 
 instance NFData DeregisterTaskFromMaintenanceWindow
+         where
 
 instance ToHeaders
-         DeregisterTaskFromMaintenanceWindow where
+           DeregisterTaskFromMaintenanceWindow
+         where
         toHeaders
           = const
               (mconcat
@@ -122,11 +126,12 @@
 
 -- | /See:/ 'deregisterTaskFromMaintenanceWindowResponse' smart constructor.
 data DeregisterTaskFromMaintenanceWindowResponse = DeregisterTaskFromMaintenanceWindowResponse'
-    { _derrsWindowTaskId   :: !(Maybe Text)
-    , _derrsWindowId       :: !(Maybe Text)
-    , _derrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _derrsWindowTaskId   :: !(Maybe Text)
+  , _derrsWindowId       :: !(Maybe Text)
+  , _derrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DeregisterTaskFromMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -140,12 +145,13 @@
     :: Int -- ^ 'derrsResponseStatus'
     -> DeregisterTaskFromMaintenanceWindowResponse
 deregisterTaskFromMaintenanceWindowResponse pResponseStatus_ =
-    DeregisterTaskFromMaintenanceWindowResponse'
-    { _derrsWindowTaskId = Nothing
-    , _derrsWindowId = Nothing
-    , _derrsResponseStatus = pResponseStatus_
-    }
+  DeregisterTaskFromMaintenanceWindowResponse'
+  { _derrsWindowTaskId = Nothing
+  , _derrsWindowId = Nothing
+  , _derrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The ID of the task removed from the Maintenance Window.
 derrsWindowTaskId :: Lens' DeregisterTaskFromMaintenanceWindowResponse (Maybe Text)
 derrsWindowTaskId = lens _derrsWindowTaskId (\ s a -> s{_derrsWindowTaskId = a});
@@ -159,4 +165,5 @@
 derrsResponseStatus = lens _derrsResponseStatus (\ s a -> s{_derrsResponseStatus = a});
 
 instance NFData
-         DeregisterTaskFromMaintenanceWindowResponse
+           DeregisterTaskFromMaintenanceWindowResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeActivations.hs b/gen/Network/AWS/SSM/DescribeActivations.hs
--- a/gen/Network/AWS/SSM/DescribeActivations.hs
+++ b/gen/Network/AWS/SSM/DescribeActivations.hs
@@ -12,15 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeActivations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Details about the activation, including: the date and time the activation was created, the expiration date, the IAM role assigned to the instances in the activation, and the number of instances activated by this registration.
 --
 --
+--
+-- This operation returns paginated results.
 module Network.AWS.SSM.DescribeActivations
     (
     -- * Creating a Request
@@ -40,20 +42,22 @@
     , darsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeActivations' smart constructor.
 data DescribeActivations = DescribeActivations'
-    { _daFilters    :: !(Maybe [DescribeActivationsFilter])
-    , _daNextToken  :: !(Maybe Text)
-    , _daMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daFilters    :: !(Maybe [DescribeActivationsFilter])
+  , _daNextToken  :: !(Maybe Text)
+  , _daMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeActivations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,12 +70,10 @@
 describeActivations
     :: DescribeActivations
 describeActivations =
-    DescribeActivations'
-    { _daFilters = Nothing
-    , _daNextToken = Nothing
-    , _daMaxResults = Nothing
-    }
+  DescribeActivations'
+  {_daFilters = Nothing, _daNextToken = Nothing, _daMaxResults = Nothing}
 
+
 -- | A filter to view information about your activations.
 daFilters :: Lens' DescribeActivations [DescribeActivationsFilter]
 daFilters = lens _daFilters (\ s a -> s{_daFilters = a}) . _Default . _Coerce;
@@ -84,6 +86,13 @@
 daMaxResults :: Lens' DescribeActivations (Maybe Natural)
 daMaxResults = lens _daMaxResults (\ s a -> s{_daMaxResults = a}) . mapping _Nat;
 
+instance AWSPager DescribeActivations where
+        page rq rs
+          | stop (rs ^. darsNextToken) = Nothing
+          | stop (rs ^. darsActivationList) = Nothing
+          | otherwise =
+            Just $ rq & daNextToken .~ rs ^. darsNextToken
+
 instance AWSRequest DescribeActivations where
         type Rs DescribeActivations =
              DescribeActivationsResponse
@@ -96,9 +105,9 @@
                      (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeActivations
+instance Hashable DescribeActivations where
 
-instance NFData DescribeActivations
+instance NFData DescribeActivations where
 
 instance ToHeaders DescribeActivations where
         toHeaders
@@ -125,11 +134,12 @@
 
 -- | /See:/ 'describeActivationsResponse' smart constructor.
 data DescribeActivationsResponse = DescribeActivationsResponse'
-    { _darsActivationList :: !(Maybe [Activation])
-    , _darsNextToken      :: !(Maybe Text)
-    , _darsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _darsActivationList :: !(Maybe [Activation])
+  , _darsNextToken      :: !(Maybe Text)
+  , _darsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeActivationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -143,12 +153,13 @@
     :: Int -- ^ 'darsResponseStatus'
     -> DescribeActivationsResponse
 describeActivationsResponse pResponseStatus_ =
-    DescribeActivationsResponse'
-    { _darsActivationList = Nothing
-    , _darsNextToken = Nothing
-    , _darsResponseStatus = pResponseStatus_
-    }
+  DescribeActivationsResponse'
+  { _darsActivationList = Nothing
+  , _darsNextToken = Nothing
+  , _darsResponseStatus = pResponseStatus_
+  }
 
+
 -- | A list of activations for your AWS account.
 darsActivationList :: Lens' DescribeActivationsResponse [Activation]
 darsActivationList = lens _darsActivationList (\ s a -> s{_darsActivationList = a}) . _Default . _Coerce;
@@ -161,4 +172,4 @@
 darsResponseStatus :: Lens' DescribeActivationsResponse Int
 darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a});
 
-instance NFData DescribeActivationsResponse
+instance NFData DescribeActivationsResponse where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeAssociation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the associations for the specified SSM document or instance.
+-- Describes the associations for the specified Systems Manager document or instance.
 --
 --
 module Network.AWS.SSM.DescribeAssociation
@@ -30,29 +30,32 @@
     , daAssociationId
     , daInstanceId
     , daName
+    , daAssociationVersion
 
     -- * Destructuring the Response
     , describeAssociationResponse
     , DescribeAssociationResponse
     -- * Response Lenses
-    , desrsAssociationDescription
-    , desrsResponseStatus
+    , daarsAssociationDescription
+    , daarsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeAssociation' smart constructor.
 data DescribeAssociation = DescribeAssociation'
-    { _daAssociationId :: !(Maybe Text)
-    , _daInstanceId    :: !(Maybe Text)
-    , _daName          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daAssociationId      :: !(Maybe Text)
+  , _daInstanceId         :: !(Maybe Text)
+  , _daName               :: !(Maybe Text)
+  , _daAssociationVersion :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAssociation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -61,16 +64,20 @@
 --
 -- * 'daInstanceId' - The instance ID.
 --
--- * 'daName' - The name of the SSM document.
+-- * 'daName' - The name of the Systems Manager document.
+--
+-- * 'daAssociationVersion' - Specify the association version to retrieve. To view the latest version, either specify @> LATEST@ for this parameter, or omit this parameter. To view a list of all associations for an instance, use ListInstanceAssociations. To get a list of versions for a specific association, use ListAssociationVersions.
 describeAssociation
     :: DescribeAssociation
 describeAssociation =
-    DescribeAssociation'
-    { _daAssociationId = Nothing
-    , _daInstanceId = Nothing
-    , _daName = Nothing
-    }
+  DescribeAssociation'
+  { _daAssociationId = Nothing
+  , _daInstanceId = Nothing
+  , _daName = Nothing
+  , _daAssociationVersion = Nothing
+  }
 
+
 -- | The association ID for which you want information.
 daAssociationId :: Lens' DescribeAssociation (Maybe Text)
 daAssociationId = lens _daAssociationId (\ s a -> s{_daAssociationId = a});
@@ -79,10 +86,14 @@
 daInstanceId :: Lens' DescribeAssociation (Maybe Text)
 daInstanceId = lens _daInstanceId (\ s a -> s{_daInstanceId = a});
 
--- | The name of the SSM document.
+-- | The name of the Systems Manager document.
 daName :: Lens' DescribeAssociation (Maybe Text)
 daName = lens _daName (\ s a -> s{_daName = a});
 
+-- | Specify the association version to retrieve. To view the latest version, either specify @> LATEST@ for this parameter, or omit this parameter. To view a list of all associations for an instance, use ListInstanceAssociations. To get a list of versions for a specific association, use ListAssociationVersions.
+daAssociationVersion :: Lens' DescribeAssociation (Maybe Text)
+daAssociationVersion = lens _daAssociationVersion (\ s a -> s{_daAssociationVersion = a});
+
 instance AWSRequest DescribeAssociation where
         type Rs DescribeAssociation =
              DescribeAssociationResponse
@@ -94,9 +105,9 @@
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeAssociation
+instance Hashable DescribeAssociation where
 
-instance NFData DescribeAssociation
+instance NFData DescribeAssociation where
 
 instance ToHeaders DescribeAssociation where
         toHeaders
@@ -113,7 +124,8 @@
               (catMaybes
                  [("AssociationId" .=) <$> _daAssociationId,
                   ("InstanceId" .=) <$> _daInstanceId,
-                  ("Name" .=) <$> _daName])
+                  ("Name" .=) <$> _daName,
+                  ("AssociationVersion" .=) <$> _daAssociationVersion])
 
 instance ToPath DescribeAssociation where
         toPath = const "/"
@@ -123,32 +135,34 @@
 
 -- | /See:/ 'describeAssociationResponse' smart constructor.
 data DescribeAssociationResponse = DescribeAssociationResponse'
-    { _desrsAssociationDescription :: !(Maybe AssociationDescription)
-    , _desrsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daarsAssociationDescription :: !(Maybe AssociationDescription)
+  , _daarsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAssociationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'desrsAssociationDescription' - Information about the association.
+-- * 'daarsAssociationDescription' - Information about the association.
 --
--- * 'desrsResponseStatus' - -- | The response status code.
+-- * 'daarsResponseStatus' - -- | The response status code.
 describeAssociationResponse
-    :: Int -- ^ 'desrsResponseStatus'
+    :: Int -- ^ 'daarsResponseStatus'
     -> DescribeAssociationResponse
 describeAssociationResponse pResponseStatus_ =
-    DescribeAssociationResponse'
-    { _desrsAssociationDescription = Nothing
-    , _desrsResponseStatus = pResponseStatus_
-    }
+  DescribeAssociationResponse'
+  { _daarsAssociationDescription = Nothing
+  , _daarsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the association.
-desrsAssociationDescription :: Lens' DescribeAssociationResponse (Maybe AssociationDescription)
-desrsAssociationDescription = lens _desrsAssociationDescription (\ s a -> s{_desrsAssociationDescription = a});
+daarsAssociationDescription :: Lens' DescribeAssociationResponse (Maybe AssociationDescription)
+daarsAssociationDescription = lens _daarsAssociationDescription (\ s a -> s{_daarsAssociationDescription = a});
 
 -- | -- | The response status code.
-desrsResponseStatus :: Lens' DescribeAssociationResponse Int
-desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
+daarsResponseStatus :: Lens' DescribeAssociationResponse Int
+daarsResponseStatus = lens _daarsResponseStatus (\ s a -> s{_daarsResponseStatus = a});
 
-instance NFData DescribeAssociationResponse
+instance NFData DescribeAssociationResponse where
diff --git a/gen/Network/AWS/SSM/DescribeAutomationExecutions.hs b/gen/Network/AWS/SSM/DescribeAutomationExecutions.hs
--- a/gen/Network/AWS/SSM/DescribeAutomationExecutions.hs
+++ b/gen/Network/AWS/SSM/DescribeAutomationExecutions.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeAutomationExecutions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,20 +40,21 @@
     , daersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeAutomationExecutions' smart constructor.
 data DescribeAutomationExecutions = DescribeAutomationExecutions'
-    { _daeFilters    :: !(Maybe (List1 AutomationExecutionFilter))
-    , _daeNextToken  :: !(Maybe Text)
-    , _daeMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daeFilters    :: !(Maybe (List1 AutomationExecutionFilter))
+  , _daeNextToken  :: !(Maybe Text)
+  , _daeMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutomationExecutions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,12 +67,10 @@
 describeAutomationExecutions
     :: DescribeAutomationExecutions
 describeAutomationExecutions =
-    DescribeAutomationExecutions'
-    { _daeFilters = Nothing
-    , _daeNextToken = Nothing
-    , _daeMaxResults = Nothing
-    }
+  DescribeAutomationExecutions'
+  {_daeFilters = Nothing, _daeNextToken = Nothing, _daeMaxResults = Nothing}
 
+
 -- | Filters used to limit the scope of executions that are requested.
 daeFilters :: Lens' DescribeAutomationExecutions (Maybe (NonEmpty AutomationExecutionFilter))
 daeFilters = lens _daeFilters (\ s a -> s{_daeFilters = a}) . mapping _List1;
@@ -97,9 +96,9 @@
                      (x .?> "AutomationExecutionMetadataList" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeAutomationExecutions
+instance Hashable DescribeAutomationExecutions where
 
-instance NFData DescribeAutomationExecutions
+instance NFData DescribeAutomationExecutions where
 
 instance ToHeaders DescribeAutomationExecutions where
         toHeaders
@@ -127,11 +126,12 @@
 
 -- | /See:/ 'describeAutomationExecutionsResponse' smart constructor.
 data DescribeAutomationExecutionsResponse = DescribeAutomationExecutionsResponse'
-    { _daersNextToken                       :: !(Maybe Text)
-    , _daersAutomationExecutionMetadataList :: !(Maybe [AutomationExecutionMetadata])
-    , _daersResponseStatus                  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _daersNextToken :: !(Maybe Text)
+  , _daersAutomationExecutionMetadataList :: !(Maybe [AutomationExecutionMetadata])
+  , _daersResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeAutomationExecutionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,12 +145,13 @@
     :: Int -- ^ 'daersResponseStatus'
     -> DescribeAutomationExecutionsResponse
 describeAutomationExecutionsResponse pResponseStatus_ =
-    DescribeAutomationExecutionsResponse'
-    { _daersNextToken = Nothing
-    , _daersAutomationExecutionMetadataList = Nothing
-    , _daersResponseStatus = pResponseStatus_
-    }
+  DescribeAutomationExecutionsResponse'
+  { _daersNextToken = Nothing
+  , _daersAutomationExecutionMetadataList = Nothing
+  , _daersResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 daersNextToken :: Lens' DescribeAutomationExecutionsResponse (Maybe Text)
 daersNextToken = lens _daersNextToken (\ s a -> s{_daersNextToken = a});
@@ -164,3 +165,4 @@
 daersResponseStatus = lens _daersResponseStatus (\ s a -> s{_daersResponseStatus = a});
 
 instance NFData DescribeAutomationExecutionsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeAvailablePatches.hs b/gen/Network/AWS/SSM/DescribeAvailablePatches.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribeAvailablePatches.hs
@@ -0,0 +1,165 @@
+{-# 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.SSM.DescribeAvailablePatches
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all patches that could possibly be included in a patch baseline.
+--
+--
+module Network.AWS.SSM.DescribeAvailablePatches
+    (
+    -- * Creating a Request
+      describeAvailablePatches
+    , DescribeAvailablePatches
+    -- * Request Lenses
+    , dapFilters
+    , dapNextToken
+    , dapMaxResults
+
+    -- * Destructuring the Response
+    , describeAvailablePatchesResponse
+    , DescribeAvailablePatchesResponse
+    -- * Response Lenses
+    , daprsPatches
+    , daprsNextToken
+    , daprsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describeAvailablePatches' smart constructor.
+data DescribeAvailablePatches = DescribeAvailablePatches'
+  { _dapFilters    :: !(Maybe [PatchOrchestratorFilter])
+  , _dapNextToken  :: !(Maybe Text)
+  , _dapMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeAvailablePatches' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dapFilters' - Filters used to scope down the returned patches.
+--
+-- * 'dapNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dapMaxResults' - The maximum number of patches to return (per page).
+describeAvailablePatches
+    :: DescribeAvailablePatches
+describeAvailablePatches =
+  DescribeAvailablePatches'
+  {_dapFilters = Nothing, _dapNextToken = Nothing, _dapMaxResults = Nothing}
+
+
+-- | Filters used to scope down the returned patches.
+dapFilters :: Lens' DescribeAvailablePatches [PatchOrchestratorFilter]
+dapFilters = lens _dapFilters (\ s a -> s{_dapFilters = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dapNextToken :: Lens' DescribeAvailablePatches (Maybe Text)
+dapNextToken = lens _dapNextToken (\ s a -> s{_dapNextToken = a});
+
+-- | The maximum number of patches to return (per page).
+dapMaxResults :: Lens' DescribeAvailablePatches (Maybe Natural)
+dapMaxResults = lens _dapMaxResults (\ s a -> s{_dapMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest DescribeAvailablePatches where
+        type Rs DescribeAvailablePatches =
+             DescribeAvailablePatchesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeAvailablePatchesResponse' <$>
+                   (x .?> "Patches" .!@ mempty) <*> (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeAvailablePatches where
+
+instance NFData DescribeAvailablePatches where
+
+instance ToHeaders DescribeAvailablePatches where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribeAvailablePatches" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeAvailablePatches where
+        toJSON DescribeAvailablePatches'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dapFilters,
+                  ("NextToken" .=) <$> _dapNextToken,
+                  ("MaxResults" .=) <$> _dapMaxResults])
+
+instance ToPath DescribeAvailablePatches where
+        toPath = const "/"
+
+instance ToQuery DescribeAvailablePatches where
+        toQuery = const mempty
+
+-- | /See:/ 'describeAvailablePatchesResponse' smart constructor.
+data DescribeAvailablePatchesResponse = DescribeAvailablePatchesResponse'
+  { _daprsPatches        :: !(Maybe [Patch])
+  , _daprsNextToken      :: !(Maybe Text)
+  , _daprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeAvailablePatchesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'daprsPatches' - An array of patches. Each entry in the array is a patch structure.
+--
+-- * 'daprsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'daprsResponseStatus' - -- | The response status code.
+describeAvailablePatchesResponse
+    :: Int -- ^ 'daprsResponseStatus'
+    -> DescribeAvailablePatchesResponse
+describeAvailablePatchesResponse pResponseStatus_ =
+  DescribeAvailablePatchesResponse'
+  { _daprsPatches = Nothing
+  , _daprsNextToken = Nothing
+  , _daprsResponseStatus = pResponseStatus_
+  }
+
+
+-- | An array of patches. Each entry in the array is a patch structure.
+daprsPatches :: Lens' DescribeAvailablePatchesResponse [Patch]
+daprsPatches = lens _daprsPatches (\ s a -> s{_daprsPatches = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+daprsNextToken :: Lens' DescribeAvailablePatchesResponse (Maybe Text)
+daprsNextToken = lens _daprsNextToken (\ s a -> s{_daprsNextToken = a});
+
+-- | -- | The response status code.
+daprsResponseStatus :: Lens' DescribeAvailablePatchesResponse Int
+daprsResponseStatus = lens _daprsResponseStatus (\ s a -> s{_daprsResponseStatus = a});
+
+instance NFData DescribeAvailablePatchesResponse
+         where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeDocument
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the specified SSM document.
+-- Describes the specified Systems Manager document.
 --
 --
 module Network.AWS.SSM.DescribeDocument
@@ -34,44 +34,43 @@
     , describeDocumentResponse
     , DescribeDocumentResponse
     -- * Response Lenses
-    , drsDocument
-    , drsResponseStatus
+    , desrsDocument
+    , desrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeDocument' smart constructor.
 data DescribeDocument = DescribeDocument'
-    { _ddDocumentVersion :: !(Maybe Text)
-    , _ddName            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddDocumentVersion :: !(Maybe Text)
+  , _ddName            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ddDocumentVersion' - The document version for which you want information. Can be a specific version or the default version.
 --
--- * 'ddName' - The name of the SSM document.
+-- * 'ddName' - The name of the Systems Manager document.
 describeDocument
     :: Text -- ^ 'ddName'
     -> DescribeDocument
 describeDocument pName_ =
-    DescribeDocument'
-    { _ddDocumentVersion = Nothing
-    , _ddName = pName_
-    }
+  DescribeDocument' {_ddDocumentVersion = Nothing, _ddName = pName_}
 
+
 -- | The document version for which you want information. Can be a specific version or the default version.
 ddDocumentVersion :: Lens' DescribeDocument (Maybe Text)
 ddDocumentVersion = lens _ddDocumentVersion (\ s a -> s{_ddDocumentVersion = a});
 
--- | The name of the SSM document.
+-- | The name of the Systems Manager document.
 ddName :: Lens' DescribeDocument Text
 ddName = lens _ddName (\ s a -> s{_ddName = a});
 
@@ -84,9 +83,9 @@
                  DescribeDocumentResponse' <$>
                    (x .?> "Document") <*> (pure (fromEnum s)))
 
-instance Hashable DescribeDocument
+instance Hashable DescribeDocument where
 
-instance NFData DescribeDocument
+instance NFData DescribeDocument where
 
 instance ToHeaders DescribeDocument where
         toHeaders
@@ -112,32 +111,32 @@
 
 -- | /See:/ 'describeDocumentResponse' smart constructor.
 data DescribeDocumentResponse = DescribeDocumentResponse'
-    { _drsDocument       :: !(Maybe DocumentDescription)
-    , _drsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _desrsDocument       :: !(Maybe DocumentDescription)
+  , _desrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDocumentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'drsDocument' - Information about the SSM document.
+-- * 'desrsDocument' - Information about the Systems Manager document.
 --
--- * 'drsResponseStatus' - -- | The response status code.
+-- * 'desrsResponseStatus' - -- | The response status code.
 describeDocumentResponse
-    :: Int -- ^ 'drsResponseStatus'
+    :: Int -- ^ 'desrsResponseStatus'
     -> DescribeDocumentResponse
 describeDocumentResponse pResponseStatus_ =
-    DescribeDocumentResponse'
-    { _drsDocument = Nothing
-    , _drsResponseStatus = pResponseStatus_
-    }
+  DescribeDocumentResponse'
+  {_desrsDocument = Nothing, _desrsResponseStatus = pResponseStatus_}
 
--- | Information about the SSM document.
-drsDocument :: Lens' DescribeDocumentResponse (Maybe DocumentDescription)
-drsDocument = lens _drsDocument (\ s a -> s{_drsDocument = a});
 
+-- | Information about the Systems Manager document.
+desrsDocument :: Lens' DescribeDocumentResponse (Maybe DocumentDescription)
+desrsDocument = lens _desrsDocument (\ s a -> s{_desrsDocument = a});
+
 -- | -- | The response status code.
-drsResponseStatus :: Lens' DescribeDocumentResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
+desrsResponseStatus :: Lens' DescribeDocumentResponse Int
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
 
-instance NFData DescribeDocumentResponse
+instance NFData DescribeDocumentResponse where
diff --git a/gen/Network/AWS/SSM/DescribeDocumentPermission.hs b/gen/Network/AWS/SSM/DescribeDocumentPermission.hs
--- a/gen/Network/AWS/SSM/DescribeDocumentPermission.hs
+++ b/gen/Network/AWS/SSM/DescribeDocumentPermission.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeDocumentPermission
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes the permissions for an SSM document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user’s AWS account ID) or publicly (/All/ ).
+-- Describes the permissions for a Systems Manager document. If you created the document, you are the owner. If a document is shared, it can either be shared privately (by specifying a user's AWS account ID) or publicly (/All/ ).
 --
 --
 module Network.AWS.SSM.DescribeDocumentPermission
@@ -38,19 +38,20 @@
     , ddprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeDocumentPermission' smart constructor.
 data DescribeDocumentPermission = DescribeDocumentPermission'
-    { _ddpName           :: !Text
-    , _ddpPermissionType :: !DocumentPermissionType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddpName           :: !Text
+  , _ddpPermissionType :: !DocumentPermissionType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDocumentPermission' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,10 @@
     -> DocumentPermissionType -- ^ 'ddpPermissionType'
     -> DescribeDocumentPermission
 describeDocumentPermission pName_ pPermissionType_ =
-    DescribeDocumentPermission'
-    { _ddpName = pName_
-    , _ddpPermissionType = pPermissionType_
-    }
+  DescribeDocumentPermission'
+  {_ddpName = pName_, _ddpPermissionType = pPermissionType_}
 
+
 -- | The name of the document for which you are the owner.
 ddpName :: Lens' DescribeDocumentPermission Text
 ddpName = lens _ddpName (\ s a -> s{_ddpName = a});
@@ -87,9 +87,9 @@
                    (x .?> "AccountIds" .!@ mempty) <*>
                      (pure (fromEnum s)))
 
-instance Hashable DescribeDocumentPermission
+instance Hashable DescribeDocumentPermission where
 
-instance NFData DescribeDocumentPermission
+instance NFData DescribeDocumentPermission where
 
 instance ToHeaders DescribeDocumentPermission where
         toHeaders
@@ -116,10 +116,11 @@
 
 -- | /See:/ 'describeDocumentPermissionResponse' smart constructor.
 data DescribeDocumentPermissionResponse = DescribeDocumentPermissionResponse'
-    { _ddprsAccountIds     :: !(Maybe [Text])
-    , _ddprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ddprsAccountIds     :: !(Maybe [Text])
+  , _ddprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeDocumentPermissionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -131,11 +132,10 @@
     :: Int -- ^ 'ddprsResponseStatus'
     -> DescribeDocumentPermissionResponse
 describeDocumentPermissionResponse pResponseStatus_ =
-    DescribeDocumentPermissionResponse'
-    { _ddprsAccountIds = Nothing
-    , _ddprsResponseStatus = pResponseStatus_
-    }
+  DescribeDocumentPermissionResponse'
+  {_ddprsAccountIds = Nothing, _ddprsResponseStatus = pResponseStatus_}
 
+
 -- | The account IDs that have permission to use this document. The ID can be either an AWS account or /All/ .
 ddprsAccountIds :: Lens' DescribeDocumentPermissionResponse [Text]
 ddprsAccountIds = lens _ddprsAccountIds (\ s a -> s{_ddprsAccountIds = a}) . _Default . _Coerce;
@@ -145,3 +145,4 @@
 ddprsResponseStatus = lens _ddprsResponseStatus (\ s a -> s{_ddprsResponseStatus = a});
 
 instance NFData DescribeDocumentPermissionResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeEffectiveInstanceAssociations.hs b/gen/Network/AWS/SSM/DescribeEffectiveInstanceAssociations.hs
--- a/gen/Network/AWS/SSM/DescribeEffectiveInstanceAssociations.hs
+++ b/gen/Network/AWS/SSM/DescribeEffectiveInstanceAssociations.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeEffectiveInstanceAssociations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,20 +40,21 @@
     , deiarsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeEffectiveInstanceAssociations' smart constructor.
 data DescribeEffectiveInstanceAssociations = DescribeEffectiveInstanceAssociations'
-    { _deiaNextToken  :: !(Maybe Text)
-    , _deiaMaxResults :: !(Maybe Nat)
-    , _deiaInstanceId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deiaNextToken  :: !(Maybe Text)
+  , _deiaMaxResults :: !(Maybe Nat)
+  , _deiaInstanceId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeEffectiveInstanceAssociations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,13 @@
     :: Text -- ^ 'deiaInstanceId'
     -> DescribeEffectiveInstanceAssociations
 describeEffectiveInstanceAssociations pInstanceId_ =
-    DescribeEffectiveInstanceAssociations'
-    { _deiaNextToken = Nothing
-    , _deiaMaxResults = Nothing
-    , _deiaInstanceId = pInstanceId_
-    }
+  DescribeEffectiveInstanceAssociations'
+  { _deiaNextToken = Nothing
+  , _deiaMaxResults = Nothing
+  , _deiaInstanceId = pInstanceId_
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 deiaNextToken :: Lens' DescribeEffectiveInstanceAssociations (Maybe Text)
 deiaNextToken = lens _deiaNextToken (\ s a -> s{_deiaNextToken = a});
@@ -86,7 +88,8 @@
 deiaInstanceId = lens _deiaInstanceId (\ s a -> s{_deiaInstanceId = a});
 
 instance AWSRequest
-         DescribeEffectiveInstanceAssociations where
+           DescribeEffectiveInstanceAssociations
+         where
         type Rs DescribeEffectiveInstanceAssociations =
              DescribeEffectiveInstanceAssociationsResponse
         request = postJSON ssm
@@ -99,12 +102,15 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable
-         DescribeEffectiveInstanceAssociations
+           DescribeEffectiveInstanceAssociations
+         where
 
 instance NFData DescribeEffectiveInstanceAssociations
+         where
 
 instance ToHeaders
-         DescribeEffectiveInstanceAssociations where
+           DescribeEffectiveInstanceAssociations
+         where
         toHeaders
           = const
               (mconcat
@@ -128,16 +134,18 @@
         toPath = const "/"
 
 instance ToQuery
-         DescribeEffectiveInstanceAssociations where
+           DescribeEffectiveInstanceAssociations
+         where
         toQuery = const mempty
 
 -- | /See:/ 'describeEffectiveInstanceAssociationsResponse' smart constructor.
 data DescribeEffectiveInstanceAssociationsResponse = DescribeEffectiveInstanceAssociationsResponse'
-    { _deiarsNextToken      :: !(Maybe Text)
-    , _deiarsAssociations   :: !(Maybe [InstanceAssociation])
-    , _deiarsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _deiarsNextToken      :: !(Maybe Text)
+  , _deiarsAssociations   :: !(Maybe [InstanceAssociation])
+  , _deiarsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeEffectiveInstanceAssociationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -151,12 +159,13 @@
     :: Int -- ^ 'deiarsResponseStatus'
     -> DescribeEffectiveInstanceAssociationsResponse
 describeEffectiveInstanceAssociationsResponse pResponseStatus_ =
-    DescribeEffectiveInstanceAssociationsResponse'
-    { _deiarsNextToken = Nothing
-    , _deiarsAssociations = Nothing
-    , _deiarsResponseStatus = pResponseStatus_
-    }
+  DescribeEffectiveInstanceAssociationsResponse'
+  { _deiarsNextToken = Nothing
+  , _deiarsAssociations = Nothing
+  , _deiarsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 deiarsNextToken :: Lens' DescribeEffectiveInstanceAssociationsResponse (Maybe Text)
 deiarsNextToken = lens _deiarsNextToken (\ s a -> s{_deiarsNextToken = a});
@@ -170,4 +179,5 @@
 deiarsResponseStatus = lens _deiarsResponseStatus (\ s a -> s{_deiarsResponseStatus = a});
 
 instance NFData
-         DescribeEffectiveInstanceAssociationsResponse
+           DescribeEffectiveInstanceAssociationsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeEffectivePatchesForPatchBaseline.hs b/gen/Network/AWS/SSM/DescribeEffectivePatchesForPatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribeEffectivePatchesForPatchBaseline.hs
@@ -0,0 +1,186 @@
+{-# 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.SSM.DescribeEffectivePatchesForPatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the current effective patches (the patch and the approval state) for the specified patch baseline. Note that this API applies only to Windows patch baselines.
+--
+--
+module Network.AWS.SSM.DescribeEffectivePatchesForPatchBaseline
+    (
+    -- * Creating a Request
+      describeEffectivePatchesForPatchBaseline
+    , DescribeEffectivePatchesForPatchBaseline
+    -- * Request Lenses
+    , depfpbNextToken
+    , depfpbMaxResults
+    , depfpbBaselineId
+
+    -- * Destructuring the Response
+    , describeEffectivePatchesForPatchBaselineResponse
+    , DescribeEffectivePatchesForPatchBaselineResponse
+    -- * Response Lenses
+    , depfpbrsEffectivePatches
+    , depfpbrsNextToken
+    , depfpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describeEffectivePatchesForPatchBaseline' smart constructor.
+data DescribeEffectivePatchesForPatchBaseline = DescribeEffectivePatchesForPatchBaseline'
+  { _depfpbNextToken  :: !(Maybe Text)
+  , _depfpbMaxResults :: !(Maybe Nat)
+  , _depfpbBaselineId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeEffectivePatchesForPatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'depfpbNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'depfpbMaxResults' - The maximum number of patches to return (per page).
+--
+-- * 'depfpbBaselineId' - The ID of the patch baseline to retrieve the effective patches for.
+describeEffectivePatchesForPatchBaseline
+    :: Text -- ^ 'depfpbBaselineId'
+    -> DescribeEffectivePatchesForPatchBaseline
+describeEffectivePatchesForPatchBaseline pBaselineId_ =
+  DescribeEffectivePatchesForPatchBaseline'
+  { _depfpbNextToken = Nothing
+  , _depfpbMaxResults = Nothing
+  , _depfpbBaselineId = pBaselineId_
+  }
+
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+depfpbNextToken :: Lens' DescribeEffectivePatchesForPatchBaseline (Maybe Text)
+depfpbNextToken = lens _depfpbNextToken (\ s a -> s{_depfpbNextToken = a});
+
+-- | The maximum number of patches to return (per page).
+depfpbMaxResults :: Lens' DescribeEffectivePatchesForPatchBaseline (Maybe Natural)
+depfpbMaxResults = lens _depfpbMaxResults (\ s a -> s{_depfpbMaxResults = a}) . mapping _Nat;
+
+-- | The ID of the patch baseline to retrieve the effective patches for.
+depfpbBaselineId :: Lens' DescribeEffectivePatchesForPatchBaseline Text
+depfpbBaselineId = lens _depfpbBaselineId (\ s a -> s{_depfpbBaselineId = a});
+
+instance AWSRequest
+           DescribeEffectivePatchesForPatchBaseline
+         where
+        type Rs DescribeEffectivePatchesForPatchBaseline =
+             DescribeEffectivePatchesForPatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeEffectivePatchesForPatchBaselineResponse' <$>
+                   (x .?> "EffectivePatches" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable
+           DescribeEffectivePatchesForPatchBaseline
+         where
+
+instance NFData
+           DescribeEffectivePatchesForPatchBaseline
+         where
+
+instance ToHeaders
+           DescribeEffectivePatchesForPatchBaseline
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribeEffectivePatchesForPatchBaseline"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON
+           DescribeEffectivePatchesForPatchBaseline
+         where
+        toJSON DescribeEffectivePatchesForPatchBaseline'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _depfpbNextToken,
+                  ("MaxResults" .=) <$> _depfpbMaxResults,
+                  Just ("BaselineId" .= _depfpbBaselineId)])
+
+instance ToPath
+           DescribeEffectivePatchesForPatchBaseline
+         where
+        toPath = const "/"
+
+instance ToQuery
+           DescribeEffectivePatchesForPatchBaseline
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'describeEffectivePatchesForPatchBaselineResponse' smart constructor.
+data DescribeEffectivePatchesForPatchBaselineResponse = DescribeEffectivePatchesForPatchBaselineResponse'
+  { _depfpbrsEffectivePatches :: !(Maybe [EffectivePatch])
+  , _depfpbrsNextToken        :: !(Maybe Text)
+  , _depfpbrsResponseStatus   :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeEffectivePatchesForPatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'depfpbrsEffectivePatches' - An array of patches and patch status.
+--
+-- * 'depfpbrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'depfpbrsResponseStatus' - -- | The response status code.
+describeEffectivePatchesForPatchBaselineResponse
+    :: Int -- ^ 'depfpbrsResponseStatus'
+    -> DescribeEffectivePatchesForPatchBaselineResponse
+describeEffectivePatchesForPatchBaselineResponse pResponseStatus_ =
+  DescribeEffectivePatchesForPatchBaselineResponse'
+  { _depfpbrsEffectivePatches = Nothing
+  , _depfpbrsNextToken = Nothing
+  , _depfpbrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | An array of patches and patch status.
+depfpbrsEffectivePatches :: Lens' DescribeEffectivePatchesForPatchBaselineResponse [EffectivePatch]
+depfpbrsEffectivePatches = lens _depfpbrsEffectivePatches (\ s a -> s{_depfpbrsEffectivePatches = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+depfpbrsNextToken :: Lens' DescribeEffectivePatchesForPatchBaselineResponse (Maybe Text)
+depfpbrsNextToken = lens _depfpbrsNextToken (\ s a -> s{_depfpbrsNextToken = a});
+
+-- | -- | The response status code.
+depfpbrsResponseStatus :: Lens' DescribeEffectivePatchesForPatchBaselineResponse Int
+depfpbrsResponseStatus = lens _depfpbrsResponseStatus (\ s a -> s{_depfpbrsResponseStatus = a});
+
+instance NFData
+           DescribeEffectivePatchesForPatchBaselineResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeInstanceAssociationsStatus.hs b/gen/Network/AWS/SSM/DescribeInstanceAssociationsStatus.hs
--- a/gen/Network/AWS/SSM/DescribeInstanceAssociationsStatus.hs
+++ b/gen/Network/AWS/SSM/DescribeInstanceAssociationsStatus.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeInstanceAssociationsStatus
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,20 +40,21 @@
     , diasrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeInstanceAssociationsStatus' smart constructor.
 data DescribeInstanceAssociationsStatus = DescribeInstanceAssociationsStatus'
-    { _diasNextToken  :: !(Maybe Text)
-    , _diasMaxResults :: !(Maybe Nat)
-    , _diasInstanceId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diasNextToken  :: !(Maybe Text)
+  , _diasMaxResults :: !(Maybe Nat)
+  , _diasInstanceId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstanceAssociationsStatus' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,13 @@
     :: Text -- ^ 'diasInstanceId'
     -> DescribeInstanceAssociationsStatus
 describeInstanceAssociationsStatus pInstanceId_ =
-    DescribeInstanceAssociationsStatus'
-    { _diasNextToken = Nothing
-    , _diasMaxResults = Nothing
-    , _diasInstanceId = pInstanceId_
-    }
+  DescribeInstanceAssociationsStatus'
+  { _diasNextToken = Nothing
+  , _diasMaxResults = Nothing
+  , _diasInstanceId = pInstanceId_
+  }
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 diasNextToken :: Lens' DescribeInstanceAssociationsStatus (Maybe Text)
 diasNextToken = lens _diasNextToken (\ s a -> s{_diasNextToken = a});
@@ -86,7 +88,8 @@
 diasInstanceId = lens _diasInstanceId (\ s a -> s{_diasInstanceId = a});
 
 instance AWSRequest
-         DescribeInstanceAssociationsStatus where
+           DescribeInstanceAssociationsStatus
+         where
         type Rs DescribeInstanceAssociationsStatus =
              DescribeInstanceAssociationsStatusResponse
         request = postJSON ssm
@@ -99,8 +102,10 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeInstanceAssociationsStatus
+         where
 
 instance NFData DescribeInstanceAssociationsStatus
+         where
 
 instance ToHeaders DescribeInstanceAssociationsStatus
          where
@@ -132,11 +137,12 @@
 
 -- | /See:/ 'describeInstanceAssociationsStatusResponse' smart constructor.
 data DescribeInstanceAssociationsStatusResponse = DescribeInstanceAssociationsStatusResponse'
-    { _diasrsInstanceAssociationStatusInfos :: !(Maybe [InstanceAssociationStatusInfo])
-    , _diasrsNextToken                      :: !(Maybe Text)
-    , _diasrsResponseStatus                 :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diasrsInstanceAssociationStatusInfos :: !(Maybe [InstanceAssociationStatusInfo])
+  , _diasrsNextToken :: !(Maybe Text)
+  , _diasrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstanceAssociationsStatusResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -150,12 +156,13 @@
     :: Int -- ^ 'diasrsResponseStatus'
     -> DescribeInstanceAssociationsStatusResponse
 describeInstanceAssociationsStatusResponse pResponseStatus_ =
-    DescribeInstanceAssociationsStatusResponse'
-    { _diasrsInstanceAssociationStatusInfos = Nothing
-    , _diasrsNextToken = Nothing
-    , _diasrsResponseStatus = pResponseStatus_
-    }
+  DescribeInstanceAssociationsStatusResponse'
+  { _diasrsInstanceAssociationStatusInfos = Nothing
+  , _diasrsNextToken = Nothing
+  , _diasrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Status information about the association.
 diasrsInstanceAssociationStatusInfos :: Lens' DescribeInstanceAssociationsStatusResponse [InstanceAssociationStatusInfo]
 diasrsInstanceAssociationStatusInfos = lens _diasrsInstanceAssociationStatusInfos (\ s a -> s{_diasrsInstanceAssociationStatusInfos = a}) . _Default . _Coerce;
@@ -169,4 +176,5 @@
 diasrsResponseStatus = lens _diasrsResponseStatus (\ s a -> s{_diasrsResponseStatus = a});
 
 instance NFData
-         DescribeInstanceAssociationsStatusResponse
+           DescribeInstanceAssociationsStatusResponse
+         where
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
@@ -12,15 +12,17 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeInstanceInformation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes one or more of your instances. You can use this to get information about instances like the operating system platform, the SSM agent version (Linux), status etc. If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error.
+-- Describes one or more of your instances. You can use this to get information about instances like the operating system platform, the SSM Agent version (Linux), status etc. If you specify one or more instance IDs, it returns information for those instances. If you do not specify instance IDs, it returns information for all your instances. If you specify an instance ID that is not valid or an instance that you do not own, you receive an error.
 --
 --
+--
+-- This operation returns paginated results.
 module Network.AWS.SSM.DescribeInstanceInformation
     (
     -- * Creating a Request
@@ -41,21 +43,23 @@
     , diirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeInstanceInformation' smart constructor.
 data DescribeInstanceInformation = DescribeInstanceInformation'
-    { _diiInstanceInformationFilterList :: !(Maybe [InstanceInformationFilter])
-    , _diiFilters                       :: !(Maybe [InstanceInformationStringFilter])
-    , _diiNextToken                     :: !(Maybe Text)
-    , _diiMaxResults                    :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diiInstanceInformationFilterList :: !(Maybe [InstanceInformationFilter])
+  , _diiFilters :: !(Maybe [InstanceInformationStringFilter])
+  , _diiNextToken :: !(Maybe Text)
+  , _diiMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstanceInformation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,13 +74,14 @@
 describeInstanceInformation
     :: DescribeInstanceInformation
 describeInstanceInformation =
-    DescribeInstanceInformation'
-    { _diiInstanceInformationFilterList = Nothing
-    , _diiFilters = Nothing
-    , _diiNextToken = Nothing
-    , _diiMaxResults = Nothing
-    }
+  DescribeInstanceInformation'
+  { _diiInstanceInformationFilterList = Nothing
+  , _diiFilters = Nothing
+  , _diiNextToken = Nothing
+  , _diiMaxResults = Nothing
+  }
 
+
 -- | One or more filters. Use a filter to return a more specific list of instances.
 diiInstanceInformationFilterList :: Lens' DescribeInstanceInformation [InstanceInformationFilter]
 diiInstanceInformationFilterList = lens _diiInstanceInformationFilterList (\ s a -> s{_diiInstanceInformationFilterList = a}) . _Default . _Coerce;
@@ -93,6 +98,13 @@
 diiMaxResults :: Lens' DescribeInstanceInformation (Maybe Natural)
 diiMaxResults = lens _diiMaxResults (\ s a -> s{_diiMaxResults = a}) . mapping _Nat;
 
+instance AWSPager DescribeInstanceInformation where
+        page rq rs
+          | stop (rs ^. diirsNextToken) = Nothing
+          | stop (rs ^. diirsInstanceInformationList) = Nothing
+          | otherwise =
+            Just $ rq & diiNextToken .~ rs ^. diirsNextToken
+
 instance AWSRequest DescribeInstanceInformation where
         type Rs DescribeInstanceInformation =
              DescribeInstanceInformationResponse
@@ -105,9 +117,9 @@
                      (x .?> "InstanceInformationList" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeInstanceInformation
+instance Hashable DescribeInstanceInformation where
 
-instance NFData DescribeInstanceInformation
+instance NFData DescribeInstanceInformation where
 
 instance ToHeaders DescribeInstanceInformation where
         toHeaders
@@ -137,11 +149,12 @@
 
 -- | /See:/ 'describeInstanceInformationResponse' smart constructor.
 data DescribeInstanceInformationResponse = DescribeInstanceInformationResponse'
-    { _diirsNextToken               :: !(Maybe Text)
-    , _diirsInstanceInformationList :: !(Maybe [InstanceInformation])
-    , _diirsResponseStatus          :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _diirsNextToken               :: !(Maybe Text)
+  , _diirsInstanceInformationList :: !(Maybe [InstanceInformation])
+  , _diirsResponseStatus          :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeInstanceInformationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -155,12 +168,13 @@
     :: Int -- ^ 'diirsResponseStatus'
     -> DescribeInstanceInformationResponse
 describeInstanceInformationResponse pResponseStatus_ =
-    DescribeInstanceInformationResponse'
-    { _diirsNextToken = Nothing
-    , _diirsInstanceInformationList = Nothing
-    , _diirsResponseStatus = pResponseStatus_
-    }
+  DescribeInstanceInformationResponse'
+  { _diirsNextToken = Nothing
+  , _diirsInstanceInformationList = Nothing
+  , _diirsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 diirsNextToken :: Lens' DescribeInstanceInformationResponse (Maybe Text)
 diirsNextToken = lens _diirsNextToken (\ s a -> s{_diirsNextToken = a});
@@ -174,3 +188,4 @@
 diirsResponseStatus = lens _diirsResponseStatus (\ s a -> s{_diirsResponseStatus = a});
 
 instance NFData DescribeInstanceInformationResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeInstancePatchStates.hs b/gen/Network/AWS/SSM/DescribeInstancePatchStates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribeInstancePatchStates.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SSM.DescribeInstancePatchStates
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the high-level patch state of one or more instances.
+--
+--
+module Network.AWS.SSM.DescribeInstancePatchStates
+    (
+    -- * Creating a Request
+      describeInstancePatchStates
+    , DescribeInstancePatchStates
+    -- * Request Lenses
+    , dipsNextToken
+    , dipsMaxResults
+    , dipsInstanceIds
+
+    -- * Destructuring the Response
+    , describeInstancePatchStatesResponse
+    , DescribeInstancePatchStatesResponse
+    -- * Response Lenses
+    , dipsrsNextToken
+    , dipsrsInstancePatchStates
+    , dipsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describeInstancePatchStates' smart constructor.
+data DescribeInstancePatchStates = DescribeInstancePatchStates'
+  { _dipsNextToken   :: !(Maybe Text)
+  , _dipsMaxResults  :: !(Maybe Nat)
+  , _dipsInstanceIds :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatchStates' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipsNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dipsMaxResults' - The maximum number of instances to return (per page).
+--
+-- * 'dipsInstanceIds' - The ID of the instance whose patch state information should be retrieved.
+describeInstancePatchStates
+    :: DescribeInstancePatchStates
+describeInstancePatchStates =
+  DescribeInstancePatchStates'
+  { _dipsNextToken = Nothing
+  , _dipsMaxResults = Nothing
+  , _dipsInstanceIds = mempty
+  }
+
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dipsNextToken :: Lens' DescribeInstancePatchStates (Maybe Text)
+dipsNextToken = lens _dipsNextToken (\ s a -> s{_dipsNextToken = a});
+
+-- | The maximum number of instances to return (per page).
+dipsMaxResults :: Lens' DescribeInstancePatchStates (Maybe Natural)
+dipsMaxResults = lens _dipsMaxResults (\ s a -> s{_dipsMaxResults = a}) . mapping _Nat;
+
+-- | The ID of the instance whose patch state information should be retrieved.
+dipsInstanceIds :: Lens' DescribeInstancePatchStates [Text]
+dipsInstanceIds = lens _dipsInstanceIds (\ s a -> s{_dipsInstanceIds = a}) . _Coerce;
+
+instance AWSRequest DescribeInstancePatchStates where
+        type Rs DescribeInstancePatchStates =
+             DescribeInstancePatchStatesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInstancePatchStatesResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "InstancePatchStates" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeInstancePatchStates where
+
+instance NFData DescribeInstancePatchStates where
+
+instance ToHeaders DescribeInstancePatchStates where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribeInstancePatchStates" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeInstancePatchStates where
+        toJSON DescribeInstancePatchStates'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _dipsNextToken,
+                  ("MaxResults" .=) <$> _dipsMaxResults,
+                  Just ("InstanceIds" .= _dipsInstanceIds)])
+
+instance ToPath DescribeInstancePatchStates where
+        toPath = const "/"
+
+instance ToQuery DescribeInstancePatchStates where
+        toQuery = const mempty
+
+-- | /See:/ 'describeInstancePatchStatesResponse' smart constructor.
+data DescribeInstancePatchStatesResponse = DescribeInstancePatchStatesResponse'
+  { _dipsrsNextToken           :: !(Maybe Text)
+  , _dipsrsInstancePatchStates :: !(Maybe [InstancePatchState])
+  , _dipsrsResponseStatus      :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatchStatesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipsrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'dipsrsInstancePatchStates' - The high-level patch state for the requested instances.
+--
+-- * 'dipsrsResponseStatus' - -- | The response status code.
+describeInstancePatchStatesResponse
+    :: Int -- ^ 'dipsrsResponseStatus'
+    -> DescribeInstancePatchStatesResponse
+describeInstancePatchStatesResponse pResponseStatus_ =
+  DescribeInstancePatchStatesResponse'
+  { _dipsrsNextToken = Nothing
+  , _dipsrsInstancePatchStates = Nothing
+  , _dipsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+dipsrsNextToken :: Lens' DescribeInstancePatchStatesResponse (Maybe Text)
+dipsrsNextToken = lens _dipsrsNextToken (\ s a -> s{_dipsrsNextToken = a});
+
+-- | The high-level patch state for the requested instances.
+dipsrsInstancePatchStates :: Lens' DescribeInstancePatchStatesResponse [InstancePatchState]
+dipsrsInstancePatchStates = lens _dipsrsInstancePatchStates (\ s a -> s{_dipsrsInstancePatchStates = a}) . _Default . _Coerce;
+
+-- | -- | The response status code.
+dipsrsResponseStatus :: Lens' DescribeInstancePatchStatesResponse Int
+dipsrsResponseStatus = lens _dipsrsResponseStatus (\ s a -> s{_dipsrsResponseStatus = a});
+
+instance NFData DescribeInstancePatchStatesResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeInstancePatchStatesForPatchGroup.hs b/gen/Network/AWS/SSM/DescribeInstancePatchStatesForPatchGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribeInstancePatchStatesForPatchGroup.hs
@@ -0,0 +1,195 @@
+{-# 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.SSM.DescribeInstancePatchStatesForPatchGroup
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the high-level patch state for the instances in the specified patch group.
+--
+--
+module Network.AWS.SSM.DescribeInstancePatchStatesForPatchGroup
+    (
+    -- * Creating a Request
+      describeInstancePatchStatesForPatchGroup
+    , DescribeInstancePatchStatesForPatchGroup
+    -- * Request Lenses
+    , dipsfpgFilters
+    , dipsfpgNextToken
+    , dipsfpgMaxResults
+    , dipsfpgPatchGroup
+
+    -- * Destructuring the Response
+    , describeInstancePatchStatesForPatchGroupResponse
+    , DescribeInstancePatchStatesForPatchGroupResponse
+    -- * Response Lenses
+    , dipsfpgrsNextToken
+    , dipsfpgrsInstancePatchStates
+    , dipsfpgrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describeInstancePatchStatesForPatchGroup' smart constructor.
+data DescribeInstancePatchStatesForPatchGroup = DescribeInstancePatchStatesForPatchGroup'
+  { _dipsfpgFilters    :: !(Maybe [InstancePatchStateFilter])
+  , _dipsfpgNextToken  :: !(Maybe Text)
+  , _dipsfpgMaxResults :: !(Maybe Nat)
+  , _dipsfpgPatchGroup :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatchStatesForPatchGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipsfpgFilters' - Each entry in the array is a structure containing: Key (string between 1 and 200 characters) Values (array containing a single string) Type (string "Equal", "NotEqual", "LessThan", "GreaterThan")
+--
+-- * 'dipsfpgNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dipsfpgMaxResults' - The maximum number of patches to return (per page).
+--
+-- * 'dipsfpgPatchGroup' - The name of the patch group for which the patch state information should be retrieved.
+describeInstancePatchStatesForPatchGroup
+    :: Text -- ^ 'dipsfpgPatchGroup'
+    -> DescribeInstancePatchStatesForPatchGroup
+describeInstancePatchStatesForPatchGroup pPatchGroup_ =
+  DescribeInstancePatchStatesForPatchGroup'
+  { _dipsfpgFilters = Nothing
+  , _dipsfpgNextToken = Nothing
+  , _dipsfpgMaxResults = Nothing
+  , _dipsfpgPatchGroup = pPatchGroup_
+  }
+
+
+-- | Each entry in the array is a structure containing: Key (string between 1 and 200 characters) Values (array containing a single string) Type (string "Equal", "NotEqual", "LessThan", "GreaterThan")
+dipsfpgFilters :: Lens' DescribeInstancePatchStatesForPatchGroup [InstancePatchStateFilter]
+dipsfpgFilters = lens _dipsfpgFilters (\ s a -> s{_dipsfpgFilters = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dipsfpgNextToken :: Lens' DescribeInstancePatchStatesForPatchGroup (Maybe Text)
+dipsfpgNextToken = lens _dipsfpgNextToken (\ s a -> s{_dipsfpgNextToken = a});
+
+-- | The maximum number of patches to return (per page).
+dipsfpgMaxResults :: Lens' DescribeInstancePatchStatesForPatchGroup (Maybe Natural)
+dipsfpgMaxResults = lens _dipsfpgMaxResults (\ s a -> s{_dipsfpgMaxResults = a}) . mapping _Nat;
+
+-- | The name of the patch group for which the patch state information should be retrieved.
+dipsfpgPatchGroup :: Lens' DescribeInstancePatchStatesForPatchGroup Text
+dipsfpgPatchGroup = lens _dipsfpgPatchGroup (\ s a -> s{_dipsfpgPatchGroup = a});
+
+instance AWSRequest
+           DescribeInstancePatchStatesForPatchGroup
+         where
+        type Rs DescribeInstancePatchStatesForPatchGroup =
+             DescribeInstancePatchStatesForPatchGroupResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInstancePatchStatesForPatchGroupResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "InstancePatchStates")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable
+           DescribeInstancePatchStatesForPatchGroup
+         where
+
+instance NFData
+           DescribeInstancePatchStatesForPatchGroup
+         where
+
+instance ToHeaders
+           DescribeInstancePatchStatesForPatchGroup
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribeInstancePatchStatesForPatchGroup"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON
+           DescribeInstancePatchStatesForPatchGroup
+         where
+        toJSON DescribeInstancePatchStatesForPatchGroup'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dipsfpgFilters,
+                  ("NextToken" .=) <$> _dipsfpgNextToken,
+                  ("MaxResults" .=) <$> _dipsfpgMaxResults,
+                  Just ("PatchGroup" .= _dipsfpgPatchGroup)])
+
+instance ToPath
+           DescribeInstancePatchStatesForPatchGroup
+         where
+        toPath = const "/"
+
+instance ToQuery
+           DescribeInstancePatchStatesForPatchGroup
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'describeInstancePatchStatesForPatchGroupResponse' smart constructor.
+data DescribeInstancePatchStatesForPatchGroupResponse = DescribeInstancePatchStatesForPatchGroupResponse'
+  { _dipsfpgrsNextToken           :: !(Maybe Text)
+  , _dipsfpgrsInstancePatchStates :: !(Maybe (List1 InstancePatchState))
+  , _dipsfpgrsResponseStatus      :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatchStatesForPatchGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipsfpgrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'dipsfpgrsInstancePatchStates' - The high-level patch state for the requested instances.
+--
+-- * 'dipsfpgrsResponseStatus' - -- | The response status code.
+describeInstancePatchStatesForPatchGroupResponse
+    :: Int -- ^ 'dipsfpgrsResponseStatus'
+    -> DescribeInstancePatchStatesForPatchGroupResponse
+describeInstancePatchStatesForPatchGroupResponse pResponseStatus_ =
+  DescribeInstancePatchStatesForPatchGroupResponse'
+  { _dipsfpgrsNextToken = Nothing
+  , _dipsfpgrsInstancePatchStates = Nothing
+  , _dipsfpgrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+dipsfpgrsNextToken :: Lens' DescribeInstancePatchStatesForPatchGroupResponse (Maybe Text)
+dipsfpgrsNextToken = lens _dipsfpgrsNextToken (\ s a -> s{_dipsfpgrsNextToken = a});
+
+-- | The high-level patch state for the requested instances.
+dipsfpgrsInstancePatchStates :: Lens' DescribeInstancePatchStatesForPatchGroupResponse (Maybe (NonEmpty InstancePatchState))
+dipsfpgrsInstancePatchStates = lens _dipsfpgrsInstancePatchStates (\ s a -> s{_dipsfpgrsInstancePatchStates = a}) . mapping _List1;
+
+-- | -- | The response status code.
+dipsfpgrsResponseStatus :: Lens' DescribeInstancePatchStatesForPatchGroupResponse Int
+dipsfpgrsResponseStatus = lens _dipsfpgrsResponseStatus (\ s a -> s{_dipsfpgrsResponseStatus = a});
+
+instance NFData
+           DescribeInstancePatchStatesForPatchGroupResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeInstancePatches.hs b/gen/Network/AWS/SSM/DescribeInstancePatches.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribeInstancePatches.hs
@@ -0,0 +1,178 @@
+{-# 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.SSM.DescribeInstancePatches
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about the patches on the specified instance and their state relative to the patch baseline being used for the instance.
+--
+--
+module Network.AWS.SSM.DescribeInstancePatches
+    (
+    -- * Creating a Request
+      describeInstancePatches
+    , DescribeInstancePatches
+    -- * Request Lenses
+    , dipFilters
+    , dipNextToken
+    , dipMaxResults
+    , dipInstanceId
+
+    -- * Destructuring the Response
+    , describeInstancePatchesResponse
+    , DescribeInstancePatchesResponse
+    -- * Response Lenses
+    , diprsPatches
+    , diprsNextToken
+    , diprsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describeInstancePatches' smart constructor.
+data DescribeInstancePatches = DescribeInstancePatches'
+  { _dipFilters    :: !(Maybe [PatchOrchestratorFilter])
+  , _dipNextToken  :: !(Maybe Text)
+  , _dipMaxResults :: !(Maybe Nat)
+  , _dipInstanceId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatches' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dipFilters' - Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string between 1 and 256 characters)
+--
+-- * 'dipNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dipMaxResults' - The maximum number of patches to return (per page).
+--
+-- * 'dipInstanceId' - The ID of the instance whose patch state information should be retrieved.
+describeInstancePatches
+    :: Text -- ^ 'dipInstanceId'
+    -> DescribeInstancePatches
+describeInstancePatches pInstanceId_ =
+  DescribeInstancePatches'
+  { _dipFilters = Nothing
+  , _dipNextToken = Nothing
+  , _dipMaxResults = Nothing
+  , _dipInstanceId = pInstanceId_
+  }
+
+
+-- | Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string between 1 and 256 characters)
+dipFilters :: Lens' DescribeInstancePatches [PatchOrchestratorFilter]
+dipFilters = lens _dipFilters (\ s a -> s{_dipFilters = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dipNextToken :: Lens' DescribeInstancePatches (Maybe Text)
+dipNextToken = lens _dipNextToken (\ s a -> s{_dipNextToken = a});
+
+-- | The maximum number of patches to return (per page).
+dipMaxResults :: Lens' DescribeInstancePatches (Maybe Natural)
+dipMaxResults = lens _dipMaxResults (\ s a -> s{_dipMaxResults = a}) . mapping _Nat;
+
+-- | The ID of the instance whose patch state information should be retrieved.
+dipInstanceId :: Lens' DescribeInstancePatches Text
+dipInstanceId = lens _dipInstanceId (\ s a -> s{_dipInstanceId = a});
+
+instance AWSRequest DescribeInstancePatches where
+        type Rs DescribeInstancePatches =
+             DescribeInstancePatchesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInstancePatchesResponse' <$>
+                   (x .?> "Patches" .!@ mempty) <*> (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribeInstancePatches where
+
+instance NFData DescribeInstancePatches where
+
+instance ToHeaders DescribeInstancePatches where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribeInstancePatches" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeInstancePatches where
+        toJSON DescribeInstancePatches'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dipFilters,
+                  ("NextToken" .=) <$> _dipNextToken,
+                  ("MaxResults" .=) <$> _dipMaxResults,
+                  Just ("InstanceId" .= _dipInstanceId)])
+
+instance ToPath DescribeInstancePatches where
+        toPath = const "/"
+
+instance ToQuery DescribeInstancePatches where
+        toQuery = const mempty
+
+-- | /See:/ 'describeInstancePatchesResponse' smart constructor.
+data DescribeInstancePatchesResponse = DescribeInstancePatchesResponse'
+  { _diprsPatches        :: !(Maybe [PatchComplianceData])
+  , _diprsNextToken      :: !(Maybe Text)
+  , _diprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeInstancePatchesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diprsPatches' - Each entry in the array is a structure containing: Title (string) KBId (string) Classification (string) Severity (string) State (string: "INSTALLED", "INSTALLED OTHER", "MISSING", "NOT APPLICABLE", "FAILED") InstalledTime (DateTime) InstalledBy (string)
+--
+-- * 'diprsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'diprsResponseStatus' - -- | The response status code.
+describeInstancePatchesResponse
+    :: Int -- ^ 'diprsResponseStatus'
+    -> DescribeInstancePatchesResponse
+describeInstancePatchesResponse pResponseStatus_ =
+  DescribeInstancePatchesResponse'
+  { _diprsPatches = Nothing
+  , _diprsNextToken = Nothing
+  , _diprsResponseStatus = pResponseStatus_
+  }
+
+
+-- | Each entry in the array is a structure containing: Title (string) KBId (string) Classification (string) Severity (string) State (string: "INSTALLED", "INSTALLED OTHER", "MISSING", "NOT APPLICABLE", "FAILED") InstalledTime (DateTime) InstalledBy (string)
+diprsPatches :: Lens' DescribeInstancePatchesResponse [PatchComplianceData]
+diprsPatches = lens _diprsPatches (\ s a -> s{_diprsPatches = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+diprsNextToken :: Lens' DescribeInstancePatchesResponse (Maybe Text)
+diprsNextToken = lens _diprsNextToken (\ s a -> s{_diprsNextToken = a});
+
+-- | -- | The response status code.
+diprsResponseStatus :: Lens' DescribeInstancePatchesResponse Int
+diprsResponseStatus = lens _diprsResponseStatus (\ s a -> s{_diprsResponseStatus = a});
+
+instance NFData DescribeInstancePatchesResponse where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTaskInvocations.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTaskInvocations.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTaskInvocations.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTaskInvocations.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindowExecutionTaskInvocations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,22 +42,23 @@
     , dmwetirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindowExecutionTaskInvocations' smart constructor.
 data DescribeMaintenanceWindowExecutionTaskInvocations = DescribeMaintenanceWindowExecutionTaskInvocations'
-    { _dmwetiFilters           :: !(Maybe [MaintenanceWindowFilter])
-    , _dmwetiNextToken         :: !(Maybe Text)
-    , _dmwetiMaxResults        :: !(Maybe Nat)
-    , _dmwetiWindowExecutionId :: !Text
-    , _dmwetiTaskId            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwetiFilters           :: !(Maybe [MaintenanceWindowFilter])
+  , _dmwetiNextToken         :: !(Maybe Text)
+  , _dmwetiMaxResults        :: !(Maybe Nat)
+  , _dmwetiWindowExecutionId :: !Text
+  , _dmwetiTaskId            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutionTaskInvocations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,14 +77,15 @@
     -> Text -- ^ 'dmwetiTaskId'
     -> DescribeMaintenanceWindowExecutionTaskInvocations
 describeMaintenanceWindowExecutionTaskInvocations pWindowExecutionId_ pTaskId_ =
-    DescribeMaintenanceWindowExecutionTaskInvocations'
-    { _dmwetiFilters = Nothing
-    , _dmwetiNextToken = Nothing
-    , _dmwetiMaxResults = Nothing
-    , _dmwetiWindowExecutionId = pWindowExecutionId_
-    , _dmwetiTaskId = pTaskId_
-    }
+  DescribeMaintenanceWindowExecutionTaskInvocations'
+  { _dmwetiFilters = Nothing
+  , _dmwetiNextToken = Nothing
+  , _dmwetiMaxResults = Nothing
+  , _dmwetiWindowExecutionId = pWindowExecutionId_
+  , _dmwetiTaskId = pTaskId_
+  }
 
+
 -- | Optional filters used to scope down the returned task invocations. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.
 dmwetiFilters :: Lens' DescribeMaintenanceWindowExecutionTaskInvocations [MaintenanceWindowFilter]
 dmwetiFilters = lens _dmwetiFilters (\ s a -> s{_dmwetiFilters = a}) . _Default . _Coerce;
@@ -105,7 +107,7 @@
 dmwetiTaskId = lens _dmwetiTaskId (\ s a -> s{_dmwetiTaskId = a});
 
 instance AWSRequest
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
          where
         type Rs
                DescribeMaintenanceWindowExecutionTaskInvocations
@@ -123,13 +125,15 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
+         where
 
 instance NFData
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
+         where
 
 instance ToHeaders
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
          where
         toHeaders
           = const
@@ -141,7 +145,7 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
          where
         toJSON
           DescribeMaintenanceWindowExecutionTaskInvocations'{..}
@@ -155,22 +159,23 @@
                   Just ("TaskId" .= _dmwetiTaskId)])
 
 instance ToPath
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
          where
         toPath = const "/"
 
 instance ToQuery
-         DescribeMaintenanceWindowExecutionTaskInvocations
+           DescribeMaintenanceWindowExecutionTaskInvocations
          where
         toQuery = const mempty
 
 -- | /See:/ 'describeMaintenanceWindowExecutionTaskInvocationsResponse' smart constructor.
 data DescribeMaintenanceWindowExecutionTaskInvocationsResponse = DescribeMaintenanceWindowExecutionTaskInvocationsResponse'
-    { _dmwetirsWindowExecutionTaskInvocationIdentities :: !(Maybe [MaintenanceWindowExecutionTaskInvocationIdentity])
-    , _dmwetirsNextToken                               :: !(Maybe Text)
-    , _dmwetirsResponseStatus                          :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwetirsWindowExecutionTaskInvocationIdentities :: !(Maybe [MaintenanceWindowExecutionTaskInvocationIdentity])
+  , _dmwetirsNextToken :: !(Maybe Text)
+  , _dmwetirsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutionTaskInvocationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -184,12 +189,13 @@
     :: Int -- ^ 'dmwetirsResponseStatus'
     -> DescribeMaintenanceWindowExecutionTaskInvocationsResponse
 describeMaintenanceWindowExecutionTaskInvocationsResponse pResponseStatus_ =
-    DescribeMaintenanceWindowExecutionTaskInvocationsResponse'
-    { _dmwetirsWindowExecutionTaskInvocationIdentities = Nothing
-    , _dmwetirsNextToken = Nothing
-    , _dmwetirsResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowExecutionTaskInvocationsResponse'
+  { _dmwetirsWindowExecutionTaskInvocationIdentities = Nothing
+  , _dmwetirsNextToken = Nothing
+  , _dmwetirsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the task invocation results per invocation.
 dmwetirsWindowExecutionTaskInvocationIdentities :: Lens' DescribeMaintenanceWindowExecutionTaskInvocationsResponse [MaintenanceWindowExecutionTaskInvocationIdentity]
 dmwetirsWindowExecutionTaskInvocationIdentities = lens _dmwetirsWindowExecutionTaskInvocationIdentities (\ s a -> s{_dmwetirsWindowExecutionTaskInvocationIdentities = a}) . _Default . _Coerce;
@@ -203,4 +209,5 @@
 dmwetirsResponseStatus = lens _dmwetirsResponseStatus (\ s a -> s{_dmwetirsResponseStatus = a});
 
 instance NFData
-         DescribeMaintenanceWindowExecutionTaskInvocationsResponse
+           DescribeMaintenanceWindowExecutionTaskInvocationsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTasks.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTasks.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTasks.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutionTasks.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindowExecutionTasks
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,21 +41,22 @@
     , dmwetrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindowExecutionTasks' smart constructor.
 data DescribeMaintenanceWindowExecutionTasks = DescribeMaintenanceWindowExecutionTasks'
-    { _dmwetFilters           :: !(Maybe [MaintenanceWindowFilter])
-    , _dmwetNextToken         :: !(Maybe Text)
-    , _dmwetMaxResults        :: !(Maybe Nat)
-    , _dmwetWindowExecutionId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwetFilters           :: !(Maybe [MaintenanceWindowFilter])
+  , _dmwetNextToken         :: !(Maybe Text)
+  , _dmwetMaxResults        :: !(Maybe Nat)
+  , _dmwetWindowExecutionId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutionTasks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,13 +72,14 @@
     :: Text -- ^ 'dmwetWindowExecutionId'
     -> DescribeMaintenanceWindowExecutionTasks
 describeMaintenanceWindowExecutionTasks pWindowExecutionId_ =
-    DescribeMaintenanceWindowExecutionTasks'
-    { _dmwetFilters = Nothing
-    , _dmwetNextToken = Nothing
-    , _dmwetMaxResults = Nothing
-    , _dmwetWindowExecutionId = pWindowExecutionId_
-    }
+  DescribeMaintenanceWindowExecutionTasks'
+  { _dmwetFilters = Nothing
+  , _dmwetNextToken = Nothing
+  , _dmwetMaxResults = Nothing
+  , _dmwetWindowExecutionId = pWindowExecutionId_
+  }
 
+
 -- | Optional filters used to scope down the returned tasks. The supported filter key is STATUS with the corresponding values PENDING, IN_PROGRESS, SUCCESS, FAILED, TIMED_OUT, CANCELLING, and CANCELLED.
 dmwetFilters :: Lens' DescribeMaintenanceWindowExecutionTasks [MaintenanceWindowFilter]
 dmwetFilters = lens _dmwetFilters (\ s a -> s{_dmwetFilters = a}) . _Default . _Coerce;
@@ -95,7 +97,8 @@
 dmwetWindowExecutionId = lens _dmwetWindowExecutionId (\ s a -> s{_dmwetWindowExecutionId = a});
 
 instance AWSRequest
-         DescribeMaintenanceWindowExecutionTasks where
+           DescribeMaintenanceWindowExecutionTasks
+         where
         type Rs DescribeMaintenanceWindowExecutionTasks =
              DescribeMaintenanceWindowExecutionTasksResponse
         request = postJSON ssm
@@ -108,13 +111,16 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable
-         DescribeMaintenanceWindowExecutionTasks
+           DescribeMaintenanceWindowExecutionTasks
+         where
 
 instance NFData
-         DescribeMaintenanceWindowExecutionTasks
+           DescribeMaintenanceWindowExecutionTasks
+         where
 
 instance ToHeaders
-         DescribeMaintenanceWindowExecutionTasks where
+           DescribeMaintenanceWindowExecutionTasks
+         where
         toHeaders
           = const
               (mconcat
@@ -125,7 +131,8 @@
                     ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON
-         DescribeMaintenanceWindowExecutionTasks where
+           DescribeMaintenanceWindowExecutionTasks
+         where
         toJSON DescribeMaintenanceWindowExecutionTasks'{..}
           = object
               (catMaybes
@@ -136,20 +143,23 @@
                     ("WindowExecutionId" .= _dmwetWindowExecutionId)])
 
 instance ToPath
-         DescribeMaintenanceWindowExecutionTasks where
+           DescribeMaintenanceWindowExecutionTasks
+         where
         toPath = const "/"
 
 instance ToQuery
-         DescribeMaintenanceWindowExecutionTasks where
+           DescribeMaintenanceWindowExecutionTasks
+         where
         toQuery = const mempty
 
 -- | /See:/ 'describeMaintenanceWindowExecutionTasksResponse' smart constructor.
 data DescribeMaintenanceWindowExecutionTasksResponse = DescribeMaintenanceWindowExecutionTasksResponse'
-    { _dmwetrsNextToken                     :: !(Maybe Text)
-    , _dmwetrsWindowExecutionTaskIdentities :: !(Maybe [MaintenanceWindowExecutionTaskIdentity])
-    , _dmwetrsResponseStatus                :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwetrsNextToken :: !(Maybe Text)
+  , _dmwetrsWindowExecutionTaskIdentities :: !(Maybe [MaintenanceWindowExecutionTaskIdentity])
+  , _dmwetrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutionTasksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -163,12 +173,13 @@
     :: Int -- ^ 'dmwetrsResponseStatus'
     -> DescribeMaintenanceWindowExecutionTasksResponse
 describeMaintenanceWindowExecutionTasksResponse pResponseStatus_ =
-    DescribeMaintenanceWindowExecutionTasksResponse'
-    { _dmwetrsNextToken = Nothing
-    , _dmwetrsWindowExecutionTaskIdentities = Nothing
-    , _dmwetrsResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowExecutionTasksResponse'
+  { _dmwetrsNextToken = Nothing
+  , _dmwetrsWindowExecutionTaskIdentities = Nothing
+  , _dmwetrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dmwetrsNextToken :: Lens' DescribeMaintenanceWindowExecutionTasksResponse (Maybe Text)
 dmwetrsNextToken = lens _dmwetrsNextToken (\ s a -> s{_dmwetrsNextToken = a});
@@ -182,4 +193,5 @@
 dmwetrsResponseStatus = lens _dmwetrsResponseStatus (\ s a -> s{_dmwetrsResponseStatus = a});
 
 instance NFData
-         DescribeMaintenanceWindowExecutionTasksResponse
+           DescribeMaintenanceWindowExecutionTasksResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutions.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutions.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutions.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindowExecutions.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindowExecutions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the executions of a Maintenance Window (meaning, information about when the Maintenance Window was scheduled to be active and information about tasks registered and run with the Maintenance Window).
+-- Lists the executions of a Maintenance Window. This includes information about when the Maintenance Window was scheduled to be active, and information about tasks registered and run with the Maintenance Window.
 --
 --
 module Network.AWS.SSM.DescribeMaintenanceWindowExecutions
@@ -41,26 +41,27 @@
     , dmwersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindowExecutions' smart constructor.
 data DescribeMaintenanceWindowExecutions = DescribeMaintenanceWindowExecutions'
-    { _dmweFilters    :: !(Maybe [MaintenanceWindowFilter])
-    , _dmweNextToken  :: !(Maybe Text)
-    , _dmweMaxResults :: !(Maybe Nat)
-    , _dmweWindowId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmweFilters    :: !(Maybe [MaintenanceWindowFilter])
+  , _dmweNextToken  :: !(Maybe Text)
+  , _dmweMaxResults :: !(Maybe Nat)
+  , _dmweWindowId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dmweFilters' - Each entry in the array is a structure containing: Key (string, 1 ≤ length ≤ 128) Values (array of strings 1 ≤ length ≤ 256) The supported Keys are @ExecutedBefore@ and @ExecutedAfter@ with the value being a date/time string such as 2016-11-04T05:00:00Z.
+-- * 'dmweFilters' - Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string is between 1 and 256 characters) The supported Keys are ExecutedBefore and ExecutedAfter with the value being a date/time string such as 2016-11-04T05:00:00Z.
 --
 -- * 'dmweNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
@@ -71,14 +72,15 @@
     :: Text -- ^ 'dmweWindowId'
     -> DescribeMaintenanceWindowExecutions
 describeMaintenanceWindowExecutions pWindowId_ =
-    DescribeMaintenanceWindowExecutions'
-    { _dmweFilters = Nothing
-    , _dmweNextToken = Nothing
-    , _dmweMaxResults = Nothing
-    , _dmweWindowId = pWindowId_
-    }
+  DescribeMaintenanceWindowExecutions'
+  { _dmweFilters = Nothing
+  , _dmweNextToken = Nothing
+  , _dmweMaxResults = Nothing
+  , _dmweWindowId = pWindowId_
+  }
 
--- | Each entry in the array is a structure containing: Key (string, 1 ≤ length ≤ 128) Values (array of strings 1 ≤ length ≤ 256) The supported Keys are @ExecutedBefore@ and @ExecutedAfter@ with the value being a date/time string such as 2016-11-04T05:00:00Z.
+
+-- | Each entry in the array is a structure containing: Key (string, between 1 and 128 characters) Values (array of strings, each string is between 1 and 256 characters) The supported Keys are ExecutedBefore and ExecutedAfter with the value being a date/time string such as 2016-11-04T05:00:00Z.
 dmweFilters :: Lens' DescribeMaintenanceWindowExecutions [MaintenanceWindowFilter]
 dmweFilters = lens _dmweFilters (\ s a -> s{_dmweFilters = a}) . _Default . _Coerce;
 
@@ -95,7 +97,8 @@
 dmweWindowId = lens _dmweWindowId (\ s a -> s{_dmweWindowId = a});
 
 instance AWSRequest
-         DescribeMaintenanceWindowExecutions where
+           DescribeMaintenanceWindowExecutions
+         where
         type Rs DescribeMaintenanceWindowExecutions =
              DescribeMaintenanceWindowExecutionsResponse
         request = postJSON ssm
@@ -108,11 +111,14 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeMaintenanceWindowExecutions
+         where
 
 instance NFData DescribeMaintenanceWindowExecutions
+         where
 
 instance ToHeaders
-         DescribeMaintenanceWindowExecutions where
+           DescribeMaintenanceWindowExecutions
+         where
         toHeaders
           = const
               (mconcat
@@ -142,11 +148,12 @@
 
 -- | /See:/ 'describeMaintenanceWindowExecutionsResponse' smart constructor.
 data DescribeMaintenanceWindowExecutionsResponse = DescribeMaintenanceWindowExecutionsResponse'
-    { _dmwersWindowExecutions :: !(Maybe [MaintenanceWindowExecution])
-    , _dmwersNextToken        :: !(Maybe Text)
-    , _dmwersResponseStatus   :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwersWindowExecutions :: !(Maybe [MaintenanceWindowExecution])
+  , _dmwersNextToken        :: !(Maybe Text)
+  , _dmwersResponseStatus   :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowExecutionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -160,12 +167,13 @@
     :: Int -- ^ 'dmwersResponseStatus'
     -> DescribeMaintenanceWindowExecutionsResponse
 describeMaintenanceWindowExecutionsResponse pResponseStatus_ =
-    DescribeMaintenanceWindowExecutionsResponse'
-    { _dmwersWindowExecutions = Nothing
-    , _dmwersNextToken = Nothing
-    , _dmwersResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowExecutionsResponse'
+  { _dmwersWindowExecutions = Nothing
+  , _dmwersNextToken = Nothing
+  , _dmwersResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the Maintenance Windows execution.
 dmwersWindowExecutions :: Lens' DescribeMaintenanceWindowExecutionsResponse [MaintenanceWindowExecution]
 dmwersWindowExecutions = lens _dmwersWindowExecutions (\ s a -> s{_dmwersWindowExecutions = a}) . _Default . _Coerce;
@@ -179,4 +187,5 @@
 dmwersResponseStatus = lens _dmwersResponseStatus (\ s a -> s{_dmwersResponseStatus = a});
 
 instance NFData
-         DescribeMaintenanceWindowExecutionsResponse
+           DescribeMaintenanceWindowExecutionsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindowTargets.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindowTargets.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindowTargets.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindowTargets.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindowTargets
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,26 +41,27 @@
     , dmwtrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindowTargets' smart constructor.
 data DescribeMaintenanceWindowTargets = DescribeMaintenanceWindowTargets'
-    { _dmwtFilters    :: !(Maybe [MaintenanceWindowFilter])
-    , _dmwtNextToken  :: !(Maybe Text)
-    , _dmwtMaxResults :: !(Maybe Nat)
-    , _dmwtWindowId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwtFilters    :: !(Maybe [MaintenanceWindowFilter])
+  , _dmwtNextToken  :: !(Maybe Text)
+  , _dmwtMaxResults :: !(Maybe Nat)
+  , _dmwtWindowId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowTargets' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dmwtFilters' - Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are @Type@ , @WindowTargetId@ and @OwnerInformation@ .
+-- * 'dmwtFilters' - Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are Type, WindowTargetId and OwnerInformation.
 --
 -- * 'dmwtNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
@@ -71,14 +72,15 @@
     :: Text -- ^ 'dmwtWindowId'
     -> DescribeMaintenanceWindowTargets
 describeMaintenanceWindowTargets pWindowId_ =
-    DescribeMaintenanceWindowTargets'
-    { _dmwtFilters = Nothing
-    , _dmwtNextToken = Nothing
-    , _dmwtMaxResults = Nothing
-    , _dmwtWindowId = pWindowId_
-    }
+  DescribeMaintenanceWindowTargets'
+  { _dmwtFilters = Nothing
+  , _dmwtNextToken = Nothing
+  , _dmwtMaxResults = Nothing
+  , _dmwtWindowId = pWindowId_
+  }
 
--- | Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are @Type@ , @WindowTargetId@ and @OwnerInformation@ .
+
+-- | Optional filters that can be used to narrow down the scope of the returned window targets. The supported filter keys are Type, WindowTargetId and OwnerInformation.
 dmwtFilters :: Lens' DescribeMaintenanceWindowTargets [MaintenanceWindowFilter]
 dmwtFilters = lens _dmwtFilters (\ s a -> s{_dmwtFilters = a}) . _Default . _Coerce;
 
@@ -107,8 +109,10 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeMaintenanceWindowTargets
+         where
 
 instance NFData DescribeMaintenanceWindowTargets
+         where
 
 instance ToHeaders DescribeMaintenanceWindowTargets
          where
@@ -141,11 +145,12 @@
 
 -- | /See:/ 'describeMaintenanceWindowTargetsResponse' smart constructor.
 data DescribeMaintenanceWindowTargetsResponse = DescribeMaintenanceWindowTargetsResponse'
-    { _dmwtrsNextToken      :: !(Maybe Text)
-    , _dmwtrsTargets        :: !(Maybe [MaintenanceWindowTarget])
-    , _dmwtrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwtrsNextToken      :: !(Maybe Text)
+  , _dmwtrsTargets        :: !(Maybe [MaintenanceWindowTarget])
+  , _dmwtrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowTargetsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -159,12 +164,13 @@
     :: Int -- ^ 'dmwtrsResponseStatus'
     -> DescribeMaintenanceWindowTargetsResponse
 describeMaintenanceWindowTargetsResponse pResponseStatus_ =
-    DescribeMaintenanceWindowTargetsResponse'
-    { _dmwtrsNextToken = Nothing
-    , _dmwtrsTargets = Nothing
-    , _dmwtrsResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowTargetsResponse'
+  { _dmwtrsNextToken = Nothing
+  , _dmwtrsTargets = Nothing
+  , _dmwtrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dmwtrsNextToken :: Lens' DescribeMaintenanceWindowTargetsResponse (Maybe Text)
 dmwtrsNextToken = lens _dmwtrsNextToken (\ s a -> s{_dmwtrsNextToken = a});
@@ -178,4 +184,5 @@
 dmwtrsResponseStatus = lens _dmwtrsResponseStatus (\ s a -> s{_dmwtrsResponseStatus = a});
 
 instance NFData
-         DescribeMaintenanceWindowTargetsResponse
+           DescribeMaintenanceWindowTargetsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindowTasks.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindowTasks.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindowTasks.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindowTasks.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindowTasks
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,26 +41,27 @@
     , dmwtsrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindowTasks' smart constructor.
 data DescribeMaintenanceWindowTasks = DescribeMaintenanceWindowTasks'
-    { _dFilters    :: !(Maybe [MaintenanceWindowFilter])
-    , _dNextToken  :: !(Maybe Text)
-    , _dMaxResults :: !(Maybe Nat)
-    , _dWindowId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dFilters    :: !(Maybe [MaintenanceWindowFilter])
+  , _dNextToken  :: !(Maybe Text)
+  , _dMaxResults :: !(Maybe Nat)
+  , _dWindowId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowTasks' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dFilters' - Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are @WindowTaskId@ , @TaskArn@ , @Priority@ , and @TaskType@ .
+-- * 'dFilters' - Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType.
 --
 -- * 'dNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
@@ -71,14 +72,15 @@
     :: Text -- ^ 'dWindowId'
     -> DescribeMaintenanceWindowTasks
 describeMaintenanceWindowTasks pWindowId_ =
-    DescribeMaintenanceWindowTasks'
-    { _dFilters = Nothing
-    , _dNextToken = Nothing
-    , _dMaxResults = Nothing
-    , _dWindowId = pWindowId_
-    }
+  DescribeMaintenanceWindowTasks'
+  { _dFilters = Nothing
+  , _dNextToken = Nothing
+  , _dMaxResults = Nothing
+  , _dWindowId = pWindowId_
+  }
 
--- | Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are @WindowTaskId@ , @TaskArn@ , @Priority@ , and @TaskType@ .
+
+-- | Optional filters used to narrow down the scope of the returned tasks. The supported filter keys are WindowTaskId, TaskArn, Priority, and TaskType.
 dFilters :: Lens' DescribeMaintenanceWindowTasks [MaintenanceWindowFilter]
 dFilters = lens _dFilters (\ s a -> s{_dFilters = a}) . _Default . _Coerce;
 
@@ -107,8 +109,9 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable DescribeMaintenanceWindowTasks
+         where
 
-instance NFData DescribeMaintenanceWindowTasks
+instance NFData DescribeMaintenanceWindowTasks where
 
 instance ToHeaders DescribeMaintenanceWindowTasks
          where
@@ -138,11 +141,12 @@
 
 -- | /See:/ 'describeMaintenanceWindowTasksResponse' smart constructor.
 data DescribeMaintenanceWindowTasksResponse = DescribeMaintenanceWindowTasksResponse'
-    { _dmwtsrsTasks          :: !(Maybe [MaintenanceWindowTask])
-    , _dmwtsrsNextToken      :: !(Maybe Text)
-    , _dmwtsrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwtsrsTasks          :: !(Maybe [MaintenanceWindowTask])
+  , _dmwtsrsNextToken      :: !(Maybe Text)
+  , _dmwtsrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowTasksResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -156,12 +160,13 @@
     :: Int -- ^ 'dmwtsrsResponseStatus'
     -> DescribeMaintenanceWindowTasksResponse
 describeMaintenanceWindowTasksResponse pResponseStatus_ =
-    DescribeMaintenanceWindowTasksResponse'
-    { _dmwtsrsTasks = Nothing
-    , _dmwtsrsNextToken = Nothing
-    , _dmwtsrsResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowTasksResponse'
+  { _dmwtsrsTasks = Nothing
+  , _dmwtsrsNextToken = Nothing
+  , _dmwtsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the tasks in the Maintenance Window.
 dmwtsrsTasks :: Lens' DescribeMaintenanceWindowTasksResponse [MaintenanceWindowTask]
 dmwtsrsTasks = lens _dmwtsrsTasks (\ s a -> s{_dmwtsrsTasks = a}) . _Default . _Coerce;
@@ -175,4 +180,5 @@
 dmwtsrsResponseStatus = lens _dmwtsrsResponseStatus (\ s a -> s{_dmwtsrsResponseStatus = a});
 
 instance NFData
-         DescribeMaintenanceWindowTasksResponse
+           DescribeMaintenanceWindowTasksResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeMaintenanceWindows.hs b/gen/Network/AWS/SSM/DescribeMaintenanceWindows.hs
--- a/gen/Network/AWS/SSM/DescribeMaintenanceWindows.hs
+++ b/gen/Network/AWS/SSM/DescribeMaintenanceWindows.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeMaintenanceWindows
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,25 +40,26 @@
     , dmwsrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeMaintenanceWindows' smart constructor.
 data DescribeMaintenanceWindows = DescribeMaintenanceWindows'
-    { _dmwFilters    :: !(Maybe [MaintenanceWindowFilter])
-    , _dmwNextToken  :: !(Maybe Text)
-    , _dmwMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwFilters    :: !(Maybe [MaintenanceWindowFilter])
+  , _dmwNextToken  :: !(Maybe Text)
+  , _dmwMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindows' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dmwFilters' - Optional filters used to narrow down the scope of the returned Maintenance Windows. Supported filter keys are @Name@ and @Enabled@ .
+-- * 'dmwFilters' - Optional filters used to narrow down the scope of the returned Maintenance Windows. Supported filter keys are Name and Enabled.
 --
 -- * 'dmwNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
@@ -66,13 +67,11 @@
 describeMaintenanceWindows
     :: DescribeMaintenanceWindows
 describeMaintenanceWindows =
-    DescribeMaintenanceWindows'
-    { _dmwFilters = Nothing
-    , _dmwNextToken = Nothing
-    , _dmwMaxResults = Nothing
-    }
+  DescribeMaintenanceWindows'
+  {_dmwFilters = Nothing, _dmwNextToken = Nothing, _dmwMaxResults = Nothing}
 
--- | Optional filters used to narrow down the scope of the returned Maintenance Windows. Supported filter keys are @Name@ and @Enabled@ .
+
+-- | Optional filters used to narrow down the scope of the returned Maintenance Windows. Supported filter keys are Name and Enabled.
 dmwFilters :: Lens' DescribeMaintenanceWindows [MaintenanceWindowFilter]
 dmwFilters = lens _dmwFilters (\ s a -> s{_dmwFilters = a}) . _Default . _Coerce;
 
@@ -96,9 +95,9 @@
                      (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeMaintenanceWindows
+instance Hashable DescribeMaintenanceWindows where
 
-instance NFData DescribeMaintenanceWindows
+instance NFData DescribeMaintenanceWindows where
 
 instance ToHeaders DescribeMaintenanceWindows where
         toHeaders
@@ -126,11 +125,12 @@
 
 -- | /See:/ 'describeMaintenanceWindowsResponse' smart constructor.
 data DescribeMaintenanceWindowsResponse = DescribeMaintenanceWindowsResponse'
-    { _dmwsrsWindowIdentities :: !(Maybe [MaintenanceWindowIdentity])
-    , _dmwsrsNextToken        :: !(Maybe Text)
-    , _dmwsrsResponseStatus   :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dmwsrsWindowIdentities :: !(Maybe [MaintenanceWindowIdentity])
+  , _dmwsrsNextToken        :: !(Maybe Text)
+  , _dmwsrsResponseStatus   :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeMaintenanceWindowsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -144,12 +144,13 @@
     :: Int -- ^ 'dmwsrsResponseStatus'
     -> DescribeMaintenanceWindowsResponse
 describeMaintenanceWindowsResponse pResponseStatus_ =
-    DescribeMaintenanceWindowsResponse'
-    { _dmwsrsWindowIdentities = Nothing
-    , _dmwsrsNextToken = Nothing
-    , _dmwsrsResponseStatus = pResponseStatus_
-    }
+  DescribeMaintenanceWindowsResponse'
+  { _dmwsrsWindowIdentities = Nothing
+  , _dmwsrsNextToken = Nothing
+  , _dmwsrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the Maintenance Windows.
 dmwsrsWindowIdentities :: Lens' DescribeMaintenanceWindowsResponse [MaintenanceWindowIdentity]
 dmwsrsWindowIdentities = lens _dmwsrsWindowIdentities (\ s a -> s{_dmwsrsWindowIdentities = a}) . _Default . _Coerce;
@@ -163,3 +164,4 @@
 dmwsrsResponseStatus = lens _dmwsrsResponseStatus (\ s a -> s{_dmwsrsResponseStatus = a});
 
 instance NFData DescribeMaintenanceWindowsResponse
+         where
diff --git a/gen/Network/AWS/SSM/DescribeParameters.hs b/gen/Network/AWS/SSM/DescribeParameters.hs
--- a/gen/Network/AWS/SSM/DescribeParameters.hs
+++ b/gen/Network/AWS/SSM/DescribeParameters.hs
@@ -12,21 +12,26 @@
 
 -- |
 -- Module      : Network.AWS.SSM.DescribeParameters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 -- Get information about a parameter.
 --
 --
+-- Request results are returned on a best-effort basis. If you specify @MaxResults@ in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of @MaxResults@ . If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a @NextToken@ . You can specify the @NextToken@ in a subsequent call to get the next set of results.
+--
+--
+-- This operation returns paginated results.
 module Network.AWS.SSM.DescribeParameters
     (
     -- * Creating a Request
       describeParameters
     , DescribeParameters
     -- * Request Lenses
+    , dpParameterFilters
     , dpFilters
     , dpNextToken
     , dpMaxResults
@@ -40,24 +45,29 @@
     , dprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'describeParameters' smart constructor.
 data DescribeParameters = DescribeParameters'
-    { _dpFilters    :: !(Maybe [ParametersFilter])
-    , _dpNextToken  :: !(Maybe Text)
-    , _dpMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dpParameterFilters :: !(Maybe [ParameterStringFilter])
+  , _dpFilters          :: !(Maybe [ParametersFilter])
+  , _dpNextToken        :: !(Maybe Text)
+  , _dpMaxResults       :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeParameters' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'dpParameterFilters' - Filters to limit the request results.
+--
 -- * 'dpFilters' - One or more filters. Use a filter to return a more specific list of results.
 --
 -- * 'dpNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
@@ -66,12 +76,18 @@
 describeParameters
     :: DescribeParameters
 describeParameters =
-    DescribeParameters'
-    { _dpFilters = Nothing
-    , _dpNextToken = Nothing
-    , _dpMaxResults = Nothing
-    }
+  DescribeParameters'
+  { _dpParameterFilters = Nothing
+  , _dpFilters = Nothing
+  , _dpNextToken = Nothing
+  , _dpMaxResults = Nothing
+  }
 
+
+-- | Filters to limit the request results.
+dpParameterFilters :: Lens' DescribeParameters [ParameterStringFilter]
+dpParameterFilters = lens _dpParameterFilters (\ s a -> s{_dpParameterFilters = a}) . _Default . _Coerce;
+
 -- | One or more filters. Use a filter to return a more specific list of results.
 dpFilters :: Lens' DescribeParameters [ParametersFilter]
 dpFilters = lens _dpFilters (\ s a -> s{_dpFilters = a}) . _Default . _Coerce;
@@ -84,6 +100,13 @@
 dpMaxResults :: Lens' DescribeParameters (Maybe Natural)
 dpMaxResults = lens _dpMaxResults (\ s a -> s{_dpMaxResults = a}) . mapping _Nat;
 
+instance AWSPager DescribeParameters where
+        page rq rs
+          | stop (rs ^. dprsNextToken) = Nothing
+          | stop (rs ^. dprsParameters) = Nothing
+          | otherwise =
+            Just $ rq & dpNextToken .~ rs ^. dprsNextToken
+
 instance AWSRequest DescribeParameters where
         type Rs DescribeParameters =
              DescribeParametersResponse
@@ -96,9 +119,9 @@
                      (x .?> "Parameters" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable DescribeParameters
+instance Hashable DescribeParameters where
 
-instance NFData DescribeParameters
+instance NFData DescribeParameters where
 
 instance ToHeaders DescribeParameters where
         toHeaders
@@ -113,7 +136,8 @@
         toJSON DescribeParameters'{..}
           = object
               (catMaybes
-                 [("Filters" .=) <$> _dpFilters,
+                 [("ParameterFilters" .=) <$> _dpParameterFilters,
+                  ("Filters" .=) <$> _dpFilters,
                   ("NextToken" .=) <$> _dpNextToken,
                   ("MaxResults" .=) <$> _dpMaxResults])
 
@@ -125,11 +149,12 @@
 
 -- | /See:/ 'describeParametersResponse' smart constructor.
 data DescribeParametersResponse = DescribeParametersResponse'
-    { _dprsNextToken      :: !(Maybe Text)
-    , _dprsParameters     :: !(Maybe [ParameterMetadata])
-    , _dprsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _dprsNextToken      :: !(Maybe Text)
+  , _dprsParameters     :: !(Maybe [ParameterMetadata])
+  , _dprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'DescribeParametersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -143,12 +168,13 @@
     :: Int -- ^ 'dprsResponseStatus'
     -> DescribeParametersResponse
 describeParametersResponse pResponseStatus_ =
-    DescribeParametersResponse'
-    { _dprsNextToken = Nothing
-    , _dprsParameters = Nothing
-    , _dprsResponseStatus = pResponseStatus_
-    }
+  DescribeParametersResponse'
+  { _dprsNextToken = Nothing
+  , _dprsParameters = Nothing
+  , _dprsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 dprsNextToken :: Lens' DescribeParametersResponse (Maybe Text)
 dprsNextToken = lens _dprsNextToken (\ s a -> s{_dprsNextToken = a});
@@ -161,4 +187,4 @@
 dprsResponseStatus :: Lens' DescribeParametersResponse Int
 dprsResponseStatus = lens _dprsResponseStatus (\ s a -> s{_dprsResponseStatus = a});
 
-instance NFData DescribeParametersResponse
+instance NFData DescribeParametersResponse where
diff --git a/gen/Network/AWS/SSM/DescribePatchBaselines.hs b/gen/Network/AWS/SSM/DescribePatchBaselines.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribePatchBaselines.hs
@@ -0,0 +1,165 @@
+{-# 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.SSM.DescribePatchBaselines
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the patch baselines in your AWS account.
+--
+--
+module Network.AWS.SSM.DescribePatchBaselines
+    (
+    -- * Creating a Request
+      describePatchBaselines
+    , DescribePatchBaselines
+    -- * Request Lenses
+    , dpbFilters
+    , dpbNextToken
+    , dpbMaxResults
+
+    -- * Destructuring the Response
+    , describePatchBaselinesResponse
+    , DescribePatchBaselinesResponse
+    -- * Response Lenses
+    , dpbsrsBaselineIdentities
+    , dpbsrsNextToken
+    , dpbsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describePatchBaselines' smart constructor.
+data DescribePatchBaselines = DescribePatchBaselines'
+  { _dpbFilters    :: !(Maybe [PatchOrchestratorFilter])
+  , _dpbNextToken  :: !(Maybe Text)
+  , _dpbMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchBaselines' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbFilters' - Each element in the array is a structure containing:  Key: (string, "NAME_PREFIX" or "OWNER") Value: (array of strings, exactly 1 entry, between 1 and 255 characters)
+--
+-- * 'dpbNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dpbMaxResults' - The maximum number of patch baselines to return (per page).
+describePatchBaselines
+    :: DescribePatchBaselines
+describePatchBaselines =
+  DescribePatchBaselines'
+  {_dpbFilters = Nothing, _dpbNextToken = Nothing, _dpbMaxResults = Nothing}
+
+
+-- | Each element in the array is a structure containing:  Key: (string, "NAME_PREFIX" or "OWNER") Value: (array of strings, exactly 1 entry, between 1 and 255 characters)
+dpbFilters :: Lens' DescribePatchBaselines [PatchOrchestratorFilter]
+dpbFilters = lens _dpbFilters (\ s a -> s{_dpbFilters = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dpbNextToken :: Lens' DescribePatchBaselines (Maybe Text)
+dpbNextToken = lens _dpbNextToken (\ s a -> s{_dpbNextToken = a});
+
+-- | The maximum number of patch baselines to return (per page).
+dpbMaxResults :: Lens' DescribePatchBaselines (Maybe Natural)
+dpbMaxResults = lens _dpbMaxResults (\ s a -> s{_dpbMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest DescribePatchBaselines where
+        type Rs DescribePatchBaselines =
+             DescribePatchBaselinesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribePatchBaselinesResponse' <$>
+                   (x .?> "BaselineIdentities" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribePatchBaselines where
+
+instance NFData DescribePatchBaselines where
+
+instance ToHeaders DescribePatchBaselines where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribePatchBaselines" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribePatchBaselines where
+        toJSON DescribePatchBaselines'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dpbFilters,
+                  ("NextToken" .=) <$> _dpbNextToken,
+                  ("MaxResults" .=) <$> _dpbMaxResults])
+
+instance ToPath DescribePatchBaselines where
+        toPath = const "/"
+
+instance ToQuery DescribePatchBaselines where
+        toQuery = const mempty
+
+-- | /See:/ 'describePatchBaselinesResponse' smart constructor.
+data DescribePatchBaselinesResponse = DescribePatchBaselinesResponse'
+  { _dpbsrsBaselineIdentities :: !(Maybe [PatchBaselineIdentity])
+  , _dpbsrsNextToken          :: !(Maybe Text)
+  , _dpbsrsResponseStatus     :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchBaselinesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpbsrsBaselineIdentities' - An array of PatchBaselineIdentity elements.
+--
+-- * 'dpbsrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'dpbsrsResponseStatus' - -- | The response status code.
+describePatchBaselinesResponse
+    :: Int -- ^ 'dpbsrsResponseStatus'
+    -> DescribePatchBaselinesResponse
+describePatchBaselinesResponse pResponseStatus_ =
+  DescribePatchBaselinesResponse'
+  { _dpbsrsBaselineIdentities = Nothing
+  , _dpbsrsNextToken = Nothing
+  , _dpbsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | An array of PatchBaselineIdentity elements.
+dpbsrsBaselineIdentities :: Lens' DescribePatchBaselinesResponse [PatchBaselineIdentity]
+dpbsrsBaselineIdentities = lens _dpbsrsBaselineIdentities (\ s a -> s{_dpbsrsBaselineIdentities = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+dpbsrsNextToken :: Lens' DescribePatchBaselinesResponse (Maybe Text)
+dpbsrsNextToken = lens _dpbsrsNextToken (\ s a -> s{_dpbsrsNextToken = a});
+
+-- | -- | The response status code.
+dpbsrsResponseStatus :: Lens' DescribePatchBaselinesResponse Int
+dpbsrsResponseStatus = lens _dpbsrsResponseStatus (\ s a -> s{_dpbsrsResponseStatus = a});
+
+instance NFData DescribePatchBaselinesResponse where
diff --git a/gen/Network/AWS/SSM/DescribePatchGroupState.hs b/gen/Network/AWS/SSM/DescribePatchGroupState.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribePatchGroupState.hs
@@ -0,0 +1,186 @@
+{-# 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.SSM.DescribePatchGroupState
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns high-level aggregated patch compliance state for a patch group.
+--
+--
+module Network.AWS.SSM.DescribePatchGroupState
+    (
+    -- * Creating a Request
+      describePatchGroupState
+    , DescribePatchGroupState
+    -- * Request Lenses
+    , dpgsPatchGroup
+
+    -- * Destructuring the Response
+    , describePatchGroupStateResponse
+    , DescribePatchGroupStateResponse
+    -- * Response Lenses
+    , dpgsrsInstancesWithMissingPatches
+    , dpgsrsInstancesWithInstalledOtherPatches
+    , dpgsrsInstancesWithNotApplicablePatches
+    , dpgsrsInstancesWithInstalledPatches
+    , dpgsrsInstances
+    , dpgsrsInstancesWithFailedPatches
+    , dpgsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describePatchGroupState' smart constructor.
+newtype DescribePatchGroupState = DescribePatchGroupState'
+  { _dpgsPatchGroup :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchGroupState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgsPatchGroup' - The name of the patch group whose patch snapshot should be retrieved.
+describePatchGroupState
+    :: Text -- ^ 'dpgsPatchGroup'
+    -> DescribePatchGroupState
+describePatchGroupState pPatchGroup_ =
+  DescribePatchGroupState' {_dpgsPatchGroup = pPatchGroup_}
+
+
+-- | The name of the patch group whose patch snapshot should be retrieved.
+dpgsPatchGroup :: Lens' DescribePatchGroupState Text
+dpgsPatchGroup = lens _dpgsPatchGroup (\ s a -> s{_dpgsPatchGroup = a});
+
+instance AWSRequest DescribePatchGroupState where
+        type Rs DescribePatchGroupState =
+             DescribePatchGroupStateResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribePatchGroupStateResponse' <$>
+                   (x .?> "InstancesWithMissingPatches") <*>
+                     (x .?> "InstancesWithInstalledOtherPatches")
+                     <*> (x .?> "InstancesWithNotApplicablePatches")
+                     <*> (x .?> "InstancesWithInstalledPatches")
+                     <*> (x .?> "Instances")
+                     <*> (x .?> "InstancesWithFailedPatches")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribePatchGroupState where
+
+instance NFData DescribePatchGroupState where
+
+instance ToHeaders DescribePatchGroupState where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribePatchGroupState" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribePatchGroupState where
+        toJSON DescribePatchGroupState'{..}
+          = object
+              (catMaybes [Just ("PatchGroup" .= _dpgsPatchGroup)])
+
+instance ToPath DescribePatchGroupState where
+        toPath = const "/"
+
+instance ToQuery DescribePatchGroupState where
+        toQuery = const mempty
+
+-- | /See:/ 'describePatchGroupStateResponse' smart constructor.
+data DescribePatchGroupStateResponse = DescribePatchGroupStateResponse'
+  { _dpgsrsInstancesWithMissingPatches        :: !(Maybe Int)
+  , _dpgsrsInstancesWithInstalledOtherPatches :: !(Maybe Int)
+  , _dpgsrsInstancesWithNotApplicablePatches  :: !(Maybe Int)
+  , _dpgsrsInstancesWithInstalledPatches      :: !(Maybe Int)
+  , _dpgsrsInstances                          :: !(Maybe Int)
+  , _dpgsrsInstancesWithFailedPatches         :: !(Maybe Int)
+  , _dpgsrsResponseStatus                     :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchGroupStateResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgsrsInstancesWithMissingPatches' - The number of instances with missing patches from the patch baseline.
+--
+-- * 'dpgsrsInstancesWithInstalledOtherPatches' - The number of instances with patches installed that aren't defined in the patch baseline.
+--
+-- * 'dpgsrsInstancesWithNotApplicablePatches' - The number of instances with patches that aren't applicable.
+--
+-- * 'dpgsrsInstancesWithInstalledPatches' - The number of instances with installed patches.
+--
+-- * 'dpgsrsInstances' - The number of instances in the patch group.
+--
+-- * 'dpgsrsInstancesWithFailedPatches' - The number of instances with patches from the patch baseline that failed to install.
+--
+-- * 'dpgsrsResponseStatus' - -- | The response status code.
+describePatchGroupStateResponse
+    :: Int -- ^ 'dpgsrsResponseStatus'
+    -> DescribePatchGroupStateResponse
+describePatchGroupStateResponse pResponseStatus_ =
+  DescribePatchGroupStateResponse'
+  { _dpgsrsInstancesWithMissingPatches = Nothing
+  , _dpgsrsInstancesWithInstalledOtherPatches = Nothing
+  , _dpgsrsInstancesWithNotApplicablePatches = Nothing
+  , _dpgsrsInstancesWithInstalledPatches = Nothing
+  , _dpgsrsInstances = Nothing
+  , _dpgsrsInstancesWithFailedPatches = Nothing
+  , _dpgsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The number of instances with missing patches from the patch baseline.
+dpgsrsInstancesWithMissingPatches :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstancesWithMissingPatches = lens _dpgsrsInstancesWithMissingPatches (\ s a -> s{_dpgsrsInstancesWithMissingPatches = a});
+
+-- | The number of instances with patches installed that aren't defined in the patch baseline.
+dpgsrsInstancesWithInstalledOtherPatches :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstancesWithInstalledOtherPatches = lens _dpgsrsInstancesWithInstalledOtherPatches (\ s a -> s{_dpgsrsInstancesWithInstalledOtherPatches = a});
+
+-- | The number of instances with patches that aren't applicable.
+dpgsrsInstancesWithNotApplicablePatches :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstancesWithNotApplicablePatches = lens _dpgsrsInstancesWithNotApplicablePatches (\ s a -> s{_dpgsrsInstancesWithNotApplicablePatches = a});
+
+-- | The number of instances with installed patches.
+dpgsrsInstancesWithInstalledPatches :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstancesWithInstalledPatches = lens _dpgsrsInstancesWithInstalledPatches (\ s a -> s{_dpgsrsInstancesWithInstalledPatches = a});
+
+-- | The number of instances in the patch group.
+dpgsrsInstances :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstances = lens _dpgsrsInstances (\ s a -> s{_dpgsrsInstances = a});
+
+-- | The number of instances with patches from the patch baseline that failed to install.
+dpgsrsInstancesWithFailedPatches :: Lens' DescribePatchGroupStateResponse (Maybe Int)
+dpgsrsInstancesWithFailedPatches = lens _dpgsrsInstancesWithFailedPatches (\ s a -> s{_dpgsrsInstancesWithFailedPatches = a});
+
+-- | -- | The response status code.
+dpgsrsResponseStatus :: Lens' DescribePatchGroupStateResponse Int
+dpgsrsResponseStatus = lens _dpgsrsResponseStatus (\ s a -> s{_dpgsrsResponseStatus = a});
+
+instance NFData DescribePatchGroupStateResponse where
diff --git a/gen/Network/AWS/SSM/DescribePatchGroups.hs b/gen/Network/AWS/SSM/DescribePatchGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/DescribePatchGroups.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SSM.DescribePatchGroups
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists all patch groups that have been registered with patch baselines.
+--
+--
+module Network.AWS.SSM.DescribePatchGroups
+    (
+    -- * Creating a Request
+      describePatchGroups
+    , DescribePatchGroups
+    -- * Request Lenses
+    , dpgFilters
+    , dpgNextToken
+    , dpgMaxResults
+
+    -- * Destructuring the Response
+    , describePatchGroupsResponse
+    , DescribePatchGroupsResponse
+    -- * Response Lenses
+    , dpgrsMappings
+    , dpgrsNextToken
+    , dpgrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'describePatchGroups' smart constructor.
+data DescribePatchGroups = DescribePatchGroups'
+  { _dpgFilters    :: !(Maybe [PatchOrchestratorFilter])
+  , _dpgNextToken  :: !(Maybe Text)
+  , _dpgMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchGroups' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgFilters' - One or more filters. Use a filter to return a more specific list of results.
+--
+-- * 'dpgNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
+--
+-- * 'dpgMaxResults' - The maximum number of patch groups to return (per page).
+describePatchGroups
+    :: DescribePatchGroups
+describePatchGroups =
+  DescribePatchGroups'
+  {_dpgFilters = Nothing, _dpgNextToken = Nothing, _dpgMaxResults = Nothing}
+
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+dpgFilters :: Lens' DescribePatchGroups [PatchOrchestratorFilter]
+dpgFilters = lens _dpgFilters (\ s a -> s{_dpgFilters = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. (You received this token from a previous call.)
+dpgNextToken :: Lens' DescribePatchGroups (Maybe Text)
+dpgNextToken = lens _dpgNextToken (\ s a -> s{_dpgNextToken = a});
+
+-- | The maximum number of patch groups to return (per page).
+dpgMaxResults :: Lens' DescribePatchGroups (Maybe Natural)
+dpgMaxResults = lens _dpgMaxResults (\ s a -> s{_dpgMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest DescribePatchGroups where
+        type Rs DescribePatchGroups =
+             DescribePatchGroupsResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribePatchGroupsResponse' <$>
+                   (x .?> "Mappings" .!@ mempty) <*> (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable DescribePatchGroups where
+
+instance NFData DescribePatchGroups where
+
+instance ToHeaders DescribePatchGroups where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.DescribePatchGroups" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribePatchGroups where
+        toJSON DescribePatchGroups'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _dpgFilters,
+                  ("NextToken" .=) <$> _dpgNextToken,
+                  ("MaxResults" .=) <$> _dpgMaxResults])
+
+instance ToPath DescribePatchGroups where
+        toPath = const "/"
+
+instance ToQuery DescribePatchGroups where
+        toQuery = const mempty
+
+-- | /See:/ 'describePatchGroupsResponse' smart constructor.
+data DescribePatchGroupsResponse = DescribePatchGroupsResponse'
+  { _dpgrsMappings       :: !(Maybe [PatchGroupPatchBaselineMapping])
+  , _dpgrsNextToken      :: !(Maybe Text)
+  , _dpgrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribePatchGroupsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpgrsMappings' - Each entry in the array contains: PatchGroup: string (between 1 and 256 characters, Regex: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$) PatchBaselineIdentity: A PatchBaselineIdentity element.
+--
+-- * 'dpgrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+--
+-- * 'dpgrsResponseStatus' - -- | The response status code.
+describePatchGroupsResponse
+    :: Int -- ^ 'dpgrsResponseStatus'
+    -> DescribePatchGroupsResponse
+describePatchGroupsResponse pResponseStatus_ =
+  DescribePatchGroupsResponse'
+  { _dpgrsMappings = Nothing
+  , _dpgrsNextToken = Nothing
+  , _dpgrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | Each entry in the array contains: PatchGroup: string (between 1 and 256 characters, Regex: ^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$) PatchBaselineIdentity: A PatchBaselineIdentity element.
+dpgrsMappings :: Lens' DescribePatchGroupsResponse [PatchGroupPatchBaselineMapping]
+dpgrsMappings = lens _dpgrsMappings (\ s a -> s{_dpgrsMappings = a}) . _Default . _Coerce;
+
+-- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
+dpgrsNextToken :: Lens' DescribePatchGroupsResponse (Maybe Text)
+dpgrsNextToken = lens _dpgrsNextToken (\ s a -> s{_dpgrsNextToken = a});
+
+-- | -- | The response status code.
+dpgrsResponseStatus :: Lens' DescribePatchGroupsResponse Int
+dpgrsResponseStatus = lens _dpgrsResponseStatus (\ s a -> s{_dpgrsResponseStatus = a});
+
+instance NFData DescribePatchGroupsResponse where
diff --git a/gen/Network/AWS/SSM/GetAutomationExecution.hs b/gen/Network/AWS/SSM/GetAutomationExecution.hs
--- a/gen/Network/AWS/SSM/GetAutomationExecution.hs
+++ b/gen/Network/AWS/SSM/GetAutomationExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetAutomationExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,32 +37,32 @@
     , gaersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getAutomationExecution' smart constructor.
 newtype GetAutomationExecution = GetAutomationExecution'
-    { _gaeAutomationExecutionId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gaeAutomationExecutionId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetAutomationExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gaeAutomationExecutionId' - The unique identifier for an existing automation execution to examine. The execution ID is returned by @StartAutomationExecution@ when the execution of an Automation document is initiated.
+-- * 'gaeAutomationExecutionId' - The unique identifier for an existing automation execution to examine. The execution ID is returned by StartAutomationExecution when the execution of an Automation document is initiated.
 getAutomationExecution
     :: Text -- ^ 'gaeAutomationExecutionId'
     -> GetAutomationExecution
 getAutomationExecution pAutomationExecutionId_ =
-    GetAutomationExecution'
-    { _gaeAutomationExecutionId = pAutomationExecutionId_
-    }
+  GetAutomationExecution' {_gaeAutomationExecutionId = pAutomationExecutionId_}
 
--- | The unique identifier for an existing automation execution to examine. The execution ID is returned by @StartAutomationExecution@ when the execution of an Automation document is initiated.
+
+-- | The unique identifier for an existing automation execution to examine. The execution ID is returned by StartAutomationExecution when the execution of an Automation document is initiated.
 gaeAutomationExecutionId :: Lens' GetAutomationExecution Text
 gaeAutomationExecutionId = lens _gaeAutomationExecutionId (\ s a -> s{_gaeAutomationExecutionId = a});
 
@@ -77,9 +77,9 @@
                    (x .?> "AutomationExecution") <*>
                      (pure (fromEnum s)))
 
-instance Hashable GetAutomationExecution
+instance Hashable GetAutomationExecution where
 
-instance NFData GetAutomationExecution
+instance NFData GetAutomationExecution where
 
 instance ToHeaders GetAutomationExecution where
         toHeaders
@@ -106,10 +106,11 @@
 
 -- | /See:/ 'getAutomationExecutionResponse' smart constructor.
 data GetAutomationExecutionResponse = GetAutomationExecutionResponse'
-    { _gaersAutomationExecution :: !(Maybe AutomationExecution)
-    , _gaersResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gaersAutomationExecution :: !(Maybe AutomationExecution)
+  , _gaersResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetAutomationExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -121,11 +122,10 @@
     :: Int -- ^ 'gaersResponseStatus'
     -> GetAutomationExecutionResponse
 getAutomationExecutionResponse pResponseStatus_ =
-    GetAutomationExecutionResponse'
-    { _gaersAutomationExecution = Nothing
-    , _gaersResponseStatus = pResponseStatus_
-    }
+  GetAutomationExecutionResponse'
+  {_gaersAutomationExecution = Nothing, _gaersResponseStatus = pResponseStatus_}
 
+
 -- | Detailed information about the current state of an automation execution.
 gaersAutomationExecution :: Lens' GetAutomationExecutionResponse (Maybe AutomationExecution)
 gaersAutomationExecution = lens _gaersAutomationExecution (\ s a -> s{_gaersAutomationExecution = a});
@@ -134,4 +134,4 @@
 gaersResponseStatus :: Lens' GetAutomationExecutionResponse Int
 gaersResponseStatus = lens _gaersResponseStatus (\ s a -> s{_gaersResponseStatus = a});
 
-instance NFData GetAutomationExecutionResponse
+instance NFData GetAutomationExecutionResponse where
diff --git a/gen/Network/AWS/SSM/GetCommandInvocation.hs b/gen/Network/AWS/SSM/GetCommandInvocation.hs
--- a/gen/Network/AWS/SSM/GetCommandInvocation.hs
+++ b/gen/Network/AWS/SSM/GetCommandInvocation.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetCommandInvocation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -53,25 +53,26 @@
     , gcirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getCommandInvocation' smart constructor.
 data GetCommandInvocation = GetCommandInvocation'
-    { _gciPluginName :: !(Maybe Text)
-    , _gciCommandId  :: !Text
-    , _gciInstanceId :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gciPluginName :: !(Maybe Text)
+  , _gciCommandId  :: !Text
+  , _gciInstanceId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetCommandInvocation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gciPluginName' - (Optional) The name of the plugin for which you want detailed results. If the SSM document contains only one plugin, the name can be omitted and the details will be returned.
+-- * 'gciPluginName' - (Optional) The name of the plugin for which you want detailed results. If the document contains only one plugin, the name can be omitted and the details will be returned.
 --
 -- * 'gciCommandId' - (Required) The parent command ID of the invocation plugin.
 --
@@ -81,13 +82,14 @@
     -> Text -- ^ 'gciInstanceId'
     -> GetCommandInvocation
 getCommandInvocation pCommandId_ pInstanceId_ =
-    GetCommandInvocation'
-    { _gciPluginName = Nothing
-    , _gciCommandId = pCommandId_
-    , _gciInstanceId = pInstanceId_
-    }
+  GetCommandInvocation'
+  { _gciPluginName = Nothing
+  , _gciCommandId = pCommandId_
+  , _gciInstanceId = pInstanceId_
+  }
 
--- | (Optional) The name of the plugin for which you want detailed results. If the SSM document contains only one plugin, the name can be omitted and the details will be returned.
+
+-- | (Optional) The name of the plugin for which you want detailed results. If the document contains only one plugin, the name can be omitted and the details will be returned.
 gciPluginName :: Lens' GetCommandInvocation (Maybe Text)
 gciPluginName = lens _gciPluginName (\ s a -> s{_gciPluginName = a});
 
@@ -123,9 +125,9 @@
                      <*> (x .?> "PluginName")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetCommandInvocation
+instance Hashable GetCommandInvocation where
 
-instance NFData GetCommandInvocation
+instance NFData GetCommandInvocation where
 
 instance ToHeaders GetCommandInvocation where
         toHeaders
@@ -152,53 +154,54 @@
 
 -- | /See:/ 'getCommandInvocationResponse' smart constructor.
 data GetCommandInvocationResponse = GetCommandInvocationResponse'
-    { _gcirsInstanceId             :: !(Maybe Text)
-    , _gcirsStatus                 :: !(Maybe CommandInvocationStatus)
-    , _gcirsStandardErrorContent   :: !(Maybe Text)
-    , _gcirsExecutionElapsedTime   :: !(Maybe Text)
-    , _gcirsDocumentName           :: !(Maybe Text)
-    , _gcirsStandardErrorURL       :: !(Maybe Text)
-    , _gcirsExecutionStartDateTime :: !(Maybe Text)
-    , _gcirsResponseCode           :: !(Maybe Int)
-    , _gcirsStatusDetails          :: !(Maybe Text)
-    , _gcirsExecutionEndDateTime   :: !(Maybe Text)
-    , _gcirsStandardOutputURL      :: !(Maybe Text)
-    , _gcirsCommandId              :: !(Maybe Text)
-    , _gcirsStandardOutputContent  :: !(Maybe Text)
-    , _gcirsComment                :: !(Maybe Text)
-    , _gcirsPluginName             :: !(Maybe Text)
-    , _gcirsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gcirsInstanceId             :: !(Maybe Text)
+  , _gcirsStatus                 :: !(Maybe CommandInvocationStatus)
+  , _gcirsStandardErrorContent   :: !(Maybe Text)
+  , _gcirsExecutionElapsedTime   :: !(Maybe Text)
+  , _gcirsDocumentName           :: !(Maybe Text)
+  , _gcirsStandardErrorURL       :: !(Maybe Text)
+  , _gcirsExecutionStartDateTime :: !(Maybe Text)
+  , _gcirsResponseCode           :: !(Maybe Int)
+  , _gcirsStatusDetails          :: !(Maybe Text)
+  , _gcirsExecutionEndDateTime   :: !(Maybe Text)
+  , _gcirsStandardOutputURL      :: !(Maybe Text)
+  , _gcirsCommandId              :: !(Maybe Text)
+  , _gcirsStandardOutputContent  :: !(Maybe Text)
+  , _gcirsComment                :: !(Maybe Text)
+  , _gcirsPluginName             :: !(Maybe Text)
+  , _gcirsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetCommandInvocationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gcirsInstanceId' - The ID of the managed instance targeted by the command. A managed instance can be an Amazon EC2 instance or an instance in your hybrid environment that is configured for Systems Manager.
 --
--- * 'gcirsStatus' - The status of the parent command for this invocation. This status can be different than @StatusDetails@ .
+-- * 'gcirsStatus' - The status of the parent command for this invocation. This status can be different than StatusDetails.
 --
 -- * 'gcirsStandardErrorContent' - The first 8,000 characters written by the plugin to stderr. If the command has not finished executing, then this string is empty.
 --
--- * 'gcirsExecutionElapsedTime' - Duration since @ExecutionStartDateTime@ .
+-- * 'gcirsExecutionElapsedTime' - Duration since ExecutionStartDateTime.
 --
--- * 'gcirsDocumentName' - The name of the SSM document that was executed. For example, AWS-RunShellScript is an SSM document.
+-- * 'gcirsDocumentName' - The name of the document that was executed. For example, AWS-RunShellScript.
 --
 -- * 'gcirsStandardErrorURL' - The URL for the complete text written by the plugin to stderr. If the command has not finished executing, then this string is empty.
 --
--- * 'gcirsExecutionStartDateTime' - The date and time the plugin started executing. Date and time are written in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28. If the plugin has not started to execute, the string is empty.
+-- * 'gcirsExecutionStartDateTime' - The date and time the plugin started executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the @InvokedBefore@ filter. @aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z@  If the plugin has not started to execute, the string is empty.
 --
--- * 'gcirsResponseCode' - The error level response code for the plugin script. If the response code is @-1@ , then the command has not started executing on the instance, or it was not received by the instance.
+-- * 'gcirsResponseCode' - The error level response code for the plugin script. If the response code is -1, then the command has not started executing on the instance, or it was not received by the instance.
 --
--- * 'gcirsStatusDetails' - A detailed status of the command execution for an invocation. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:      * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Delayed – The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, the instance was stopped, etc. The system will try to deliver the command again.     * Success – The command or plugin was executed successfully. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – The command started to execute on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command wasn't executed successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit and don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
+-- * 'gcirsStatusDetails' - A detailed status of the command execution for an invocation. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Delayed: The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, the instance was stopped, etc. The system will try to deliver the command again.     * Success: The command or plugin was executed successfully. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: The command started to execute on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command wasn't executed successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
 --
--- * 'gcirsExecutionEndDateTime' - The date and time the plugin was finished executing. Date and time are written in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28. If the plugin has not started to execute, the string is empty.
+-- * 'gcirsExecutionEndDateTime' - The date and time the plugin was finished executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the @InvokedAfter@ filter. @aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z@  If the plugin has not started to execute, the string is empty.
 --
 -- * 'gcirsStandardOutputURL' - The URL for the complete text written by the plugin to stdout in Amazon S3. If an Amazon S3 bucket was not specified, then this string is empty.
 --
 -- * 'gcirsCommandId' - The parent command ID of the invocation plugin.
 --
--- * 'gcirsStandardOutputContent' - The first 24,000 characters written by the plugin to stdout. If the command has not finished executing, if @ExecutionStatus@ is neither @Succeeded@ nor @Failed@ , then this string is empty.
+-- * 'gcirsStandardOutputContent' - The first 24,000 characters written by the plugin to stdout. If the command has not finished executing, if ExecutionStatus is neither Succeeded nor Failed, then this string is empty.
 --
 -- * 'gcirsComment' - The comment text for the command.
 --
@@ -209,30 +212,31 @@
     :: Int -- ^ 'gcirsResponseStatus'
     -> GetCommandInvocationResponse
 getCommandInvocationResponse pResponseStatus_ =
-    GetCommandInvocationResponse'
-    { _gcirsInstanceId = Nothing
-    , _gcirsStatus = Nothing
-    , _gcirsStandardErrorContent = Nothing
-    , _gcirsExecutionElapsedTime = Nothing
-    , _gcirsDocumentName = Nothing
-    , _gcirsStandardErrorURL = Nothing
-    , _gcirsExecutionStartDateTime = Nothing
-    , _gcirsResponseCode = Nothing
-    , _gcirsStatusDetails = Nothing
-    , _gcirsExecutionEndDateTime = Nothing
-    , _gcirsStandardOutputURL = Nothing
-    , _gcirsCommandId = Nothing
-    , _gcirsStandardOutputContent = Nothing
-    , _gcirsComment = Nothing
-    , _gcirsPluginName = Nothing
-    , _gcirsResponseStatus = pResponseStatus_
-    }
+  GetCommandInvocationResponse'
+  { _gcirsInstanceId = Nothing
+  , _gcirsStatus = Nothing
+  , _gcirsStandardErrorContent = Nothing
+  , _gcirsExecutionElapsedTime = Nothing
+  , _gcirsDocumentName = Nothing
+  , _gcirsStandardErrorURL = Nothing
+  , _gcirsExecutionStartDateTime = Nothing
+  , _gcirsResponseCode = Nothing
+  , _gcirsStatusDetails = Nothing
+  , _gcirsExecutionEndDateTime = Nothing
+  , _gcirsStandardOutputURL = Nothing
+  , _gcirsCommandId = Nothing
+  , _gcirsStandardOutputContent = Nothing
+  , _gcirsComment = Nothing
+  , _gcirsPluginName = Nothing
+  , _gcirsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The ID of the managed instance targeted by the command. A managed instance can be an Amazon EC2 instance or an instance in your hybrid environment that is configured for Systems Manager.
 gcirsInstanceId :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsInstanceId = lens _gcirsInstanceId (\ s a -> s{_gcirsInstanceId = a});
 
--- | The status of the parent command for this invocation. This status can be different than @StatusDetails@ .
+-- | The status of the parent command for this invocation. This status can be different than StatusDetails.
 gcirsStatus :: Lens' GetCommandInvocationResponse (Maybe CommandInvocationStatus)
 gcirsStatus = lens _gcirsStatus (\ s a -> s{_gcirsStatus = a});
 
@@ -240,11 +244,11 @@
 gcirsStandardErrorContent :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsStandardErrorContent = lens _gcirsStandardErrorContent (\ s a -> s{_gcirsStandardErrorContent = a});
 
--- | Duration since @ExecutionStartDateTime@ .
+-- | Duration since ExecutionStartDateTime.
 gcirsExecutionElapsedTime :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsExecutionElapsedTime = lens _gcirsExecutionElapsedTime (\ s a -> s{_gcirsExecutionElapsedTime = a});
 
--- | The name of the SSM document that was executed. For example, AWS-RunShellScript is an SSM document.
+-- | The name of the document that was executed. For example, AWS-RunShellScript.
 gcirsDocumentName :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsDocumentName = lens _gcirsDocumentName (\ s a -> s{_gcirsDocumentName = a});
 
@@ -252,19 +256,19 @@
 gcirsStandardErrorURL :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsStandardErrorURL = lens _gcirsStandardErrorURL (\ s a -> s{_gcirsStandardErrorURL = a});
 
--- | The date and time the plugin started executing. Date and time are written in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28. If the plugin has not started to execute, the string is empty.
+-- | The date and time the plugin started executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the @InvokedBefore@ filter. @aws ssm list-commands --filters key=InvokedBefore,value=2017-06-07T00:00:00Z@  If the plugin has not started to execute, the string is empty.
 gcirsExecutionStartDateTime :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsExecutionStartDateTime = lens _gcirsExecutionStartDateTime (\ s a -> s{_gcirsExecutionStartDateTime = a});
 
--- | The error level response code for the plugin script. If the response code is @-1@ , then the command has not started executing on the instance, or it was not received by the instance.
+-- | The error level response code for the plugin script. If the response code is -1, then the command has not started executing on the instance, or it was not received by the instance.
 gcirsResponseCode :: Lens' GetCommandInvocationResponse (Maybe Int)
 gcirsResponseCode = lens _gcirsResponseCode (\ s a -> s{_gcirsResponseCode = a});
 
--- | A detailed status of the command execution for an invocation. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:      * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Delayed – The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, the instance was stopped, etc. The system will try to deliver the command again.     * Success – The command or plugin was executed successfully. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – The command started to execute on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command wasn't executed successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit and don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
+-- | A detailed status of the command execution for an invocation. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Delayed: The system attempted to send the command to the target, but the target was not available. The instance might not be available because of network issues, the instance was stopped, etc. The system will try to deliver the command again.     * Success: The command or plugin was executed successfully. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: The command started to execute on the instance, but the execution was not complete before the timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command wasn't executed successfully on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
 gcirsStatusDetails :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsStatusDetails = lens _gcirsStatusDetails (\ s a -> s{_gcirsStatusDetails = a});
 
--- | The date and time the plugin was finished executing. Date and time are written in ISO 8601 format. For example, August 28, 2016 is represented as 2016-08-28. If the plugin has not started to execute, the string is empty.
+-- | The date and time the plugin was finished executing. Date and time are written in ISO 8601 format. For example, June 7, 2017 is represented as 2017-06-7. The following sample AWS CLI command uses the @InvokedAfter@ filter. @aws ssm list-commands --filters key=InvokedAfter,value=2017-06-07T00:00:00Z@  If the plugin has not started to execute, the string is empty.
 gcirsExecutionEndDateTime :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsExecutionEndDateTime = lens _gcirsExecutionEndDateTime (\ s a -> s{_gcirsExecutionEndDateTime = a});
 
@@ -276,7 +280,7 @@
 gcirsCommandId :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsCommandId = lens _gcirsCommandId (\ s a -> s{_gcirsCommandId = a});
 
--- | The first 24,000 characters written by the plugin to stdout. If the command has not finished executing, if @ExecutionStatus@ is neither @Succeeded@ nor @Failed@ , then this string is empty.
+-- | The first 24,000 characters written by the plugin to stdout. If the command has not finished executing, if ExecutionStatus is neither Succeeded nor Failed, then this string is empty.
 gcirsStandardOutputContent :: Lens' GetCommandInvocationResponse (Maybe Text)
 gcirsStandardOutputContent = lens _gcirsStandardOutputContent (\ s a -> s{_gcirsStandardOutputContent = a});
 
@@ -292,4 +296,4 @@
 gcirsResponseStatus :: Lens' GetCommandInvocationResponse Int
 gcirsResponseStatus = lens _gcirsResponseStatus (\ s a -> s{_gcirsResponseStatus = a});
 
-instance NFData GetCommandInvocationResponse
+instance NFData GetCommandInvocationResponse where
diff --git a/gen/Network/AWS/SSM/GetDefaultPatchBaseline.hs b/gen/Network/AWS/SSM/GetDefaultPatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetDefaultPatchBaseline.hs
@@ -0,0 +1,145 @@
+{-# 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.SSM.GetDefaultPatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the default patch baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.
+--
+--
+module Network.AWS.SSM.GetDefaultPatchBaseline
+    (
+    -- * Creating a Request
+      getDefaultPatchBaseline
+    , GetDefaultPatchBaseline
+    -- * Request Lenses
+    , gdpbOperatingSystem
+
+    -- * Destructuring the Response
+    , getDefaultPatchBaselineResponse
+    , GetDefaultPatchBaselineResponse
+    -- * Response Lenses
+    , gdpbrsOperatingSystem
+    , gdpbrsBaselineId
+    , gdpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getDefaultPatchBaseline' smart constructor.
+newtype GetDefaultPatchBaseline = GetDefaultPatchBaseline'
+  { _gdpbOperatingSystem :: Maybe OperatingSystem
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetDefaultPatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdpbOperatingSystem' - Returns the default patch baseline for the specified operating system.
+getDefaultPatchBaseline
+    :: GetDefaultPatchBaseline
+getDefaultPatchBaseline =
+  GetDefaultPatchBaseline' {_gdpbOperatingSystem = Nothing}
+
+
+-- | Returns the default patch baseline for the specified operating system.
+gdpbOperatingSystem :: Lens' GetDefaultPatchBaseline (Maybe OperatingSystem)
+gdpbOperatingSystem = lens _gdpbOperatingSystem (\ s a -> s{_gdpbOperatingSystem = a});
+
+instance AWSRequest GetDefaultPatchBaseline where
+        type Rs GetDefaultPatchBaseline =
+             GetDefaultPatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetDefaultPatchBaselineResponse' <$>
+                   (x .?> "OperatingSystem") <*> (x .?> "BaselineId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetDefaultPatchBaseline where
+
+instance NFData GetDefaultPatchBaseline where
+
+instance ToHeaders GetDefaultPatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetDefaultPatchBaseline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetDefaultPatchBaseline where
+        toJSON GetDefaultPatchBaseline'{..}
+          = object
+              (catMaybes
+                 [("OperatingSystem" .=) <$> _gdpbOperatingSystem])
+
+instance ToPath GetDefaultPatchBaseline where
+        toPath = const "/"
+
+instance ToQuery GetDefaultPatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'getDefaultPatchBaselineResponse' smart constructor.
+data GetDefaultPatchBaselineResponse = GetDefaultPatchBaselineResponse'
+  { _gdpbrsOperatingSystem :: !(Maybe OperatingSystem)
+  , _gdpbrsBaselineId      :: !(Maybe Text)
+  , _gdpbrsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetDefaultPatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdpbrsOperatingSystem' - The operating system for the returned patch baseline.
+--
+-- * 'gdpbrsBaselineId' - The ID of the default patch baseline.
+--
+-- * 'gdpbrsResponseStatus' - -- | The response status code.
+getDefaultPatchBaselineResponse
+    :: Int -- ^ 'gdpbrsResponseStatus'
+    -> GetDefaultPatchBaselineResponse
+getDefaultPatchBaselineResponse pResponseStatus_ =
+  GetDefaultPatchBaselineResponse'
+  { _gdpbrsOperatingSystem = Nothing
+  , _gdpbrsBaselineId = Nothing
+  , _gdpbrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The operating system for the returned patch baseline.
+gdpbrsOperatingSystem :: Lens' GetDefaultPatchBaselineResponse (Maybe OperatingSystem)
+gdpbrsOperatingSystem = lens _gdpbrsOperatingSystem (\ s a -> s{_gdpbrsOperatingSystem = a});
+
+-- | The ID of the default patch baseline.
+gdpbrsBaselineId :: Lens' GetDefaultPatchBaselineResponse (Maybe Text)
+gdpbrsBaselineId = lens _gdpbrsBaselineId (\ s a -> s{_gdpbrsBaselineId = a});
+
+-- | -- | The response status code.
+gdpbrsResponseStatus :: Lens' GetDefaultPatchBaselineResponse Int
+gdpbrsResponseStatus = lens _gdpbrsResponseStatus (\ s a -> s{_gdpbrsResponseStatus = a});
+
+instance NFData GetDefaultPatchBaselineResponse where
diff --git a/gen/Network/AWS/SSM/GetDeployablePatchSnapshotForInstance.hs b/gen/Network/AWS/SSM/GetDeployablePatchSnapshotForInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetDeployablePatchSnapshotForInstance.hs
@@ -0,0 +1,191 @@
+{-# 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.SSM.GetDeployablePatchSnapshotForInstance
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the current snapshot for the patch baseline the instance uses. This API is primarily used by the AWS-RunPatchBaseline Systems Manager document.
+--
+--
+module Network.AWS.SSM.GetDeployablePatchSnapshotForInstance
+    (
+    -- * Creating a Request
+      getDeployablePatchSnapshotForInstance
+    , GetDeployablePatchSnapshotForInstance
+    -- * Request Lenses
+    , gdpsfiInstanceId
+    , gdpsfiSnapshotId
+
+    -- * Destructuring the Response
+    , getDeployablePatchSnapshotForInstanceResponse
+    , GetDeployablePatchSnapshotForInstanceResponse
+    -- * Response Lenses
+    , gdpsfirsInstanceId
+    , gdpsfirsProduct
+    , gdpsfirsSnapshotDownloadURL
+    , gdpsfirsSnapshotId
+    , gdpsfirsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getDeployablePatchSnapshotForInstance' smart constructor.
+data GetDeployablePatchSnapshotForInstance = GetDeployablePatchSnapshotForInstance'
+  { _gdpsfiInstanceId :: !Text
+  , _gdpsfiSnapshotId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetDeployablePatchSnapshotForInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdpsfiInstanceId' - The ID of the instance for which the appropriate patch snapshot should be retrieved.
+--
+-- * 'gdpsfiSnapshotId' - The user-defined snapshot ID.
+getDeployablePatchSnapshotForInstance
+    :: Text -- ^ 'gdpsfiInstanceId'
+    -> Text -- ^ 'gdpsfiSnapshotId'
+    -> GetDeployablePatchSnapshotForInstance
+getDeployablePatchSnapshotForInstance pInstanceId_ pSnapshotId_ =
+  GetDeployablePatchSnapshotForInstance'
+  {_gdpsfiInstanceId = pInstanceId_, _gdpsfiSnapshotId = pSnapshotId_}
+
+
+-- | The ID of the instance for which the appropriate patch snapshot should be retrieved.
+gdpsfiInstanceId :: Lens' GetDeployablePatchSnapshotForInstance Text
+gdpsfiInstanceId = lens _gdpsfiInstanceId (\ s a -> s{_gdpsfiInstanceId = a});
+
+-- | The user-defined snapshot ID.
+gdpsfiSnapshotId :: Lens' GetDeployablePatchSnapshotForInstance Text
+gdpsfiSnapshotId = lens _gdpsfiSnapshotId (\ s a -> s{_gdpsfiSnapshotId = a});
+
+instance AWSRequest
+           GetDeployablePatchSnapshotForInstance
+         where
+        type Rs GetDeployablePatchSnapshotForInstance =
+             GetDeployablePatchSnapshotForInstanceResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetDeployablePatchSnapshotForInstanceResponse' <$>
+                   (x .?> "InstanceId") <*> (x .?> "Product") <*>
+                     (x .?> "SnapshotDownloadUrl")
+                     <*> (x .?> "SnapshotId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable
+           GetDeployablePatchSnapshotForInstance
+         where
+
+instance NFData GetDeployablePatchSnapshotForInstance
+         where
+
+instance ToHeaders
+           GetDeployablePatchSnapshotForInstance
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetDeployablePatchSnapshotForInstance" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetDeployablePatchSnapshotForInstance
+         where
+        toJSON GetDeployablePatchSnapshotForInstance'{..}
+          = object
+              (catMaybes
+                 [Just ("InstanceId" .= _gdpsfiInstanceId),
+                  Just ("SnapshotId" .= _gdpsfiSnapshotId)])
+
+instance ToPath GetDeployablePatchSnapshotForInstance
+         where
+        toPath = const "/"
+
+instance ToQuery
+           GetDeployablePatchSnapshotForInstance
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'getDeployablePatchSnapshotForInstanceResponse' smart constructor.
+data GetDeployablePatchSnapshotForInstanceResponse = GetDeployablePatchSnapshotForInstanceResponse'
+  { _gdpsfirsInstanceId          :: !(Maybe Text)
+  , _gdpsfirsProduct             :: !(Maybe Text)
+  , _gdpsfirsSnapshotDownloadURL :: !(Maybe Text)
+  , _gdpsfirsSnapshotId          :: !(Maybe Text)
+  , _gdpsfirsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetDeployablePatchSnapshotForInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gdpsfirsInstanceId' - The ID of the instance.
+--
+-- * 'gdpsfirsProduct' - Returns the specific operating system (for example Windows Server 2012 or Amazon Linux 2015.09) on the instance for the specified patch snapshot.
+--
+-- * 'gdpsfirsSnapshotDownloadURL' - A pre-signed Amazon S3 URL that can be used to download the patch snapshot.
+--
+-- * 'gdpsfirsSnapshotId' - The user-defined snapshot ID.
+--
+-- * 'gdpsfirsResponseStatus' - -- | The response status code.
+getDeployablePatchSnapshotForInstanceResponse
+    :: Int -- ^ 'gdpsfirsResponseStatus'
+    -> GetDeployablePatchSnapshotForInstanceResponse
+getDeployablePatchSnapshotForInstanceResponse pResponseStatus_ =
+  GetDeployablePatchSnapshotForInstanceResponse'
+  { _gdpsfirsInstanceId = Nothing
+  , _gdpsfirsProduct = Nothing
+  , _gdpsfirsSnapshotDownloadURL = Nothing
+  , _gdpsfirsSnapshotId = Nothing
+  , _gdpsfirsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The ID of the instance.
+gdpsfirsInstanceId :: Lens' GetDeployablePatchSnapshotForInstanceResponse (Maybe Text)
+gdpsfirsInstanceId = lens _gdpsfirsInstanceId (\ s a -> s{_gdpsfirsInstanceId = a});
+
+-- | Returns the specific operating system (for example Windows Server 2012 or Amazon Linux 2015.09) on the instance for the specified patch snapshot.
+gdpsfirsProduct :: Lens' GetDeployablePatchSnapshotForInstanceResponse (Maybe Text)
+gdpsfirsProduct = lens _gdpsfirsProduct (\ s a -> s{_gdpsfirsProduct = a});
+
+-- | A pre-signed Amazon S3 URL that can be used to download the patch snapshot.
+gdpsfirsSnapshotDownloadURL :: Lens' GetDeployablePatchSnapshotForInstanceResponse (Maybe Text)
+gdpsfirsSnapshotDownloadURL = lens _gdpsfirsSnapshotDownloadURL (\ s a -> s{_gdpsfirsSnapshotDownloadURL = a});
+
+-- | The user-defined snapshot ID.
+gdpsfirsSnapshotId :: Lens' GetDeployablePatchSnapshotForInstanceResponse (Maybe Text)
+gdpsfirsSnapshotId = lens _gdpsfirsSnapshotId (\ s a -> s{_gdpsfirsSnapshotId = a});
+
+-- | -- | The response status code.
+gdpsfirsResponseStatus :: Lens' GetDeployablePatchSnapshotForInstanceResponse Int
+gdpsfirsResponseStatus = lens _gdpsfirsResponseStatus (\ s a -> s{_gdpsfirsResponseStatus = a});
+
+instance NFData
+           GetDeployablePatchSnapshotForInstanceResponse
+         where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetDocument
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets the contents of the specified SSM document.
+-- Gets the contents of the specified Systems Manager document.
 --
 --
 module Network.AWS.SSM.GetDocument
@@ -41,40 +41,39 @@
     , gdrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getDocument' smart constructor.
 data GetDocument = GetDocument'
-    { _gdDocumentVersion :: !(Maybe Text)
-    , _gdName            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gdDocumentVersion :: !(Maybe Text)
+  , _gdName            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gdDocumentVersion' - The document version for which you want information.
 --
--- * 'gdName' - The name of the SSM document.
+-- * 'gdName' - The name of the Systems Manager document.
 getDocument
     :: Text -- ^ 'gdName'
     -> GetDocument
 getDocument pName_ =
-    GetDocument'
-    { _gdDocumentVersion = Nothing
-    , _gdName = pName_
-    }
+  GetDocument' {_gdDocumentVersion = Nothing, _gdName = pName_}
 
+
 -- | The document version for which you want information.
 gdDocumentVersion :: Lens' GetDocument (Maybe Text)
 gdDocumentVersion = lens _gdDocumentVersion (\ s a -> s{_gdDocumentVersion = a});
 
--- | The name of the SSM document.
+-- | The name of the Systems Manager document.
 gdName :: Lens' GetDocument Text
 gdName = lens _gdName (\ s a -> s{_gdName = a});
 
@@ -90,9 +89,9 @@
                      <*> (x .?> "DocumentVersion")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetDocument
+instance Hashable GetDocument where
 
-instance NFData GetDocument
+instance NFData GetDocument where
 
 instance ToHeaders GetDocument where
         toHeaders
@@ -118,22 +117,23 @@
 
 -- | /See:/ 'getDocumentResponse' smart constructor.
 data GetDocumentResponse = GetDocumentResponse'
-    { _gdrsDocumentType    :: !(Maybe DocumentType)
-    , _gdrsContent         :: !(Maybe Text)
-    , _gdrsName            :: !(Maybe Text)
-    , _gdrsDocumentVersion :: !(Maybe Text)
-    , _gdrsResponseStatus  :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gdrsDocumentType    :: !(Maybe DocumentType)
+  , _gdrsContent         :: !(Maybe Text)
+  , _gdrsName            :: !(Maybe Text)
+  , _gdrsDocumentVersion :: !(Maybe Text)
+  , _gdrsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetDocumentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gdrsDocumentType' - The document type.
 --
--- * 'gdrsContent' - The contents of the SSM document.
+-- * 'gdrsContent' - The contents of the Systems Manager document.
 --
--- * 'gdrsName' - The name of the SSM document.
+-- * 'gdrsName' - The name of the Systems Manager document.
 --
 -- * 'gdrsDocumentVersion' - The document version.
 --
@@ -142,23 +142,24 @@
     :: Int -- ^ 'gdrsResponseStatus'
     -> GetDocumentResponse
 getDocumentResponse pResponseStatus_ =
-    GetDocumentResponse'
-    { _gdrsDocumentType = Nothing
-    , _gdrsContent = Nothing
-    , _gdrsName = Nothing
-    , _gdrsDocumentVersion = Nothing
-    , _gdrsResponseStatus = pResponseStatus_
-    }
+  GetDocumentResponse'
+  { _gdrsDocumentType = Nothing
+  , _gdrsContent = Nothing
+  , _gdrsName = Nothing
+  , _gdrsDocumentVersion = Nothing
+  , _gdrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The document type.
 gdrsDocumentType :: Lens' GetDocumentResponse (Maybe DocumentType)
 gdrsDocumentType = lens _gdrsDocumentType (\ s a -> s{_gdrsDocumentType = a});
 
--- | The contents of the SSM document.
+-- | The contents of the Systems Manager document.
 gdrsContent :: Lens' GetDocumentResponse (Maybe Text)
 gdrsContent = lens _gdrsContent (\ s a -> s{_gdrsContent = a});
 
--- | The name of the SSM document.
+-- | The name of the Systems Manager document.
 gdrsName :: Lens' GetDocumentResponse (Maybe Text)
 gdrsName = lens _gdrsName (\ s a -> s{_gdrsName = a});
 
@@ -170,4 +171,4 @@
 gdrsResponseStatus :: Lens' GetDocumentResponse Int
 gdrsResponseStatus = lens _gdrsResponseStatus (\ s a -> s{_gdrsResponseStatus = a});
 
-instance NFData GetDocumentResponse
+instance NFData GetDocumentResponse where
diff --git a/gen/Network/AWS/SSM/GetInventory.hs b/gen/Network/AWS/SSM/GetInventory.hs
--- a/gen/Network/AWS/SSM/GetInventory.hs
+++ b/gen/Network/AWS/SSM/GetInventory.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetInventory
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,21 +41,22 @@
     , girsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getInventory' smart constructor.
 data GetInventory = GetInventory'
-    { _giFilters          :: !(Maybe (List1 InventoryFilter))
-    , _giResultAttributes :: !(Maybe (List1 ResultAttribute))
-    , _giNextToken        :: !(Maybe Text)
-    , _giMaxResults       :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _giFilters          :: !(Maybe (List1 InventoryFilter))
+  , _giResultAttributes :: !(Maybe (List1 ResultAttribute))
+  , _giNextToken        :: !(Maybe Text)
+  , _giMaxResults       :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetInventory' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,13 +71,14 @@
 getInventory
     :: GetInventory
 getInventory =
-    GetInventory'
-    { _giFilters = Nothing
-    , _giResultAttributes = Nothing
-    , _giNextToken = Nothing
-    , _giMaxResults = Nothing
-    }
+  GetInventory'
+  { _giFilters = Nothing
+  , _giResultAttributes = Nothing
+  , _giNextToken = Nothing
+  , _giMaxResults = Nothing
+  }
 
+
 -- | One or more filters. Use a filter to return a more specific list of results.
 giFilters :: Lens' GetInventory (Maybe (NonEmpty InventoryFilter))
 giFilters = lens _giFilters (\ s a -> s{_giFilters = a}) . mapping _List1;
@@ -103,9 +105,9 @@
                    (x .?> "Entities" .!@ mempty) <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetInventory
+instance Hashable GetInventory where
 
-instance NFData GetInventory
+instance NFData GetInventory where
 
 instance ToHeaders GetInventory where
         toHeaders
@@ -133,11 +135,12 @@
 
 -- | /See:/ 'getInventoryResponse' smart constructor.
 data GetInventoryResponse = GetInventoryResponse'
-    { _girsEntities       :: !(Maybe [InventoryResultEntity])
-    , _girsNextToken      :: !(Maybe Text)
-    , _girsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _girsEntities       :: !(Maybe [InventoryResultEntity])
+  , _girsNextToken      :: !(Maybe Text)
+  , _girsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetInventoryResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -151,12 +154,13 @@
     :: Int -- ^ 'girsResponseStatus'
     -> GetInventoryResponse
 getInventoryResponse pResponseStatus_ =
-    GetInventoryResponse'
-    { _girsEntities = Nothing
-    , _girsNextToken = Nothing
-    , _girsResponseStatus = pResponseStatus_
-    }
+  GetInventoryResponse'
+  { _girsEntities = Nothing
+  , _girsNextToken = Nothing
+  , _girsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Collection of inventory entities such as a collection of instance inventory.
 girsEntities :: Lens' GetInventoryResponse [InventoryResultEntity]
 girsEntities = lens _girsEntities (\ s a -> s{_girsEntities = a}) . _Default . _Coerce;
@@ -169,4 +173,4 @@
 girsResponseStatus :: Lens' GetInventoryResponse Int
 girsResponseStatus = lens _girsResponseStatus (\ s a -> s{_girsResponseStatus = a});
 
-instance NFData GetInventoryResponse
+instance NFData GetInventoryResponse where
diff --git a/gen/Network/AWS/SSM/GetInventorySchema.hs b/gen/Network/AWS/SSM/GetInventorySchema.hs
--- a/gen/Network/AWS/SSM/GetInventorySchema.hs
+++ b/gen/Network/AWS/SSM/GetInventorySchema.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetInventorySchema
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -29,6 +29,7 @@
     -- * Request Lenses
     , gisTypeName
     , gisNextToken
+    , gisSubType
     , gisMaxResults
 
     -- * Destructuring the Response
@@ -40,20 +41,22 @@
     , gisrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getInventorySchema' smart constructor.
 data GetInventorySchema = GetInventorySchema'
-    { _gisTypeName   :: !(Maybe Text)
-    , _gisNextToken  :: !(Maybe Text)
-    , _gisMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gisTypeName   :: !(Maybe Text)
+  , _gisNextToken  :: !(Maybe Text)
+  , _gisSubType    :: !(Maybe Bool)
+  , _gisMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetInventorySchema' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,16 +65,20 @@
 --
 -- * 'gisNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
+-- * 'gisSubType' - Returns the sub-type schema for a specified inventory type.
+--
 -- * 'gisMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
 getInventorySchema
     :: GetInventorySchema
 getInventorySchema =
-    GetInventorySchema'
-    { _gisTypeName = Nothing
-    , _gisNextToken = Nothing
-    , _gisMaxResults = Nothing
-    }
+  GetInventorySchema'
+  { _gisTypeName = Nothing
+  , _gisNextToken = Nothing
+  , _gisSubType = Nothing
+  , _gisMaxResults = Nothing
+  }
 
+
 -- | The type of inventory item to return.
 gisTypeName :: Lens' GetInventorySchema (Maybe Text)
 gisTypeName = lens _gisTypeName (\ s a -> s{_gisTypeName = a});
@@ -80,6 +87,10 @@
 gisNextToken :: Lens' GetInventorySchema (Maybe Text)
 gisNextToken = lens _gisNextToken (\ s a -> s{_gisNextToken = a});
 
+-- | Returns the sub-type schema for a specified inventory type.
+gisSubType :: Lens' GetInventorySchema (Maybe Bool)
+gisSubType = lens _gisSubType (\ s a -> s{_gisSubType = a});
+
 -- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
 gisMaxResults :: Lens' GetInventorySchema (Maybe Natural)
 gisMaxResults = lens _gisMaxResults (\ s a -> s{_gisMaxResults = a}) . mapping _Nat;
@@ -95,9 +106,9 @@
                    (x .?> "Schemas" .!@ mempty) <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetInventorySchema
+instance Hashable GetInventorySchema where
 
-instance NFData GetInventorySchema
+instance NFData GetInventorySchema where
 
 instance ToHeaders GetInventorySchema where
         toHeaders
@@ -114,6 +125,7 @@
               (catMaybes
                  [("TypeName" .=) <$> _gisTypeName,
                   ("NextToken" .=) <$> _gisNextToken,
+                  ("SubType" .=) <$> _gisSubType,
                   ("MaxResults" .=) <$> _gisMaxResults])
 
 instance ToPath GetInventorySchema where
@@ -124,11 +136,12 @@
 
 -- | /See:/ 'getInventorySchemaResponse' smart constructor.
 data GetInventorySchemaResponse = GetInventorySchemaResponse'
-    { _gisrsSchemas        :: !(Maybe [InventoryItemSchema])
-    , _gisrsNextToken      :: !(Maybe Text)
-    , _gisrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gisrsSchemas        :: !(Maybe [InventoryItemSchema])
+  , _gisrsNextToken      :: !(Maybe Text)
+  , _gisrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetInventorySchemaResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -142,12 +155,13 @@
     :: Int -- ^ 'gisrsResponseStatus'
     -> GetInventorySchemaResponse
 getInventorySchemaResponse pResponseStatus_ =
-    GetInventorySchemaResponse'
-    { _gisrsSchemas = Nothing
-    , _gisrsNextToken = Nothing
-    , _gisrsResponseStatus = pResponseStatus_
-    }
+  GetInventorySchemaResponse'
+  { _gisrsSchemas = Nothing
+  , _gisrsNextToken = Nothing
+  , _gisrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Inventory schemas returned by the request.
 gisrsSchemas :: Lens' GetInventorySchemaResponse [InventoryItemSchema]
 gisrsSchemas = lens _gisrsSchemas (\ s a -> s{_gisrsSchemas = a}) . _Default . _Coerce;
@@ -160,4 +174,4 @@
 gisrsResponseStatus :: Lens' GetInventorySchemaResponse Int
 gisrsResponseStatus = lens _gisrsResponseStatus (\ s a -> s{_gisrsResponseStatus = a});
 
-instance NFData GetInventorySchemaResponse
+instance NFData GetInventorySchemaResponse where
diff --git a/gen/Network/AWS/SSM/GetMaintenanceWindow.hs b/gen/Network/AWS/SSM/GetMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/GetMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/GetMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,23 +40,25 @@
     , gmwrsModifiedDate
     , gmwrsCutoff
     , gmwrsAllowUnassociatedTargets
+    , gmwrsDescription
     , gmwrsDuration
     , gmwrsWindowId
     , gmwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getMaintenanceWindow' smart constructor.
 newtype GetMaintenanceWindow = GetMaintenanceWindow'
-    { _gmwWindowId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmwWindowId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,10 +68,9 @@
     :: Text -- ^ 'gmwWindowId'
     -> GetMaintenanceWindow
 getMaintenanceWindow pWindowId_ =
-    GetMaintenanceWindow'
-    { _gmwWindowId = pWindowId_
-    }
+  GetMaintenanceWindow' {_gmwWindowId = pWindowId_}
 
+
 -- | The ID of the desired Maintenance Window.
 gmwWindowId :: Lens' GetMaintenanceWindow Text
 gmwWindowId = lens _gmwWindowId (\ s a -> s{_gmwWindowId = a});
@@ -88,13 +89,14 @@
                      <*> (x .?> "ModifiedDate")
                      <*> (x .?> "Cutoff")
                      <*> (x .?> "AllowUnassociatedTargets")
+                     <*> (x .?> "Description")
                      <*> (x .?> "Duration")
                      <*> (x .?> "WindowId")
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetMaintenanceWindow
+instance Hashable GetMaintenanceWindow where
 
-instance NFData GetMaintenanceWindow
+instance NFData GetMaintenanceWindow where
 
 instance ToHeaders GetMaintenanceWindow where
         toHeaders
@@ -118,18 +120,20 @@
 
 -- | /See:/ 'getMaintenanceWindowResponse' smart constructor.
 data GetMaintenanceWindowResponse = GetMaintenanceWindowResponse'
-    { _gmwrsEnabled                  :: !(Maybe Bool)
-    , _gmwrsSchedule                 :: !(Maybe Text)
-    , _gmwrsCreatedDate              :: !(Maybe POSIX)
-    , _gmwrsName                     :: !(Maybe Text)
-    , _gmwrsModifiedDate             :: !(Maybe POSIX)
-    , _gmwrsCutoff                   :: !(Maybe Nat)
-    , _gmwrsAllowUnassociatedTargets :: !(Maybe Bool)
-    , _gmwrsDuration                 :: !(Maybe Nat)
-    , _gmwrsWindowId                 :: !(Maybe Text)
-    , _gmwrsResponseStatus           :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmwrsEnabled                  :: !(Maybe Bool)
+  , _gmwrsSchedule                 :: !(Maybe Text)
+  , _gmwrsCreatedDate              :: !(Maybe POSIX)
+  , _gmwrsName                     :: !(Maybe Text)
+  , _gmwrsModifiedDate             :: !(Maybe POSIX)
+  , _gmwrsCutoff                   :: !(Maybe Nat)
+  , _gmwrsAllowUnassociatedTargets :: !(Maybe Bool)
+  , _gmwrsDescription              :: !(Maybe (Sensitive Text))
+  , _gmwrsDuration                 :: !(Maybe Nat)
+  , _gmwrsWindowId                 :: !(Maybe Text)
+  , _gmwrsResponseStatus           :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -148,6 +152,8 @@
 --
 -- * 'gmwrsAllowUnassociatedTargets' - Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.
 --
+-- * 'gmwrsDescription' - The description of the Maintenance Window.
+--
 -- * 'gmwrsDuration' - The duration of the Maintenance Window in hours.
 --
 -- * 'gmwrsWindowId' - The ID of the created Maintenance Window.
@@ -157,19 +163,21 @@
     :: Int -- ^ 'gmwrsResponseStatus'
     -> GetMaintenanceWindowResponse
 getMaintenanceWindowResponse pResponseStatus_ =
-    GetMaintenanceWindowResponse'
-    { _gmwrsEnabled = Nothing
-    , _gmwrsSchedule = Nothing
-    , _gmwrsCreatedDate = Nothing
-    , _gmwrsName = Nothing
-    , _gmwrsModifiedDate = Nothing
-    , _gmwrsCutoff = Nothing
-    , _gmwrsAllowUnassociatedTargets = Nothing
-    , _gmwrsDuration = Nothing
-    , _gmwrsWindowId = Nothing
-    , _gmwrsResponseStatus = pResponseStatus_
-    }
+  GetMaintenanceWindowResponse'
+  { _gmwrsEnabled = Nothing
+  , _gmwrsSchedule = Nothing
+  , _gmwrsCreatedDate = Nothing
+  , _gmwrsName = Nothing
+  , _gmwrsModifiedDate = Nothing
+  , _gmwrsCutoff = Nothing
+  , _gmwrsAllowUnassociatedTargets = Nothing
+  , _gmwrsDescription = Nothing
+  , _gmwrsDuration = Nothing
+  , _gmwrsWindowId = Nothing
+  , _gmwrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Whether the Maintenance Windows is enabled.
 gmwrsEnabled :: Lens' GetMaintenanceWindowResponse (Maybe Bool)
 gmwrsEnabled = lens _gmwrsEnabled (\ s a -> s{_gmwrsEnabled = a});
@@ -198,6 +206,10 @@
 gmwrsAllowUnassociatedTargets :: Lens' GetMaintenanceWindowResponse (Maybe Bool)
 gmwrsAllowUnassociatedTargets = lens _gmwrsAllowUnassociatedTargets (\ s a -> s{_gmwrsAllowUnassociatedTargets = a});
 
+-- | The description of the Maintenance Window.
+gmwrsDescription :: Lens' GetMaintenanceWindowResponse (Maybe Text)
+gmwrsDescription = lens _gmwrsDescription (\ s a -> s{_gmwrsDescription = a}) . mapping _Sensitive;
+
 -- | The duration of the Maintenance Window in hours.
 gmwrsDuration :: Lens' GetMaintenanceWindowResponse (Maybe Natural)
 gmwrsDuration = lens _gmwrsDuration (\ s a -> s{_gmwrsDuration = a}) . mapping _Nat;
@@ -210,4 +222,4 @@
 gmwrsResponseStatus :: Lens' GetMaintenanceWindowResponse Int
 gmwrsResponseStatus = lens _gmwrsResponseStatus (\ s a -> s{_gmwrsResponseStatus = a});
 
-instance NFData GetMaintenanceWindowResponse
+instance NFData GetMaintenanceWindowResponse where
diff --git a/gen/Network/AWS/SSM/GetMaintenanceWindowExecution.hs b/gen/Network/AWS/SSM/GetMaintenanceWindowExecution.hs
--- a/gen/Network/AWS/SSM/GetMaintenanceWindowExecution.hs
+++ b/gen/Network/AWS/SSM/GetMaintenanceWindowExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetMaintenanceWindowExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -42,18 +42,19 @@
     , gmwersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getMaintenanceWindowExecution' smart constructor.
 newtype GetMaintenanceWindowExecution = GetMaintenanceWindowExecution'
-    { _gmweWindowExecutionId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmweWindowExecutionId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindowExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,10 +64,9 @@
     :: Text -- ^ 'gmweWindowExecutionId'
     -> GetMaintenanceWindowExecution
 getMaintenanceWindowExecution pWindowExecutionId_ =
-    GetMaintenanceWindowExecution'
-    { _gmweWindowExecutionId = pWindowExecutionId_
-    }
+  GetMaintenanceWindowExecution' {_gmweWindowExecutionId = pWindowExecutionId_}
 
+
 -- | The ID of the Maintenance Window execution that includes the task.
 gmweWindowExecutionId :: Lens' GetMaintenanceWindowExecution Text
 gmweWindowExecutionId = lens _gmweWindowExecutionId (\ s a -> s{_gmweWindowExecutionId = a});
@@ -87,9 +87,9 @@
                      <*> (x .?> "TaskIds" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetMaintenanceWindowExecution
+instance Hashable GetMaintenanceWindowExecution where
 
-instance NFData GetMaintenanceWindowExecution
+instance NFData GetMaintenanceWindowExecution where
 
 instance ToHeaders GetMaintenanceWindowExecution
          where
@@ -117,15 +117,16 @@
 
 -- | /See:/ 'getMaintenanceWindowExecutionResponse' smart constructor.
 data GetMaintenanceWindowExecutionResponse = GetMaintenanceWindowExecutionResponse'
-    { _gmwersStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
-    , _gmwersStartTime         :: !(Maybe POSIX)
-    , _gmwersWindowExecutionId :: !(Maybe Text)
-    , _gmwersStatusDetails     :: !(Maybe Text)
-    , _gmwersEndTime           :: !(Maybe POSIX)
-    , _gmwersTaskIds           :: !(Maybe [Text])
-    , _gmwersResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmwersStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _gmwersStartTime         :: !(Maybe POSIX)
+  , _gmwersWindowExecutionId :: !(Maybe Text)
+  , _gmwersStatusDetails     :: !(Maybe Text)
+  , _gmwersEndTime           :: !(Maybe POSIX)
+  , _gmwersTaskIds           :: !(Maybe [Text])
+  , _gmwersResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindowExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -147,16 +148,17 @@
     :: Int -- ^ 'gmwersResponseStatus'
     -> GetMaintenanceWindowExecutionResponse
 getMaintenanceWindowExecutionResponse pResponseStatus_ =
-    GetMaintenanceWindowExecutionResponse'
-    { _gmwersStatus = Nothing
-    , _gmwersStartTime = Nothing
-    , _gmwersWindowExecutionId = Nothing
-    , _gmwersStatusDetails = Nothing
-    , _gmwersEndTime = Nothing
-    , _gmwersTaskIds = Nothing
-    , _gmwersResponseStatus = pResponseStatus_
-    }
+  GetMaintenanceWindowExecutionResponse'
+  { _gmwersStatus = Nothing
+  , _gmwersStartTime = Nothing
+  , _gmwersWindowExecutionId = Nothing
+  , _gmwersStatusDetails = Nothing
+  , _gmwersEndTime = Nothing
+  , _gmwersTaskIds = Nothing
+  , _gmwersResponseStatus = pResponseStatus_
+  }
 
+
 -- | The status of the Maintenance Window execution.
 gmwersStatus :: Lens' GetMaintenanceWindowExecutionResponse (Maybe MaintenanceWindowExecutionStatus)
 gmwersStatus = lens _gmwersStatus (\ s a -> s{_gmwersStatus = a});
@@ -186,3 +188,4 @@
 gmwersResponseStatus = lens _gmwersResponseStatus (\ s a -> s{_gmwersResponseStatus = a});
 
 instance NFData GetMaintenanceWindowExecutionResponse
+         where
diff --git a/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTask.hs b/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTask.hs
--- a/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTask.hs
+++ b/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTask.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetMaintenanceWindowExecutionTask
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -50,19 +50,20 @@
     , gmwetrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getMaintenanceWindowExecutionTask' smart constructor.
 data GetMaintenanceWindowExecutionTask = GetMaintenanceWindowExecutionTask'
-    { _gmwetWindowExecutionId :: !Text
-    , _gmwetTaskId            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmwetWindowExecutionId :: !Text
+  , _gmwetTaskId            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindowExecutionTask' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,11 +76,10 @@
     -> Text -- ^ 'gmwetTaskId'
     -> GetMaintenanceWindowExecutionTask
 getMaintenanceWindowExecutionTask pWindowExecutionId_ pTaskId_ =
-    GetMaintenanceWindowExecutionTask'
-    { _gmwetWindowExecutionId = pWindowExecutionId_
-    , _gmwetTaskId = pTaskId_
-    }
+  GetMaintenanceWindowExecutionTask'
+  {_gmwetWindowExecutionId = pWindowExecutionId_, _gmwetTaskId = pTaskId_}
 
+
 -- | The ID of the Maintenance Window execution that includes the task.
 gmwetWindowExecutionId :: Lens' GetMaintenanceWindowExecutionTask Text
 gmwetWindowExecutionId = lens _gmwetWindowExecutionId (\ s a -> s{_gmwetWindowExecutionId = a});
@@ -113,8 +113,10 @@
                      <*> (pure (fromEnum s)))
 
 instance Hashable GetMaintenanceWindowExecutionTask
+         where
 
 instance NFData GetMaintenanceWindowExecutionTask
+         where
 
 instance ToHeaders GetMaintenanceWindowExecutionTask
          where
@@ -146,29 +148,30 @@
 
 -- | /See:/ 'getMaintenanceWindowExecutionTaskResponse' smart constructor.
 data GetMaintenanceWindowExecutionTaskResponse = GetMaintenanceWindowExecutionTaskResponse'
-    { _gmwetrsStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
-    , _gmwetrsTaskParameters    :: !(Maybe (Sensitive [Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))]))
-    , _gmwetrsTaskExecutionId   :: !(Maybe Text)
-    , _gmwetrsPriority          :: !(Maybe Nat)
-    , _gmwetrsStartTime         :: !(Maybe POSIX)
-    , _gmwetrsTaskARN           :: !(Maybe Text)
-    , _gmwetrsWindowExecutionId :: !(Maybe Text)
-    , _gmwetrsStatusDetails     :: !(Maybe Text)
-    , _gmwetrsMaxErrors         :: !(Maybe Text)
-    , _gmwetrsEndTime           :: !(Maybe POSIX)
-    , _gmwetrsType              :: !(Maybe MaintenanceWindowTaskType)
-    , _gmwetrsMaxConcurrency    :: !(Maybe Text)
-    , _gmwetrsServiceRole       :: !(Maybe Text)
-    , _gmwetrsResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gmwetrsStatus :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _gmwetrsTaskParameters :: !(Maybe (Sensitive [Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))]))
+  , _gmwetrsTaskExecutionId :: !(Maybe Text)
+  , _gmwetrsPriority :: !(Maybe Nat)
+  , _gmwetrsStartTime :: !(Maybe POSIX)
+  , _gmwetrsTaskARN :: !(Maybe Text)
+  , _gmwetrsWindowExecutionId :: !(Maybe Text)
+  , _gmwetrsStatusDetails :: !(Maybe Text)
+  , _gmwetrsMaxErrors :: !(Maybe Text)
+  , _gmwetrsEndTime :: !(Maybe POSIX)
+  , _gmwetrsType :: !(Maybe MaintenanceWindowTaskType)
+  , _gmwetrsMaxConcurrency :: !(Maybe Text)
+  , _gmwetrsServiceRole :: !(Maybe Text)
+  , _gmwetrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetMaintenanceWindowExecutionTaskResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'gmwetrsStatus' - The status of the task.
 --
--- * 'gmwetrsTaskParameters' - The parameters passed to the task when it was executed. The map has the following format: Key: string, 1 ≤ length ≤ 255 Value: an array of strings where each string 1 ≤ length ≤ 255
+-- * 'gmwetrsTaskParameters' - The parameters passed to the task when it was executed. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters
 --
 -- * 'gmwetrsTaskExecutionId' - The ID of the specific task execution in the Maintenance Window task that was retrieved.
 --
@@ -197,28 +200,29 @@
     :: Int -- ^ 'gmwetrsResponseStatus'
     -> GetMaintenanceWindowExecutionTaskResponse
 getMaintenanceWindowExecutionTaskResponse pResponseStatus_ =
-    GetMaintenanceWindowExecutionTaskResponse'
-    { _gmwetrsStatus = Nothing
-    , _gmwetrsTaskParameters = Nothing
-    , _gmwetrsTaskExecutionId = Nothing
-    , _gmwetrsPriority = Nothing
-    , _gmwetrsStartTime = Nothing
-    , _gmwetrsTaskARN = Nothing
-    , _gmwetrsWindowExecutionId = Nothing
-    , _gmwetrsStatusDetails = Nothing
-    , _gmwetrsMaxErrors = Nothing
-    , _gmwetrsEndTime = Nothing
-    , _gmwetrsType = Nothing
-    , _gmwetrsMaxConcurrency = Nothing
-    , _gmwetrsServiceRole = Nothing
-    , _gmwetrsResponseStatus = pResponseStatus_
-    }
+  GetMaintenanceWindowExecutionTaskResponse'
+  { _gmwetrsStatus = Nothing
+  , _gmwetrsTaskParameters = Nothing
+  , _gmwetrsTaskExecutionId = Nothing
+  , _gmwetrsPriority = Nothing
+  , _gmwetrsStartTime = Nothing
+  , _gmwetrsTaskARN = Nothing
+  , _gmwetrsWindowExecutionId = Nothing
+  , _gmwetrsStatusDetails = Nothing
+  , _gmwetrsMaxErrors = Nothing
+  , _gmwetrsEndTime = Nothing
+  , _gmwetrsType = Nothing
+  , _gmwetrsMaxConcurrency = Nothing
+  , _gmwetrsServiceRole = Nothing
+  , _gmwetrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The status of the task.
 gmwetrsStatus :: Lens' GetMaintenanceWindowExecutionTaskResponse (Maybe MaintenanceWindowExecutionStatus)
 gmwetrsStatus = lens _gmwetrsStatus (\ s a -> s{_gmwetrsStatus = a});
 
--- | The parameters passed to the task when it was executed. The map has the following format: Key: string, 1 ≤ length ≤ 255 Value: an array of strings where each string 1 ≤ length ≤ 255
+-- | The parameters passed to the task when it was executed. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters
 gmwetrsTaskParameters :: Lens' GetMaintenanceWindowExecutionTaskResponse (Maybe [HashMap Text MaintenanceWindowTaskParameterValueExpression])
 gmwetrsTaskParameters = lens _gmwetrsTaskParameters (\ s a -> s{_gmwetrsTaskParameters = a}) . mapping (_Sensitive . _Coerce);
 
@@ -271,4 +275,5 @@
 gmwetrsResponseStatus = lens _gmwetrsResponseStatus (\ s a -> s{_gmwetrsResponseStatus = a});
 
 instance NFData
-         GetMaintenanceWindowExecutionTaskResponse
+           GetMaintenanceWindowExecutionTaskResponse
+         where
diff --git a/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTaskInvocation.hs b/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTaskInvocation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetMaintenanceWindowExecutionTaskInvocation.hs
@@ -0,0 +1,290 @@
+{-# 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.SSM.GetMaintenanceWindowExecutionTaskInvocation
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a task invocation. A task invocation is a specific task executing on a specific target. Maintenance Windows report status for all invocations.
+--
+--
+module Network.AWS.SSM.GetMaintenanceWindowExecutionTaskInvocation
+    (
+    -- * Creating a Request
+      getMaintenanceWindowExecutionTaskInvocation
+    , GetMaintenanceWindowExecutionTaskInvocation
+    -- * Request Lenses
+    , gmwetiWindowExecutionId
+    , gmwetiTaskId
+    , gmwetiInvocationId
+
+    -- * Destructuring the Response
+    , getMaintenanceWindowExecutionTaskInvocationResponse
+    , GetMaintenanceWindowExecutionTaskInvocationResponse
+    -- * Response Lenses
+    , gmwetirsStatus
+    , gmwetirsExecutionId
+    , gmwetirsTaskExecutionId
+    , gmwetirsStartTime
+    , gmwetirsInvocationId
+    , gmwetirsOwnerInformation
+    , gmwetirsTaskType
+    , gmwetirsWindowTargetId
+    , gmwetirsWindowExecutionId
+    , gmwetirsStatusDetails
+    , gmwetirsEndTime
+    , gmwetirsParameters
+    , gmwetirsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getMaintenanceWindowExecutionTaskInvocation' smart constructor.
+data GetMaintenanceWindowExecutionTaskInvocation = GetMaintenanceWindowExecutionTaskInvocation'
+  { _gmwetiWindowExecutionId :: !Text
+  , _gmwetiTaskId            :: !Text
+  , _gmwetiInvocationId      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetMaintenanceWindowExecutionTaskInvocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmwetiWindowExecutionId' - The ID of the Maintenance Window execution for which the task is a part.
+--
+-- * 'gmwetiTaskId' - The ID of the specific task in the Maintenance Window task that should be retrieved.
+--
+-- * 'gmwetiInvocationId' - The invocation ID to retrieve.
+getMaintenanceWindowExecutionTaskInvocation
+    :: Text -- ^ 'gmwetiWindowExecutionId'
+    -> Text -- ^ 'gmwetiTaskId'
+    -> Text -- ^ 'gmwetiInvocationId'
+    -> GetMaintenanceWindowExecutionTaskInvocation
+getMaintenanceWindowExecutionTaskInvocation pWindowExecutionId_ pTaskId_ pInvocationId_ =
+  GetMaintenanceWindowExecutionTaskInvocation'
+  { _gmwetiWindowExecutionId = pWindowExecutionId_
+  , _gmwetiTaskId = pTaskId_
+  , _gmwetiInvocationId = pInvocationId_
+  }
+
+
+-- | The ID of the Maintenance Window execution for which the task is a part.
+gmwetiWindowExecutionId :: Lens' GetMaintenanceWindowExecutionTaskInvocation Text
+gmwetiWindowExecutionId = lens _gmwetiWindowExecutionId (\ s a -> s{_gmwetiWindowExecutionId = a});
+
+-- | The ID of the specific task in the Maintenance Window task that should be retrieved.
+gmwetiTaskId :: Lens' GetMaintenanceWindowExecutionTaskInvocation Text
+gmwetiTaskId = lens _gmwetiTaskId (\ s a -> s{_gmwetiTaskId = a});
+
+-- | The invocation ID to retrieve.
+gmwetiInvocationId :: Lens' GetMaintenanceWindowExecutionTaskInvocation Text
+gmwetiInvocationId = lens _gmwetiInvocationId (\ s a -> s{_gmwetiInvocationId = a});
+
+instance AWSRequest
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+        type Rs GetMaintenanceWindowExecutionTaskInvocation =
+             GetMaintenanceWindowExecutionTaskInvocationResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetMaintenanceWindowExecutionTaskInvocationResponse'
+                   <$>
+                   (x .?> "Status") <*> (x .?> "ExecutionId") <*>
+                     (x .?> "TaskExecutionId")
+                     <*> (x .?> "StartTime")
+                     <*> (x .?> "InvocationId")
+                     <*> (x .?> "OwnerInformation")
+                     <*> (x .?> "TaskType")
+                     <*> (x .?> "WindowTargetId")
+                     <*> (x .?> "WindowExecutionId")
+                     <*> (x .?> "StatusDetails")
+                     <*> (x .?> "EndTime")
+                     <*> (x .?> "Parameters")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+
+instance NFData
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+
+instance ToHeaders
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetMaintenanceWindowExecutionTaskInvocation"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+        toJSON
+          GetMaintenanceWindowExecutionTaskInvocation'{..}
+          = object
+              (catMaybes
+                 [Just
+                    ("WindowExecutionId" .= _gmwetiWindowExecutionId),
+                  Just ("TaskId" .= _gmwetiTaskId),
+                  Just ("InvocationId" .= _gmwetiInvocationId)])
+
+instance ToPath
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+        toPath = const "/"
+
+instance ToQuery
+           GetMaintenanceWindowExecutionTaskInvocation
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'getMaintenanceWindowExecutionTaskInvocationResponse' smart constructor.
+data GetMaintenanceWindowExecutionTaskInvocationResponse = GetMaintenanceWindowExecutionTaskInvocationResponse'
+  { _gmwetirsStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _gmwetirsExecutionId       :: !(Maybe Text)
+  , _gmwetirsTaskExecutionId   :: !(Maybe Text)
+  , _gmwetirsStartTime         :: !(Maybe POSIX)
+  , _gmwetirsInvocationId      :: !(Maybe Text)
+  , _gmwetirsOwnerInformation  :: !(Maybe (Sensitive Text))
+  , _gmwetirsTaskType          :: !(Maybe MaintenanceWindowTaskType)
+  , _gmwetirsWindowTargetId    :: !(Maybe Text)
+  , _gmwetirsWindowExecutionId :: !(Maybe Text)
+  , _gmwetirsStatusDetails     :: !(Maybe Text)
+  , _gmwetirsEndTime           :: !(Maybe POSIX)
+  , _gmwetirsParameters        :: !(Maybe (Sensitive Text))
+  , _gmwetirsResponseStatus    :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetMaintenanceWindowExecutionTaskInvocationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmwetirsStatus' - The task status for an invocation.
+--
+-- * 'gmwetirsExecutionId' - The execution ID.
+--
+-- * 'gmwetirsTaskExecutionId' - The task execution ID.
+--
+-- * 'gmwetirsStartTime' - The time that the task started executing on the target.
+--
+-- * 'gmwetirsInvocationId' - The invocation ID.
+--
+-- * 'gmwetirsOwnerInformation' - User-provided value to be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+--
+-- * 'gmwetirsTaskType' - Retrieves the task type for a Maintenance Window. Task types include the following: LAMBDA, STEP_FUNCTION, AUTOMATION, RUN_COMMAND.
+--
+-- * 'gmwetirsWindowTargetId' - The Maintenance Window target ID.
+--
+-- * 'gmwetirsWindowExecutionId' - The Maintenance Window execution ID.
+--
+-- * 'gmwetirsStatusDetails' - The details explaining the status. Details are only available for certain status values.
+--
+-- * 'gmwetirsEndTime' - The time that the task finished executing on the target.
+--
+-- * 'gmwetirsParameters' - The parameters used at the time that the task executed.
+--
+-- * 'gmwetirsResponseStatus' - -- | The response status code.
+getMaintenanceWindowExecutionTaskInvocationResponse
+    :: Int -- ^ 'gmwetirsResponseStatus'
+    -> GetMaintenanceWindowExecutionTaskInvocationResponse
+getMaintenanceWindowExecutionTaskInvocationResponse pResponseStatus_ =
+  GetMaintenanceWindowExecutionTaskInvocationResponse'
+  { _gmwetirsStatus = Nothing
+  , _gmwetirsExecutionId = Nothing
+  , _gmwetirsTaskExecutionId = Nothing
+  , _gmwetirsStartTime = Nothing
+  , _gmwetirsInvocationId = Nothing
+  , _gmwetirsOwnerInformation = Nothing
+  , _gmwetirsTaskType = Nothing
+  , _gmwetirsWindowTargetId = Nothing
+  , _gmwetirsWindowExecutionId = Nothing
+  , _gmwetirsStatusDetails = Nothing
+  , _gmwetirsEndTime = Nothing
+  , _gmwetirsParameters = Nothing
+  , _gmwetirsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The task status for an invocation.
+gmwetirsStatus :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe MaintenanceWindowExecutionStatus)
+gmwetirsStatus = lens _gmwetirsStatus (\ s a -> s{_gmwetirsStatus = a});
+
+-- | The execution ID.
+gmwetirsExecutionId :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsExecutionId = lens _gmwetirsExecutionId (\ s a -> s{_gmwetirsExecutionId = a});
+
+-- | The task execution ID.
+gmwetirsTaskExecutionId :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsTaskExecutionId = lens _gmwetirsTaskExecutionId (\ s a -> s{_gmwetirsTaskExecutionId = a});
+
+-- | The time that the task started executing on the target.
+gmwetirsStartTime :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe UTCTime)
+gmwetirsStartTime = lens _gmwetirsStartTime (\ s a -> s{_gmwetirsStartTime = a}) . mapping _Time;
+
+-- | The invocation ID.
+gmwetirsInvocationId :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsInvocationId = lens _gmwetirsInvocationId (\ s a -> s{_gmwetirsInvocationId = a});
+
+-- | User-provided value to be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+gmwetirsOwnerInformation :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsOwnerInformation = lens _gmwetirsOwnerInformation (\ s a -> s{_gmwetirsOwnerInformation = a}) . mapping _Sensitive;
+
+-- | Retrieves the task type for a Maintenance Window. Task types include the following: LAMBDA, STEP_FUNCTION, AUTOMATION, RUN_COMMAND.
+gmwetirsTaskType :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe MaintenanceWindowTaskType)
+gmwetirsTaskType = lens _gmwetirsTaskType (\ s a -> s{_gmwetirsTaskType = a});
+
+-- | The Maintenance Window target ID.
+gmwetirsWindowTargetId :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsWindowTargetId = lens _gmwetirsWindowTargetId (\ s a -> s{_gmwetirsWindowTargetId = a});
+
+-- | The Maintenance Window execution ID.
+gmwetirsWindowExecutionId :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsWindowExecutionId = lens _gmwetirsWindowExecutionId (\ s a -> s{_gmwetirsWindowExecutionId = a});
+
+-- | The details explaining the status. Details are only available for certain status values.
+gmwetirsStatusDetails :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsStatusDetails = lens _gmwetirsStatusDetails (\ s a -> s{_gmwetirsStatusDetails = a});
+
+-- | The time that the task finished executing on the target.
+gmwetirsEndTime :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe UTCTime)
+gmwetirsEndTime = lens _gmwetirsEndTime (\ s a -> s{_gmwetirsEndTime = a}) . mapping _Time;
+
+-- | The parameters used at the time that the task executed.
+gmwetirsParameters :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse (Maybe Text)
+gmwetirsParameters = lens _gmwetirsParameters (\ s a -> s{_gmwetirsParameters = a}) . mapping _Sensitive;
+
+-- | -- | The response status code.
+gmwetirsResponseStatus :: Lens' GetMaintenanceWindowExecutionTaskInvocationResponse Int
+gmwetirsResponseStatus = lens _gmwetirsResponseStatus (\ s a -> s{_gmwetirsResponseStatus = a});
+
+instance NFData
+           GetMaintenanceWindowExecutionTaskInvocationResponse
+         where
diff --git a/gen/Network/AWS/SSM/GetMaintenanceWindowTask.hs b/gen/Network/AWS/SSM/GetMaintenanceWindowTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetMaintenanceWindowTask.hs
@@ -0,0 +1,278 @@
+{-# 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.SSM.GetMaintenanceWindowTask
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the tasks in a Maintenance Window.
+--
+--
+module Network.AWS.SSM.GetMaintenanceWindowTask
+    (
+    -- * Creating a Request
+      getMaintenanceWindowTask
+    , GetMaintenanceWindowTask
+    -- * Request Lenses
+    , gmwtWindowId
+    , gmwtWindowTaskId
+
+    -- * Destructuring the Response
+    , getMaintenanceWindowTaskResponse
+    , GetMaintenanceWindowTaskResponse
+    -- * Response Lenses
+    , gmwtrsServiceRoleARN
+    , gmwtrsWindowTaskId
+    , gmwtrsTaskParameters
+    , gmwtrsPriority
+    , gmwtrsTaskType
+    , gmwtrsTaskARN
+    , gmwtrsMaxErrors
+    , gmwtrsTaskInvocationParameters
+    , gmwtrsName
+    , gmwtrsTargets
+    , gmwtrsLoggingInfo
+    , gmwtrsDescription
+    , gmwtrsMaxConcurrency
+    , gmwtrsWindowId
+    , gmwtrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getMaintenanceWindowTask' smart constructor.
+data GetMaintenanceWindowTask = GetMaintenanceWindowTask'
+  { _gmwtWindowId     :: !Text
+  , _gmwtWindowTaskId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetMaintenanceWindowTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmwtWindowId' - The Maintenance Window ID that includes the task to retrieve.
+--
+-- * 'gmwtWindowTaskId' - The Maintenance Window task ID to retrieve.
+getMaintenanceWindowTask
+    :: Text -- ^ 'gmwtWindowId'
+    -> Text -- ^ 'gmwtWindowTaskId'
+    -> GetMaintenanceWindowTask
+getMaintenanceWindowTask pWindowId_ pWindowTaskId_ =
+  GetMaintenanceWindowTask'
+  {_gmwtWindowId = pWindowId_, _gmwtWindowTaskId = pWindowTaskId_}
+
+
+-- | The Maintenance Window ID that includes the task to retrieve.
+gmwtWindowId :: Lens' GetMaintenanceWindowTask Text
+gmwtWindowId = lens _gmwtWindowId (\ s a -> s{_gmwtWindowId = a});
+
+-- | The Maintenance Window task ID to retrieve.
+gmwtWindowTaskId :: Lens' GetMaintenanceWindowTask Text
+gmwtWindowTaskId = lens _gmwtWindowTaskId (\ s a -> s{_gmwtWindowTaskId = a});
+
+instance AWSRequest GetMaintenanceWindowTask where
+        type Rs GetMaintenanceWindowTask =
+             GetMaintenanceWindowTaskResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetMaintenanceWindowTaskResponse' <$>
+                   (x .?> "ServiceRoleArn") <*> (x .?> "WindowTaskId")
+                     <*> (x .?> "TaskParameters" .!@ mempty)
+                     <*> (x .?> "Priority")
+                     <*> (x .?> "TaskType")
+                     <*> (x .?> "TaskArn")
+                     <*> (x .?> "MaxErrors")
+                     <*> (x .?> "TaskInvocationParameters")
+                     <*> (x .?> "Name")
+                     <*> (x .?> "Targets" .!@ mempty)
+                     <*> (x .?> "LoggingInfo")
+                     <*> (x .?> "Description")
+                     <*> (x .?> "MaxConcurrency")
+                     <*> (x .?> "WindowId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetMaintenanceWindowTask where
+
+instance NFData GetMaintenanceWindowTask where
+
+instance ToHeaders GetMaintenanceWindowTask where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetMaintenanceWindowTask" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetMaintenanceWindowTask where
+        toJSON GetMaintenanceWindowTask'{..}
+          = object
+              (catMaybes
+                 [Just ("WindowId" .= _gmwtWindowId),
+                  Just ("WindowTaskId" .= _gmwtWindowTaskId)])
+
+instance ToPath GetMaintenanceWindowTask where
+        toPath = const "/"
+
+instance ToQuery GetMaintenanceWindowTask where
+        toQuery = const mempty
+
+-- | /See:/ 'getMaintenanceWindowTaskResponse' smart constructor.
+data GetMaintenanceWindowTaskResponse = GetMaintenanceWindowTaskResponse'
+  { _gmwtrsServiceRoleARN :: !(Maybe Text)
+  , _gmwtrsWindowTaskId :: !(Maybe Text)
+  , _gmwtrsTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
+  , _gmwtrsPriority :: !(Maybe Nat)
+  , _gmwtrsTaskType :: !(Maybe MaintenanceWindowTaskType)
+  , _gmwtrsTaskARN :: !(Maybe Text)
+  , _gmwtrsMaxErrors :: !(Maybe Text)
+  , _gmwtrsTaskInvocationParameters :: !(Maybe MaintenanceWindowTaskInvocationParameters)
+  , _gmwtrsName :: !(Maybe Text)
+  , _gmwtrsTargets :: !(Maybe [Target])
+  , _gmwtrsLoggingInfo :: !(Maybe LoggingInfo)
+  , _gmwtrsDescription :: !(Maybe (Sensitive Text))
+  , _gmwtrsMaxConcurrency :: !(Maybe Text)
+  , _gmwtrsWindowId :: !(Maybe Text)
+  , _gmwtrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetMaintenanceWindowTaskResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gmwtrsServiceRoleARN' - The IAM service role to assume during task execution.
+--
+-- * 'gmwtrsWindowTaskId' - The retrieved Maintenance Window task ID.
+--
+-- * 'gmwtrsTaskParameters' - The parameters to pass to the task when it executes.
+--
+-- * 'gmwtrsPriority' - The priority of the task when it executes. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+--
+-- * 'gmwtrsTaskType' - The type of task to execute.
+--
+-- * 'gmwtrsTaskARN' - The resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the Systems Manager Document name/ARN. For LAMBDA tasks, the value is the function name/ARN. For STEP_FUNCTION tasks, the value is the state machine ARN.
+--
+-- * 'gmwtrsMaxErrors' - The maximum number of errors allowed before the task stops being scheduled.
+--
+-- * 'gmwtrsTaskInvocationParameters' - The parameters to pass to the task when it executes.
+--
+-- * 'gmwtrsName' - The retrieved task name.
+--
+-- * 'gmwtrsTargets' - The targets where the task should execute.
+--
+-- * 'gmwtrsLoggingInfo' - The location in Amazon S3 where the task results are logged.
+--
+-- * 'gmwtrsDescription' - The retrieved task description.
+--
+-- * 'gmwtrsMaxConcurrency' - The maximum number of targets allowed to run this task in parallel.
+--
+-- * 'gmwtrsWindowId' - The retrieved Maintenance Window ID.
+--
+-- * 'gmwtrsResponseStatus' - -- | The response status code.
+getMaintenanceWindowTaskResponse
+    :: Int -- ^ 'gmwtrsResponseStatus'
+    -> GetMaintenanceWindowTaskResponse
+getMaintenanceWindowTaskResponse pResponseStatus_ =
+  GetMaintenanceWindowTaskResponse'
+  { _gmwtrsServiceRoleARN = Nothing
+  , _gmwtrsWindowTaskId = Nothing
+  , _gmwtrsTaskParameters = Nothing
+  , _gmwtrsPriority = Nothing
+  , _gmwtrsTaskType = Nothing
+  , _gmwtrsTaskARN = Nothing
+  , _gmwtrsMaxErrors = Nothing
+  , _gmwtrsTaskInvocationParameters = Nothing
+  , _gmwtrsName = Nothing
+  , _gmwtrsTargets = Nothing
+  , _gmwtrsLoggingInfo = Nothing
+  , _gmwtrsDescription = Nothing
+  , _gmwtrsMaxConcurrency = Nothing
+  , _gmwtrsWindowId = Nothing
+  , _gmwtrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The IAM service role to assume during task execution.
+gmwtrsServiceRoleARN :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsServiceRoleARN = lens _gmwtrsServiceRoleARN (\ s a -> s{_gmwtrsServiceRoleARN = a});
+
+-- | The retrieved Maintenance Window task ID.
+gmwtrsWindowTaskId :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsWindowTaskId = lens _gmwtrsWindowTaskId (\ s a -> s{_gmwtrsWindowTaskId = a});
+
+-- | The parameters to pass to the task when it executes.
+gmwtrsTaskParameters :: Lens' GetMaintenanceWindowTaskResponse (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
+gmwtrsTaskParameters = lens _gmwtrsTaskParameters (\ s a -> s{_gmwtrsTaskParameters = a}) . mapping (_Sensitive . _Map);
+
+-- | The priority of the task when it executes. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+gmwtrsPriority :: Lens' GetMaintenanceWindowTaskResponse (Maybe Natural)
+gmwtrsPriority = lens _gmwtrsPriority (\ s a -> s{_gmwtrsPriority = a}) . mapping _Nat;
+
+-- | The type of task to execute.
+gmwtrsTaskType :: Lens' GetMaintenanceWindowTaskResponse (Maybe MaintenanceWindowTaskType)
+gmwtrsTaskType = lens _gmwtrsTaskType (\ s a -> s{_gmwtrsTaskType = a});
+
+-- | The resource that the task used during execution. For RUN_COMMAND and AUTOMATION task types, the TaskArn is the Systems Manager Document name/ARN. For LAMBDA tasks, the value is the function name/ARN. For STEP_FUNCTION tasks, the value is the state machine ARN.
+gmwtrsTaskARN :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsTaskARN = lens _gmwtrsTaskARN (\ s a -> s{_gmwtrsTaskARN = a});
+
+-- | The maximum number of errors allowed before the task stops being scheduled.
+gmwtrsMaxErrors :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsMaxErrors = lens _gmwtrsMaxErrors (\ s a -> s{_gmwtrsMaxErrors = a});
+
+-- | The parameters to pass to the task when it executes.
+gmwtrsTaskInvocationParameters :: Lens' GetMaintenanceWindowTaskResponse (Maybe MaintenanceWindowTaskInvocationParameters)
+gmwtrsTaskInvocationParameters = lens _gmwtrsTaskInvocationParameters (\ s a -> s{_gmwtrsTaskInvocationParameters = a});
+
+-- | The retrieved task name.
+gmwtrsName :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsName = lens _gmwtrsName (\ s a -> s{_gmwtrsName = a});
+
+-- | The targets where the task should execute.
+gmwtrsTargets :: Lens' GetMaintenanceWindowTaskResponse [Target]
+gmwtrsTargets = lens _gmwtrsTargets (\ s a -> s{_gmwtrsTargets = a}) . _Default . _Coerce;
+
+-- | The location in Amazon S3 where the task results are logged.
+gmwtrsLoggingInfo :: Lens' GetMaintenanceWindowTaskResponse (Maybe LoggingInfo)
+gmwtrsLoggingInfo = lens _gmwtrsLoggingInfo (\ s a -> s{_gmwtrsLoggingInfo = a});
+
+-- | The retrieved task description.
+gmwtrsDescription :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsDescription = lens _gmwtrsDescription (\ s a -> s{_gmwtrsDescription = a}) . mapping _Sensitive;
+
+-- | The maximum number of targets allowed to run this task in parallel.
+gmwtrsMaxConcurrency :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsMaxConcurrency = lens _gmwtrsMaxConcurrency (\ s a -> s{_gmwtrsMaxConcurrency = a});
+
+-- | The retrieved Maintenance Window ID.
+gmwtrsWindowId :: Lens' GetMaintenanceWindowTaskResponse (Maybe Text)
+gmwtrsWindowId = lens _gmwtrsWindowId (\ s a -> s{_gmwtrsWindowId = a});
+
+-- | -- | The response status code.
+gmwtrsResponseStatus :: Lens' GetMaintenanceWindowTaskResponse Int
+gmwtrsResponseStatus = lens _gmwtrsResponseStatus (\ s a -> s{_gmwtrsResponseStatus = a});
+
+instance NFData GetMaintenanceWindowTaskResponse
+         where
diff --git a/gen/Network/AWS/SSM/GetParameter.hs b/gen/Network/AWS/SSM/GetParameter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetParameter.hs
@@ -0,0 +1,142 @@
+{-# 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.SSM.GetParameter
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get information about a parameter by using the parameter name.
+--
+--
+module Network.AWS.SSM.GetParameter
+    (
+    -- * Creating a Request
+      getParameter
+    , GetParameter
+    -- * Request Lenses
+    , gWithDecryption
+    , gName
+
+    -- * Destructuring the Response
+    , getParameterResponse
+    , GetParameterResponse
+    -- * Response Lenses
+    , gprsParameter
+    , gprsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getParameter' smart constructor.
+data GetParameter = GetParameter'
+  { _gWithDecryption :: !(Maybe Bool)
+  , _gName           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetParameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gWithDecryption' - Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.
+--
+-- * 'gName' - The name of the parameter you want to query.
+getParameter
+    :: Text -- ^ 'gName'
+    -> GetParameter
+getParameter pName_ =
+  GetParameter' {_gWithDecryption = Nothing, _gName = pName_}
+
+
+-- | Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.
+gWithDecryption :: Lens' GetParameter (Maybe Bool)
+gWithDecryption = lens _gWithDecryption (\ s a -> s{_gWithDecryption = a});
+
+-- | The name of the parameter you want to query.
+gName :: Lens' GetParameter Text
+gName = lens _gName (\ s a -> s{_gName = a});
+
+instance AWSRequest GetParameter where
+        type Rs GetParameter = GetParameterResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetParameterResponse' <$>
+                   (x .?> "Parameter") <*> (pure (fromEnum s)))
+
+instance Hashable GetParameter where
+
+instance NFData GetParameter where
+
+instance ToHeaders GetParameter where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetParameter" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetParameter where
+        toJSON GetParameter'{..}
+          = object
+              (catMaybes
+                 [("WithDecryption" .=) <$> _gWithDecryption,
+                  Just ("Name" .= _gName)])
+
+instance ToPath GetParameter where
+        toPath = const "/"
+
+instance ToQuery GetParameter where
+        toQuery = const mempty
+
+-- | /See:/ 'getParameterResponse' smart constructor.
+data GetParameterResponse = GetParameterResponse'
+  { _gprsParameter      :: !(Maybe Parameter)
+  , _gprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetParameterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gprsParameter' - Information about a parameter.
+--
+-- * 'gprsResponseStatus' - -- | The response status code.
+getParameterResponse
+    :: Int -- ^ 'gprsResponseStatus'
+    -> GetParameterResponse
+getParameterResponse pResponseStatus_ =
+  GetParameterResponse'
+  {_gprsParameter = Nothing, _gprsResponseStatus = pResponseStatus_}
+
+
+-- | Information about a parameter.
+gprsParameter :: Lens' GetParameterResponse (Maybe Parameter)
+gprsParameter = lens _gprsParameter (\ s a -> s{_gprsParameter = a});
+
+-- | -- | The response status code.
+gprsResponseStatus :: Lens' GetParameterResponse Int
+gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
+
+instance NFData GetParameterResponse where
diff --git a/gen/Network/AWS/SSM/GetParameterHistory.hs b/gen/Network/AWS/SSM/GetParameterHistory.hs
--- a/gen/Network/AWS/SSM/GetParameterHistory.hs
+++ b/gen/Network/AWS/SSM/GetParameterHistory.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetParameterHistory
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -41,21 +41,22 @@
     , gphrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getParameterHistory' smart constructor.
 data GetParameterHistory = GetParameterHistory'
-    { _gphWithDecryption :: !(Maybe Bool)
-    , _gphNextToken      :: !(Maybe Text)
-    , _gphMaxResults     :: !(Maybe Nat)
-    , _gphName           :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gphWithDecryption :: !(Maybe Bool)
+  , _gphNextToken      :: !(Maybe Text)
+  , _gphMaxResults     :: !(Maybe Nat)
+  , _gphName           :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetParameterHistory' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,13 +72,14 @@
     :: Text -- ^ 'gphName'
     -> GetParameterHistory
 getParameterHistory pName_ =
-    GetParameterHistory'
-    { _gphWithDecryption = Nothing
-    , _gphNextToken = Nothing
-    , _gphMaxResults = Nothing
-    , _gphName = pName_
-    }
+  GetParameterHistory'
+  { _gphWithDecryption = Nothing
+  , _gphNextToken = Nothing
+  , _gphMaxResults = Nothing
+  , _gphName = pName_
+  }
 
+
 -- | Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.
 gphWithDecryption :: Lens' GetParameterHistory (Maybe Bool)
 gphWithDecryption = lens _gphWithDecryption (\ s a -> s{_gphWithDecryption = a});
@@ -106,9 +108,9 @@
                      (x .?> "Parameters" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetParameterHistory
+instance Hashable GetParameterHistory where
 
-instance NFData GetParameterHistory
+instance NFData GetParameterHistory where
 
 instance ToHeaders GetParameterHistory where
         toHeaders
@@ -136,11 +138,12 @@
 
 -- | /See:/ 'getParameterHistoryResponse' smart constructor.
 data GetParameterHistoryResponse = GetParameterHistoryResponse'
-    { _gphrsNextToken      :: !(Maybe Text)
-    , _gphrsParameters     :: !(Maybe [ParameterHistory])
-    , _gphrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gphrsNextToken      :: !(Maybe Text)
+  , _gphrsParameters     :: !(Maybe [ParameterHistory])
+  , _gphrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetParameterHistoryResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -154,12 +157,13 @@
     :: Int -- ^ 'gphrsResponseStatus'
     -> GetParameterHistoryResponse
 getParameterHistoryResponse pResponseStatus_ =
-    GetParameterHistoryResponse'
-    { _gphrsNextToken = Nothing
-    , _gphrsParameters = Nothing
-    , _gphrsResponseStatus = pResponseStatus_
-    }
+  GetParameterHistoryResponse'
+  { _gphrsNextToken = Nothing
+  , _gphrsParameters = Nothing
+  , _gphrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 gphrsNextToken :: Lens' GetParameterHistoryResponse (Maybe Text)
 gphrsNextToken = lens _gphrsNextToken (\ s a -> s{_gphrsNextToken = a});
@@ -172,4 +176,4 @@
 gphrsResponseStatus :: Lens' GetParameterHistoryResponse Int
 gphrsResponseStatus = lens _gphrsResponseStatus (\ s a -> s{_gphrsResponseStatus = a});
 
-instance NFData GetParameterHistoryResponse
+instance NFData GetParameterHistoryResponse where
diff --git a/gen/Network/AWS/SSM/GetParameters.hs b/gen/Network/AWS/SSM/GetParameters.hs
--- a/gen/Network/AWS/SSM/GetParameters.hs
+++ b/gen/Network/AWS/SSM/GetParameters.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.GetParameters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Get a list of parameters used by the AWS account.>
+-- Get details of a parameter.
 --
 --
 module Network.AWS.SSM.GetParameters
@@ -34,24 +34,25 @@
     , getParametersResponse
     , GetParametersResponse
     -- * Response Lenses
-    , gprsParameters
-    , gprsInvalidParameters
-    , gprsResponseStatus
+    , grsParameters
+    , grsInvalidParameters
+    , grsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'getParameters' smart constructor.
 data GetParameters = GetParameters'
-    { _gpWithDecryption :: !(Maybe Bool)
-    , _gpNames          :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _gpWithDecryption :: !(Maybe Bool)
+  , _gpNames          :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetParameters' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,9 @@
     :: NonEmpty Text -- ^ 'gpNames'
     -> GetParameters
 getParameters pNames_ =
-    GetParameters'
-    { _gpWithDecryption = Nothing
-    , _gpNames = _List1 # pNames_
-    }
+  GetParameters' {_gpWithDecryption = Nothing, _gpNames = _List1 # pNames_}
 
+
 -- | Return decrypted secure string value. Return decrypted values for secure string parameters. This flag is ignored for String and StringList parameter types.
 gpWithDecryption :: Lens' GetParameters (Maybe Bool)
 gpWithDecryption = lens _gpWithDecryption (\ s a -> s{_gpWithDecryption = a});
@@ -84,12 +83,12 @@
               (\ s h x ->
                  GetParametersResponse' <$>
                    (x .?> "Parameters" .!@ mempty) <*>
-                     (x .?> "InvalidParameters")
+                     (x .?> "InvalidParameters" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable GetParameters
+instance Hashable GetParameters where
 
-instance NFData GetParameters
+instance NFData GetParameters where
 
 instance ToHeaders GetParameters where
         toHeaders
@@ -115,40 +114,42 @@
 
 -- | /See:/ 'getParametersResponse' smart constructor.
 data GetParametersResponse = GetParametersResponse'
-    { _gprsParameters        :: !(Maybe [Parameter])
-    , _gprsInvalidParameters :: !(Maybe (List1 Text))
-    , _gprsResponseStatus    :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _grsParameters        :: !(Maybe [Parameter])
+  , _grsInvalidParameters :: !(Maybe [Text])
+  , _grsResponseStatus    :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'GetParametersResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gprsParameters' - A list of parameters used by the AWS account.
+-- * 'grsParameters' - A list of details for a parameter.
 --
--- * 'gprsInvalidParameters' - A list of parameters that are not formatted correctly or do not run when executed.
+-- * 'grsInvalidParameters' - A list of parameters that are not formatted correctly or do not run when executed.
 --
--- * 'gprsResponseStatus' - -- | The response status code.
+-- * 'grsResponseStatus' - -- | The response status code.
 getParametersResponse
-    :: Int -- ^ 'gprsResponseStatus'
+    :: Int -- ^ 'grsResponseStatus'
     -> GetParametersResponse
 getParametersResponse pResponseStatus_ =
-    GetParametersResponse'
-    { _gprsParameters = Nothing
-    , _gprsInvalidParameters = Nothing
-    , _gprsResponseStatus = pResponseStatus_
-    }
+  GetParametersResponse'
+  { _grsParameters = Nothing
+  , _grsInvalidParameters = Nothing
+  , _grsResponseStatus = pResponseStatus_
+  }
 
--- | A list of parameters used by the AWS account.
-gprsParameters :: Lens' GetParametersResponse [Parameter]
-gprsParameters = lens _gprsParameters (\ s a -> s{_gprsParameters = a}) . _Default . _Coerce;
 
+-- | A list of details for a parameter.
+grsParameters :: Lens' GetParametersResponse [Parameter]
+grsParameters = lens _grsParameters (\ s a -> s{_grsParameters = a}) . _Default . _Coerce;
+
 -- | A list of parameters that are not formatted correctly or do not run when executed.
-gprsInvalidParameters :: Lens' GetParametersResponse (Maybe (NonEmpty Text))
-gprsInvalidParameters = lens _gprsInvalidParameters (\ s a -> s{_gprsInvalidParameters = a}) . mapping _List1;
+grsInvalidParameters :: Lens' GetParametersResponse [Text]
+grsInvalidParameters = lens _grsInvalidParameters (\ s a -> s{_grsInvalidParameters = a}) . _Default . _Coerce;
 
 -- | -- | The response status code.
-gprsResponseStatus :: Lens' GetParametersResponse Int
-gprsResponseStatus = lens _gprsResponseStatus (\ s a -> s{_gprsResponseStatus = a});
+grsResponseStatus :: Lens' GetParametersResponse Int
+grsResponseStatus = lens _grsResponseStatus (\ s a -> s{_grsResponseStatus = a});
 
-instance NFData GetParametersResponse
+instance NFData GetParametersResponse where
diff --git a/gen/Network/AWS/SSM/GetParametersByPath.hs b/gen/Network/AWS/SSM/GetParametersByPath.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetParametersByPath.hs
@@ -0,0 +1,201 @@
+{-# 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.SSM.GetParametersByPath
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieve parameters in a specific hierarchy. For more information, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-working.html Working with Systems Manager Parameters> .
+--
+--
+-- Request results are returned on a best-effort basis. If you specify @MaxResults@ in the request, the response includes information up to the limit specified. The number of items returned, however, can be between zero and the value of @MaxResults@ . If the service reaches an internal limit while processing the results, it stops the operation and returns the matching values up to that point and a @NextToken@ . You can specify the @NextToken@ in a subsequent call to get the next set of results.
+--
+module Network.AWS.SSM.GetParametersByPath
+    (
+    -- * Creating a Request
+      getParametersByPath
+    , GetParametersByPath
+    -- * Request Lenses
+    , gpbpWithDecryption
+    , gpbpParameterFilters
+    , gpbpNextToken
+    , gpbpRecursive
+    , gpbpMaxResults
+    , gpbpPath
+
+    -- * Destructuring the Response
+    , getParametersByPathResponse
+    , GetParametersByPathResponse
+    -- * Response Lenses
+    , gpbprsNextToken
+    , gpbprsParameters
+    , gpbprsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getParametersByPath' smart constructor.
+data GetParametersByPath = GetParametersByPath'
+  { _gpbpWithDecryption   :: !(Maybe Bool)
+  , _gpbpParameterFilters :: !(Maybe [ParameterStringFilter])
+  , _gpbpNextToken        :: !(Maybe Text)
+  , _gpbpRecursive        :: !(Maybe Bool)
+  , _gpbpMaxResults       :: !(Maybe Nat)
+  , _gpbpPath             :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetParametersByPath' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbpWithDecryption' - Retrieve all parameters in a hierarchy with their value decrypted.
+--
+-- * 'gpbpParameterFilters' - Filters to limit the request results.
+--
+-- * 'gpbpNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'gpbpRecursive' - Retrieve all parameters within a hierarchy.
+--
+-- * 'gpbpMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+--
+-- * 'gpbpPath' - The hierarchy for the parameter. Hierarchies start with a forward slash (/) and end with the parameter name. A hierarchy can have a maximum of five levels. Examples: /Environment/Test/DBString003 /Finance/Prod/IAD/OS/WinServ2016/license15
+getParametersByPath
+    :: Text -- ^ 'gpbpPath'
+    -> GetParametersByPath
+getParametersByPath pPath_ =
+  GetParametersByPath'
+  { _gpbpWithDecryption = Nothing
+  , _gpbpParameterFilters = Nothing
+  , _gpbpNextToken = Nothing
+  , _gpbpRecursive = Nothing
+  , _gpbpMaxResults = Nothing
+  , _gpbpPath = pPath_
+  }
+
+
+-- | Retrieve all parameters in a hierarchy with their value decrypted.
+gpbpWithDecryption :: Lens' GetParametersByPath (Maybe Bool)
+gpbpWithDecryption = lens _gpbpWithDecryption (\ s a -> s{_gpbpWithDecryption = a});
+
+-- | Filters to limit the request results.
+gpbpParameterFilters :: Lens' GetParametersByPath [ParameterStringFilter]
+gpbpParameterFilters = lens _gpbpParameterFilters (\ s a -> s{_gpbpParameterFilters = a}) . _Default . _Coerce;
+
+-- | A token to start the list. Use this token to get the next set of results.
+gpbpNextToken :: Lens' GetParametersByPath (Maybe Text)
+gpbpNextToken = lens _gpbpNextToken (\ s a -> s{_gpbpNextToken = a});
+
+-- | Retrieve all parameters within a hierarchy.
+gpbpRecursive :: Lens' GetParametersByPath (Maybe Bool)
+gpbpRecursive = lens _gpbpRecursive (\ s a -> s{_gpbpRecursive = a});
+
+-- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+gpbpMaxResults :: Lens' GetParametersByPath (Maybe Natural)
+gpbpMaxResults = lens _gpbpMaxResults (\ s a -> s{_gpbpMaxResults = a}) . mapping _Nat;
+
+-- | The hierarchy for the parameter. Hierarchies start with a forward slash (/) and end with the parameter name. A hierarchy can have a maximum of five levels. Examples: /Environment/Test/DBString003 /Finance/Prod/IAD/OS/WinServ2016/license15
+gpbpPath :: Lens' GetParametersByPath Text
+gpbpPath = lens _gpbpPath (\ s a -> s{_gpbpPath = a});
+
+instance AWSRequest GetParametersByPath where
+        type Rs GetParametersByPath =
+             GetParametersByPathResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetParametersByPathResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "Parameters" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetParametersByPath where
+
+instance NFData GetParametersByPath where
+
+instance ToHeaders GetParametersByPath where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetParametersByPath" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetParametersByPath where
+        toJSON GetParametersByPath'{..}
+          = object
+              (catMaybes
+                 [("WithDecryption" .=) <$> _gpbpWithDecryption,
+                  ("ParameterFilters" .=) <$> _gpbpParameterFilters,
+                  ("NextToken" .=) <$> _gpbpNextToken,
+                  ("Recursive" .=) <$> _gpbpRecursive,
+                  ("MaxResults" .=) <$> _gpbpMaxResults,
+                  Just ("Path" .= _gpbpPath)])
+
+instance ToPath GetParametersByPath where
+        toPath = const "/"
+
+instance ToQuery GetParametersByPath where
+        toQuery = const mempty
+
+-- | /See:/ 'getParametersByPathResponse' smart constructor.
+data GetParametersByPathResponse = GetParametersByPathResponse'
+  { _gpbprsNextToken      :: !(Maybe Text)
+  , _gpbprsParameters     :: !(Maybe [Parameter])
+  , _gpbprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetParametersByPathResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbprsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'gpbprsParameters' - A list of parameters found in the specified hierarchy.
+--
+-- * 'gpbprsResponseStatus' - -- | The response status code.
+getParametersByPathResponse
+    :: Int -- ^ 'gpbprsResponseStatus'
+    -> GetParametersByPathResponse
+getParametersByPathResponse pResponseStatus_ =
+  GetParametersByPathResponse'
+  { _gpbprsNextToken = Nothing
+  , _gpbprsParameters = Nothing
+  , _gpbprsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+gpbprsNextToken :: Lens' GetParametersByPathResponse (Maybe Text)
+gpbprsNextToken = lens _gpbprsNextToken (\ s a -> s{_gpbprsNextToken = a});
+
+-- | A list of parameters found in the specified hierarchy.
+gpbprsParameters :: Lens' GetParametersByPathResponse [Parameter]
+gpbprsParameters = lens _gpbprsParameters (\ s a -> s{_gpbprsParameters = a}) . _Default . _Coerce;
+
+-- | -- | The response status code.
+gpbprsResponseStatus :: Lens' GetParametersByPathResponse Int
+gpbprsResponseStatus = lens _gpbprsResponseStatus (\ s a -> s{_gpbprsResponseStatus = a});
+
+instance NFData GetParametersByPathResponse where
diff --git a/gen/Network/AWS/SSM/GetPatchBaseline.hs b/gen/Network/AWS/SSM/GetPatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetPatchBaseline.hs
@@ -0,0 +1,244 @@
+{-# 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.SSM.GetPatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves information about a patch baseline.
+--
+--
+module Network.AWS.SSM.GetPatchBaseline
+    (
+    -- * Creating a Request
+      getPatchBaseline
+    , GetPatchBaseline
+    -- * Request Lenses
+    , gpbBaselineId
+
+    -- * Destructuring the Response
+    , getPatchBaselineResponse
+    , GetPatchBaselineResponse
+    -- * Response Lenses
+    , gpbrsApprovalRules
+    , gpbrsOperatingSystem
+    , gpbrsGlobalFilters
+    , gpbrsApprovedPatchesComplianceLevel
+    , gpbrsApprovedPatches
+    , gpbrsRejectedPatches
+    , gpbrsCreatedDate
+    , gpbrsName
+    , gpbrsPatchGroups
+    , gpbrsModifiedDate
+    , gpbrsDescription
+    , gpbrsBaselineId
+    , gpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getPatchBaseline' smart constructor.
+newtype GetPatchBaseline = GetPatchBaseline'
+  { _gpbBaselineId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetPatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbBaselineId' - The ID of the patch baseline to retrieve.
+getPatchBaseline
+    :: Text -- ^ 'gpbBaselineId'
+    -> GetPatchBaseline
+getPatchBaseline pBaselineId_ =
+  GetPatchBaseline' {_gpbBaselineId = pBaselineId_}
+
+
+-- | The ID of the patch baseline to retrieve.
+gpbBaselineId :: Lens' GetPatchBaseline Text
+gpbBaselineId = lens _gpbBaselineId (\ s a -> s{_gpbBaselineId = a});
+
+instance AWSRequest GetPatchBaseline where
+        type Rs GetPatchBaseline = GetPatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetPatchBaselineResponse' <$>
+                   (x .?> "ApprovalRules") <*> (x .?> "OperatingSystem")
+                     <*> (x .?> "GlobalFilters")
+                     <*> (x .?> "ApprovedPatchesComplianceLevel")
+                     <*> (x .?> "ApprovedPatches" .!@ mempty)
+                     <*> (x .?> "RejectedPatches" .!@ mempty)
+                     <*> (x .?> "CreatedDate")
+                     <*> (x .?> "Name")
+                     <*> (x .?> "PatchGroups" .!@ mempty)
+                     <*> (x .?> "ModifiedDate")
+                     <*> (x .?> "Description")
+                     <*> (x .?> "BaselineId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetPatchBaseline where
+
+instance NFData GetPatchBaseline where
+
+instance ToHeaders GetPatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetPatchBaseline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetPatchBaseline where
+        toJSON GetPatchBaseline'{..}
+          = object
+              (catMaybes [Just ("BaselineId" .= _gpbBaselineId)])
+
+instance ToPath GetPatchBaseline where
+        toPath = const "/"
+
+instance ToQuery GetPatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'getPatchBaselineResponse' smart constructor.
+data GetPatchBaselineResponse = GetPatchBaselineResponse'
+  { _gpbrsApprovalRules                  :: !(Maybe PatchRuleGroup)
+  , _gpbrsOperatingSystem                :: !(Maybe OperatingSystem)
+  , _gpbrsGlobalFilters                  :: !(Maybe PatchFilterGroup)
+  , _gpbrsApprovedPatchesComplianceLevel :: !(Maybe PatchComplianceLevel)
+  , _gpbrsApprovedPatches                :: !(Maybe [Text])
+  , _gpbrsRejectedPatches                :: !(Maybe [Text])
+  , _gpbrsCreatedDate                    :: !(Maybe POSIX)
+  , _gpbrsName                           :: !(Maybe Text)
+  , _gpbrsPatchGroups                    :: !(Maybe [Text])
+  , _gpbrsModifiedDate                   :: !(Maybe POSIX)
+  , _gpbrsDescription                    :: !(Maybe Text)
+  , _gpbrsBaselineId                     :: !(Maybe Text)
+  , _gpbrsResponseStatus                 :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetPatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbrsApprovalRules' - A set of rules used to include patches in the baseline.
+--
+-- * 'gpbrsOperatingSystem' - Returns the operating system specified for the patch baseline.
+--
+-- * 'gpbrsGlobalFilters' - A set of global filters used to exclude patches from the baseline.
+--
+-- * 'gpbrsApprovedPatchesComplianceLevel' - Returns the specified compliance severity level for approved patches in the patch baseline.
+--
+-- * 'gpbrsApprovedPatches' - A list of explicitly approved patches for the baseline.
+--
+-- * 'gpbrsRejectedPatches' - A list of explicitly rejected patches for the baseline.
+--
+-- * 'gpbrsCreatedDate' - The date the patch baseline was created.
+--
+-- * 'gpbrsName' - The name of the patch baseline.
+--
+-- * 'gpbrsPatchGroups' - Patch groups included in the patch baseline.
+--
+-- * 'gpbrsModifiedDate' - The date the patch baseline was last modified.
+--
+-- * 'gpbrsDescription' - A description of the patch baseline.
+--
+-- * 'gpbrsBaselineId' - The ID of the retrieved patch baseline.
+--
+-- * 'gpbrsResponseStatus' - -- | The response status code.
+getPatchBaselineResponse
+    :: Int -- ^ 'gpbrsResponseStatus'
+    -> GetPatchBaselineResponse
+getPatchBaselineResponse pResponseStatus_ =
+  GetPatchBaselineResponse'
+  { _gpbrsApprovalRules = Nothing
+  , _gpbrsOperatingSystem = Nothing
+  , _gpbrsGlobalFilters = Nothing
+  , _gpbrsApprovedPatchesComplianceLevel = Nothing
+  , _gpbrsApprovedPatches = Nothing
+  , _gpbrsRejectedPatches = Nothing
+  , _gpbrsCreatedDate = Nothing
+  , _gpbrsName = Nothing
+  , _gpbrsPatchGroups = Nothing
+  , _gpbrsModifiedDate = Nothing
+  , _gpbrsDescription = Nothing
+  , _gpbrsBaselineId = Nothing
+  , _gpbrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | A set of rules used to include patches in the baseline.
+gpbrsApprovalRules :: Lens' GetPatchBaselineResponse (Maybe PatchRuleGroup)
+gpbrsApprovalRules = lens _gpbrsApprovalRules (\ s a -> s{_gpbrsApprovalRules = a});
+
+-- | Returns the operating system specified for the patch baseline.
+gpbrsOperatingSystem :: Lens' GetPatchBaselineResponse (Maybe OperatingSystem)
+gpbrsOperatingSystem = lens _gpbrsOperatingSystem (\ s a -> s{_gpbrsOperatingSystem = a});
+
+-- | A set of global filters used to exclude patches from the baseline.
+gpbrsGlobalFilters :: Lens' GetPatchBaselineResponse (Maybe PatchFilterGroup)
+gpbrsGlobalFilters = lens _gpbrsGlobalFilters (\ s a -> s{_gpbrsGlobalFilters = a});
+
+-- | Returns the specified compliance severity level for approved patches in the patch baseline.
+gpbrsApprovedPatchesComplianceLevel :: Lens' GetPatchBaselineResponse (Maybe PatchComplianceLevel)
+gpbrsApprovedPatchesComplianceLevel = lens _gpbrsApprovedPatchesComplianceLevel (\ s a -> s{_gpbrsApprovedPatchesComplianceLevel = a});
+
+-- | A list of explicitly approved patches for the baseline.
+gpbrsApprovedPatches :: Lens' GetPatchBaselineResponse [Text]
+gpbrsApprovedPatches = lens _gpbrsApprovedPatches (\ s a -> s{_gpbrsApprovedPatches = a}) . _Default . _Coerce;
+
+-- | A list of explicitly rejected patches for the baseline.
+gpbrsRejectedPatches :: Lens' GetPatchBaselineResponse [Text]
+gpbrsRejectedPatches = lens _gpbrsRejectedPatches (\ s a -> s{_gpbrsRejectedPatches = a}) . _Default . _Coerce;
+
+-- | The date the patch baseline was created.
+gpbrsCreatedDate :: Lens' GetPatchBaselineResponse (Maybe UTCTime)
+gpbrsCreatedDate = lens _gpbrsCreatedDate (\ s a -> s{_gpbrsCreatedDate = a}) . mapping _Time;
+
+-- | The name of the patch baseline.
+gpbrsName :: Lens' GetPatchBaselineResponse (Maybe Text)
+gpbrsName = lens _gpbrsName (\ s a -> s{_gpbrsName = a});
+
+-- | Patch groups included in the patch baseline.
+gpbrsPatchGroups :: Lens' GetPatchBaselineResponse [Text]
+gpbrsPatchGroups = lens _gpbrsPatchGroups (\ s a -> s{_gpbrsPatchGroups = a}) . _Default . _Coerce;
+
+-- | The date the patch baseline was last modified.
+gpbrsModifiedDate :: Lens' GetPatchBaselineResponse (Maybe UTCTime)
+gpbrsModifiedDate = lens _gpbrsModifiedDate (\ s a -> s{_gpbrsModifiedDate = a}) . mapping _Time;
+
+-- | A description of the patch baseline.
+gpbrsDescription :: Lens' GetPatchBaselineResponse (Maybe Text)
+gpbrsDescription = lens _gpbrsDescription (\ s a -> s{_gpbrsDescription = a});
+
+-- | The ID of the retrieved patch baseline.
+gpbrsBaselineId :: Lens' GetPatchBaselineResponse (Maybe Text)
+gpbrsBaselineId = lens _gpbrsBaselineId (\ s a -> s{_gpbrsBaselineId = a});
+
+-- | -- | The response status code.
+gpbrsResponseStatus :: Lens' GetPatchBaselineResponse Int
+gpbrsResponseStatus = lens _gpbrsResponseStatus (\ s a -> s{_gpbrsResponseStatus = a});
+
+instance NFData GetPatchBaselineResponse where
diff --git a/gen/Network/AWS/SSM/GetPatchBaselineForPatchGroup.hs b/gen/Network/AWS/SSM/GetPatchBaselineForPatchGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/GetPatchBaselineForPatchGroup.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SSM.GetPatchBaselineForPatchGroup
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the patch baseline that should be used for the specified patch group.
+--
+--
+module Network.AWS.SSM.GetPatchBaselineForPatchGroup
+    (
+    -- * Creating a Request
+      getPatchBaselineForPatchGroup
+    , GetPatchBaselineForPatchGroup
+    -- * Request Lenses
+    , gpbfpgOperatingSystem
+    , gpbfpgPatchGroup
+
+    -- * Destructuring the Response
+    , getPatchBaselineForPatchGroupResponse
+    , GetPatchBaselineForPatchGroupResponse
+    -- * Response Lenses
+    , gpbfpgrsOperatingSystem
+    , gpbfpgrsBaselineId
+    , gpbfpgrsPatchGroup
+    , gpbfpgrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'getPatchBaselineForPatchGroup' smart constructor.
+data GetPatchBaselineForPatchGroup = GetPatchBaselineForPatchGroup'
+  { _gpbfpgOperatingSystem :: !(Maybe OperatingSystem)
+  , _gpbfpgPatchGroup      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetPatchBaselineForPatchGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbfpgOperatingSystem' - Returns he operating system rule specified for patch groups using the patch baseline.
+--
+-- * 'gpbfpgPatchGroup' - The name of the patch group whose patch baseline should be retrieved.
+getPatchBaselineForPatchGroup
+    :: Text -- ^ 'gpbfpgPatchGroup'
+    -> GetPatchBaselineForPatchGroup
+getPatchBaselineForPatchGroup pPatchGroup_ =
+  GetPatchBaselineForPatchGroup'
+  {_gpbfpgOperatingSystem = Nothing, _gpbfpgPatchGroup = pPatchGroup_}
+
+
+-- | Returns he operating system rule specified for patch groups using the patch baseline.
+gpbfpgOperatingSystem :: Lens' GetPatchBaselineForPatchGroup (Maybe OperatingSystem)
+gpbfpgOperatingSystem = lens _gpbfpgOperatingSystem (\ s a -> s{_gpbfpgOperatingSystem = a});
+
+-- | The name of the patch group whose patch baseline should be retrieved.
+gpbfpgPatchGroup :: Lens' GetPatchBaselineForPatchGroup Text
+gpbfpgPatchGroup = lens _gpbfpgPatchGroup (\ s a -> s{_gpbfpgPatchGroup = a});
+
+instance AWSRequest GetPatchBaselineForPatchGroup
+         where
+        type Rs GetPatchBaselineForPatchGroup =
+             GetPatchBaselineForPatchGroupResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetPatchBaselineForPatchGroupResponse' <$>
+                   (x .?> "OperatingSystem") <*> (x .?> "BaselineId")
+                     <*> (x .?> "PatchGroup")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable GetPatchBaselineForPatchGroup where
+
+instance NFData GetPatchBaselineForPatchGroup where
+
+instance ToHeaders GetPatchBaselineForPatchGroup
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.GetPatchBaselineForPatchGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON GetPatchBaselineForPatchGroup where
+        toJSON GetPatchBaselineForPatchGroup'{..}
+          = object
+              (catMaybes
+                 [("OperatingSystem" .=) <$> _gpbfpgOperatingSystem,
+                  Just ("PatchGroup" .= _gpbfpgPatchGroup)])
+
+instance ToPath GetPatchBaselineForPatchGroup where
+        toPath = const "/"
+
+instance ToQuery GetPatchBaselineForPatchGroup where
+        toQuery = const mempty
+
+-- | /See:/ 'getPatchBaselineForPatchGroupResponse' smart constructor.
+data GetPatchBaselineForPatchGroupResponse = GetPatchBaselineForPatchGroupResponse'
+  { _gpbfpgrsOperatingSystem :: !(Maybe OperatingSystem)
+  , _gpbfpgrsBaselineId      :: !(Maybe Text)
+  , _gpbfpgrsPatchGroup      :: !(Maybe Text)
+  , _gpbfpgrsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GetPatchBaselineForPatchGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'gpbfpgrsOperatingSystem' - The operating system rule specified for patch groups using the patch baseline.
+--
+-- * 'gpbfpgrsBaselineId' - The ID of the patch baseline that should be used for the patch group.
+--
+-- * 'gpbfpgrsPatchGroup' - The name of the patch group.
+--
+-- * 'gpbfpgrsResponseStatus' - -- | The response status code.
+getPatchBaselineForPatchGroupResponse
+    :: Int -- ^ 'gpbfpgrsResponseStatus'
+    -> GetPatchBaselineForPatchGroupResponse
+getPatchBaselineForPatchGroupResponse pResponseStatus_ =
+  GetPatchBaselineForPatchGroupResponse'
+  { _gpbfpgrsOperatingSystem = Nothing
+  , _gpbfpgrsBaselineId = Nothing
+  , _gpbfpgrsPatchGroup = Nothing
+  , _gpbfpgrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The operating system rule specified for patch groups using the patch baseline.
+gpbfpgrsOperatingSystem :: Lens' GetPatchBaselineForPatchGroupResponse (Maybe OperatingSystem)
+gpbfpgrsOperatingSystem = lens _gpbfpgrsOperatingSystem (\ s a -> s{_gpbfpgrsOperatingSystem = a});
+
+-- | The ID of the patch baseline that should be used for the patch group.
+gpbfpgrsBaselineId :: Lens' GetPatchBaselineForPatchGroupResponse (Maybe Text)
+gpbfpgrsBaselineId = lens _gpbfpgrsBaselineId (\ s a -> s{_gpbfpgrsBaselineId = a});
+
+-- | The name of the patch group.
+gpbfpgrsPatchGroup :: Lens' GetPatchBaselineForPatchGroupResponse (Maybe Text)
+gpbfpgrsPatchGroup = lens _gpbfpgrsPatchGroup (\ s a -> s{_gpbfpgrsPatchGroup = a});
+
+-- | -- | The response status code.
+gpbfpgrsResponseStatus :: Lens' GetPatchBaselineForPatchGroupResponse Int
+gpbfpgrsResponseStatus = lens _gpbfpgrsResponseStatus (\ s a -> s{_gpbfpgrsResponseStatus = a});
+
+instance NFData GetPatchBaselineForPatchGroupResponse
+         where
diff --git a/gen/Network/AWS/SSM/ListAssociationVersions.hs b/gen/Network/AWS/SSM/ListAssociationVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/ListAssociationVersions.hs
@@ -0,0 +1,168 @@
+{-# 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.SSM.ListAssociationVersions
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves all versions of an association for a specific association ID.
+--
+--
+module Network.AWS.SSM.ListAssociationVersions
+    (
+    -- * Creating a Request
+      listAssociationVersions
+    , ListAssociationVersions
+    -- * Request Lenses
+    , lavNextToken
+    , lavMaxResults
+    , lavAssociationId
+
+    -- * Destructuring the Response
+    , listAssociationVersionsResponse
+    , ListAssociationVersionsResponse
+    -- * Response Lenses
+    , lavrsNextToken
+    , lavrsAssociationVersions
+    , lavrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'listAssociationVersions' smart constructor.
+data ListAssociationVersions = ListAssociationVersions'
+  { _lavNextToken     :: !(Maybe Text)
+  , _lavMaxResults    :: !(Maybe Nat)
+  , _lavAssociationId :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListAssociationVersions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lavNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'lavMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+--
+-- * 'lavAssociationId' - The association ID for which you want to view all versions.
+listAssociationVersions
+    :: Text -- ^ 'lavAssociationId'
+    -> ListAssociationVersions
+listAssociationVersions pAssociationId_ =
+  ListAssociationVersions'
+  { _lavNextToken = Nothing
+  , _lavMaxResults = Nothing
+  , _lavAssociationId = pAssociationId_
+  }
+
+
+-- | A token to start the list. Use this token to get the next set of results.
+lavNextToken :: Lens' ListAssociationVersions (Maybe Text)
+lavNextToken = lens _lavNextToken (\ s a -> s{_lavNextToken = a});
+
+-- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+lavMaxResults :: Lens' ListAssociationVersions (Maybe Natural)
+lavMaxResults = lens _lavMaxResults (\ s a -> s{_lavMaxResults = a}) . mapping _Nat;
+
+-- | The association ID for which you want to view all versions.
+lavAssociationId :: Lens' ListAssociationVersions Text
+lavAssociationId = lens _lavAssociationId (\ s a -> s{_lavAssociationId = a});
+
+instance AWSRequest ListAssociationVersions where
+        type Rs ListAssociationVersions =
+             ListAssociationVersionsResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListAssociationVersionsResponse' <$>
+                   (x .?> "NextToken") <*> (x .?> "AssociationVersions")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListAssociationVersions where
+
+instance NFData ListAssociationVersions where
+
+instance ToHeaders ListAssociationVersions where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.ListAssociationVersions" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListAssociationVersions where
+        toJSON ListAssociationVersions'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _lavNextToken,
+                  ("MaxResults" .=) <$> _lavMaxResults,
+                  Just ("AssociationId" .= _lavAssociationId)])
+
+instance ToPath ListAssociationVersions where
+        toPath = const "/"
+
+instance ToQuery ListAssociationVersions where
+        toQuery = const mempty
+
+-- | /See:/ 'listAssociationVersionsResponse' smart constructor.
+data ListAssociationVersionsResponse = ListAssociationVersionsResponse'
+  { _lavrsNextToken           :: !(Maybe Text)
+  , _lavrsAssociationVersions :: !(Maybe (List1 AssociationVersionInfo))
+  , _lavrsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListAssociationVersionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lavrsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'lavrsAssociationVersions' - Information about all versions of the association for the specified association ID.
+--
+-- * 'lavrsResponseStatus' - -- | The response status code.
+listAssociationVersionsResponse
+    :: Int -- ^ 'lavrsResponseStatus'
+    -> ListAssociationVersionsResponse
+listAssociationVersionsResponse pResponseStatus_ =
+  ListAssociationVersionsResponse'
+  { _lavrsNextToken = Nothing
+  , _lavrsAssociationVersions = Nothing
+  , _lavrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+lavrsNextToken :: Lens' ListAssociationVersionsResponse (Maybe Text)
+lavrsNextToken = lens _lavrsNextToken (\ s a -> s{_lavrsNextToken = a});
+
+-- | Information about all versions of the association for the specified association ID.
+lavrsAssociationVersions :: Lens' ListAssociationVersionsResponse (Maybe (NonEmpty AssociationVersionInfo))
+lavrsAssociationVersions = lens _lavrsAssociationVersions (\ s a -> s{_lavrsAssociationVersions = a}) . mapping _List1;
+
+-- | -- | The response status code.
+lavrsResponseStatus :: Lens' ListAssociationVersionsResponse Int
+lavrsResponseStatus = lens _lavrsResponseStatus (\ s a -> s{_lavrsResponseStatus = a});
+
+instance NFData ListAssociationVersionsResponse where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListAssociations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the associations for the specified SSM document or instance.
+-- Lists the associations for the specified Systems Manager document or instance.
 --
 --
 --
@@ -42,21 +42,22 @@
     , larsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listAssociations' smart constructor.
 data ListAssociations = ListAssociations'
-    { _laAssociationFilterList :: !(Maybe (List1 AssociationFilter))
-    , _laNextToken             :: !(Maybe Text)
-    , _laMaxResults            :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _laAssociationFilterList :: !(Maybe (List1 AssociationFilter))
+  , _laNextToken             :: !(Maybe Text)
+  , _laMaxResults            :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,12 +70,13 @@
 listAssociations
     :: ListAssociations
 listAssociations =
-    ListAssociations'
-    { _laAssociationFilterList = Nothing
-    , _laNextToken = Nothing
-    , _laMaxResults = Nothing
-    }
+  ListAssociations'
+  { _laAssociationFilterList = Nothing
+  , _laNextToken = Nothing
+  , _laMaxResults = Nothing
+  }
 
+
 -- | One or more filters. Use a filter to return a more specific list of results.
 laAssociationFilterList :: Lens' ListAssociations (Maybe (NonEmpty AssociationFilter))
 laAssociationFilterList = lens _laAssociationFilterList (\ s a -> s{_laAssociationFilterList = a}) . mapping _List1;
@@ -105,9 +107,9 @@
                      (x .?> "Associations" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListAssociations
+instance Hashable ListAssociations where
 
-instance NFData ListAssociations
+instance NFData ListAssociations where
 
 instance ToHeaders ListAssociations where
         toHeaders
@@ -135,11 +137,12 @@
 
 -- | /See:/ 'listAssociationsResponse' smart constructor.
 data ListAssociationsResponse = ListAssociationsResponse'
-    { _larsNextToken      :: !(Maybe Text)
-    , _larsAssociations   :: !(Maybe [Association])
-    , _larsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _larsNextToken      :: !(Maybe Text)
+  , _larsAssociations   :: !(Maybe [Association])
+  , _larsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListAssociationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -153,12 +156,13 @@
     :: Int -- ^ 'larsResponseStatus'
     -> ListAssociationsResponse
 listAssociationsResponse pResponseStatus_ =
-    ListAssociationsResponse'
-    { _larsNextToken = Nothing
-    , _larsAssociations = Nothing
-    , _larsResponseStatus = pResponseStatus_
-    }
+  ListAssociationsResponse'
+  { _larsNextToken = Nothing
+  , _larsAssociations = Nothing
+  , _larsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 larsNextToken :: Lens' ListAssociationsResponse (Maybe Text)
 larsNextToken = lens _larsNextToken (\ s a -> s{_larsNextToken = a});
@@ -171,4 +175,4 @@
 larsResponseStatus :: Lens' ListAssociationsResponse Int
 larsResponseStatus = lens _larsResponseStatus (\ s a -> s{_larsResponseStatus = a});
 
-instance NFData ListAssociationsResponse
+instance NFData ListAssociationsResponse where
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
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListCommandInvocations
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,29 +40,30 @@
     , listCommandInvocationsResponse
     , ListCommandInvocationsResponse
     -- * Response Lenses
-    , lcirsNextToken
-    , lcirsCommandInvocations
-    , lcirsResponseStatus
+    , lrsNextToken
+    , lrsCommandInvocations
+    , lrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listCommandInvocations' smart constructor.
 data ListCommandInvocations = ListCommandInvocations'
-    { _lciInstanceId :: !(Maybe Text)
-    , _lciFilters    :: !(Maybe (List1 CommandFilter))
-    , _lciNextToken  :: !(Maybe Text)
-    , _lciCommandId  :: !(Maybe Text)
-    , _lciDetails    :: !(Maybe Bool)
-    , _lciMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lciInstanceId :: !(Maybe Text)
+  , _lciFilters    :: !(Maybe (List1 CommandFilter))
+  , _lciNextToken  :: !(Maybe Text)
+  , _lciCommandId  :: !(Maybe Text)
+  , _lciDetails    :: !(Maybe Bool)
+  , _lciMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListCommandInvocations' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -81,15 +82,16 @@
 listCommandInvocations
     :: ListCommandInvocations
 listCommandInvocations =
-    ListCommandInvocations'
-    { _lciInstanceId = Nothing
-    , _lciFilters = Nothing
-    , _lciNextToken = Nothing
-    , _lciCommandId = Nothing
-    , _lciDetails = Nothing
-    , _lciMaxResults = Nothing
-    }
+  ListCommandInvocations'
+  { _lciInstanceId = Nothing
+  , _lciFilters = Nothing
+  , _lciNextToken = Nothing
+  , _lciCommandId = Nothing
+  , _lciDetails = Nothing
+  , _lciMaxResults = Nothing
+  }
 
+
 -- | (Optional) The command execution details for a specific instance ID.
 lciInstanceId :: Lens' ListCommandInvocations (Maybe Text)
 lciInstanceId = lens _lciInstanceId (\ s a -> s{_lciInstanceId = a});
@@ -116,10 +118,10 @@
 
 instance AWSPager ListCommandInvocations where
         page rq rs
-          | stop (rs ^. lcirsNextToken) = Nothing
-          | stop (rs ^. lcirsCommandInvocations) = Nothing
+          | stop (rs ^. lrsNextToken) = Nothing
+          | stop (rs ^. lrsCommandInvocations) = Nothing
           | otherwise =
-            Just $ rq & lciNextToken .~ rs ^. lcirsNextToken
+            Just $ rq & lciNextToken .~ rs ^. lrsNextToken
 
 instance AWSRequest ListCommandInvocations where
         type Rs ListCommandInvocations =
@@ -133,9 +135,9 @@
                      (x .?> "CommandInvocations" .!@ mempty)
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListCommandInvocations
+instance Hashable ListCommandInvocations where
 
-instance NFData ListCommandInvocations
+instance NFData ListCommandInvocations where
 
 instance ToHeaders ListCommandInvocations where
         toHeaders
@@ -165,40 +167,42 @@
 
 -- | /See:/ 'listCommandInvocationsResponse' smart constructor.
 data ListCommandInvocationsResponse = ListCommandInvocationsResponse'
-    { _lcirsNextToken          :: !(Maybe Text)
-    , _lcirsCommandInvocations :: !(Maybe [CommandInvocation])
-    , _lcirsResponseStatus     :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lrsNextToken          :: !(Maybe Text)
+  , _lrsCommandInvocations :: !(Maybe [CommandInvocation])
+  , _lrsResponseStatus     :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListCommandInvocationsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lcirsNextToken' - (Optional) The token for the next set of items to return. (You received this token from a previous call.)
+-- * 'lrsNextToken' - (Optional) The token for the next set of items to return. (You received this token from a previous call.)
 --
--- * 'lcirsCommandInvocations' - (Optional) A list of all invocations.
+-- * 'lrsCommandInvocations' - (Optional) A list of all invocations.
 --
--- * 'lcirsResponseStatus' - -- | The response status code.
+-- * 'lrsResponseStatus' - -- | The response status code.
 listCommandInvocationsResponse
-    :: Int -- ^ 'lcirsResponseStatus'
+    :: Int -- ^ 'lrsResponseStatus'
     -> ListCommandInvocationsResponse
 listCommandInvocationsResponse pResponseStatus_ =
-    ListCommandInvocationsResponse'
-    { _lcirsNextToken = Nothing
-    , _lcirsCommandInvocations = Nothing
-    , _lcirsResponseStatus = pResponseStatus_
-    }
+  ListCommandInvocationsResponse'
+  { _lrsNextToken = Nothing
+  , _lrsCommandInvocations = Nothing
+  , _lrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | (Optional) The token for the next set of items to return. (You received this token from a previous call.)
-lcirsNextToken :: Lens' ListCommandInvocationsResponse (Maybe Text)
-lcirsNextToken = lens _lcirsNextToken (\ s a -> s{_lcirsNextToken = a});
+lrsNextToken :: Lens' ListCommandInvocationsResponse (Maybe Text)
+lrsNextToken = lens _lrsNextToken (\ s a -> s{_lrsNextToken = a});
 
 -- | (Optional) A list of all invocations.
-lcirsCommandInvocations :: Lens' ListCommandInvocationsResponse [CommandInvocation]
-lcirsCommandInvocations = lens _lcirsCommandInvocations (\ s a -> s{_lcirsCommandInvocations = a}) . _Default . _Coerce;
+lrsCommandInvocations :: Lens' ListCommandInvocationsResponse [CommandInvocation]
+lrsCommandInvocations = lens _lrsCommandInvocations (\ s a -> s{_lrsCommandInvocations = a}) . _Default . _Coerce;
 
 -- | -- | The response status code.
-lcirsResponseStatus :: Lens' ListCommandInvocationsResponse Int
-lcirsResponseStatus = lens _lcirsResponseStatus (\ s a -> s{_lcirsResponseStatus = a});
+lrsResponseStatus :: Lens' ListCommandInvocationsResponse Int
+lrsResponseStatus = lens _lrsResponseStatus (\ s a -> s{_lrsResponseStatus = a});
 
-instance NFData ListCommandInvocationsResponse
+instance NFData ListCommandInvocationsResponse where
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
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListCommands
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -44,23 +44,24 @@
     , lcrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listCommands' smart constructor.
 data ListCommands = ListCommands'
-    { _lcInstanceId :: !(Maybe Text)
-    , _lcFilters    :: !(Maybe (List1 CommandFilter))
-    , _lcNextToken  :: !(Maybe Text)
-    , _lcCommandId  :: !(Maybe Text)
-    , _lcMaxResults :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lcInstanceId :: !(Maybe Text)
+  , _lcFilters    :: !(Maybe (List1 CommandFilter))
+  , _lcNextToken  :: !(Maybe Text)
+  , _lcCommandId  :: !(Maybe Text)
+  , _lcMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListCommands' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,14 +78,15 @@
 listCommands
     :: ListCommands
 listCommands =
-    ListCommands'
-    { _lcInstanceId = Nothing
-    , _lcFilters = Nothing
-    , _lcNextToken = Nothing
-    , _lcCommandId = Nothing
-    , _lcMaxResults = Nothing
-    }
+  ListCommands'
+  { _lcInstanceId = Nothing
+  , _lcFilters = Nothing
+  , _lcNextToken = Nothing
+  , _lcCommandId = Nothing
+  , _lcMaxResults = Nothing
+  }
 
+
 -- | (Optional) Lists commands issued against this instance ID.
 lcInstanceId :: Lens' ListCommands (Maybe Text)
 lcInstanceId = lens _lcInstanceId (\ s a -> s{_lcInstanceId = a});
@@ -122,9 +124,9 @@
                    (x .?> "Commands" .!@ mempty) <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListCommands
+instance Hashable ListCommands where
 
-instance NFData ListCommands
+instance NFData ListCommands where
 
 instance ToHeaders ListCommands where
         toHeaders
@@ -153,11 +155,12 @@
 
 -- | /See:/ 'listCommandsResponse' smart constructor.
 data ListCommandsResponse = ListCommandsResponse'
-    { _lcrsCommands       :: !(Maybe [Command])
-    , _lcrsNextToken      :: !(Maybe Text)
-    , _lcrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lcrsCommands       :: !(Maybe [Command])
+  , _lcrsNextToken      :: !(Maybe Text)
+  , _lcrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListCommandsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -171,12 +174,13 @@
     :: Int -- ^ 'lcrsResponseStatus'
     -> ListCommandsResponse
 listCommandsResponse pResponseStatus_ =
-    ListCommandsResponse'
-    { _lcrsCommands = Nothing
-    , _lcrsNextToken = Nothing
-    , _lcrsResponseStatus = pResponseStatus_
-    }
+  ListCommandsResponse'
+  { _lcrsCommands = Nothing
+  , _lcrsNextToken = Nothing
+  , _lcrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | (Optional) The list of commands requested by the user.
 lcrsCommands :: Lens' ListCommandsResponse [Command]
 lcrsCommands = lens _lcrsCommands (\ s a -> s{_lcrsCommands = a}) . _Default . _Coerce;
@@ -189,4 +193,4 @@
 lcrsResponseStatus :: Lens' ListCommandsResponse Int
 lcrsResponseStatus = lens _lcrsResponseStatus (\ s a -> s{_lcrsResponseStatus = a});
 
-instance NFData ListCommandsResponse
+instance NFData ListCommandsResponse where
diff --git a/gen/Network/AWS/SSM/ListComplianceItems.hs b/gen/Network/AWS/SSM/ListComplianceItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/ListComplianceItems.hs
@@ -0,0 +1,188 @@
+{-# 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.SSM.ListComplianceItems
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- For a specified resource ID, this API action returns a list of compliance statuses for different resource types. Currently, you can only specify one resource ID per call. List results depend on the criteria specified in the filter.
+--
+--
+module Network.AWS.SSM.ListComplianceItems
+    (
+    -- * Creating a Request
+      listComplianceItems
+    , ListComplianceItems
+    -- * Request Lenses
+    , lResourceIds
+    , lFilters
+    , lNextToken
+    , lMaxResults
+    , lResourceTypes
+
+    -- * Destructuring the Response
+    , listComplianceItemsResponse
+    , ListComplianceItemsResponse
+    -- * Response Lenses
+    , lcirsComplianceItems
+    , lcirsNextToken
+    , lcirsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'listComplianceItems' smart constructor.
+data ListComplianceItems = ListComplianceItems'
+  { _lResourceIds   :: !(Maybe (List1 Text))
+  , _lFilters       :: !(Maybe [ComplianceStringFilter])
+  , _lNextToken     :: !(Maybe Text)
+  , _lMaxResults    :: !(Maybe Nat)
+  , _lResourceTypes :: !(Maybe (List1 Text))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListComplianceItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lResourceIds' - The ID for the resources from which to get compliance information. Currently, you can only specify one resource ID.
+--
+-- * 'lFilters' - One or more compliance filters. Use a filter to return a more specific list of results.
+--
+-- * 'lNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'lMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+--
+-- * 'lResourceTypes' - The type of resource from which to get compliance information. Currently, the only supported resource type is @ManagedInstance@ .
+listComplianceItems
+    :: ListComplianceItems
+listComplianceItems =
+  ListComplianceItems'
+  { _lResourceIds = Nothing
+  , _lFilters = Nothing
+  , _lNextToken = Nothing
+  , _lMaxResults = Nothing
+  , _lResourceTypes = Nothing
+  }
+
+
+-- | The ID for the resources from which to get compliance information. Currently, you can only specify one resource ID.
+lResourceIds :: Lens' ListComplianceItems (Maybe (NonEmpty Text))
+lResourceIds = lens _lResourceIds (\ s a -> s{_lResourceIds = a}) . mapping _List1;
+
+-- | One or more compliance filters. Use a filter to return a more specific list of results.
+lFilters :: Lens' ListComplianceItems [ComplianceStringFilter]
+lFilters = lens _lFilters (\ s a -> s{_lFilters = a}) . _Default . _Coerce;
+
+-- | A token to start the list. Use this token to get the next set of results.
+lNextToken :: Lens' ListComplianceItems (Maybe Text)
+lNextToken = lens _lNextToken (\ s a -> s{_lNextToken = a});
+
+-- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+lMaxResults :: Lens' ListComplianceItems (Maybe Natural)
+lMaxResults = lens _lMaxResults (\ s a -> s{_lMaxResults = a}) . mapping _Nat;
+
+-- | The type of resource from which to get compliance information. Currently, the only supported resource type is @ManagedInstance@ .
+lResourceTypes :: Lens' ListComplianceItems (Maybe (NonEmpty Text))
+lResourceTypes = lens _lResourceTypes (\ s a -> s{_lResourceTypes = a}) . mapping _List1;
+
+instance AWSRequest ListComplianceItems where
+        type Rs ListComplianceItems =
+             ListComplianceItemsResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListComplianceItemsResponse' <$>
+                   (x .?> "ComplianceItems" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListComplianceItems where
+
+instance NFData ListComplianceItems where
+
+instance ToHeaders ListComplianceItems where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.ListComplianceItems" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListComplianceItems where
+        toJSON ListComplianceItems'{..}
+          = object
+              (catMaybes
+                 [("ResourceIds" .=) <$> _lResourceIds,
+                  ("Filters" .=) <$> _lFilters,
+                  ("NextToken" .=) <$> _lNextToken,
+                  ("MaxResults" .=) <$> _lMaxResults,
+                  ("ResourceTypes" .=) <$> _lResourceTypes])
+
+instance ToPath ListComplianceItems where
+        toPath = const "/"
+
+instance ToQuery ListComplianceItems where
+        toQuery = const mempty
+
+-- | /See:/ 'listComplianceItemsResponse' smart constructor.
+data ListComplianceItemsResponse = ListComplianceItemsResponse'
+  { _lcirsComplianceItems :: !(Maybe [ComplianceItem])
+  , _lcirsNextToken       :: !(Maybe Text)
+  , _lcirsResponseStatus  :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListComplianceItemsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcirsComplianceItems' - A list of compliance information for the specified resource ID.
+--
+-- * 'lcirsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'lcirsResponseStatus' - -- | The response status code.
+listComplianceItemsResponse
+    :: Int -- ^ 'lcirsResponseStatus'
+    -> ListComplianceItemsResponse
+listComplianceItemsResponse pResponseStatus_ =
+  ListComplianceItemsResponse'
+  { _lcirsComplianceItems = Nothing
+  , _lcirsNextToken = Nothing
+  , _lcirsResponseStatus = pResponseStatus_
+  }
+
+
+-- | A list of compliance information for the specified resource ID.
+lcirsComplianceItems :: Lens' ListComplianceItemsResponse [ComplianceItem]
+lcirsComplianceItems = lens _lcirsComplianceItems (\ s a -> s{_lcirsComplianceItems = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+lcirsNextToken :: Lens' ListComplianceItemsResponse (Maybe Text)
+lcirsNextToken = lens _lcirsNextToken (\ s a -> s{_lcirsNextToken = a});
+
+-- | -- | The response status code.
+lcirsResponseStatus :: Lens' ListComplianceItemsResponse Int
+lcirsResponseStatus = lens _lcirsResponseStatus (\ s a -> s{_lcirsResponseStatus = a});
+
+instance NFData ListComplianceItemsResponse where
diff --git a/gen/Network/AWS/SSM/ListComplianceSummaries.hs b/gen/Network/AWS/SSM/ListComplianceSummaries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/ListComplianceSummaries.hs
@@ -0,0 +1,165 @@
+{-# 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.SSM.ListComplianceSummaries
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a summary count of compliant and non-compliant resources for a compliance type. For example, this call can return State Manager associations, patches, or custom compliance types according to the filter criteria that you specify.
+--
+--
+module Network.AWS.SSM.ListComplianceSummaries
+    (
+    -- * Creating a Request
+      listComplianceSummaries
+    , ListComplianceSummaries
+    -- * Request Lenses
+    , lcsFilters
+    , lcsNextToken
+    , lcsMaxResults
+
+    -- * Destructuring the Response
+    , listComplianceSummariesResponse
+    , ListComplianceSummariesResponse
+    -- * Response Lenses
+    , lcsrsNextToken
+    , lcsrsComplianceSummaryItems
+    , lcsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'listComplianceSummaries' smart constructor.
+data ListComplianceSummaries = ListComplianceSummaries'
+  { _lcsFilters    :: !(Maybe [ComplianceStringFilter])
+  , _lcsNextToken  :: !(Maybe Text)
+  , _lcsMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListComplianceSummaries' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcsFilters' - One or more compliance or inventory filters. Use a filter to return a more specific list of results.
+--
+-- * 'lcsNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'lcsMaxResults' - The maximum number of items to return for this call. Currently, you can specify null or 50. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+listComplianceSummaries
+    :: ListComplianceSummaries
+listComplianceSummaries =
+  ListComplianceSummaries'
+  {_lcsFilters = Nothing, _lcsNextToken = Nothing, _lcsMaxResults = Nothing}
+
+
+-- | One or more compliance or inventory filters. Use a filter to return a more specific list of results.
+lcsFilters :: Lens' ListComplianceSummaries [ComplianceStringFilter]
+lcsFilters = lens _lcsFilters (\ s a -> s{_lcsFilters = a}) . _Default . _Coerce;
+
+-- | A token to start the list. Use this token to get the next set of results.
+lcsNextToken :: Lens' ListComplianceSummaries (Maybe Text)
+lcsNextToken = lens _lcsNextToken (\ s a -> s{_lcsNextToken = a});
+
+-- | The maximum number of items to return for this call. Currently, you can specify null or 50. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+lcsMaxResults :: Lens' ListComplianceSummaries (Maybe Natural)
+lcsMaxResults = lens _lcsMaxResults (\ s a -> s{_lcsMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest ListComplianceSummaries where
+        type Rs ListComplianceSummaries =
+             ListComplianceSummariesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListComplianceSummariesResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "ComplianceSummaryItems" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListComplianceSummaries where
+
+instance NFData ListComplianceSummaries where
+
+instance ToHeaders ListComplianceSummaries where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.ListComplianceSummaries" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListComplianceSummaries where
+        toJSON ListComplianceSummaries'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _lcsFilters,
+                  ("NextToken" .=) <$> _lcsNextToken,
+                  ("MaxResults" .=) <$> _lcsMaxResults])
+
+instance ToPath ListComplianceSummaries where
+        toPath = const "/"
+
+instance ToQuery ListComplianceSummaries where
+        toQuery = const mempty
+
+-- | /See:/ 'listComplianceSummariesResponse' smart constructor.
+data ListComplianceSummariesResponse = ListComplianceSummariesResponse'
+  { _lcsrsNextToken              :: !(Maybe Text)
+  , _lcsrsComplianceSummaryItems :: !(Maybe [ComplianceSummaryItem])
+  , _lcsrsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListComplianceSummariesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lcsrsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'lcsrsComplianceSummaryItems' - A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria that you specified.
+--
+-- * 'lcsrsResponseStatus' - -- | The response status code.
+listComplianceSummariesResponse
+    :: Int -- ^ 'lcsrsResponseStatus'
+    -> ListComplianceSummariesResponse
+listComplianceSummariesResponse pResponseStatus_ =
+  ListComplianceSummariesResponse'
+  { _lcsrsNextToken = Nothing
+  , _lcsrsComplianceSummaryItems = Nothing
+  , _lcsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+lcsrsNextToken :: Lens' ListComplianceSummariesResponse (Maybe Text)
+lcsrsNextToken = lens _lcsrsNextToken (\ s a -> s{_lcsrsNextToken = a});
+
+-- | A list of compliant and non-compliant summary counts based on compliance types. For example, this call returns State Manager associations, patches, or custom compliance types according to the filter criteria that you specified.
+lcsrsComplianceSummaryItems :: Lens' ListComplianceSummariesResponse [ComplianceSummaryItem]
+lcsrsComplianceSummaryItems = lens _lcsrsComplianceSummaryItems (\ s a -> s{_lcsrsComplianceSummaryItems = a}) . _Default . _Coerce;
+
+-- | -- | The response status code.
+lcsrsResponseStatus :: Lens' ListComplianceSummariesResponse Int
+lcsrsResponseStatus = lens _lcsrsResponseStatus (\ s a -> s{_lcsrsResponseStatus = a});
+
+instance NFData ListComplianceSummariesResponse where
diff --git a/gen/Network/AWS/SSM/ListDocumentVersions.hs b/gen/Network/AWS/SSM/ListDocumentVersions.hs
--- a/gen/Network/AWS/SSM/ListDocumentVersions.hs
+++ b/gen/Network/AWS/SSM/ListDocumentVersions.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListDocumentVersions
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -40,20 +40,21 @@
     , ldvrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listDocumentVersions' smart constructor.
 data ListDocumentVersions = ListDocumentVersions'
-    { _ldvNextToken  :: !(Maybe Text)
-    , _ldvMaxResults :: !(Maybe Nat)
-    , _ldvName       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ldvNextToken  :: !(Maybe Text)
+  , _ldvMaxResults :: !(Maybe Nat)
+  , _ldvName       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListDocumentVersions' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
     :: Text -- ^ 'ldvName'
     -> ListDocumentVersions
 listDocumentVersions pName_ =
-    ListDocumentVersions'
-    { _ldvNextToken = Nothing
-    , _ldvMaxResults = Nothing
-    , _ldvName = pName_
-    }
+  ListDocumentVersions'
+  {_ldvNextToken = Nothing, _ldvMaxResults = Nothing, _ldvName = pName_}
 
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 ldvNextToken :: Lens' ListDocumentVersions (Maybe Text)
 ldvNextToken = lens _ldvNextToken (\ s a -> s{_ldvNextToken = a});
@@ -96,9 +95,9 @@
                    (x .?> "DocumentVersions") <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListDocumentVersions
+instance Hashable ListDocumentVersions where
 
-instance NFData ListDocumentVersions
+instance NFData ListDocumentVersions where
 
 instance ToHeaders ListDocumentVersions where
         toHeaders
@@ -125,11 +124,12 @@
 
 -- | /See:/ 'listDocumentVersionsResponse' smart constructor.
 data ListDocumentVersionsResponse = ListDocumentVersionsResponse'
-    { _ldvrsDocumentVersions :: !(Maybe (List1 DocumentVersionInfo))
-    , _ldvrsNextToken        :: !(Maybe Text)
-    , _ldvrsResponseStatus   :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ldvrsDocumentVersions :: !(Maybe (List1 DocumentVersionInfo))
+  , _ldvrsNextToken        :: !(Maybe Text)
+  , _ldvrsResponseStatus   :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListDocumentVersionsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -143,12 +143,13 @@
     :: Int -- ^ 'ldvrsResponseStatus'
     -> ListDocumentVersionsResponse
 listDocumentVersionsResponse pResponseStatus_ =
-    ListDocumentVersionsResponse'
-    { _ldvrsDocumentVersions = Nothing
-    , _ldvrsNextToken = Nothing
-    , _ldvrsResponseStatus = pResponseStatus_
-    }
+  ListDocumentVersionsResponse'
+  { _ldvrsDocumentVersions = Nothing
+  , _ldvrsNextToken = Nothing
+  , _ldvrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The document versions.
 ldvrsDocumentVersions :: Lens' ListDocumentVersionsResponse (Maybe (NonEmpty DocumentVersionInfo))
 ldvrsDocumentVersions = lens _ldvrsDocumentVersions (\ s a -> s{_ldvrsDocumentVersions = a}) . mapping _List1;
@@ -161,4 +162,4 @@
 ldvrsResponseStatus :: Lens' ListDocumentVersionsResponse Int
 ldvrsResponseStatus = lens _ldvrsResponseStatus (\ s a -> s{_ldvrsResponseStatus = a});
 
-instance NFData ListDocumentVersionsResponse
+instance NFData ListDocumentVersionsResponse where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListDocuments
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Describes one or more of your SSM documents.
+-- Describes one or more of your Systems Manager documents.
 --
 --
 --
@@ -30,6 +30,7 @@
     , ListDocuments
     -- * Request Lenses
     , ldDocumentFilterList
+    , ldFilters
     , ldNextToken
     , ldMaxResults
 
@@ -42,43 +43,53 @@
     , ldrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Pager
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Pager
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listDocuments' smart constructor.
 data ListDocuments = ListDocuments'
-    { _ldDocumentFilterList :: !(Maybe (List1 DocumentFilter))
-    , _ldNextToken          :: !(Maybe Text)
-    , _ldMaxResults         :: !(Maybe Nat)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ldDocumentFilterList :: !(Maybe (List1 DocumentFilter))
+  , _ldFilters            :: !(Maybe [DocumentKeyValuesFilter])
+  , _ldNextToken          :: !(Maybe Text)
+  , _ldMaxResults         :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListDocuments' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'ldDocumentFilterList' - One or more filters. Use a filter to return a more specific list of results.
 --
+-- * 'ldFilters' - One or more filters. Use a filter to return a more specific list of results.
+--
 -- * 'ldNextToken' - The token for the next set of items to return. (You received this token from a previous call.)
 --
 -- * 'ldMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
 listDocuments
     :: ListDocuments
 listDocuments =
-    ListDocuments'
-    { _ldDocumentFilterList = Nothing
-    , _ldNextToken = Nothing
-    , _ldMaxResults = Nothing
-    }
+  ListDocuments'
+  { _ldDocumentFilterList = Nothing
+  , _ldFilters = Nothing
+  , _ldNextToken = Nothing
+  , _ldMaxResults = Nothing
+  }
 
+
 -- | One or more filters. Use a filter to return a more specific list of results.
 ldDocumentFilterList :: Lens' ListDocuments (Maybe (NonEmpty DocumentFilter))
 ldDocumentFilterList = lens _ldDocumentFilterList (\ s a -> s{_ldDocumentFilterList = a}) . mapping _List1;
 
+-- | One or more filters. Use a filter to return a more specific list of results.
+ldFilters :: Lens' ListDocuments [DocumentKeyValuesFilter]
+ldFilters = lens _ldFilters (\ s a -> s{_ldFilters = a}) . _Default . _Coerce;
+
 -- | The token for the next set of items to return. (You received this token from a previous call.)
 ldNextToken :: Lens' ListDocuments (Maybe Text)
 ldNextToken = lens _ldNextToken (\ s a -> s{_ldNextToken = a});
@@ -105,9 +116,9 @@
                      (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListDocuments
+instance Hashable ListDocuments where
 
-instance NFData ListDocuments
+instance NFData ListDocuments where
 
 instance ToHeaders ListDocuments where
         toHeaders
@@ -123,6 +134,7 @@
           = object
               (catMaybes
                  [("DocumentFilterList" .=) <$> _ldDocumentFilterList,
+                  ("Filters" .=) <$> _ldFilters,
                   ("NextToken" .=) <$> _ldNextToken,
                   ("MaxResults" .=) <$> _ldMaxResults])
 
@@ -134,16 +146,17 @@
 
 -- | /See:/ 'listDocumentsResponse' smart constructor.
 data ListDocumentsResponse = ListDocumentsResponse'
-    { _ldrsDocumentIdentifiers :: !(Maybe [DocumentIdentifier])
-    , _ldrsNextToken           :: !(Maybe Text)
-    , _ldrsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ldrsDocumentIdentifiers :: !(Maybe [DocumentIdentifier])
+  , _ldrsNextToken           :: !(Maybe Text)
+  , _ldrsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListDocumentsResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ldrsDocumentIdentifiers' - The names of the SSM documents.
+-- * 'ldrsDocumentIdentifiers' - The names of the Systems Manager documents.
 --
 -- * 'ldrsNextToken' - The token to use when requesting the next set of items. If there are no additional items to return, the string is empty.
 --
@@ -152,13 +165,14 @@
     :: Int -- ^ 'ldrsResponseStatus'
     -> ListDocumentsResponse
 listDocumentsResponse pResponseStatus_ =
-    ListDocumentsResponse'
-    { _ldrsDocumentIdentifiers = Nothing
-    , _ldrsNextToken = Nothing
-    , _ldrsResponseStatus = pResponseStatus_
-    }
+  ListDocumentsResponse'
+  { _ldrsDocumentIdentifiers = Nothing
+  , _ldrsNextToken = Nothing
+  , _ldrsResponseStatus = pResponseStatus_
+  }
 
--- | The names of the SSM documents.
+
+-- | The names of the Systems Manager documents.
 ldrsDocumentIdentifiers :: Lens' ListDocumentsResponse [DocumentIdentifier]
 ldrsDocumentIdentifiers = lens _ldrsDocumentIdentifiers (\ s a -> s{_ldrsDocumentIdentifiers = a}) . _Default . _Coerce;
 
@@ -170,4 +184,4 @@
 ldrsResponseStatus :: Lens' ListDocumentsResponse Int
 ldrsResponseStatus = lens _ldrsResponseStatus (\ s a -> s{_ldrsResponseStatus = a});
 
-instance NFData ListDocumentsResponse
+instance NFData ListDocumentsResponse where
diff --git a/gen/Network/AWS/SSM/ListInventoryEntries.hs b/gen/Network/AWS/SSM/ListInventoryEntries.hs
--- a/gen/Network/AWS/SSM/ListInventoryEntries.hs
+++ b/gen/Network/AWS/SSM/ListInventoryEntries.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListInventoryEntries
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -46,22 +46,23 @@
     , liersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listInventoryEntries' smart constructor.
 data ListInventoryEntries = ListInventoryEntries'
-    { _lieFilters    :: !(Maybe (List1 InventoryFilter))
-    , _lieNextToken  :: !(Maybe Text)
-    , _lieMaxResults :: !(Maybe Nat)
-    , _lieInstanceId :: !Text
-    , _lieTypeName   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _lieFilters    :: !(Maybe (List1 InventoryFilter))
+  , _lieNextToken  :: !(Maybe Text)
+  , _lieMaxResults :: !(Maybe Nat)
+  , _lieInstanceId :: !Text
+  , _lieTypeName   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListInventoryEntries' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -80,14 +81,15 @@
     -> Text -- ^ 'lieTypeName'
     -> ListInventoryEntries
 listInventoryEntries pInstanceId_ pTypeName_ =
-    ListInventoryEntries'
-    { _lieFilters = Nothing
-    , _lieNextToken = Nothing
-    , _lieMaxResults = Nothing
-    , _lieInstanceId = pInstanceId_
-    , _lieTypeName = pTypeName_
-    }
+  ListInventoryEntries'
+  { _lieFilters = Nothing
+  , _lieNextToken = Nothing
+  , _lieMaxResults = Nothing
+  , _lieInstanceId = pInstanceId_
+  , _lieTypeName = pTypeName_
+  }
 
+
 -- | One or more filters. Use a filter to return a more specific list of results.
 lieFilters :: Lens' ListInventoryEntries (Maybe (NonEmpty InventoryFilter))
 lieFilters = lens _lieFilters (\ s a -> s{_lieFilters = a}) . mapping _List1;
@@ -123,9 +125,9 @@
                      <*> (x .?> "NextToken")
                      <*> (pure (fromEnum s)))
 
-instance Hashable ListInventoryEntries
+instance Hashable ListInventoryEntries where
 
-instance NFData ListInventoryEntries
+instance NFData ListInventoryEntries where
 
 instance ToHeaders ListInventoryEntries where
         toHeaders
@@ -154,15 +156,16 @@
 
 -- | /See:/ 'listInventoryEntriesResponse' smart constructor.
 data ListInventoryEntriesResponse = ListInventoryEntriesResponse'
-    { _liersInstanceId     :: !(Maybe Text)
-    , _liersTypeName       :: !(Maybe Text)
-    , _liersEntries        :: !(Maybe [Map Text Text])
-    , _liersSchemaVersion  :: !(Maybe Text)
-    , _liersCaptureTime    :: !(Maybe Text)
-    , _liersNextToken      :: !(Maybe Text)
-    , _liersResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _liersInstanceId     :: !(Maybe Text)
+  , _liersTypeName       :: !(Maybe Text)
+  , _liersEntries        :: !(Maybe [Map Text Text])
+  , _liersSchemaVersion  :: !(Maybe Text)
+  , _liersCaptureTime    :: !(Maybe Text)
+  , _liersNextToken      :: !(Maybe Text)
+  , _liersResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListInventoryEntriesResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -184,16 +187,17 @@
     :: Int -- ^ 'liersResponseStatus'
     -> ListInventoryEntriesResponse
 listInventoryEntriesResponse pResponseStatus_ =
-    ListInventoryEntriesResponse'
-    { _liersInstanceId = Nothing
-    , _liersTypeName = Nothing
-    , _liersEntries = Nothing
-    , _liersSchemaVersion = Nothing
-    , _liersCaptureTime = Nothing
-    , _liersNextToken = Nothing
-    , _liersResponseStatus = pResponseStatus_
-    }
+  ListInventoryEntriesResponse'
+  { _liersInstanceId = Nothing
+  , _liersTypeName = Nothing
+  , _liersEntries = Nothing
+  , _liersSchemaVersion = Nothing
+  , _liersCaptureTime = Nothing
+  , _liersNextToken = Nothing
+  , _liersResponseStatus = pResponseStatus_
+  }
 
+
 -- | The instance ID targeted by the request to query inventory information.
 liersInstanceId :: Lens' ListInventoryEntriesResponse (Maybe Text)
 liersInstanceId = lens _liersInstanceId (\ s a -> s{_liersInstanceId = a});
@@ -222,4 +226,4 @@
 liersResponseStatus :: Lens' ListInventoryEntriesResponse Int
 liersResponseStatus = lens _liersResponseStatus (\ s a -> s{_liersResponseStatus = a});
 
-instance NFData ListInventoryEntriesResponse
+instance NFData ListInventoryEntriesResponse where
diff --git a/gen/Network/AWS/SSM/ListResourceComplianceSummaries.hs b/gen/Network/AWS/SSM/ListResourceComplianceSummaries.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/ListResourceComplianceSummaries.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SSM.ListResourceComplianceSummaries
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a resource-level summary count. The summary includes information about compliant and non-compliant statuses and detailed compliance-item severity counts, according to the filter criteria you specify.
+--
+--
+module Network.AWS.SSM.ListResourceComplianceSummaries
+    (
+    -- * Creating a Request
+      listResourceComplianceSummaries
+    , ListResourceComplianceSummaries
+    -- * Request Lenses
+    , lrcsFilters
+    , lrcsNextToken
+    , lrcsMaxResults
+
+    -- * Destructuring the Response
+    , listResourceComplianceSummariesResponse
+    , ListResourceComplianceSummariesResponse
+    -- * Response Lenses
+    , lrcsrsResourceComplianceSummaryItems
+    , lrcsrsNextToken
+    , lrcsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'listResourceComplianceSummaries' smart constructor.
+data ListResourceComplianceSummaries = ListResourceComplianceSummaries'
+  { _lrcsFilters    :: !(Maybe [ComplianceStringFilter])
+  , _lrcsNextToken  :: !(Maybe Text)
+  , _lrcsMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListResourceComplianceSummaries' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrcsFilters' - One or more filters. Use a filter to return a more specific list of results.
+--
+-- * 'lrcsNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'lrcsMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+listResourceComplianceSummaries
+    :: ListResourceComplianceSummaries
+listResourceComplianceSummaries =
+  ListResourceComplianceSummaries'
+  {_lrcsFilters = Nothing, _lrcsNextToken = Nothing, _lrcsMaxResults = Nothing}
+
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+lrcsFilters :: Lens' ListResourceComplianceSummaries [ComplianceStringFilter]
+lrcsFilters = lens _lrcsFilters (\ s a -> s{_lrcsFilters = a}) . _Default . _Coerce;
+
+-- | A token to start the list. Use this token to get the next set of results.
+lrcsNextToken :: Lens' ListResourceComplianceSummaries (Maybe Text)
+lrcsNextToken = lens _lrcsNextToken (\ s a -> s{_lrcsNextToken = a});
+
+-- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+lrcsMaxResults :: Lens' ListResourceComplianceSummaries (Maybe Natural)
+lrcsMaxResults = lens _lrcsMaxResults (\ s a -> s{_lrcsMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest ListResourceComplianceSummaries
+         where
+        type Rs ListResourceComplianceSummaries =
+             ListResourceComplianceSummariesResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListResourceComplianceSummariesResponse' <$>
+                   (x .?> "ResourceComplianceSummaryItems" .!@ mempty)
+                     <*> (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListResourceComplianceSummaries
+         where
+
+instance NFData ListResourceComplianceSummaries where
+
+instance ToHeaders ListResourceComplianceSummaries
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.ListResourceComplianceSummaries" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListResourceComplianceSummaries where
+        toJSON ListResourceComplianceSummaries'{..}
+          = object
+              (catMaybes
+                 [("Filters" .=) <$> _lrcsFilters,
+                  ("NextToken" .=) <$> _lrcsNextToken,
+                  ("MaxResults" .=) <$> _lrcsMaxResults])
+
+instance ToPath ListResourceComplianceSummaries where
+        toPath = const "/"
+
+instance ToQuery ListResourceComplianceSummaries
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'listResourceComplianceSummariesResponse' smart constructor.
+data ListResourceComplianceSummariesResponse = ListResourceComplianceSummariesResponse'
+  { _lrcsrsResourceComplianceSummaryItems :: !(Maybe [ResourceComplianceSummaryItem])
+  , _lrcsrsNextToken :: !(Maybe Text)
+  , _lrcsrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListResourceComplianceSummariesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrcsrsResourceComplianceSummaryItems' - A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch status, or custom items according to the filter criteria that you specify.
+--
+-- * 'lrcsrsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'lrcsrsResponseStatus' - -- | The response status code.
+listResourceComplianceSummariesResponse
+    :: Int -- ^ 'lrcsrsResponseStatus'
+    -> ListResourceComplianceSummariesResponse
+listResourceComplianceSummariesResponse pResponseStatus_ =
+  ListResourceComplianceSummariesResponse'
+  { _lrcsrsResourceComplianceSummaryItems = Nothing
+  , _lrcsrsNextToken = Nothing
+  , _lrcsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | A summary count for specified or targeted managed instances. Summary count includes information about compliant and non-compliant State Manager associations, patch status, or custom items according to the filter criteria that you specify.
+lrcsrsResourceComplianceSummaryItems :: Lens' ListResourceComplianceSummariesResponse [ResourceComplianceSummaryItem]
+lrcsrsResourceComplianceSummaryItems = lens _lrcsrsResourceComplianceSummaryItems (\ s a -> s{_lrcsrsResourceComplianceSummaryItems = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+lrcsrsNextToken :: Lens' ListResourceComplianceSummariesResponse (Maybe Text)
+lrcsrsNextToken = lens _lrcsrsNextToken (\ s a -> s{_lrcsrsNextToken = a});
+
+-- | -- | The response status code.
+lrcsrsResponseStatus :: Lens' ListResourceComplianceSummariesResponse Int
+lrcsrsResponseStatus = lens _lrcsrsResponseStatus (\ s a -> s{_lrcsrsResponseStatus = a});
+
+instance NFData
+           ListResourceComplianceSummariesResponse
+         where
diff --git a/gen/Network/AWS/SSM/ListResourceDataSync.hs b/gen/Network/AWS/SSM/ListResourceDataSync.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/ListResourceDataSync.hs
@@ -0,0 +1,157 @@
+{-# 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.SSM.ListResourceDataSync
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists your resource data sync configurations. Includes information about the last time a sync attempted to start, the last sync status, and the last time a sync successfully completed.
+--
+--
+-- The number of sync configurations might be too large to return using a single call to @ListResourceDataSync@ . You can limit the number of sync configurations returned by using the @MaxResults@ parameter. To determine whether there are more sync configurations to list, check the value of @NextToken@ in the output. If there are more sync configurations to list, you can request them by specifying the @NextToken@ returned in the call to the parameter of a subsequent call.
+--
+module Network.AWS.SSM.ListResourceDataSync
+    (
+    -- * Creating a Request
+      listResourceDataSync
+    , ListResourceDataSync
+    -- * Request Lenses
+    , lrdsNextToken
+    , lrdsMaxResults
+
+    -- * Destructuring the Response
+    , listResourceDataSyncResponse
+    , ListResourceDataSyncResponse
+    -- * Response Lenses
+    , lrdsrsResourceDataSyncItems
+    , lrdsrsNextToken
+    , lrdsrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'listResourceDataSync' smart constructor.
+data ListResourceDataSync = ListResourceDataSync'
+  { _lrdsNextToken  :: !(Maybe Text)
+  , _lrdsMaxResults :: !(Maybe Nat)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListResourceDataSync' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrdsNextToken' - A token to start the list. Use this token to get the next set of results.
+--
+-- * 'lrdsMaxResults' - The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+listResourceDataSync
+    :: ListResourceDataSync
+listResourceDataSync =
+  ListResourceDataSync' {_lrdsNextToken = Nothing, _lrdsMaxResults = Nothing}
+
+
+-- | A token to start the list. Use this token to get the next set of results.
+lrdsNextToken :: Lens' ListResourceDataSync (Maybe Text)
+lrdsNextToken = lens _lrdsNextToken (\ s a -> s{_lrdsNextToken = a});
+
+-- | The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results.
+lrdsMaxResults :: Lens' ListResourceDataSync (Maybe Natural)
+lrdsMaxResults = lens _lrdsMaxResults (\ s a -> s{_lrdsMaxResults = a}) . mapping _Nat;
+
+instance AWSRequest ListResourceDataSync where
+        type Rs ListResourceDataSync =
+             ListResourceDataSyncResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListResourceDataSyncResponse' <$>
+                   (x .?> "ResourceDataSyncItems" .!@ mempty) <*>
+                     (x .?> "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable ListResourceDataSync where
+
+instance NFData ListResourceDataSync where
+
+instance ToHeaders ListResourceDataSync where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.ListResourceDataSync" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListResourceDataSync where
+        toJSON ListResourceDataSync'{..}
+          = object
+              (catMaybes
+                 [("NextToken" .=) <$> _lrdsNextToken,
+                  ("MaxResults" .=) <$> _lrdsMaxResults])
+
+instance ToPath ListResourceDataSync where
+        toPath = const "/"
+
+instance ToQuery ListResourceDataSync where
+        toQuery = const mempty
+
+-- | /See:/ 'listResourceDataSyncResponse' smart constructor.
+data ListResourceDataSyncResponse = ListResourceDataSyncResponse'
+  { _lrdsrsResourceDataSyncItems :: !(Maybe [ResourceDataSyncItem])
+  , _lrdsrsNextToken             :: !(Maybe Text)
+  , _lrdsrsResponseStatus        :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ListResourceDataSyncResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrdsrsResourceDataSyncItems' - A list of your current Resource Data Sync configurations and their statuses.
+--
+-- * 'lrdsrsNextToken' - The token for the next set of items to return. Use this token to get the next set of results.
+--
+-- * 'lrdsrsResponseStatus' - -- | The response status code.
+listResourceDataSyncResponse
+    :: Int -- ^ 'lrdsrsResponseStatus'
+    -> ListResourceDataSyncResponse
+listResourceDataSyncResponse pResponseStatus_ =
+  ListResourceDataSyncResponse'
+  { _lrdsrsResourceDataSyncItems = Nothing
+  , _lrdsrsNextToken = Nothing
+  , _lrdsrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | A list of your current Resource Data Sync configurations and their statuses.
+lrdsrsResourceDataSyncItems :: Lens' ListResourceDataSyncResponse [ResourceDataSyncItem]
+lrdsrsResourceDataSyncItems = lens _lrdsrsResourceDataSyncItems (\ s a -> s{_lrdsrsResourceDataSyncItems = a}) . _Default . _Coerce;
+
+-- | The token for the next set of items to return. Use this token to get the next set of results.
+lrdsrsNextToken :: Lens' ListResourceDataSyncResponse (Maybe Text)
+lrdsrsNextToken = lens _lrdsrsNextToken (\ s a -> s{_lrdsrsNextToken = a});
+
+-- | -- | The response status code.
+lrdsrsResponseStatus :: Lens' ListResourceDataSyncResponse Int
+lrdsrsResponseStatus = lens _lrdsrsResponseStatus (\ s a -> s{_lrdsrsResponseStatus = a});
+
+instance NFData ListResourceDataSyncResponse where
diff --git a/gen/Network/AWS/SSM/ListTagsForResource.hs b/gen/Network/AWS/SSM/ListTagsForResource.hs
--- a/gen/Network/AWS/SSM/ListTagsForResource.hs
+++ b/gen/Network/AWS/SSM/ListTagsForResource.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ListTagsForResource
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,19 +38,20 @@
     , ltfrrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'listTagsForResource' smart constructor.
 data ListTagsForResource = ListTagsForResource'
-    { _ltfrResourceType :: !ResourceTypeForTagging
-    , _ltfrResourceId   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ltfrResourceType :: !ResourceTypeForTagging
+  , _ltfrResourceId   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListTagsForResource' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,10 @@
     -> Text -- ^ 'ltfrResourceId'
     -> ListTagsForResource
 listTagsForResource pResourceType_ pResourceId_ =
-    ListTagsForResource'
-    { _ltfrResourceType = pResourceType_
-    , _ltfrResourceId = pResourceId_
-    }
+  ListTagsForResource'
+  {_ltfrResourceType = pResourceType_, _ltfrResourceId = pResourceId_}
 
+
 -- | Returns a list of tags for a specific resource type.
 ltfrResourceType :: Lens' ListTagsForResource ResourceTypeForTagging
 ltfrResourceType = lens _ltfrResourceType (\ s a -> s{_ltfrResourceType = a});
@@ -86,9 +86,9 @@
                  ListTagsForResourceResponse' <$>
                    (x .?> "TagList" .!@ mempty) <*> (pure (fromEnum s)))
 
-instance Hashable ListTagsForResource
+instance Hashable ListTagsForResource where
 
-instance NFData ListTagsForResource
+instance NFData ListTagsForResource where
 
 instance ToHeaders ListTagsForResource where
         toHeaders
@@ -114,10 +114,11 @@
 
 -- | /See:/ 'listTagsForResourceResponse' smart constructor.
 data ListTagsForResourceResponse = ListTagsForResourceResponse'
-    { _ltfrrsTagList        :: !(Maybe [Tag])
-    , _ltfrrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ltfrrsTagList        :: !(Maybe [Tag])
+  , _ltfrrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ListTagsForResourceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -129,11 +130,10 @@
     :: Int -- ^ 'ltfrrsResponseStatus'
     -> ListTagsForResourceResponse
 listTagsForResourceResponse pResponseStatus_ =
-    ListTagsForResourceResponse'
-    { _ltfrrsTagList = Nothing
-    , _ltfrrsResponseStatus = pResponseStatus_
-    }
+  ListTagsForResourceResponse'
+  {_ltfrrsTagList = Nothing, _ltfrrsResponseStatus = pResponseStatus_}
 
+
 -- | A list of tags.
 ltfrrsTagList :: Lens' ListTagsForResourceResponse [Tag]
 ltfrrsTagList = lens _ltfrrsTagList (\ s a -> s{_ltfrrsTagList = a}) . _Default . _Coerce;
@@ -142,4 +142,4 @@
 ltfrrsResponseStatus :: Lens' ListTagsForResourceResponse Int
 ltfrrsResponseStatus = lens _ltfrrsResponseStatus (\ s a -> s{_ltfrrsResponseStatus = a});
 
-instance NFData ListTagsForResourceResponse
+instance NFData ListTagsForResourceResponse where
diff --git a/gen/Network/AWS/SSM/ModifyDocumentPermission.hs b/gen/Network/AWS/SSM/ModifyDocumentPermission.hs
--- a/gen/Network/AWS/SSM/ModifyDocumentPermission.hs
+++ b/gen/Network/AWS/SSM/ModifyDocumentPermission.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.ModifyDocumentPermission
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Share a document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify /All/ as the account ID.
+-- Shares a Systems Manager document publicly or privately. If you share a document privately, you must specify the AWS user account IDs for those people who can use the document. If you share a document publicly, you must specify /All/ as the account ID.
 --
 --
 module Network.AWS.SSM.ModifyDocumentPermission
@@ -39,21 +39,22 @@
     , mdprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'modifyDocumentPermission' smart constructor.
 data ModifyDocumentPermission = ModifyDocumentPermission'
-    { _mdpAccountIdsToAdd    :: !(Maybe [Text])
-    , _mdpAccountIdsToRemove :: !(Maybe [Text])
-    , _mdpName               :: !Text
-    , _mdpPermissionType     :: !DocumentPermissionType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _mdpAccountIdsToAdd    :: !(Maybe [Text])
+  , _mdpAccountIdsToRemove :: !(Maybe [Text])
+  , _mdpName               :: !Text
+  , _mdpPermissionType     :: !DocumentPermissionType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ModifyDocumentPermission' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,13 +71,14 @@
     -> DocumentPermissionType -- ^ 'mdpPermissionType'
     -> ModifyDocumentPermission
 modifyDocumentPermission pName_ pPermissionType_ =
-    ModifyDocumentPermission'
-    { _mdpAccountIdsToAdd = Nothing
-    , _mdpAccountIdsToRemove = Nothing
-    , _mdpName = pName_
-    , _mdpPermissionType = pPermissionType_
-    }
+  ModifyDocumentPermission'
+  { _mdpAccountIdsToAdd = Nothing
+  , _mdpAccountIdsToRemove = Nothing
+  , _mdpName = pName_
+  , _mdpPermissionType = pPermissionType_
+  }
 
+
 -- | The AWS user accounts that should have access to the document. The account IDs can either be a group of account IDs or /All/ .
 mdpAccountIdsToAdd :: Lens' ModifyDocumentPermission [Text]
 mdpAccountIdsToAdd = lens _mdpAccountIdsToAdd (\ s a -> s{_mdpAccountIdsToAdd = a}) . _Default . _Coerce;
@@ -103,9 +105,9 @@
                  ModifyDocumentPermissionResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable ModifyDocumentPermission
+instance Hashable ModifyDocumentPermission where
 
-instance NFData ModifyDocumentPermission
+instance NFData ModifyDocumentPermission where
 
 instance ToHeaders ModifyDocumentPermission where
         toHeaders
@@ -133,9 +135,10 @@
 
 -- | /See:/ 'modifyDocumentPermissionResponse' smart constructor.
 newtype ModifyDocumentPermissionResponse = ModifyDocumentPermissionResponse'
-    { _mdprsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _mdprsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ModifyDocumentPermissionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -145,12 +148,12 @@
     :: Int -- ^ 'mdprsResponseStatus'
     -> ModifyDocumentPermissionResponse
 modifyDocumentPermissionResponse pResponseStatus_ =
-    ModifyDocumentPermissionResponse'
-    { _mdprsResponseStatus = pResponseStatus_
-    }
+  ModifyDocumentPermissionResponse' {_mdprsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 mdprsResponseStatus :: Lens' ModifyDocumentPermissionResponse Int
 mdprsResponseStatus = lens _mdprsResponseStatus (\ s a -> s{_mdprsResponseStatus = a});
 
 instance NFData ModifyDocumentPermissionResponse
+         where
diff --git a/gen/Network/AWS/SSM/PutComplianceItems.hs b/gen/Network/AWS/SSM/PutComplianceItems.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/PutComplianceItems.hs
@@ -0,0 +1,179 @@
+{-# 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.SSM.PutComplianceItems
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a compliance type and other compliance details on a designated resource. This action lets you register custom compliance details with a resource. This call overwrites existing compliance information on the resource, so you must provide a full list of compliance items each time that you send the request.
+--
+--
+module Network.AWS.SSM.PutComplianceItems
+    (
+    -- * Creating a Request
+      putComplianceItems
+    , PutComplianceItems
+    -- * Request Lenses
+    , pciItemContentHash
+    , pciResourceId
+    , pciResourceType
+    , pciComplianceType
+    , pciExecutionSummary
+    , pciItems
+
+    -- * Destructuring the Response
+    , putComplianceItemsResponse
+    , PutComplianceItemsResponse
+    -- * Response Lenses
+    , pcirsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'putComplianceItems' smart constructor.
+data PutComplianceItems = PutComplianceItems'
+  { _pciItemContentHash  :: !(Maybe Text)
+  , _pciResourceId       :: !Text
+  , _pciResourceType     :: !Text
+  , _pciComplianceType   :: !Text
+  , _pciExecutionSummary :: !ComplianceExecutionSummary
+  , _pciItems            :: ![ComplianceItemEntry]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PutComplianceItems' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pciItemContentHash' - MD5 or SHA-256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, the request to put compliance information is ignored.
+--
+-- * 'pciResourceId' - Specify an ID for this resource. For a managed instance, this is the instance ID.
+--
+-- * 'pciResourceType' - Specify the type of resource. @ManagedInstance@ is currently the only supported resource type.
+--
+-- * 'pciComplianceType' - Specify the compliance type. For example, specify Association (for a State Manager association), Patch, or Custom:@string@ .
+--
+-- * 'pciExecutionSummary' - A summary of the call execution that includes an execution ID, the type of execution (for example, @Command@ ), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.
+--
+-- * 'pciItems' - Information about the compliance as defined by the resource type. For example, for a patch compliance type, @Items@ includes information about the PatchSeverity, Classification, etc.
+putComplianceItems
+    :: Text -- ^ 'pciResourceId'
+    -> Text -- ^ 'pciResourceType'
+    -> Text -- ^ 'pciComplianceType'
+    -> ComplianceExecutionSummary -- ^ 'pciExecutionSummary'
+    -> PutComplianceItems
+putComplianceItems pResourceId_ pResourceType_ pComplianceType_ pExecutionSummary_ =
+  PutComplianceItems'
+  { _pciItemContentHash = Nothing
+  , _pciResourceId = pResourceId_
+  , _pciResourceType = pResourceType_
+  , _pciComplianceType = pComplianceType_
+  , _pciExecutionSummary = pExecutionSummary_
+  , _pciItems = mempty
+  }
+
+
+-- | MD5 or SHA-256 content hash. The content hash is used to determine if existing information should be overwritten or ignored. If the content hashes match, the request to put compliance information is ignored.
+pciItemContentHash :: Lens' PutComplianceItems (Maybe Text)
+pciItemContentHash = lens _pciItemContentHash (\ s a -> s{_pciItemContentHash = a});
+
+-- | Specify an ID for this resource. For a managed instance, this is the instance ID.
+pciResourceId :: Lens' PutComplianceItems Text
+pciResourceId = lens _pciResourceId (\ s a -> s{_pciResourceId = a});
+
+-- | Specify the type of resource. @ManagedInstance@ is currently the only supported resource type.
+pciResourceType :: Lens' PutComplianceItems Text
+pciResourceType = lens _pciResourceType (\ s a -> s{_pciResourceType = a});
+
+-- | Specify the compliance type. For example, specify Association (for a State Manager association), Patch, or Custom:@string@ .
+pciComplianceType :: Lens' PutComplianceItems Text
+pciComplianceType = lens _pciComplianceType (\ s a -> s{_pciComplianceType = a});
+
+-- | A summary of the call execution that includes an execution ID, the type of execution (for example, @Command@ ), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.
+pciExecutionSummary :: Lens' PutComplianceItems ComplianceExecutionSummary
+pciExecutionSummary = lens _pciExecutionSummary (\ s a -> s{_pciExecutionSummary = a});
+
+-- | Information about the compliance as defined by the resource type. For example, for a patch compliance type, @Items@ includes information about the PatchSeverity, Classification, etc.
+pciItems :: Lens' PutComplianceItems [ComplianceItemEntry]
+pciItems = lens _pciItems (\ s a -> s{_pciItems = a}) . _Coerce;
+
+instance AWSRequest PutComplianceItems where
+        type Rs PutComplianceItems =
+             PutComplianceItemsResponse
+        request = postJSON ssm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 PutComplianceItemsResponse' <$> (pure (fromEnum s)))
+
+instance Hashable PutComplianceItems where
+
+instance NFData PutComplianceItems where
+
+instance ToHeaders PutComplianceItems where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.PutComplianceItems" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON PutComplianceItems where
+        toJSON PutComplianceItems'{..}
+          = object
+              (catMaybes
+                 [("ItemContentHash" .=) <$> _pciItemContentHash,
+                  Just ("ResourceId" .= _pciResourceId),
+                  Just ("ResourceType" .= _pciResourceType),
+                  Just ("ComplianceType" .= _pciComplianceType),
+                  Just ("ExecutionSummary" .= _pciExecutionSummary),
+                  Just ("Items" .= _pciItems)])
+
+instance ToPath PutComplianceItems where
+        toPath = const "/"
+
+instance ToQuery PutComplianceItems where
+        toQuery = const mempty
+
+-- | /See:/ 'putComplianceItemsResponse' smart constructor.
+newtype PutComplianceItemsResponse = PutComplianceItemsResponse'
+  { _pcirsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PutComplianceItemsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pcirsResponseStatus' - -- | The response status code.
+putComplianceItemsResponse
+    :: Int -- ^ 'pcirsResponseStatus'
+    -> PutComplianceItemsResponse
+putComplianceItemsResponse pResponseStatus_ =
+  PutComplianceItemsResponse' {_pcirsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+pcirsResponseStatus :: Lens' PutComplianceItemsResponse Int
+pcirsResponseStatus = lens _pcirsResponseStatus (\ s a -> s{_pcirsResponseStatus = a});
+
+instance NFData PutComplianceItemsResponse where
diff --git a/gen/Network/AWS/SSM/PutInventory.hs b/gen/Network/AWS/SSM/PutInventory.hs
--- a/gen/Network/AWS/SSM/PutInventory.hs
+++ b/gen/Network/AWS/SSM/PutInventory.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.PutInventory
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,19 +37,20 @@
     , pirsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'putInventory' smart constructor.
 data PutInventory = PutInventory'
-    { _piInstanceId :: !Text
-    , _piItems      :: !(List1 InventoryItem)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _piInstanceId :: !Text
+  , _piItems      :: !(List1 InventoryItem)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutInventory' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,11 +63,9 @@
     -> NonEmpty InventoryItem -- ^ 'piItems'
     -> PutInventory
 putInventory pInstanceId_ pItems_ =
-    PutInventory'
-    { _piInstanceId = pInstanceId_
-    , _piItems = _List1 # pItems_
-    }
+  PutInventory' {_piInstanceId = pInstanceId_, _piItems = _List1 # pItems_}
 
+
 -- | One or more instance IDs where you want to add or update inventory items.
 piInstanceId :: Lens' PutInventory Text
 piInstanceId = lens _piInstanceId (\ s a -> s{_piInstanceId = a});
@@ -83,9 +82,9 @@
               (\ s h x ->
                  PutInventoryResponse' <$> (pure (fromEnum s)))
 
-instance Hashable PutInventory
+instance Hashable PutInventory where
 
-instance NFData PutInventory
+instance NFData PutInventory where
 
 instance ToHeaders PutInventory where
         toHeaders
@@ -111,9 +110,10 @@
 
 -- | /See:/ 'putInventoryResponse' smart constructor.
 newtype PutInventoryResponse = PutInventoryResponse'
-    { _pirsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _pirsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutInventoryResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -123,12 +123,11 @@
     :: Int -- ^ 'pirsResponseStatus'
     -> PutInventoryResponse
 putInventoryResponse pResponseStatus_ =
-    PutInventoryResponse'
-    { _pirsResponseStatus = pResponseStatus_
-    }
+  PutInventoryResponse' {_pirsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 pirsResponseStatus :: Lens' PutInventoryResponse Int
 pirsResponseStatus = lens _pirsResponseStatus (\ s a -> s{_pirsResponseStatus = a});
 
-instance NFData PutInventoryResponse
+instance NFData PutInventoryResponse where
diff --git a/gen/Network/AWS/SSM/PutParameter.hs b/gen/Network/AWS/SSM/PutParameter.hs
--- a/gen/Network/AWS/SSM/PutParameter.hs
+++ b/gen/Network/AWS/SSM/PutParameter.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.PutParameter
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Add one or more paramaters to the system.
+-- Add one or more parameters to the system.
 --
 --
 module Network.AWS.SSM.PutParameter
@@ -28,6 +28,7 @@
     , PutParameter
     -- * Request Lenses
     , ppKeyId
+    , ppAllowedPattern
     , ppOverwrite
     , ppDescription
     , ppName
@@ -38,34 +39,39 @@
     , putParameterResponse
     , PutParameterResponse
     -- * Response Lenses
+    , pprsVersion
     , pprsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'putParameter' smart constructor.
 data PutParameter = PutParameter'
-    { _ppKeyId       :: !(Maybe Text)
-    , _ppOverwrite   :: !(Maybe Bool)
-    , _ppDescription :: !(Maybe Text)
-    , _ppName        :: !Text
-    , _ppValue       :: !Text
-    , _ppType        :: !ParameterType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _ppKeyId          :: !(Maybe Text)
+  , _ppAllowedPattern :: !(Maybe Text)
+  , _ppOverwrite      :: !(Maybe Bool)
+  , _ppDescription    :: !(Maybe Text)
+  , _ppName           :: !Text
+  , _ppValue          :: !Text
+  , _ppType           :: !ParameterType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutParameter' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ppKeyId' - The parameter key ID that you want to add to the system.
+-- * 'ppKeyId' - The KMS Key ID that you want to use to encrypt a parameter when you choose the SecureString data type. If you don't specify a key ID, the system uses the default key associated with your AWS account.
 --
--- * 'ppOverwrite' - Overwrite an existing parameter.
+-- * 'ppAllowedPattern' - A regular expression used to validate the parameter value. For example, for String types with values restricted to numbers, you can specify the following: AllowedPattern=^\d+$
 --
+-- * 'ppOverwrite' - Overwrite an existing parameter. If not specified, will default to "false".
+--
 -- * 'ppDescription' - Information about the parameter that you want to add to the system
 --
 -- * 'ppName' - The name of the parameter that you want to add to the system.
@@ -79,20 +85,26 @@
     -> ParameterType -- ^ 'ppType'
     -> PutParameter
 putParameter pName_ pValue_ pType_ =
-    PutParameter'
-    { _ppKeyId = Nothing
-    , _ppOverwrite = Nothing
-    , _ppDescription = Nothing
-    , _ppName = pName_
-    , _ppValue = pValue_
-    , _ppType = pType_
-    }
+  PutParameter'
+  { _ppKeyId = Nothing
+  , _ppAllowedPattern = Nothing
+  , _ppOverwrite = Nothing
+  , _ppDescription = Nothing
+  , _ppName = pName_
+  , _ppValue = pValue_
+  , _ppType = pType_
+  }
 
--- | The parameter key ID that you want to add to the system.
+
+-- | The KMS Key ID that you want to use to encrypt a parameter when you choose the SecureString data type. If you don't specify a key ID, the system uses the default key associated with your AWS account.
 ppKeyId :: Lens' PutParameter (Maybe Text)
 ppKeyId = lens _ppKeyId (\ s a -> s{_ppKeyId = a});
 
--- | Overwrite an existing parameter.
+-- | A regular expression used to validate the parameter value. For example, for String types with values restricted to numbers, you can specify the following: AllowedPattern=^\d+$
+ppAllowedPattern :: Lens' PutParameter (Maybe Text)
+ppAllowedPattern = lens _ppAllowedPattern (\ s a -> s{_ppAllowedPattern = a});
+
+-- | Overwrite an existing parameter. If not specified, will default to "false".
 ppOverwrite :: Lens' PutParameter (Maybe Bool)
 ppOverwrite = lens _ppOverwrite (\ s a -> s{_ppOverwrite = a});
 
@@ -116,13 +128,14 @@
         type Rs PutParameter = PutParameterResponse
         request = postJSON ssm
         response
-          = receiveEmpty
+          = receiveJSON
               (\ s h x ->
-                 PutParameterResponse' <$> (pure (fromEnum s)))
+                 PutParameterResponse' <$>
+                   (x .?> "Version") <*> (pure (fromEnum s)))
 
-instance Hashable PutParameter
+instance Hashable PutParameter where
 
-instance NFData PutParameter
+instance NFData PutParameter where
 
 instance ToHeaders PutParameter where
         toHeaders
@@ -138,6 +151,7 @@
           = object
               (catMaybes
                  [("KeyId" .=) <$> _ppKeyId,
+                  ("AllowedPattern" .=) <$> _ppAllowedPattern,
                   ("Overwrite" .=) <$> _ppOverwrite,
                   ("Description" .=) <$> _ppDescription,
                   Just ("Name" .= _ppName), Just ("Value" .= _ppValue),
@@ -150,25 +164,33 @@
         toQuery = const mempty
 
 -- | /See:/ 'putParameterResponse' smart constructor.
-newtype PutParameterResponse = PutParameterResponse'
-    { _pprsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+data PutParameterResponse = PutParameterResponse'
+  { _pprsVersion        :: !(Maybe Integer)
+  , _pprsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PutParameterResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pprsVersion' - The new version number of a parameter. If you edit a parameter value, Parameter Store automatically creates a new version and assigns this new version a unique ID. You can reference a parameter version ID in API actions or in Systems Manager documents (SSM documents). By default, if you don't specify a specific version, the system returns the latest parameter value when a parameter is called.
+--
 -- * 'pprsResponseStatus' - -- | The response status code.
 putParameterResponse
     :: Int -- ^ 'pprsResponseStatus'
     -> PutParameterResponse
 putParameterResponse pResponseStatus_ =
-    PutParameterResponse'
-    { _pprsResponseStatus = pResponseStatus_
-    }
+  PutParameterResponse'
+  {_pprsVersion = Nothing, _pprsResponseStatus = pResponseStatus_}
 
+
+-- | The new version number of a parameter. If you edit a parameter value, Parameter Store automatically creates a new version and assigns this new version a unique ID. You can reference a parameter version ID in API actions or in Systems Manager documents (SSM documents). By default, if you don't specify a specific version, the system returns the latest parameter value when a parameter is called.
+pprsVersion :: Lens' PutParameterResponse (Maybe Integer)
+pprsVersion = lens _pprsVersion (\ s a -> s{_pprsVersion = a});
+
 -- | -- | The response status code.
 pprsResponseStatus :: Lens' PutParameterResponse Int
 pprsResponseStatus = lens _pprsResponseStatus (\ s a -> s{_pprsResponseStatus = a});
 
-instance NFData PutParameterResponse
+instance NFData PutParameterResponse where
diff --git a/gen/Network/AWS/SSM/RegisterDefaultPatchBaseline.hs b/gen/Network/AWS/SSM/RegisterDefaultPatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/RegisterDefaultPatchBaseline.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.SSM.RegisterDefaultPatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Defines the default patch baseline.
+--
+--
+module Network.AWS.SSM.RegisterDefaultPatchBaseline
+    (
+    -- * Creating a Request
+      registerDefaultPatchBaseline
+    , RegisterDefaultPatchBaseline
+    -- * Request Lenses
+    , rdpbBaselineId
+
+    -- * Destructuring the Response
+    , registerDefaultPatchBaselineResponse
+    , RegisterDefaultPatchBaselineResponse
+    -- * Response Lenses
+    , rdpbrsBaselineId
+    , rdpbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'registerDefaultPatchBaseline' smart constructor.
+newtype RegisterDefaultPatchBaseline = RegisterDefaultPatchBaseline'
+  { _rdpbBaselineId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterDefaultPatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdpbBaselineId' - The ID of the patch baseline that should be the default patch baseline.
+registerDefaultPatchBaseline
+    :: Text -- ^ 'rdpbBaselineId'
+    -> RegisterDefaultPatchBaseline
+registerDefaultPatchBaseline pBaselineId_ =
+  RegisterDefaultPatchBaseline' {_rdpbBaselineId = pBaselineId_}
+
+
+-- | The ID of the patch baseline that should be the default patch baseline.
+rdpbBaselineId :: Lens' RegisterDefaultPatchBaseline Text
+rdpbBaselineId = lens _rdpbBaselineId (\ s a -> s{_rdpbBaselineId = a});
+
+instance AWSRequest RegisterDefaultPatchBaseline
+         where
+        type Rs RegisterDefaultPatchBaseline =
+             RegisterDefaultPatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterDefaultPatchBaselineResponse' <$>
+                   (x .?> "BaselineId") <*> (pure (fromEnum s)))
+
+instance Hashable RegisterDefaultPatchBaseline where
+
+instance NFData RegisterDefaultPatchBaseline where
+
+instance ToHeaders RegisterDefaultPatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.RegisterDefaultPatchBaseline" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterDefaultPatchBaseline where
+        toJSON RegisterDefaultPatchBaseline'{..}
+          = object
+              (catMaybes [Just ("BaselineId" .= _rdpbBaselineId)])
+
+instance ToPath RegisterDefaultPatchBaseline where
+        toPath = const "/"
+
+instance ToQuery RegisterDefaultPatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'registerDefaultPatchBaselineResponse' smart constructor.
+data RegisterDefaultPatchBaselineResponse = RegisterDefaultPatchBaselineResponse'
+  { _rdpbrsBaselineId     :: !(Maybe Text)
+  , _rdpbrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterDefaultPatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdpbrsBaselineId' - The ID of the default patch baseline.
+--
+-- * 'rdpbrsResponseStatus' - -- | The response status code.
+registerDefaultPatchBaselineResponse
+    :: Int -- ^ 'rdpbrsResponseStatus'
+    -> RegisterDefaultPatchBaselineResponse
+registerDefaultPatchBaselineResponse pResponseStatus_ =
+  RegisterDefaultPatchBaselineResponse'
+  {_rdpbrsBaselineId = Nothing, _rdpbrsResponseStatus = pResponseStatus_}
+
+
+-- | The ID of the default patch baseline.
+rdpbrsBaselineId :: Lens' RegisterDefaultPatchBaselineResponse (Maybe Text)
+rdpbrsBaselineId = lens _rdpbrsBaselineId (\ s a -> s{_rdpbrsBaselineId = a});
+
+-- | -- | The response status code.
+rdpbrsResponseStatus :: Lens' RegisterDefaultPatchBaselineResponse Int
+rdpbrsResponseStatus = lens _rdpbrsResponseStatus (\ s a -> s{_rdpbrsResponseStatus = a});
+
+instance NFData RegisterDefaultPatchBaselineResponse
+         where
diff --git a/gen/Network/AWS/SSM/RegisterPatchBaselineForPatchGroup.hs b/gen/Network/AWS/SSM/RegisterPatchBaselineForPatchGroup.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/RegisterPatchBaselineForPatchGroup.hs
@@ -0,0 +1,168 @@
+{-# 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.SSM.RegisterPatchBaselineForPatchGroup
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a patch baseline for a patch group.
+--
+--
+module Network.AWS.SSM.RegisterPatchBaselineForPatchGroup
+    (
+    -- * Creating a Request
+      registerPatchBaselineForPatchGroup
+    , RegisterPatchBaselineForPatchGroup
+    -- * Request Lenses
+    , rpbfpgBaselineId
+    , rpbfpgPatchGroup
+
+    -- * Destructuring the Response
+    , registerPatchBaselineForPatchGroupResponse
+    , RegisterPatchBaselineForPatchGroupResponse
+    -- * Response Lenses
+    , rpbfpgrsBaselineId
+    , rpbfpgrsPatchGroup
+    , rpbfpgrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'registerPatchBaselineForPatchGroup' smart constructor.
+data RegisterPatchBaselineForPatchGroup = RegisterPatchBaselineForPatchGroup'
+  { _rpbfpgBaselineId :: !Text
+  , _rpbfpgPatchGroup :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterPatchBaselineForPatchGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpbfpgBaselineId' - The ID of the patch baseline to register the patch group with.
+--
+-- * 'rpbfpgPatchGroup' - The name of the patch group that should be registered with the patch baseline.
+registerPatchBaselineForPatchGroup
+    :: Text -- ^ 'rpbfpgBaselineId'
+    -> Text -- ^ 'rpbfpgPatchGroup'
+    -> RegisterPatchBaselineForPatchGroup
+registerPatchBaselineForPatchGroup pBaselineId_ pPatchGroup_ =
+  RegisterPatchBaselineForPatchGroup'
+  {_rpbfpgBaselineId = pBaselineId_, _rpbfpgPatchGroup = pPatchGroup_}
+
+
+-- | The ID of the patch baseline to register the patch group with.
+rpbfpgBaselineId :: Lens' RegisterPatchBaselineForPatchGroup Text
+rpbfpgBaselineId = lens _rpbfpgBaselineId (\ s a -> s{_rpbfpgBaselineId = a});
+
+-- | The name of the patch group that should be registered with the patch baseline.
+rpbfpgPatchGroup :: Lens' RegisterPatchBaselineForPatchGroup Text
+rpbfpgPatchGroup = lens _rpbfpgPatchGroup (\ s a -> s{_rpbfpgPatchGroup = a});
+
+instance AWSRequest
+           RegisterPatchBaselineForPatchGroup
+         where
+        type Rs RegisterPatchBaselineForPatchGroup =
+             RegisterPatchBaselineForPatchGroupResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterPatchBaselineForPatchGroupResponse' <$>
+                   (x .?> "BaselineId") <*> (x .?> "PatchGroup") <*>
+                     (pure (fromEnum s)))
+
+instance Hashable RegisterPatchBaselineForPatchGroup
+         where
+
+instance NFData RegisterPatchBaselineForPatchGroup
+         where
+
+instance ToHeaders RegisterPatchBaselineForPatchGroup
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.RegisterPatchBaselineForPatchGroup" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterPatchBaselineForPatchGroup
+         where
+        toJSON RegisterPatchBaselineForPatchGroup'{..}
+          = object
+              (catMaybes
+                 [Just ("BaselineId" .= _rpbfpgBaselineId),
+                  Just ("PatchGroup" .= _rpbfpgPatchGroup)])
+
+instance ToPath RegisterPatchBaselineForPatchGroup
+         where
+        toPath = const "/"
+
+instance ToQuery RegisterPatchBaselineForPatchGroup
+         where
+        toQuery = const mempty
+
+-- | /See:/ 'registerPatchBaselineForPatchGroupResponse' smart constructor.
+data RegisterPatchBaselineForPatchGroupResponse = RegisterPatchBaselineForPatchGroupResponse'
+  { _rpbfpgrsBaselineId     :: !(Maybe Text)
+  , _rpbfpgrsPatchGroup     :: !(Maybe Text)
+  , _rpbfpgrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RegisterPatchBaselineForPatchGroupResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rpbfpgrsBaselineId' - The ID of the patch baseline the patch group was registered with.
+--
+-- * 'rpbfpgrsPatchGroup' - The name of the patch group registered with the patch baseline.
+--
+-- * 'rpbfpgrsResponseStatus' - -- | The response status code.
+registerPatchBaselineForPatchGroupResponse
+    :: Int -- ^ 'rpbfpgrsResponseStatus'
+    -> RegisterPatchBaselineForPatchGroupResponse
+registerPatchBaselineForPatchGroupResponse pResponseStatus_ =
+  RegisterPatchBaselineForPatchGroupResponse'
+  { _rpbfpgrsBaselineId = Nothing
+  , _rpbfpgrsPatchGroup = Nothing
+  , _rpbfpgrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The ID of the patch baseline the patch group was registered with.
+rpbfpgrsBaselineId :: Lens' RegisterPatchBaselineForPatchGroupResponse (Maybe Text)
+rpbfpgrsBaselineId = lens _rpbfpgrsBaselineId (\ s a -> s{_rpbfpgrsBaselineId = a});
+
+-- | The name of the patch group registered with the patch baseline.
+rpbfpgrsPatchGroup :: Lens' RegisterPatchBaselineForPatchGroupResponse (Maybe Text)
+rpbfpgrsPatchGroup = lens _rpbfpgrsPatchGroup (\ s a -> s{_rpbfpgrsPatchGroup = a});
+
+-- | -- | The response status code.
+rpbfpgrsResponseStatus :: Lens' RegisterPatchBaselineForPatchGroupResponse Int
+rpbfpgrsResponseStatus = lens _rpbfpgrsResponseStatus (\ s a -> s{_rpbfpgrsResponseStatus = a});
+
+instance NFData
+           RegisterPatchBaselineForPatchGroupResponse
+         where
diff --git a/gen/Network/AWS/SSM/RegisterTargetWithMaintenanceWindow.hs b/gen/Network/AWS/SSM/RegisterTargetWithMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/RegisterTargetWithMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/RegisterTargetWithMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.RegisterTargetWithMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -29,6 +29,8 @@
     -- * Request Lenses
     , rClientToken
     , rOwnerInformation
+    , rName
+    , rDescription
     , rWindowId
     , rResourceType
     , rTargets
@@ -41,22 +43,25 @@
     , rrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'registerTargetWithMaintenanceWindow' smart constructor.
 data RegisterTargetWithMaintenanceWindow = RegisterTargetWithMaintenanceWindow'
-    { _rClientToken      :: !(Maybe Text)
-    , _rOwnerInformation :: !(Maybe (Sensitive Text))
-    , _rWindowId         :: !Text
-    , _rResourceType     :: !MaintenanceWindowResourceType
-    , _rTargets          :: ![Target]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rClientToken      :: !(Maybe Text)
+  , _rOwnerInformation :: !(Maybe (Sensitive Text))
+  , _rName             :: !(Maybe Text)
+  , _rDescription      :: !(Maybe (Sensitive Text))
+  , _rWindowId         :: !Text
+  , _rResourceType     :: !MaintenanceWindowResourceType
+  , _rTargets          :: ![Target]
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterTargetWithMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -65,6 +70,10 @@
 --
 -- * 'rOwnerInformation' - User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
 --
+-- * 'rName' - An optional name for the target.
+--
+-- * 'rDescription' - An optional description for the target.
+--
 -- * 'rWindowId' - The ID of the Maintenance Window the target should be registered with.
 --
 -- * 'rResourceType' - The type of target being registered with the Maintenance Window.
@@ -75,14 +84,17 @@
     -> MaintenanceWindowResourceType -- ^ 'rResourceType'
     -> RegisterTargetWithMaintenanceWindow
 registerTargetWithMaintenanceWindow pWindowId_ pResourceType_ =
-    RegisterTargetWithMaintenanceWindow'
-    { _rClientToken = Nothing
-    , _rOwnerInformation = Nothing
-    , _rWindowId = pWindowId_
-    , _rResourceType = pResourceType_
-    , _rTargets = mempty
-    }
+  RegisterTargetWithMaintenanceWindow'
+  { _rClientToken = Nothing
+  , _rOwnerInformation = Nothing
+  , _rName = Nothing
+  , _rDescription = Nothing
+  , _rWindowId = pWindowId_
+  , _rResourceType = pResourceType_
+  , _rTargets = mempty
+  }
 
+
 -- | User-provided idempotency token.
 rClientToken :: Lens' RegisterTargetWithMaintenanceWindow (Maybe Text)
 rClientToken = lens _rClientToken (\ s a -> s{_rClientToken = a});
@@ -91,6 +103,14 @@
 rOwnerInformation :: Lens' RegisterTargetWithMaintenanceWindow (Maybe Text)
 rOwnerInformation = lens _rOwnerInformation (\ s a -> s{_rOwnerInformation = a}) . mapping _Sensitive;
 
+-- | An optional name for the target.
+rName :: Lens' RegisterTargetWithMaintenanceWindow (Maybe Text)
+rName = lens _rName (\ s a -> s{_rName = a});
+
+-- | An optional description for the target.
+rDescription :: Lens' RegisterTargetWithMaintenanceWindow (Maybe Text)
+rDescription = lens _rDescription (\ s a -> s{_rDescription = a}) . mapping _Sensitive;
+
 -- | The ID of the Maintenance Window the target should be registered with.
 rWindowId :: Lens' RegisterTargetWithMaintenanceWindow Text
 rWindowId = lens _rWindowId (\ s a -> s{_rWindowId = a});
@@ -104,7 +124,8 @@
 rTargets = lens _rTargets (\ s a -> s{_rTargets = a}) . _Coerce;
 
 instance AWSRequest
-         RegisterTargetWithMaintenanceWindow where
+           RegisterTargetWithMaintenanceWindow
+         where
         type Rs RegisterTargetWithMaintenanceWindow =
              RegisterTargetWithMaintenanceWindowResponse
         request = postJSON ssm
@@ -115,11 +136,14 @@
                    (x .?> "WindowTargetId") <*> (pure (fromEnum s)))
 
 instance Hashable RegisterTargetWithMaintenanceWindow
+         where
 
 instance NFData RegisterTargetWithMaintenanceWindow
+         where
 
 instance ToHeaders
-         RegisterTargetWithMaintenanceWindow where
+           RegisterTargetWithMaintenanceWindow
+         where
         toHeaders
           = const
               (mconcat
@@ -136,6 +160,8 @@
               (catMaybes
                  [("ClientToken" .=) <$> _rClientToken,
                   ("OwnerInformation" .=) <$> _rOwnerInformation,
+                  ("Name" .=) <$> _rName,
+                  ("Description" .=) <$> _rDescription,
                   Just ("WindowId" .= _rWindowId),
                   Just ("ResourceType" .= _rResourceType),
                   Just ("Targets" .= _rTargets)])
@@ -150,10 +176,11 @@
 
 -- | /See:/ 'registerTargetWithMaintenanceWindowResponse' smart constructor.
 data RegisterTargetWithMaintenanceWindowResponse = RegisterTargetWithMaintenanceWindowResponse'
-    { _rrsWindowTargetId :: !(Maybe Text)
-    , _rrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rrsWindowTargetId :: !(Maybe Text)
+  , _rrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterTargetWithMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -165,11 +192,10 @@
     :: Int -- ^ 'rrsResponseStatus'
     -> RegisterTargetWithMaintenanceWindowResponse
 registerTargetWithMaintenanceWindowResponse pResponseStatus_ =
-    RegisterTargetWithMaintenanceWindowResponse'
-    { _rrsWindowTargetId = Nothing
-    , _rrsResponseStatus = pResponseStatus_
-    }
+  RegisterTargetWithMaintenanceWindowResponse'
+  {_rrsWindowTargetId = Nothing, _rrsResponseStatus = pResponseStatus_}
 
+
 -- | The ID of the target definition in this Maintenance Window.
 rrsWindowTargetId :: Lens' RegisterTargetWithMaintenanceWindowResponse (Maybe Text)
 rrsWindowTargetId = lens _rrsWindowTargetId (\ s a -> s{_rrsWindowTargetId = a});
@@ -179,4 +205,5 @@
 rrsResponseStatus = lens _rrsResponseStatus (\ s a -> s{_rrsResponseStatus = a});
 
 instance NFData
-         RegisterTargetWithMaintenanceWindowResponse
+           RegisterTargetWithMaintenanceWindowResponse
+         where
diff --git a/gen/Network/AWS/SSM/RegisterTaskWithMaintenanceWindow.hs b/gen/Network/AWS/SSM/RegisterTaskWithMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/RegisterTaskWithMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/RegisterTaskWithMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.RegisterTaskWithMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -30,7 +30,10 @@
     , rtwmwTaskParameters
     , rtwmwPriority
     , rtwmwClientToken
+    , rtwmwTaskInvocationParameters
+    , rtwmwName
     , rtwmwLoggingInfo
+    , rtwmwDescription
     , rtwmwWindowId
     , rtwmwTargets
     , rtwmwTaskARN
@@ -47,28 +50,32 @@
     , rtwmwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'registerTaskWithMaintenanceWindow' smart constructor.
 data RegisterTaskWithMaintenanceWindow = RegisterTaskWithMaintenanceWindow'
-    { _rtwmwTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
-    , _rtwmwPriority       :: !(Maybe Nat)
-    , _rtwmwClientToken    :: !(Maybe Text)
-    , _rtwmwLoggingInfo    :: !(Maybe LoggingInfo)
-    , _rtwmwWindowId       :: !Text
-    , _rtwmwTargets        :: ![Target]
-    , _rtwmwTaskARN        :: !Text
-    , _rtwmwServiceRoleARN :: !Text
-    , _rtwmwTaskType       :: !MaintenanceWindowTaskType
-    , _rtwmwMaxConcurrency :: !Text
-    , _rtwmwMaxErrors      :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rtwmwTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
+  , _rtwmwPriority :: !(Maybe Nat)
+  , _rtwmwClientToken :: !(Maybe Text)
+  , _rtwmwTaskInvocationParameters :: !(Maybe MaintenanceWindowTaskInvocationParameters)
+  , _rtwmwName :: !(Maybe Text)
+  , _rtwmwLoggingInfo :: !(Maybe LoggingInfo)
+  , _rtwmwDescription :: !(Maybe (Sensitive Text))
+  , _rtwmwWindowId :: !Text
+  , _rtwmwTargets :: ![Target]
+  , _rtwmwTaskARN :: !Text
+  , _rtwmwServiceRoleARN :: !Text
+  , _rtwmwTaskType :: !MaintenanceWindowTaskType
+  , _rtwmwMaxConcurrency :: !Text
+  , _rtwmwMaxErrors :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterTaskWithMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -79,8 +86,14 @@
 --
 -- * 'rtwmwClientToken' - User-provided idempotency token.
 --
+-- * 'rtwmwTaskInvocationParameters' - The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.
+--
+-- * 'rtwmwName' - An optional name for the task.
+--
 -- * 'rtwmwLoggingInfo' - A structure containing information about an Amazon S3 bucket to write instance-level logs to.
 --
+-- * 'rtwmwDescription' - An optional description for the task.
+--
 -- * 'rtwmwWindowId' - The id of the Maintenance Window the task should be added to.
 --
 -- * 'rtwmwTargets' - The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
@@ -103,20 +116,24 @@
     -> Text -- ^ 'rtwmwMaxErrors'
     -> RegisterTaskWithMaintenanceWindow
 registerTaskWithMaintenanceWindow pWindowId_ pTaskARN_ pServiceRoleARN_ pTaskType_ pMaxConcurrency_ pMaxErrors_ =
-    RegisterTaskWithMaintenanceWindow'
-    { _rtwmwTaskParameters = Nothing
-    , _rtwmwPriority = Nothing
-    , _rtwmwClientToken = Nothing
-    , _rtwmwLoggingInfo = Nothing
-    , _rtwmwWindowId = pWindowId_
-    , _rtwmwTargets = mempty
-    , _rtwmwTaskARN = pTaskARN_
-    , _rtwmwServiceRoleARN = pServiceRoleARN_
-    , _rtwmwTaskType = pTaskType_
-    , _rtwmwMaxConcurrency = pMaxConcurrency_
-    , _rtwmwMaxErrors = pMaxErrors_
-    }
+  RegisterTaskWithMaintenanceWindow'
+  { _rtwmwTaskParameters = Nothing
+  , _rtwmwPriority = Nothing
+  , _rtwmwClientToken = Nothing
+  , _rtwmwTaskInvocationParameters = Nothing
+  , _rtwmwName = Nothing
+  , _rtwmwLoggingInfo = Nothing
+  , _rtwmwDescription = Nothing
+  , _rtwmwWindowId = pWindowId_
+  , _rtwmwTargets = mempty
+  , _rtwmwTaskARN = pTaskARN_
+  , _rtwmwServiceRoleARN = pServiceRoleARN_
+  , _rtwmwTaskType = pTaskType_
+  , _rtwmwMaxConcurrency = pMaxConcurrency_
+  , _rtwmwMaxErrors = pMaxErrors_
+  }
 
+
 -- | The parameters that should be passed to the task when it is executed.
 rtwmwTaskParameters :: Lens' RegisterTaskWithMaintenanceWindow (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
 rtwmwTaskParameters = lens _rtwmwTaskParameters (\ s a -> s{_rtwmwTaskParameters = a}) . mapping (_Sensitive . _Map);
@@ -129,10 +146,22 @@
 rtwmwClientToken :: Lens' RegisterTaskWithMaintenanceWindow (Maybe Text)
 rtwmwClientToken = lens _rtwmwClientToken (\ s a -> s{_rtwmwClientToken = a});
 
+-- | The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.
+rtwmwTaskInvocationParameters :: Lens' RegisterTaskWithMaintenanceWindow (Maybe MaintenanceWindowTaskInvocationParameters)
+rtwmwTaskInvocationParameters = lens _rtwmwTaskInvocationParameters (\ s a -> s{_rtwmwTaskInvocationParameters = a});
+
+-- | An optional name for the task.
+rtwmwName :: Lens' RegisterTaskWithMaintenanceWindow (Maybe Text)
+rtwmwName = lens _rtwmwName (\ s a -> s{_rtwmwName = a});
+
 -- | A structure containing information about an Amazon S3 bucket to write instance-level logs to.
 rtwmwLoggingInfo :: Lens' RegisterTaskWithMaintenanceWindow (Maybe LoggingInfo)
 rtwmwLoggingInfo = lens _rtwmwLoggingInfo (\ s a -> s{_rtwmwLoggingInfo = a});
 
+-- | An optional description for the task.
+rtwmwDescription :: Lens' RegisterTaskWithMaintenanceWindow (Maybe Text)
+rtwmwDescription = lens _rtwmwDescription (\ s a -> s{_rtwmwDescription = a}) . mapping _Sensitive;
+
 -- | The id of the Maintenance Window the task should be added to.
 rtwmwWindowId :: Lens' RegisterTaskWithMaintenanceWindow Text
 rtwmwWindowId = lens _rtwmwWindowId (\ s a -> s{_rtwmwWindowId = a});
@@ -173,8 +202,10 @@
                    (x .?> "WindowTaskId") <*> (pure (fromEnum s)))
 
 instance Hashable RegisterTaskWithMaintenanceWindow
+         where
 
 instance NFData RegisterTaskWithMaintenanceWindow
+         where
 
 instance ToHeaders RegisterTaskWithMaintenanceWindow
          where
@@ -195,7 +226,11 @@
                  [("TaskParameters" .=) <$> _rtwmwTaskParameters,
                   ("Priority" .=) <$> _rtwmwPriority,
                   ("ClientToken" .=) <$> _rtwmwClientToken,
+                  ("TaskInvocationParameters" .=) <$>
+                    _rtwmwTaskInvocationParameters,
+                  ("Name" .=) <$> _rtwmwName,
                   ("LoggingInfo" .=) <$> _rtwmwLoggingInfo,
+                  ("Description" .=) <$> _rtwmwDescription,
                   Just ("WindowId" .= _rtwmwWindowId),
                   Just ("Targets" .= _rtwmwTargets),
                   Just ("TaskArn" .= _rtwmwTaskARN),
@@ -214,10 +249,11 @@
 
 -- | /See:/ 'registerTaskWithMaintenanceWindowResponse' smart constructor.
 data RegisterTaskWithMaintenanceWindowResponse = RegisterTaskWithMaintenanceWindowResponse'
-    { _rtwmwrsWindowTaskId   :: !(Maybe Text)
-    , _rtwmwrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rtwmwrsWindowTaskId   :: !(Maybe Text)
+  , _rtwmwrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RegisterTaskWithMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -229,11 +265,10 @@
     :: Int -- ^ 'rtwmwrsResponseStatus'
     -> RegisterTaskWithMaintenanceWindowResponse
 registerTaskWithMaintenanceWindowResponse pResponseStatus_ =
-    RegisterTaskWithMaintenanceWindowResponse'
-    { _rtwmwrsWindowTaskId = Nothing
-    , _rtwmwrsResponseStatus = pResponseStatus_
-    }
+  RegisterTaskWithMaintenanceWindowResponse'
+  {_rtwmwrsWindowTaskId = Nothing, _rtwmwrsResponseStatus = pResponseStatus_}
 
+
 -- | The id of the task in the Maintenance Window.
 rtwmwrsWindowTaskId :: Lens' RegisterTaskWithMaintenanceWindowResponse (Maybe Text)
 rtwmwrsWindowTaskId = lens _rtwmwrsWindowTaskId (\ s a -> s{_rtwmwrsWindowTaskId = a});
@@ -243,4 +278,5 @@
 rtwmwrsResponseStatus = lens _rtwmwrsResponseStatus (\ s a -> s{_rtwmwrsResponseStatus = a});
 
 instance NFData
-         RegisterTaskWithMaintenanceWindowResponse
+           RegisterTaskWithMaintenanceWindowResponse
+         where
diff --git a/gen/Network/AWS/SSM/RemoveTagsFromResource.hs b/gen/Network/AWS/SSM/RemoveTagsFromResource.hs
--- a/gen/Network/AWS/SSM/RemoveTagsFromResource.hs
+++ b/gen/Network/AWS/SSM/RemoveTagsFromResource.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.RemoveTagsFromResource
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,20 +38,21 @@
     , rtfrrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'removeTagsFromResource' smart constructor.
 data RemoveTagsFromResource = RemoveTagsFromResource'
-    { _rtfrResourceType :: !ResourceTypeForTagging
-    , _rtfrResourceId   :: !Text
-    , _rtfrTagKeys      :: ![Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rtfrResourceType :: !ResourceTypeForTagging
+  , _rtfrResourceId   :: !Text
+  , _rtfrTagKeys      :: ![Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RemoveTagsFromResource' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,12 +67,13 @@
     -> Text -- ^ 'rtfrResourceId'
     -> RemoveTagsFromResource
 removeTagsFromResource pResourceType_ pResourceId_ =
-    RemoveTagsFromResource'
-    { _rtfrResourceType = pResourceType_
-    , _rtfrResourceId = pResourceId_
-    , _rtfrTagKeys = mempty
-    }
+  RemoveTagsFromResource'
+  { _rtfrResourceType = pResourceType_
+  , _rtfrResourceId = pResourceId_
+  , _rtfrTagKeys = mempty
+  }
 
+
 -- | The type of resource of which you want to remove a tag.
 rtfrResourceType :: Lens' RemoveTagsFromResource ResourceTypeForTagging
 rtfrResourceType = lens _rtfrResourceType (\ s a -> s{_rtfrResourceType = a});
@@ -94,9 +96,9 @@
                  RemoveTagsFromResourceResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable RemoveTagsFromResource
+instance Hashable RemoveTagsFromResource where
 
-instance NFData RemoveTagsFromResource
+instance NFData RemoveTagsFromResource where
 
 instance ToHeaders RemoveTagsFromResource where
         toHeaders
@@ -123,9 +125,10 @@
 
 -- | /See:/ 'removeTagsFromResourceResponse' smart constructor.
 newtype RemoveTagsFromResourceResponse = RemoveTagsFromResourceResponse'
-    { _rtfrrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _rtfrrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RemoveTagsFromResourceResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -135,12 +138,11 @@
     :: Int -- ^ 'rtfrrsResponseStatus'
     -> RemoveTagsFromResourceResponse
 removeTagsFromResourceResponse pResponseStatus_ =
-    RemoveTagsFromResourceResponse'
-    { _rtfrrsResponseStatus = pResponseStatus_
-    }
+  RemoveTagsFromResourceResponse' {_rtfrrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 rtfrrsResponseStatus :: Lens' RemoveTagsFromResourceResponse Int
 rtfrrsResponseStatus = lens _rtfrrsResponseStatus (\ s a -> s{_rtfrrsResponseStatus = a});
 
-instance NFData RemoveTagsFromResourceResponse
+instance NFData RemoveTagsFromResourceResponse where
diff --git a/gen/Network/AWS/SSM/SendAutomationSignal.hs b/gen/Network/AWS/SSM/SendAutomationSignal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/SendAutomationSignal.hs
@@ -0,0 +1,150 @@
+{-# 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.SSM.SendAutomationSignal
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sends a signal to an Automation execution to change the current behavior or status of the execution.
+--
+--
+module Network.AWS.SSM.SendAutomationSignal
+    (
+    -- * Creating a Request
+      sendAutomationSignal
+    , SendAutomationSignal
+    -- * Request Lenses
+    , sasPayload
+    , sasAutomationExecutionId
+    , sasSignalType
+
+    -- * Destructuring the Response
+    , sendAutomationSignalResponse
+    , SendAutomationSignalResponse
+    -- * Response Lenses
+    , sasrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'sendAutomationSignal' smart constructor.
+data SendAutomationSignal = SendAutomationSignal'
+  { _sasPayload               :: !(Maybe (Map Text [Text]))
+  , _sasAutomationExecutionId :: !Text
+  , _sasSignalType            :: !SignalType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SendAutomationSignal' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sasPayload' - The data sent with the signal. The data schema depends on the type of signal used in the request.
+--
+-- * 'sasAutomationExecutionId' - The unique identifier for an existing Automation execution that you want to send the signal to.
+--
+-- * 'sasSignalType' - The type of signal. Valid signal types include the following: Approve and Reject
+sendAutomationSignal
+    :: Text -- ^ 'sasAutomationExecutionId'
+    -> SignalType -- ^ 'sasSignalType'
+    -> SendAutomationSignal
+sendAutomationSignal pAutomationExecutionId_ pSignalType_ =
+  SendAutomationSignal'
+  { _sasPayload = Nothing
+  , _sasAutomationExecutionId = pAutomationExecutionId_
+  , _sasSignalType = pSignalType_
+  }
+
+
+-- | The data sent with the signal. The data schema depends on the type of signal used in the request.
+sasPayload :: Lens' SendAutomationSignal (HashMap Text [Text])
+sasPayload = lens _sasPayload (\ s a -> s{_sasPayload = a}) . _Default . _Map;
+
+-- | The unique identifier for an existing Automation execution that you want to send the signal to.
+sasAutomationExecutionId :: Lens' SendAutomationSignal Text
+sasAutomationExecutionId = lens _sasAutomationExecutionId (\ s a -> s{_sasAutomationExecutionId = a});
+
+-- | The type of signal. Valid signal types include the following: Approve and Reject
+sasSignalType :: Lens' SendAutomationSignal SignalType
+sasSignalType = lens _sasSignalType (\ s a -> s{_sasSignalType = a});
+
+instance AWSRequest SendAutomationSignal where
+        type Rs SendAutomationSignal =
+             SendAutomationSignalResponse
+        request = postJSON ssm
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 SendAutomationSignalResponse' <$>
+                   (pure (fromEnum s)))
+
+instance Hashable SendAutomationSignal where
+
+instance NFData SendAutomationSignal where
+
+instance ToHeaders SendAutomationSignal where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.SendAutomationSignal" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON SendAutomationSignal where
+        toJSON SendAutomationSignal'{..}
+          = object
+              (catMaybes
+                 [("Payload" .=) <$> _sasPayload,
+                  Just
+                    ("AutomationExecutionId" .=
+                       _sasAutomationExecutionId),
+                  Just ("SignalType" .= _sasSignalType)])
+
+instance ToPath SendAutomationSignal where
+        toPath = const "/"
+
+instance ToQuery SendAutomationSignal where
+        toQuery = const mempty
+
+-- | /See:/ 'sendAutomationSignalResponse' smart constructor.
+newtype SendAutomationSignalResponse = SendAutomationSignalResponse'
+  { _sasrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SendAutomationSignalResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sasrsResponseStatus' - -- | The response status code.
+sendAutomationSignalResponse
+    :: Int -- ^ 'sasrsResponseStatus'
+    -> SendAutomationSignalResponse
+sendAutomationSignalResponse pResponseStatus_ =
+  SendAutomationSignalResponse' {_sasrsResponseStatus = pResponseStatus_}
+
+
+-- | -- | The response status code.
+sasrsResponseStatus :: Lens' SendAutomationSignalResponse Int
+sasrsResponseStatus = lens _sasrsResponseStatus (\ s a -> s{_sasrsResponseStatus = a});
+
+instance NFData SendAutomationSignalResponse where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.SendCommand
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Executes commands on one or more remote instances.
+-- Executes commands on one or more managed instances.
 --
 --
 module Network.AWS.SSM.SendCommand
@@ -51,32 +51,33 @@
     , scrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'sendCommand' smart constructor.
 data SendCommand = SendCommand'
-    { _scServiceRoleARN     :: !(Maybe Text)
-    , _scNotificationConfig :: !(Maybe NotificationConfig)
-    , _scDocumentHashType   :: !(Maybe DocumentHashType)
-    , _scOutputS3KeyPrefix  :: !(Maybe Text)
-    , _scMaxErrors          :: !(Maybe Text)
-    , _scInstanceIds        :: !(Maybe [Text])
-    , _scOutputS3Region     :: !(Maybe Text)
-    , _scTargets            :: !(Maybe [Target])
-    , _scParameters         :: !(Maybe (Map Text [Text]))
-    , _scDocumentHash       :: !(Maybe Text)
-    , _scTimeoutSeconds     :: !(Maybe Nat)
-    , _scComment            :: !(Maybe Text)
-    , _scOutputS3BucketName :: !(Maybe Text)
-    , _scMaxConcurrency     :: !(Maybe Text)
-    , _scDocumentName       :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _scServiceRoleARN     :: !(Maybe Text)
+  , _scNotificationConfig :: !(Maybe NotificationConfig)
+  , _scDocumentHashType   :: !(Maybe DocumentHashType)
+  , _scOutputS3KeyPrefix  :: !(Maybe Text)
+  , _scMaxErrors          :: !(Maybe Text)
+  , _scInstanceIds        :: !(Maybe [Text])
+  , _scOutputS3Region     :: !(Maybe Text)
+  , _scTargets            :: !(Maybe [Target])
+  , _scParameters         :: !(Maybe (Map Text [Text]))
+  , _scDocumentHash       :: !(Maybe Text)
+  , _scTimeoutSeconds     :: !(Maybe Nat)
+  , _scComment            :: !(Maybe Text)
+  , _scOutputS3BucketName :: !(Maybe Text)
+  , _scMaxConcurrency     :: !(Maybe Text)
+  , _scDocumentName       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SendCommand' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -89,15 +90,15 @@
 --
 -- * 'scOutputS3KeyPrefix' - The directory structure within the S3 bucket where the responses should be stored.
 --
--- * 'scMaxErrors' - The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of @MaxErrors@ , the systems stops sending the command to additional targets. You can specify a number like “10” or a percentage like “10%”. The default value is 50. For more information about how to use @MaxErrors@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- * 'scMaxErrors' - The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of MaxErrors, the systems stops sending the command to additional targets. You can specify a number like 10 or a percentage like 10%. The default value is 50. For more information about how to use MaxErrors, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-maxerrors.html Using Error Controls> .
 --
--- * 'scInstanceIds' - Required. The instance IDs where the command should execute. You can specify a maximum of 50 IDs.
+-- * 'scInstanceIds' - The instance IDs where the command should execute. You can specify a maximum of 50 IDs. If you prefer not to list individual instance IDs, you can instead send commands to a fleet of instances using the Targets parameter, which accepts EC2 tags. For more information about how to use Targets, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Sending Commands to a Fleet> .
 --
--- * 'scOutputS3Region' - (Optional) The region where the Amazon Simple Storage Service (Amazon S3) output bucket is located. The default value is the region where Run Command is being called.
+-- * 'scOutputS3Region' - (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
 --
--- * 'scTargets' - (Optional) An array of search criteria that targets instances using a @Key@ ;@Value@ combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call. For more information about how to use @Targets@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- * 'scTargets' - (Optional) An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call. For more information about how to use Targets, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Sending Commands to a Fleet> .
 --
--- * 'scParameters' - The required and optional parameters specified in the SSM document being executed.
+-- * 'scParameters' - The required and optional parameters specified in the document being executed.
 --
 -- * 'scDocumentHash' - The Sha256 or Sha1 hash created by the system when the document was created.
 --
@@ -107,31 +108,32 @@
 --
 -- * 'scOutputS3BucketName' - The name of the S3 bucket where command execution responses should be stored.
 --
--- * 'scMaxConcurrency' - (Optional) The maximum number of instances that are allowed to execute the command at the same time. You can specify a number such as “10” or a percentage such as “10%”. The default value is 50. For more information about how to use @MaxConcurrency@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- * 'scMaxConcurrency' - (Optional) The maximum number of instances that are allowed to execute the command at the same time. You can specify a number such as 10 or a percentage such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-velocity.html Using Concurrency Controls> .
 --
--- * 'scDocumentName' - Required. The name of the SSM document to execute. This can be an SSM public document or a custom document.
+-- * 'scDocumentName' - Required. The name of the Systems Manager document to execute. This can be a public document or a custom document.
 sendCommand
     :: Text -- ^ 'scDocumentName'
     -> SendCommand
 sendCommand pDocumentName_ =
-    SendCommand'
-    { _scServiceRoleARN = Nothing
-    , _scNotificationConfig = Nothing
-    , _scDocumentHashType = Nothing
-    , _scOutputS3KeyPrefix = Nothing
-    , _scMaxErrors = Nothing
-    , _scInstanceIds = Nothing
-    , _scOutputS3Region = Nothing
-    , _scTargets = Nothing
-    , _scParameters = Nothing
-    , _scDocumentHash = Nothing
-    , _scTimeoutSeconds = Nothing
-    , _scComment = Nothing
-    , _scOutputS3BucketName = Nothing
-    , _scMaxConcurrency = Nothing
-    , _scDocumentName = pDocumentName_
-    }
+  SendCommand'
+  { _scServiceRoleARN = Nothing
+  , _scNotificationConfig = Nothing
+  , _scDocumentHashType = Nothing
+  , _scOutputS3KeyPrefix = Nothing
+  , _scMaxErrors = Nothing
+  , _scInstanceIds = Nothing
+  , _scOutputS3Region = Nothing
+  , _scTargets = Nothing
+  , _scParameters = Nothing
+  , _scDocumentHash = Nothing
+  , _scTimeoutSeconds = Nothing
+  , _scComment = Nothing
+  , _scOutputS3BucketName = Nothing
+  , _scMaxConcurrency = Nothing
+  , _scDocumentName = pDocumentName_
+  }
 
+
 -- | The IAM role that Systems Manager uses to send notifications.
 scServiceRoleARN :: Lens' SendCommand (Maybe Text)
 scServiceRoleARN = lens _scServiceRoleARN (\ s a -> s{_scServiceRoleARN = a});
@@ -148,23 +150,23 @@
 scOutputS3KeyPrefix :: Lens' SendCommand (Maybe Text)
 scOutputS3KeyPrefix = lens _scOutputS3KeyPrefix (\ s a -> s{_scOutputS3KeyPrefix = a});
 
--- | The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of @MaxErrors@ , the systems stops sending the command to additional targets. You can specify a number like “10” or a percentage like “10%”. The default value is 50. For more information about how to use @MaxErrors@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- | The maximum number of errors allowed without the command failing. When the command fails one more time beyond the value of MaxErrors, the systems stops sending the command to additional targets. You can specify a number like 10 or a percentage like 10%. The default value is 50. For more information about how to use MaxErrors, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-maxerrors.html Using Error Controls> .
 scMaxErrors :: Lens' SendCommand (Maybe Text)
 scMaxErrors = lens _scMaxErrors (\ s a -> s{_scMaxErrors = a});
 
--- | Required. The instance IDs where the command should execute. You can specify a maximum of 50 IDs.
+-- | The instance IDs where the command should execute. You can specify a maximum of 50 IDs. If you prefer not to list individual instance IDs, you can instead send commands to a fleet of instances using the Targets parameter, which accepts EC2 tags. For more information about how to use Targets, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Sending Commands to a Fleet> .
 scInstanceIds :: Lens' SendCommand [Text]
 scInstanceIds = lens _scInstanceIds (\ s a -> s{_scInstanceIds = a}) . _Default . _Coerce;
 
--- | (Optional) The region where the Amazon Simple Storage Service (Amazon S3) output bucket is located. The default value is the region where Run Command is being called.
+-- | (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
 scOutputS3Region :: Lens' SendCommand (Maybe Text)
 scOutputS3Region = lens _scOutputS3Region (\ s a -> s{_scOutputS3Region = a});
 
--- | (Optional) An array of search criteria that targets instances using a @Key@ ;@Value@ combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call. For more information about how to use @Targets@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- | (Optional) An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call. For more information about how to use Targets, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Sending Commands to a Fleet> .
 scTargets :: Lens' SendCommand [Target]
 scTargets = lens _scTargets (\ s a -> s{_scTargets = a}) . _Default . _Coerce;
 
--- | The required and optional parameters specified in the SSM document being executed.
+-- | The required and optional parameters specified in the document being executed.
 scParameters :: Lens' SendCommand (HashMap Text [Text])
 scParameters = lens _scParameters (\ s a -> s{_scParameters = a}) . _Default . _Map;
 
@@ -184,11 +186,11 @@
 scOutputS3BucketName :: Lens' SendCommand (Maybe Text)
 scOutputS3BucketName = lens _scOutputS3BucketName (\ s a -> s{_scOutputS3BucketName = a});
 
--- | (Optional) The maximum number of instances that are allowed to execute the command at the same time. You can specify a number such as “10” or a percentage such as “10%”. The default value is 50. For more information about how to use @MaxConcurrency@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
+-- | (Optional) The maximum number of instances that are allowed to execute the command at the same time. You can specify a number such as 10 or a percentage such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-velocity.html Using Concurrency Controls> .
 scMaxConcurrency :: Lens' SendCommand (Maybe Text)
 scMaxConcurrency = lens _scMaxConcurrency (\ s a -> s{_scMaxConcurrency = a});
 
--- | Required. The name of the SSM document to execute. This can be an SSM public document or a custom document.
+-- | Required. The name of the Systems Manager document to execute. This can be a public document or a custom document.
 scDocumentName :: Lens' SendCommand Text
 scDocumentName = lens _scDocumentName (\ s a -> s{_scDocumentName = a});
 
@@ -201,9 +203,9 @@
                  SendCommandResponse' <$>
                    (x .?> "Command") <*> (pure (fromEnum s)))
 
-instance Hashable SendCommand
+instance Hashable SendCommand where
 
-instance NFData SendCommand
+instance NFData SendCommand where
 
 instance ToHeaders SendCommand where
         toHeaders
@@ -242,10 +244,11 @@
 
 -- | /See:/ 'sendCommandResponse' smart constructor.
 data SendCommandResponse = SendCommandResponse'
-    { _scrsCommand        :: !(Maybe Command)
-    , _scrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _scrsCommand        :: !(Maybe Command)
+  , _scrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'SendCommandResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -257,11 +260,10 @@
     :: Int -- ^ 'scrsResponseStatus'
     -> SendCommandResponse
 sendCommandResponse pResponseStatus_ =
-    SendCommandResponse'
-    { _scrsCommand = Nothing
-    , _scrsResponseStatus = pResponseStatus_
-    }
+  SendCommandResponse'
+  {_scrsCommand = Nothing, _scrsResponseStatus = pResponseStatus_}
 
+
 -- | The request as it was received by Systems Manager. Also provides the command ID which can be used future references to this request.
 scrsCommand :: Lens' SendCommandResponse (Maybe Command)
 scrsCommand = lens _scrsCommand (\ s a -> s{_scrsCommand = a});
@@ -270,4 +272,4 @@
 scrsResponseStatus :: Lens' SendCommandResponse Int
 scrsResponseStatus = lens _scrsResponseStatus (\ s a -> s{_scrsResponseStatus = a});
 
-instance NFData SendCommandResponse
+instance NFData SendCommandResponse where
diff --git a/gen/Network/AWS/SSM/StartAutomationExecution.hs b/gen/Network/AWS/SSM/StartAutomationExecution.hs
--- a/gen/Network/AWS/SSM/StartAutomationExecution.hs
+++ b/gen/Network/AWS/SSM/StartAutomationExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.StartAutomationExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -27,6 +27,7 @@
       startAutomationExecution
     , StartAutomationExecution
     -- * Request Lenses
+    , saeClientToken
     , saeParameters
     , saeDocumentVersion
     , saeDocumentName
@@ -39,24 +40,28 @@
     , srsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'startAutomationExecution' smart constructor.
 data StartAutomationExecution = StartAutomationExecution'
-    { _saeParameters      :: !(Maybe (Map Text [Text]))
-    , _saeDocumentVersion :: !(Maybe Text)
-    , _saeDocumentName    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _saeClientToken     :: !(Maybe Text)
+  , _saeParameters      :: !(Maybe (Map Text [Text]))
+  , _saeDocumentVersion :: !(Maybe Text)
+  , _saeDocumentName    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartAutomationExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'saeClientToken' - User-provided idempotency token. The token must be unique, is case insensitive, enforces the UUID format, and can't be reused.
+--
 -- * 'saeParameters' - A key-value map of execution parameters, which match the declared parameters in the Automation document.
 --
 -- * 'saeDocumentVersion' - The version of the Automation document to use for this execution.
@@ -66,12 +71,18 @@
     :: Text -- ^ 'saeDocumentName'
     -> StartAutomationExecution
 startAutomationExecution pDocumentName_ =
-    StartAutomationExecution'
-    { _saeParameters = Nothing
-    , _saeDocumentVersion = Nothing
-    , _saeDocumentName = pDocumentName_
-    }
+  StartAutomationExecution'
+  { _saeClientToken = Nothing
+  , _saeParameters = Nothing
+  , _saeDocumentVersion = Nothing
+  , _saeDocumentName = pDocumentName_
+  }
 
+
+-- | User-provided idempotency token. The token must be unique, is case insensitive, enforces the UUID format, and can't be reused.
+saeClientToken :: Lens' StartAutomationExecution (Maybe Text)
+saeClientToken = lens _saeClientToken (\ s a -> s{_saeClientToken = a});
+
 -- | A key-value map of execution parameters, which match the declared parameters in the Automation document.
 saeParameters :: Lens' StartAutomationExecution (HashMap Text [Text])
 saeParameters = lens _saeParameters (\ s a -> s{_saeParameters = a}) . _Default . _Map;
@@ -95,9 +106,9 @@
                    (x .?> "AutomationExecutionId") <*>
                      (pure (fromEnum s)))
 
-instance Hashable StartAutomationExecution
+instance Hashable StartAutomationExecution where
 
-instance NFData StartAutomationExecution
+instance NFData StartAutomationExecution where
 
 instance ToHeaders StartAutomationExecution where
         toHeaders
@@ -112,7 +123,8 @@
         toJSON StartAutomationExecution'{..}
           = object
               (catMaybes
-                 [("Parameters" .=) <$> _saeParameters,
+                 [("ClientToken" .=) <$> _saeClientToken,
+                  ("Parameters" .=) <$> _saeParameters,
                   ("DocumentVersion" .=) <$> _saeDocumentVersion,
                   Just ("DocumentName" .= _saeDocumentName)])
 
@@ -124,10 +136,11 @@
 
 -- | /See:/ 'startAutomationExecutionResponse' smart constructor.
 data StartAutomationExecutionResponse = StartAutomationExecutionResponse'
-    { _srsAutomationExecutionId :: !(Maybe Text)
-    , _srsResponseStatus        :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _srsAutomationExecutionId :: !(Maybe Text)
+  , _srsResponseStatus        :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StartAutomationExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -139,11 +152,10 @@
     :: Int -- ^ 'srsResponseStatus'
     -> StartAutomationExecutionResponse
 startAutomationExecutionResponse pResponseStatus_ =
-    StartAutomationExecutionResponse'
-    { _srsAutomationExecutionId = Nothing
-    , _srsResponseStatus = pResponseStatus_
-    }
+  StartAutomationExecutionResponse'
+  {_srsAutomationExecutionId = Nothing, _srsResponseStatus = pResponseStatus_}
 
+
 -- | The unique ID of a newly scheduled automation execution.
 srsAutomationExecutionId :: Lens' StartAutomationExecutionResponse (Maybe Text)
 srsAutomationExecutionId = lens _srsAutomationExecutionId (\ s a -> s{_srsAutomationExecutionId = a});
@@ -153,3 +165,4 @@
 srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a});
 
 instance NFData StartAutomationExecutionResponse
+         where
diff --git a/gen/Network/AWS/SSM/StopAutomationExecution.hs b/gen/Network/AWS/SSM/StopAutomationExecution.hs
--- a/gen/Network/AWS/SSM/StopAutomationExecution.hs
+++ b/gen/Network/AWS/SSM/StopAutomationExecution.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.StopAutomationExecution
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -36,18 +36,19 @@
     , saersResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'stopAutomationExecution' smart constructor.
 newtype StopAutomationExecution = StopAutomationExecution'
-    { _saeAutomationExecutionId :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _saeAutomationExecutionId :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopAutomationExecution' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -57,10 +58,9 @@
     :: Text -- ^ 'saeAutomationExecutionId'
     -> StopAutomationExecution
 stopAutomationExecution pAutomationExecutionId_ =
-    StopAutomationExecution'
-    { _saeAutomationExecutionId = pAutomationExecutionId_
-    }
+  StopAutomationExecution' {_saeAutomationExecutionId = pAutomationExecutionId_}
 
+
 -- | The execution ID of the Automation to stop.
 saeAutomationExecutionId :: Lens' StopAutomationExecution Text
 saeAutomationExecutionId = lens _saeAutomationExecutionId (\ s a -> s{_saeAutomationExecutionId = a});
@@ -75,9 +75,9 @@
                  StopAutomationExecutionResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable StopAutomationExecution
+instance Hashable StopAutomationExecution where
 
-instance NFData StopAutomationExecution
+instance NFData StopAutomationExecution where
 
 instance ToHeaders StopAutomationExecution where
         toHeaders
@@ -104,9 +104,10 @@
 
 -- | /See:/ 'stopAutomationExecutionResponse' smart constructor.
 newtype StopAutomationExecutionResponse = StopAutomationExecutionResponse'
-    { _saersResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _saersResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'StopAutomationExecutionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -116,12 +117,11 @@
     :: Int -- ^ 'saersResponseStatus'
     -> StopAutomationExecutionResponse
 stopAutomationExecutionResponse pResponseStatus_ =
-    StopAutomationExecutionResponse'
-    { _saersResponseStatus = pResponseStatus_
-    }
+  StopAutomationExecutionResponse' {_saersResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 saersResponseStatus :: Lens' StopAutomationExecutionResponse Int
 saersResponseStatus = lens _saersResponseStatus (\ s a -> s{_saersResponseStatus = a});
 
-instance NFData StopAutomationExecutionResponse
+instance NFData StopAutomationExecutionResponse where
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
@@ -4,9 +4,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.Types
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -18,14 +18,21 @@
     -- * Errors
     , _AutomationDefinitionVersionNotFoundException
     , _InvalidDocumentVersion
+    , _HierarchyTypeMismatchException
     , _InvalidSchedule
     , _UnsupportedParameterType
     , _InvalidPluginName
+    , _FeatureNotAvailableException
+    , _InvalidAutomationSignalException
+    , _ResourceDataSyncCountExceededException
     , _UnsupportedPlatformType
     , _InvalidFilterValue
     , _InvalidItemContentException
+    , _InvalidFilterOption
+    , _ParameterPatternMismatchException
     , _InvalidPermissionType
     , _AssociatedInstances
+    , _UnsupportedOperatingSystem
     , _InvalidInstanceId
     , _StatusUnchanged
     , _InvalidNextToken
@@ -33,6 +40,7 @@
     , _InvalidActivationId
     , _InvalidResultAttributeException
     , _ResourceLimitExceededException
+    , _ResourceDataSyncInvalidConfigurationException
     , _InvalidCommandId
     , _DuplicateInstanceId
     , _InvalidResourceType
@@ -43,7 +51,10 @@
     , _InvalidAutomationExecutionParametersException
     , _AutomationExecutionNotFoundException
     , _InvalidTypeNameException
+    , _ResourceDataSyncNotFoundException
+    , _ParameterMaxVersionLimitExceeded
     , _ItemSizeLimitExceededException
+    , _ResourceDataSyncAlreadyExistsException
     , _DoesNotExistException
     , _AutomationExecutionLimitExceededException
     , _IdempotentParameterMismatch
@@ -51,20 +62,27 @@
     , _ItemContentMismatchException
     , _ParameterAlreadyExists
     , _AssociationAlreadyExists
+    , _ComplianceTypeCountLimitExceededException
     , _InvalidDocumentContent
     , _ParameterLimitExceeded
     , _AssociationLimitExceeded
+    , _InvalidAssociationVersion
     , _AssociationDoesNotExist
     , _ParameterNotFound
+    , _TargetInUseException
     , _InternalServerError
+    , _UnsupportedInventoryItemContextException
+    , _AssociationVersionLimitExceeded
     , _InvalidRole
     , _TooManyUpdates
     , _InvalidActivation
     , _InvalidDocumentSchemaVersion
     , _MaxDocumentSizeExceeded
+    , _ParameterVersionNotFound
     , _InvalidUpdate
     , _CustomSchemaCountLimitExceededException
     , _InvalidTarget
+    , _HierarchyLevelLimitExceededException
     , _InvalidDocumentOperation
     , _InvocationDoesNotExist
     , _DocumentVersionLimitExceeded
@@ -72,14 +90,19 @@
     , _InvalidKeyId
     , _InvalidParameters
     , _InvalidResourceId
+    , _InvalidAllowedPatternException
     , _InvalidNotificationConfig
+    , _InvalidInventoryItemContextException
     , _TotalSizeLimitExceededException
+    , _SubTypeCountLimitExceededException
     , _TooManyTagsError
     , _DocumentPermissionLimit
     , _DuplicateDocumentContent
     , _DocumentAlreadyExists
     , _DocumentLimitExceeded
+    , _AlreadyExistsException
     , _InvalidFilter
+    , _ResourceInUseException
 
     -- * AssociationFilterKey
     , AssociationFilterKey (..)
@@ -105,6 +128,15 @@
     -- * CommandStatus
     , CommandStatus (..)
 
+    -- * ComplianceQueryOperatorType
+    , ComplianceQueryOperatorType (..)
+
+    -- * ComplianceSeverity
+    , ComplianceSeverity (..)
+
+    -- * ComplianceStatus
+    , ComplianceStatus (..)
+
     -- * DescribeActivationsFilterKeys
     , DescribeActivationsFilterKeys (..)
 
@@ -132,12 +164,18 @@
     -- * InstanceInformationFilterKey
     , InstanceInformationFilterKey (..)
 
+    -- * InstancePatchStateOperatorType
+    , InstancePatchStateOperatorType (..)
+
     -- * InventoryAttributeDataType
     , InventoryAttributeDataType (..)
 
     -- * InventoryQueryOperatorType
     , InventoryQueryOperatorType (..)
 
+    -- * LastResourceDataSyncStatus
+    , LastResourceDataSyncStatus (..)
+
     -- * MaintenanceWindowExecutionStatus
     , MaintenanceWindowExecutionStatus (..)
 
@@ -153,24 +191,48 @@
     -- * NotificationType
     , NotificationType (..)
 
+    -- * OperatingSystem
+    , OperatingSystem (..)
+
     -- * ParameterType
     , ParameterType (..)
 
     -- * ParametersFilterKey
     , ParametersFilterKey (..)
 
+    -- * PatchComplianceDataState
+    , PatchComplianceDataState (..)
+
+    -- * PatchComplianceLevel
+    , PatchComplianceLevel (..)
+
+    -- * PatchDeploymentStatus
+    , PatchDeploymentStatus (..)
+
+    -- * PatchFilterKey
+    , PatchFilterKey (..)
+
+    -- * PatchOperationType
+    , PatchOperationType (..)
+
     -- * PingStatus
     , PingStatus (..)
 
     -- * PlatformType
     , PlatformType (..)
 
+    -- * ResourceDataSyncS3Format
+    , ResourceDataSyncS3Format (..)
+
     -- * ResourceType
     , ResourceType (..)
 
     -- * ResourceTypeForTagging
     , ResourceTypeForTagging (..)
 
+    -- * SignalType
+    , SignalType (..)
+
     -- * Activation
     , Activation
     , activation
@@ -195,6 +257,8 @@
     , aName
     , aTargets
     , aDocumentVersion
+    , aAssociationVersion
+    , aAssociationName
 
     -- * AssociationDescription
     , AssociationDescription
@@ -213,6 +277,8 @@
     , adTargets
     , adParameters
     , adDocumentVersion
+    , adAssociationVersion
+    , adAssociationName
 
     -- * AssociationFilter
     , AssociationFilter
@@ -235,6 +301,20 @@
     , asName
     , asMessage
 
+    -- * AssociationVersionInfo
+    , AssociationVersionInfo
+    , associationVersionInfo
+    , aviAssociationId
+    , aviCreatedDate
+    , aviScheduleExpression
+    , aviName
+    , aviOutputLocation
+    , aviTargets
+    , aviParameters
+    , aviDocumentVersion
+    , aviAssociationVersion
+    , aviAssociationName
+
     -- * AutomationExecution
     , AutomationExecution
     , automationExecution
@@ -301,20 +381,20 @@
     -- * CommandInvocation
     , CommandInvocation
     , commandInvocation
-    , ciInstanceId
-    , ciStatus
-    , ciNotificationConfig
-    , ciCommandPlugins
-    , ciDocumentName
-    , ciStandardErrorURL
-    , ciStatusDetails
-    , ciStandardOutputURL
-    , ciCommandId
-    , ciComment
-    , ciTraceOutput
-    , ciInstanceName
-    , ciRequestedDateTime
-    , ciServiceRole
+    , comInstanceId
+    , comStatus
+    , comNotificationConfig
+    , comCommandPlugins
+    , comDocumentName
+    , comStandardErrorURL
+    , comStatusDetails
+    , comStandardOutputURL
+    , comCommandId
+    , comComment
+    , comTraceOutput
+    , comInstanceName
+    , comRequestedDateTime
+    , comServiceRole
 
     -- * CommandPlugin
     , CommandPlugin
@@ -332,6 +412,55 @@
     , cpOutputS3BucketName
     , cpResponseFinishDateTime
 
+    -- * ComplianceExecutionSummary
+    , ComplianceExecutionSummary
+    , complianceExecutionSummary
+    , cesExecutionId
+    , cesExecutionType
+    , cesExecutionTime
+
+    -- * ComplianceItem
+    , ComplianceItem
+    , complianceItem
+    , ciStatus
+    , ciResourceId
+    , ciResourceType
+    , ciSeverity
+    , ciExecutionSummary
+    , ciDetails
+    , ciId
+    , ciComplianceType
+    , ciTitle
+
+    -- * ComplianceItemEntry
+    , ComplianceItemEntry
+    , complianceItemEntry
+    , cieDetails
+    , cieId
+    , cieTitle
+    , cieSeverity
+    , cieStatus
+
+    -- * ComplianceStringFilter
+    , ComplianceStringFilter
+    , complianceStringFilter
+    , csfValues
+    , csfKey
+    , csfType
+
+    -- * ComplianceSummaryItem
+    , ComplianceSummaryItem
+    , complianceSummaryItem
+    , csiNonCompliantSummary
+    , csiCompliantSummary
+    , csiComplianceType
+
+    -- * CompliantSummary
+    , CompliantSummary
+    , compliantSummary
+    , csCompliantCount
+    , csSeveritySummary
+
     -- * CreateAssociationBatchRequestEntry
     , CreateAssociationBatchRequestEntry
     , createAssociationBatchRequestEntry
@@ -341,6 +470,7 @@
     , cabreTargets
     , cabreParameters
     , cabreDocumentVersion
+    , cabreAssociationName
     , cabreName
 
     -- * DescribeActivationsFilter
@@ -372,6 +502,7 @@
     , dParameters
     , dDocumentVersion
     , dDescription
+    , dTags
     , dLatestVersion
 
     -- * DocumentFilter
@@ -389,7 +520,14 @@
     , diPlatformTypes
     , diName
     , diDocumentVersion
+    , diTags
 
+    -- * DocumentKeyValuesFilter
+    , DocumentKeyValuesFilter
+    , documentKeyValuesFilter
+    , dkvfValues
+    , dkvfKey
+
     -- * DocumentParameter
     , DocumentParameter
     , documentParameter
@@ -406,6 +544,12 @@
     , dviDocumentVersion
     , dviIsDefaultVersion
 
+    -- * EffectivePatch
+    , EffectivePatch
+    , effectivePatch
+    , epPatch
+    , epPatchStatus
+
     -- * FailedCreateAssociation
     , FailedCreateAssociation
     , failedCreateAssociation
@@ -413,6 +557,13 @@
     , fcaFault
     , fcaMessage
 
+    -- * FailureDetails
+    , FailureDetails
+    , failureDetails
+    , fdFailureType
+    , fdFailureStage
+    , fdDetails
+
     -- * InstanceAggregatedAssociationOverview
     , InstanceAggregatedAssociationOverview
     , instanceAggregatedAssociationOverview
@@ -425,6 +576,7 @@
     , iaAssociationId
     , iaInstanceId
     , iaContent
+    , iaAssociationVersion
 
     -- * InstanceAssociationOutputLocation
     , InstanceAssociationOutputLocation
@@ -448,7 +600,9 @@
     , iasiName
     , iasiErrorCode
     , iasiDocumentVersion
+    , iasiAssociationVersion
     , iasiExecutionDate
+    , iasiAssociationName
 
     -- * InstanceInformation
     , InstanceInformation
@@ -485,6 +639,30 @@
     , iisfKey
     , iisfValues
 
+    -- * InstancePatchState
+    , InstancePatchState
+    , instancePatchState
+    , ipsOwnerInformation
+    , ipsFailedCount
+    , ipsInstalledOtherCount
+    , ipsMissingCount
+    , ipsNotApplicableCount
+    , ipsInstalledCount
+    , ipsSnapshotId
+    , ipsInstanceId
+    , ipsPatchGroup
+    , ipsBaselineId
+    , ipsOperationStartTime
+    , ipsOperationEndTime
+    , ipsOperation
+
+    -- * InstancePatchStateFilter
+    , InstancePatchStateFilter
+    , instancePatchStateFilter
+    , ipsfKey
+    , ipsfValues
+    , ipsfType
+
     -- * InventoryFilter
     , InventoryFilter
     , inventoryFilter
@@ -495,6 +673,7 @@
     -- * InventoryItem
     , InventoryItem
     , inventoryItem
+    , iiContext
     , iiContentHash
     , iiContent
     , iiTypeName
@@ -536,6 +715,12 @@
     , liS3BucketName
     , liS3Region
 
+    -- * MaintenanceWindowAutomationParameters
+    , MaintenanceWindowAutomationParameters
+    , maintenanceWindowAutomationParameters
+    , mwapParameters
+    , mwapDocumentVersion
+
     -- * MaintenanceWindowExecution
     , MaintenanceWindowExecution
     , maintenanceWindowExecution
@@ -567,6 +752,7 @@
     , mwetiiStartTime
     , mwetiiInvocationId
     , mwetiiOwnerInformation
+    , mwetiiTaskType
     , mwetiiWindowTargetId
     , mwetiiWindowExecutionId
     , mwetiiStatusDetails
@@ -585,16 +771,45 @@
     , mwiEnabled
     , mwiName
     , mwiCutoff
+    , mwiDescription
     , mwiDuration
     , mwiWindowId
 
+    -- * MaintenanceWindowLambdaParameters
+    , MaintenanceWindowLambdaParameters
+    , maintenanceWindowLambdaParameters
+    , mwlpPayload
+    , mwlpQualifier
+    , mwlpClientContext
+
+    -- * MaintenanceWindowRunCommandParameters
+    , MaintenanceWindowRunCommandParameters
+    , maintenanceWindowRunCommandParameters
+    , mwrcpServiceRoleARN
+    , mwrcpNotificationConfig
+    , mwrcpDocumentHashType
+    , mwrcpOutputS3KeyPrefix
+    , mwrcpParameters
+    , mwrcpDocumentHash
+    , mwrcpTimeoutSeconds
+    , mwrcpComment
+    , mwrcpOutputS3BucketName
+
+    -- * MaintenanceWindowStepFunctionsParameters
+    , MaintenanceWindowStepFunctionsParameters
+    , maintenanceWindowStepFunctionsParameters
+    , mwsfpInput
+    , mwsfpName
+
     -- * MaintenanceWindowTarget
     , MaintenanceWindowTarget
     , maintenanceWindowTarget
     , mResourceType
     , mOwnerInformation
     , mWindowTargetId
+    , mName
     , mTargets
+    , mDescription
     , mWindowId
 
     -- * MaintenanceWindowTask
@@ -606,17 +821,33 @@
     , mwtPriority
     , mwtTaskARN
     , mwtMaxErrors
+    , mwtName
     , mwtTargets
     , mwtLoggingInfo
     , mwtType
+    , mwtDescription
     , mwtMaxConcurrency
     , mwtWindowId
 
+    -- * MaintenanceWindowTaskInvocationParameters
+    , MaintenanceWindowTaskInvocationParameters
+    , maintenanceWindowTaskInvocationParameters
+    , mwtipAutomation
+    , mwtipStepFunctions
+    , mwtipRunCommand
+    , mwtipLambda
+
     -- * MaintenanceWindowTaskParameterValueExpression
     , MaintenanceWindowTaskParameterValueExpression
     , maintenanceWindowTaskParameterValueExpression
     , mwtpveValues
 
+    -- * NonCompliantSummary
+    , NonCompliantSummary
+    , nonCompliantSummary
+    , ncsNonCompliantCount
+    , ncsSeveritySummary
+
     -- * NotificationConfig
     , NotificationConfig
     , notificationConfig
@@ -629,6 +860,7 @@
     , parameter
     , pValue
     , pName
+    , pVersion
     , pType
 
     -- * ParameterHistory
@@ -638,7 +870,9 @@
     , phKeyId
     , phValue
     , phName
+    , phVersion
     , phLastModifiedUser
+    , phAllowedPattern
     , phType
     , phDescription
 
@@ -648,16 +882,134 @@
     , pmLastModifiedDate
     , pmKeyId
     , pmName
+    , pmVersion
     , pmLastModifiedUser
+    , pmAllowedPattern
     , pmType
     , pmDescription
 
+    -- * ParameterStringFilter
+    , ParameterStringFilter
+    , parameterStringFilter
+    , psfValues
+    , psfOption
+    , psfKey
+
     -- * ParametersFilter
     , ParametersFilter
     , parametersFilter
+    , pKey
+    , pValues
+
+    -- * Patch
+    , Patch
+    , patch
+    , pVendor
+    , pMsrcSeverity
+    , pProductFamily
+    , pClassification
+    , pMsrcNumber
+    , pLanguage
+    , pKbNumber
+    , pContentURL
+    , pId
+    , pReleaseDate
+    , pTitle
+    , pProduct
+    , pDescription
+
+    -- * PatchBaselineIdentity
+    , PatchBaselineIdentity
+    , patchBaselineIdentity
+    , pbiBaselineName
+    , pbiBaselineDescription
+    , pbiOperatingSystem
+    , pbiDefaultBaseline
+    , pbiBaselineId
+
+    -- * PatchComplianceData
+    , PatchComplianceData
+    , patchComplianceData
+    , pcdTitle
+    , pcdKBId
+    , pcdClassification
+    , pcdSeverity
+    , pcdState
+    , pcdInstalledTime
+
+    -- * PatchFilter
+    , PatchFilter
+    , patchFilter
     , pfKey
     , pfValues
 
+    -- * PatchFilterGroup
+    , PatchFilterGroup
+    , patchFilterGroup
+    , pfgPatchFilters
+
+    -- * PatchGroupPatchBaselineMapping
+    , PatchGroupPatchBaselineMapping
+    , patchGroupPatchBaselineMapping
+    , pgpbmBaselineIdentity
+    , pgpbmPatchGroup
+
+    -- * PatchOrchestratorFilter
+    , PatchOrchestratorFilter
+    , patchOrchestratorFilter
+    , pofValues
+    , pofKey
+
+    -- * PatchRule
+    , PatchRule
+    , patchRule
+    , prComplianceLevel
+    , prPatchFilterGroup
+    , prApproveAfterDays
+
+    -- * PatchRuleGroup
+    , PatchRuleGroup
+    , patchRuleGroup
+    , prgPatchRules
+
+    -- * PatchStatus
+    , PatchStatus
+    , patchStatus
+    , psApprovalDate
+    , psDeploymentStatus
+    , psComplianceLevel
+
+    -- * ResourceComplianceSummaryItem
+    , ResourceComplianceSummaryItem
+    , resourceComplianceSummaryItem
+    , rcsiNonCompliantSummary
+    , rcsiStatus
+    , rcsiResourceId
+    , rcsiResourceType
+    , rcsiCompliantSummary
+    , rcsiExecutionSummary
+    , rcsiOverallSeverity
+    , rcsiComplianceType
+
+    -- * ResourceDataSyncItem
+    , ResourceDataSyncItem
+    , resourceDataSyncItem
+    , rdsiSyncCreatedTime
+    , rdsiLastSyncTime
+    , rdsiSyncName
+    , rdsiLastStatus
+    , rdsiS3Destination
+    , rdsiLastSuccessfulSyncTime
+
+    -- * ResourceDataSyncS3Destination
+    , ResourceDataSyncS3Destination
+    , resourceDataSyncS3Destination
+    , rdssdPrefix
+    , rdssdAWSKMSKeyARN
+    , rdssdBucketName
+    , rdssdSyncFormat
+    , rdssdRegion
+
     -- * ResultAttribute
     , ResultAttribute
     , resultAttribute
@@ -675,9 +1027,20 @@
     , s3OutputURL
     , souOutputURL
 
+    -- * SeveritySummary
+    , SeveritySummary
+    , severitySummary
+    , ssLowCount
+    , ssUnspecifiedCount
+    , ssHighCount
+    , ssMediumCount
+    , ssInformationalCount
+    , ssCriticalCount
+
     -- * StepExecution
     , StepExecution
     , stepExecution
+    , seFailureDetails
     , seInputs
     , seStepName
     , seExecutionEndTime
@@ -702,38 +1065,40 @@
     , tKey
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Sign.V4
-import           Network.AWS.SSM.Types.Product
-import           Network.AWS.SSM.Types.Sum
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Sign.V4
+import Network.AWS.SSM.Types.Product
+import Network.AWS.SSM.Types.Sum
 
 -- | API version @2014-11-06@ of the Amazon Simple Systems Manager (SSM) SDK configuration.
 ssm :: Service
 ssm =
-    Service
-    { _svcAbbrev = "SSM"
-    , _svcSigner = v4
-    , _svcPrefix = "ssm"
-    , _svcVersion = "2014-11-06"
-    , _svcEndpoint = defaultEndpoint ssm
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "SSM"
-    , _svcRetry = retry
-    }
+  Service
+  { _svcAbbrev = "SSM"
+  , _svcSigner = v4
+  , _svcPrefix = "ssm"
+  , _svcVersion = "2014-11-06"
+  , _svcEndpoint = defaultEndpoint ssm
+  , _svcTimeout = Just 70
+  , _svcCheck = statusSuccess
+  , _svcError = parseJSONError "SSM"
+  , _svcRetry = retry
+  }
   where
     retry =
-        Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
+      Exponential
+      { _retryBase = 5.0e-2
+      , _retryGrowth = 2
+      , _retryAttempts = 5
+      , _retryCheck = check
+      }
     check e
+      | has (hasCode "ThrottledException" . hasStatus 400) e =
+        Just "throttled_exception"
       | has (hasStatus 429) e = Just "too_many_requests"
       | has (hasCode "ThrottlingException" . hasStatus 400) e =
-          Just "throttling_exception"
+        Just "throttling_exception"
       | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
       | has (hasStatus 504) e = Just "gateway_timeout"
       | has (hasStatus 502) e = Just "bad_gateway"
@@ -742,410 +1107,656 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+
 -- | An Automation document with the specified name and version could not be found.
 --
 --
 _AutomationDefinitionVersionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _AutomationDefinitionVersionNotFoundException =
-    _ServiceError . hasCode "AutomationDefinitionVersionNotFoundException"
+  _MatchServiceError ssm "AutomationDefinitionVersionNotFoundException"
 
+
 -- | The document version is not valid or does not exist.
 --
 --
 _InvalidDocumentVersion :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocumentVersion = _ServiceError . hasCode "InvalidDocumentVersion"
+_InvalidDocumentVersion = _MatchServiceError ssm "InvalidDocumentVersion"
 
+
+-- | Parameter Store does not support changing a parameter type in a hierarchy. For example, you can't change a parameter from a String type to a SecureString type. You must create a new, unique parameter.
+--
+--
+_HierarchyTypeMismatchException :: AsError a => Getting (First ServiceError) a ServiceError
+_HierarchyTypeMismatchException =
+  _MatchServiceError ssm "HierarchyTypeMismatchException"
+
+
 -- | The schedule is invalid. Verify your cron or rate expression and try again.
 --
 --
 _InvalidSchedule :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidSchedule = _ServiceError . hasCode "InvalidSchedule"
+_InvalidSchedule = _MatchServiceError ssm "InvalidSchedule"
 
+
 -- | The parameter type is not supported.
 --
 --
 _UnsupportedParameterType :: AsError a => Getting (First ServiceError) a ServiceError
-_UnsupportedParameterType = _ServiceError . hasCode "UnsupportedParameterType"
+_UnsupportedParameterType = _MatchServiceError ssm "UnsupportedParameterType"
 
+
 -- | The plugin name is not valid.
 --
 --
 _InvalidPluginName :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidPluginName = _ServiceError . hasCode "InvalidPluginName"
+_InvalidPluginName = _MatchServiceError ssm "InvalidPluginName"
 
--- | The document does not support the platform type of the given instance ID(s). For example, you sent an SSM document for a Windows instance to a Linux instance.
+
+-- | You attempted to register a LAMBDA or STEP_FUNCTION task in a region where the corresponding service is not available.
 --
 --
+_FeatureNotAvailableException :: AsError a => Getting (First ServiceError) a ServiceError
+_FeatureNotAvailableException =
+  _MatchServiceError ssm "FeatureNotAvailableException"
+
+
+-- | The signal is not valid for the current Automation execution.
+--
+--
+_InvalidAutomationSignalException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAutomationSignalException =
+  _MatchServiceError ssm "InvalidAutomationSignalException"
+
+
+-- | You have exceeded the allowed maximum sync configurations.
+--
+--
+_ResourceDataSyncCountExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceDataSyncCountExceededException =
+  _MatchServiceError ssm "ResourceDataSyncCountExceededException"
+
+
+-- | The document does not support the platform type of the given instance ID(s). For example, you sent an document for a Windows instance to a Linux instance.
+--
+--
 _UnsupportedPlatformType :: AsError a => Getting (First ServiceError) a ServiceError
-_UnsupportedPlatformType = _ServiceError . hasCode "UnsupportedPlatformType"
+_UnsupportedPlatformType = _MatchServiceError ssm "UnsupportedPlatformType"
 
+
 -- | The filter value is not valid. Verify the value and try again.
 --
 --
 _InvalidFilterValue :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidFilterValue = _ServiceError . hasCode "InvalidFilterValue"
+_InvalidFilterValue = _MatchServiceError ssm "InvalidFilterValue"
 
+
 -- | One or more content items is not valid.
 --
 --
 _InvalidItemContentException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidItemContentException =
-    _ServiceError . hasCode "InvalidItemContentException"
+  _MatchServiceError ssm "InvalidItemContentException"
 
+
+-- | The specified filter option is not valid. Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel.
+--
+--
+_InvalidFilterOption :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidFilterOption = _MatchServiceError ssm "InvalidFilterOption"
+
+
+-- | The parameter name is not valid.
+--
+--
+_ParameterPatternMismatchException :: AsError a => Getting (First ServiceError) a ServiceError
+_ParameterPatternMismatchException =
+  _MatchServiceError ssm "ParameterPatternMismatchException"
+
+
 -- | The permission type is not supported. /Share/ is the only supported permission type.
 --
 --
 _InvalidPermissionType :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidPermissionType = _ServiceError . hasCode "InvalidPermissionType"
+_InvalidPermissionType = _MatchServiceError ssm "InvalidPermissionType"
 
--- | You must disassociate an SSM document from all instances before you can delete it.
+
+-- | You must disassociate a document from all instances before you can delete it.
 --
 --
 _AssociatedInstances :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociatedInstances = _ServiceError . hasCode "AssociatedInstances"
+_AssociatedInstances = _MatchServiceError ssm "AssociatedInstances"
 
+
+-- | The operating systems you specified is not supported, or the operation is not supported for the operating system. Valid operating systems include: Windows, AmazonLinux, RedhatEnterpriseLinux, and Ubuntu.
+--
+--
+_UnsupportedOperatingSystem :: AsError a => Getting (First ServiceError) a ServiceError
+_UnsupportedOperatingSystem =
+  _MatchServiceError ssm "UnsupportedOperatingSystem"
+
+
 -- | The following problems can cause this exception:
 --
 --
 -- You do not have permission to access the instance.
 --
--- The SSM agent is not running. On managed instances and Linux instances, verify that the SSM agent is running. On EC2 Windows instances, verify that the EC2Config service is running.
+-- The SSM Agent is not running. On managed instances and Linux instances, verify that the SSM Agent is running. On EC2 Windows instances, verify that the EC2Config service is running.
 --
--- The SSM agent or EC2Config service is not registered to the SSM endpoint. Try reinstalling the SSM agent or EC2Config service.
+-- The SSM Agent or EC2Config service is not registered to the SSM endpoint. Try reinstalling the SSM Agent or EC2Config service.
 --
 -- 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 . hasCode "InvalidInstanceId"
+_InvalidInstanceId = _MatchServiceError ssm "InvalidInstanceId"
 
+
 -- | The updated status is the same as the current status.
 --
 --
 _StatusUnchanged :: AsError a => Getting (First ServiceError) a ServiceError
-_StatusUnchanged = _ServiceError . hasCode "StatusUnchanged"
+_StatusUnchanged = _MatchServiceError ssm "StatusUnchanged"
 
+
 -- | The specified token is not valid.
 --
 --
 _InvalidNextToken :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidNextToken = _ServiceError . hasCode "InvalidNextToken"
+_InvalidNextToken = _MatchServiceError ssm "InvalidNextToken"
 
+
 -- | The S3 bucket does not exist.
 --
 --
 _InvalidOutputFolder :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidOutputFolder = _ServiceError . hasCode "InvalidOutputFolder"
+_InvalidOutputFolder = _MatchServiceError ssm "InvalidOutputFolder"
 
+
 -- | The activation ID is not valid. Verify the you entered the correct ActivationId or ActivationCode and try again.
 --
 --
 _InvalidActivationId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidActivationId = _ServiceError . hasCode "InvalidActivationId"
+_InvalidActivationId = _MatchServiceError ssm "InvalidActivationId"
 
+
 -- | The specified inventory item result attribute is not valid.
 --
 --
 _InvalidResultAttributeException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidResultAttributeException =
-    _ServiceError . hasCode "InvalidResultAttributeException"
+  _MatchServiceError ssm "InvalidResultAttributeException"
 
+
 -- | Error returned when the caller has exceeded the default resource limits (e.g. too many Maintenance Windows have been created).
 --
 --
 _ResourceLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _ResourceLimitExceededException =
-    _ServiceError . hasCode "ResourceLimitExceededException"
+  _MatchServiceError ssm "ResourceLimitExceededException"
 
+
+-- | The specified sync configuration is invalid.
+--
+--
+_ResourceDataSyncInvalidConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceDataSyncInvalidConfigurationException =
+  _MatchServiceError ssm "ResourceDataSyncInvalidConfigurationException"
+
+
 -- | Prism for InvalidCommandId' errors.
 _InvalidCommandId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidCommandId = _ServiceError . hasCode "InvalidCommandId"
+_InvalidCommandId = _MatchServiceError ssm "InvalidCommandId"
 
+
 -- | You cannot specify an instance ID in more than one association.
 --
 --
 _DuplicateInstanceId :: AsError a => Getting (First ServiceError) a ServiceError
-_DuplicateInstanceId = _ServiceError . hasCode "DuplicateInstanceId"
+_DuplicateInstanceId = _MatchServiceError ssm "DuplicateInstanceId"
 
--- | The resource type is not valid. If you are attempting to tag an instance, the instance must be a registered, managed instance.
+
+-- | The resource type is not valid. For example, if you are attempting to tag an instance, the instance must be a registered, managed instance.
 --
 --
 _InvalidResourceType :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidResourceType = _ServiceError . hasCode "InvalidResourceType"
+_InvalidResourceType = _MatchServiceError ssm "InvalidResourceType"
 
--- | Inventory item type schema version has to match supported versions in the service. Check output of @GetInventorySchema@ to see the available schema version for each type.
+
+-- | Inventory item type schema version has to match supported versions in the service. Check output of GetInventorySchema to see the available schema version for each type.
 --
 --
 _UnsupportedInventorySchemaVersionException :: AsError a => Getting (First ServiceError) a ServiceError
 _UnsupportedInventorySchemaVersionException =
-    _ServiceError . hasCode "UnsupportedInventorySchemaVersionException"
+  _MatchServiceError ssm "UnsupportedInventorySchemaVersionException"
 
+
 -- | The specified document does not exist.
 --
 --
 _InvalidDocument :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocument = _ServiceError . hasCode "InvalidDocument"
+_InvalidDocument = _MatchServiceError ssm "InvalidDocument"
 
+
 -- | An Automation document with the specified name could not be found.
 --
 --
 _AutomationDefinitionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _AutomationDefinitionNotFoundException =
-    _ServiceError . hasCode "AutomationDefinitionNotFoundException"
+  _MatchServiceError ssm "AutomationDefinitionNotFoundException"
 
+
 -- | The specified key is not valid.
 --
 --
 _InvalidFilterKey :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidFilterKey = _ServiceError . hasCode "InvalidFilterKey"
+_InvalidFilterKey = _MatchServiceError ssm "InvalidFilterKey"
 
+
 -- | The supplied parameters for invoking the specified Automation document are incorrect. For example, they may not match the set of parameters permitted for the specified Automation document.
 --
 --
 _InvalidAutomationExecutionParametersException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidAutomationExecutionParametersException =
-    _ServiceError . hasCode "InvalidAutomationExecutionParametersException"
+  _MatchServiceError ssm "InvalidAutomationExecutionParametersException"
 
+
 -- | There is no automation execution information for the requested automation execution ID.
 --
 --
 _AutomationExecutionNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
 _AutomationExecutionNotFoundException =
-    _ServiceError . hasCode "AutomationExecutionNotFoundException"
+  _MatchServiceError ssm "AutomationExecutionNotFoundException"
 
+
 -- | The parameter type name is not valid.
 --
 --
 _InvalidTypeNameException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidTypeNameException = _ServiceError . hasCode "InvalidTypeNameException"
+_InvalidTypeNameException = _MatchServiceError ssm "InvalidTypeNameException"
 
+
+-- | The specified sync name was not found.
+--
+--
+_ResourceDataSyncNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceDataSyncNotFoundException =
+  _MatchServiceError ssm "ResourceDataSyncNotFoundException"
+
+
+-- | The parameter exceeded the maximum number of allowed versions.
+--
+--
+_ParameterMaxVersionLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_ParameterMaxVersionLimitExceeded =
+  _MatchServiceError ssm "ParameterMaxVersionLimitExceeded"
+
+
 -- | The inventory item size has exceeded the size limit.
 --
 --
 _ItemSizeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _ItemSizeLimitExceededException =
-    _ServiceError . hasCode "ItemSizeLimitExceededException"
+  _MatchServiceError ssm "ItemSizeLimitExceededException"
 
--- | Error returned when the ID specified for a resource (e.g. a Maintenance Window) doesn’t exist.
+
+-- | A sync configuration with the same name already exists.
 --
 --
+_ResourceDataSyncAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceDataSyncAlreadyExistsException =
+  _MatchServiceError ssm "ResourceDataSyncAlreadyExistsException"
+
+
+-- | Error returned when the ID specified for a resource (e.g. a Maintenance Window) doesn't exist.
+--
+--
 _DoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_DoesNotExistException = _ServiceError . hasCode "DoesNotExistException"
+_DoesNotExistException = _MatchServiceError ssm "DoesNotExistException"
 
+
 -- | The number of simultaneously running Automation executions exceeded the allowable limit.
 --
 --
 _AutomationExecutionLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _AutomationExecutionLimitExceededException =
-    _ServiceError . hasCode "AutomationExecutionLimitExceededException"
+  _MatchServiceError ssm "AutomationExecutionLimitExceededException"
 
--- | Error returned when an idempotent operation is retried and the parameters don’t match the original call to the API with the same idempotency token.
+
+-- | Error returned when an idempotent operation is retried and the parameters don't match the original call to the API with the same idempotency token.
 --
 --
 _IdempotentParameterMismatch :: AsError a => Getting (First ServiceError) a ServiceError
 _IdempotentParameterMismatch =
-    _ServiceError . hasCode "IdempotentParameterMismatch"
+  _MatchServiceError ssm "IdempotentParameterMismatch"
 
+
 -- | The specified filter value is not valid.
 --
 --
 _InvalidInstanceInformationFilterValue :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidInstanceInformationFilterValue =
-    _ServiceError . hasCode "InvalidInstanceInformationFilterValue"
+  _MatchServiceError ssm "InvalidInstanceInformationFilterValue"
 
+
 -- | The inventory item has invalid content.
 --
 --
 _ItemContentMismatchException :: AsError a => Getting (First ServiceError) a ServiceError
 _ItemContentMismatchException =
-    _ServiceError . hasCode "ItemContentMismatchException"
+  _MatchServiceError ssm "ItemContentMismatchException"
 
+
 -- | The parameter already exists. You can't create duplicate parameters.
 --
 --
 _ParameterAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
-_ParameterAlreadyExists = _ServiceError . hasCode "ParameterAlreadyExists"
+_ParameterAlreadyExists = _MatchServiceError ssm "ParameterAlreadyExists"
 
+
 -- | The specified association already exists.
 --
 --
 _AssociationAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationAlreadyExists = _ServiceError . hasCode "AssociationAlreadyExists"
+_AssociationAlreadyExists = _MatchServiceError ssm "AssociationAlreadyExists"
 
--- | The content for the SSM document is not valid.
+
+-- | You specified too many custom compliance types. You can specify a maximum of 10 different types.
 --
 --
+_ComplianceTypeCountLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_ComplianceTypeCountLimitExceededException =
+  _MatchServiceError ssm "ComplianceTypeCountLimitExceededException"
+
+
+-- | The content for the document is not valid.
+--
+--
 _InvalidDocumentContent :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocumentContent = _ServiceError . hasCode "InvalidDocumentContent"
+_InvalidDocumentContent = _MatchServiceError ssm "InvalidDocumentContent"
 
+
 -- | You have exceeded the number of parameters for this AWS account. Delete one or more parameters and try again.
 --
 --
 _ParameterLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_ParameterLimitExceeded = _ServiceError . hasCode "ParameterLimitExceeded"
+_ParameterLimitExceeded = _MatchServiceError ssm "ParameterLimitExceeded"
 
+
 -- | You can have at most 2,000 active associations.
 --
 --
 _AssociationLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationLimitExceeded = _ServiceError . hasCode "AssociationLimitExceeded"
+_AssociationLimitExceeded = _MatchServiceError ssm "AssociationLimitExceeded"
 
+
+-- | The version you specified is not valid. Use ListAssociationVersions to view all versions of an association according to the association ID. Or, use the @> LATEST@ parameter to view the latest version of the association.
+--
+--
+_InvalidAssociationVersion :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAssociationVersion = _MatchServiceError ssm "InvalidAssociationVersion"
+
+
 -- | The specified association does not exist.
 --
 --
 _AssociationDoesNotExist :: AsError a => Getting (First ServiceError) a ServiceError
-_AssociationDoesNotExist = _ServiceError . hasCode "AssociationDoesNotExist"
+_AssociationDoesNotExist = _MatchServiceError ssm "AssociationDoesNotExist"
 
+
 -- | The parameter could not be found. Verify the name and try again.
 --
 --
 _ParameterNotFound :: AsError a => Getting (First ServiceError) a ServiceError
-_ParameterNotFound = _ServiceError . hasCode "ParameterNotFound"
+_ParameterNotFound = _MatchServiceError ssm "ParameterNotFound"
 
+
+-- | You specified the @Safe@ option for the DeregisterTargetFromMaintenanceWindow operation, but the target is still referenced in a task.
+--
+--
+_TargetInUseException :: AsError a => Getting (First ServiceError) a ServiceError
+_TargetInUseException = _MatchServiceError ssm "TargetInUseException"
+
+
 -- | An error occurred on the server side.
 --
 --
 _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalServerError = _ServiceError . hasCode "InternalServerError"
+_InternalServerError = _MatchServiceError ssm "InternalServerError"
 
--- | The role name can't contain invalid characters. Also verify that you specified an IAM role for notifications that includes the required trust policy. For information about configuring the IAM role for Run Command notifications, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rc-sns.html Getting Amazon SNS Notifications When a Command Changes Status> in the /Amazon Elastic Compute Cloud User Guide / .
+
+-- | The @Context@ attribute that you specified for the @InventoryItem@ is not allowed for this inventory type. You can only use the @Context@ attribute with inventory types like @AWS:ComplianceItem@ .
 --
 --
+_UnsupportedInventoryItemContextException :: AsError a => Getting (First ServiceError) a ServiceError
+_UnsupportedInventoryItemContextException =
+  _MatchServiceError ssm "UnsupportedInventoryItemContextException"
+
+
+-- | You have reached the maximum number versions allowed for an association. Each association has a limit of 1,000 versions.
+--
+--
+_AssociationVersionLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_AssociationVersionLimitExceeded =
+  _MatchServiceError ssm "AssociationVersionLimitExceeded"
+
+
+-- | The role name can't contain invalid characters. Also verify that you specified an IAM role for notifications that includes the required trust policy. For information about configuring the IAM role for Run Command notifications, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/rc-sns-notifications.html Configuring Amazon SNS Notifications for Run Command> in the /Amazon EC2 Systems Manager User Guide/ .
+--
+--
 _InvalidRole :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidRole = _ServiceError . hasCode "InvalidRole"
+_InvalidRole = _MatchServiceError ssm "InvalidRole"
 
+
 -- | There are concurrent updates for a resource that supports one update at a time.
 --
 --
 _TooManyUpdates :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyUpdates = _ServiceError . hasCode "TooManyUpdates"
+_TooManyUpdates = _MatchServiceError ssm "TooManyUpdates"
 
+
 -- | The activation is not valid. The activation might have been deleted, or the ActivationId and the ActivationCode do not match.
 --
 --
 _InvalidActivation :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidActivation = _ServiceError . hasCode "InvalidActivation"
+_InvalidActivation = _MatchServiceError ssm "InvalidActivation"
 
+
 -- | The version of the document schema is not supported.
 --
 --
 _InvalidDocumentSchemaVersion :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidDocumentSchemaVersion =
-    _ServiceError . hasCode "InvalidDocumentSchemaVersion"
+  _MatchServiceError ssm "InvalidDocumentSchemaVersion"
 
--- | The size limit of an SSM document is 64 KB.
+
+-- | The size limit of a document is 64 KB.
 --
 --
 _MaxDocumentSizeExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_MaxDocumentSizeExceeded = _ServiceError . hasCode "MaxDocumentSizeExceeded"
+_MaxDocumentSizeExceeded = _MatchServiceError ssm "MaxDocumentSizeExceeded"
 
+
+-- | The specified parameter version was not found. Verify the parameter name and version, and try again.
+--
+--
+_ParameterVersionNotFound :: AsError a => Getting (First ServiceError) a ServiceError
+_ParameterVersionNotFound = _MatchServiceError ssm "ParameterVersionNotFound"
+
+
 -- | The update is not valid.
 --
 --
 _InvalidUpdate :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidUpdate = _ServiceError . hasCode "InvalidUpdate"
+_InvalidUpdate = _MatchServiceError ssm "InvalidUpdate"
 
+
 -- | You have exceeded the limit for custom schemas. Delete one or more custom schemas and try again.
 --
 --
 _CustomSchemaCountLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _CustomSchemaCountLimitExceededException =
-    _ServiceError . hasCode "CustomSchemaCountLimitExceededException"
+  _MatchServiceError ssm "CustomSchemaCountLimitExceededException"
 
+
 -- | The target is not valid or does not exist. It might not be configured for EC2 Systems Manager or you might not have permission to perform the operation.
 --
 --
 _InvalidTarget :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidTarget = _ServiceError . hasCode "InvalidTarget"
+_InvalidTarget = _MatchServiceError ssm "InvalidTarget"
 
+
+-- | A hierarchy can have a maximum of five levels. For example:
+--
+--
+-- /Finance/Prod/IAD/OS/WinServ2016/license15
+--
+-- For more information, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-working.html Working with Systems Manager Parameters> .
+--
+_HierarchyLevelLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_HierarchyLevelLimitExceededException =
+  _MatchServiceError ssm "HierarchyLevelLimitExceededException"
+
+
 -- | You attempted to delete a document while it is still shared. You must stop sharing the document before you can delete it.
 --
 --
 _InvalidDocumentOperation :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidDocumentOperation = _ServiceError . hasCode "InvalidDocumentOperation"
+_InvalidDocumentOperation = _MatchServiceError ssm "InvalidDocumentOperation"
 
+
 -- | The command ID and instance ID you specified did not match any invocations. Verify the command ID adn the instance ID and try again.
 --
 --
 _InvocationDoesNotExist :: AsError a => Getting (First ServiceError) a ServiceError
-_InvocationDoesNotExist = _ServiceError . hasCode "InvocationDoesNotExist"
+_InvocationDoesNotExist = _MatchServiceError ssm "InvocationDoesNotExist"
 
+
 -- | The document has too many versions. Delete one or more document versions and try again.
 --
 --
 _DocumentVersionLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
 _DocumentVersionLimitExceeded =
-    _ServiceError . hasCode "DocumentVersionLimitExceeded"
+  _MatchServiceError ssm "DocumentVersionLimitExceeded"
 
+
 -- | The output location is not valid or does not exist.
 --
 --
 _InvalidOutputLocation :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidOutputLocation = _ServiceError . hasCode "InvalidOutputLocation"
+_InvalidOutputLocation = _MatchServiceError ssm "InvalidOutputLocation"
 
+
 -- | The query key ID is not valid.
 --
 --
 _InvalidKeyId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidKeyId = _ServiceError . hasCode "InvalidKeyId"
+_InvalidKeyId = _MatchServiceError ssm "InvalidKeyId"
 
--- | You must specify values for all required parameters in the SSM document. You can only supply values to parameters defined in the SSM document.
+
+-- | You must specify values for all required parameters in the Systems Manager document. You can only supply values to parameters defined in the Systems Manager document.
 --
 --
 _InvalidParameters :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameters = _ServiceError . hasCode "InvalidParameters"
+_InvalidParameters = _MatchServiceError ssm "InvalidParameters"
 
+
 -- | The resource ID is not valid. Verify that you entered the correct ID and try again.
 --
 --
 _InvalidResourceId :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidResourceId = _ServiceError . hasCode "InvalidResourceId"
+_InvalidResourceId = _MatchServiceError ssm "InvalidResourceId"
 
+
+-- | The request does not meet the regular expression requirement.
+--
+--
+_InvalidAllowedPatternException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAllowedPatternException =
+  _MatchServiceError ssm "InvalidAllowedPatternException"
+
+
 -- | One or more configuration items is not valid. Verify that a valid Amazon Resource Name (ARN) was provided for an Amazon SNS topic.
 --
 --
 _InvalidNotificationConfig :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidNotificationConfig =
-    _ServiceError . hasCode "InvalidNotificationConfig"
+_InvalidNotificationConfig = _MatchServiceError ssm "InvalidNotificationConfig"
 
+
+-- | You specified invalid keys or values in the @Context@ attribute for @InventoryItem@ . Verify the keys and values, and try again.
+--
+--
+_InvalidInventoryItemContextException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidInventoryItemContextException =
+  _MatchServiceError ssm "InvalidInventoryItemContextException"
+
+
 -- | The size of inventory data has exceeded the total size limit for the resource.
 --
 --
 _TotalSizeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
 _TotalSizeLimitExceededException =
-    _ServiceError . hasCode "TotalSizeLimitExceededException"
+  _MatchServiceError ssm "TotalSizeLimitExceededException"
 
--- | The @Targets@ parameter includes too many tags. Remove one or more tags and try the command again.
+
+-- | The sub-type count exceeded the limit for the inventory type.
 --
 --
+_SubTypeCountLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_SubTypeCountLimitExceededException =
+  _MatchServiceError ssm "SubTypeCountLimitExceededException"
+
+
+-- | The Targets parameter includes too many tags. Remove one or more tags and try the command again.
+--
+--
 _TooManyTagsError :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyTagsError = _ServiceError . hasCode "TooManyTagsError"
+_TooManyTagsError = _MatchServiceError ssm "TooManyTagsError"
 
+
 -- | The document cannot be shared with more AWS user accounts. You can share a document with a maximum of 20 accounts. You can publicly share up to five documents. If you need to increase this limit, contact AWS Support.
 --
 --
 _DocumentPermissionLimit :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentPermissionLimit = _ServiceError . hasCode "DocumentPermissionLimit"
+_DocumentPermissionLimit = _MatchServiceError ssm "DocumentPermissionLimit"
 
+
 -- | The content of the association document matches another document. Change the content of the document and try again.
 --
 --
 _DuplicateDocumentContent :: AsError a => Getting (First ServiceError) a ServiceError
-_DuplicateDocumentContent = _ServiceError . hasCode "DuplicateDocumentContent"
+_DuplicateDocumentContent = _MatchServiceError ssm "DuplicateDocumentContent"
 
--- | The specified SSM document already exists.
+
+-- | The specified document already exists.
 --
 --
 _DocumentAlreadyExists :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentAlreadyExists = _ServiceError . hasCode "DocumentAlreadyExists"
+_DocumentAlreadyExists = _MatchServiceError ssm "DocumentAlreadyExists"
 
--- | You can have at most 200 active SSM documents.
+
+-- | You can have at most 200 active Systems Manager documents.
 --
 --
 _DocumentLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentLimitExceeded = _ServiceError . hasCode "DocumentLimitExceeded"
+_DocumentLimitExceeded = _MatchServiceError ssm "DocumentLimitExceeded"
 
+
+-- | Error returned if an attempt is made to register a patch group with a patch baseline that is already registered with a different patch baseline.
+--
+--
+_AlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
+_AlreadyExistsException = _MatchServiceError ssm "AlreadyExistsException"
+
+
 -- | The filter name is not valid. Verify the you entered the correct name and try again.
 --
 --
 _InvalidFilter :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidFilter = _ServiceError . hasCode "InvalidFilter"
+_InvalidFilter = _MatchServiceError ssm "InvalidFilter"
+
+
+-- | Error returned if an attempt is made to delete a patch baseline that is registered for a patch group.
+--
+--
+_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceInUseException = _MatchServiceError ssm "ResourceInUseException"
+
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
@@ -9,4344 +9,6996 @@
 
 -- |
 -- Module      : Network.AWS.SSM.Types.Product
--- Copyright   : (c) 2013-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SSM.Types.Product where
-
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.SSM.Types.Sum
-
--- | An activation registers one or more on-premises servers or virtual machines (VMs) with AWS so that you can configure those servers or VMs using Run Command. A server or VM that has been registered with AWS is called a managed instance.
---
---
---
--- /See:/ 'activation' smart constructor.
-data Activation = Activation'
-    { _aExpired             :: !(Maybe Bool)
-    , _aDefaultInstanceName :: !(Maybe Text)
-    , _aActivationId        :: !(Maybe Text)
-    , _aCreatedDate         :: !(Maybe POSIX)
-    , _aRegistrationLimit   :: !(Maybe Nat)
-    , _aExpirationDate      :: !(Maybe POSIX)
-    , _aDescription         :: !(Maybe Text)
-    , _aRegistrationsCount  :: !(Maybe Nat)
-    , _aIAMRole             :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Activation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aExpired' - Whether or not the activation is expired.
---
--- * 'aDefaultInstanceName' - A name for the managed instance when it is created.
---
--- * 'aActivationId' - The ID created by Systems Manager when you submitted the activation.
---
--- * 'aCreatedDate' - The date the activation was created.
---
--- * 'aRegistrationLimit' - The maximum number of managed instances that can be registered using this activation.
---
--- * 'aExpirationDate' - The date when this activation can no longer be used to register managed instances.
---
--- * 'aDescription' - A user defined description of the activation.
---
--- * 'aRegistrationsCount' - The number of managed instances already registered with this activation.
---
--- * 'aIAMRole' - The Amazon Identity and Access Management (IAM) role to assign to the managed instance.
-activation
-    :: Activation
-activation =
-    Activation'
-    { _aExpired = Nothing
-    , _aDefaultInstanceName = Nothing
-    , _aActivationId = Nothing
-    , _aCreatedDate = Nothing
-    , _aRegistrationLimit = Nothing
-    , _aExpirationDate = Nothing
-    , _aDescription = Nothing
-    , _aRegistrationsCount = Nothing
-    , _aIAMRole = Nothing
-    }
-
--- | Whether or not the activation is expired.
-aExpired :: Lens' Activation (Maybe Bool)
-aExpired = lens _aExpired (\ s a -> s{_aExpired = a});
-
--- | A name for the managed instance when it is created.
-aDefaultInstanceName :: Lens' Activation (Maybe Text)
-aDefaultInstanceName = lens _aDefaultInstanceName (\ s a -> s{_aDefaultInstanceName = a});
-
--- | The ID created by Systems Manager when you submitted the activation.
-aActivationId :: Lens' Activation (Maybe Text)
-aActivationId = lens _aActivationId (\ s a -> s{_aActivationId = a});
-
--- | The date the activation was created.
-aCreatedDate :: Lens' Activation (Maybe UTCTime)
-aCreatedDate = lens _aCreatedDate (\ s a -> s{_aCreatedDate = a}) . mapping _Time;
-
--- | The maximum number of managed instances that can be registered using this activation.
-aRegistrationLimit :: Lens' Activation (Maybe Natural)
-aRegistrationLimit = lens _aRegistrationLimit (\ s a -> s{_aRegistrationLimit = a}) . mapping _Nat;
-
--- | The date when this activation can no longer be used to register managed instances.
-aExpirationDate :: Lens' Activation (Maybe UTCTime)
-aExpirationDate = lens _aExpirationDate (\ s a -> s{_aExpirationDate = a}) . mapping _Time;
-
--- | A user defined description of the activation.
-aDescription :: Lens' Activation (Maybe Text)
-aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
-
--- | The number of managed instances already registered with this activation.
-aRegistrationsCount :: Lens' Activation (Maybe Natural)
-aRegistrationsCount = lens _aRegistrationsCount (\ s a -> s{_aRegistrationsCount = a}) . mapping _Nat;
-
--- | The Amazon Identity and Access Management (IAM) role to assign to the managed instance.
-aIAMRole :: Lens' Activation (Maybe Text)
-aIAMRole = lens _aIAMRole (\ s a -> s{_aIAMRole = a});
-
-instance FromJSON Activation where
-        parseJSON
-          = withObject "Activation"
-              (\ x ->
-                 Activation' <$>
-                   (x .:? "Expired") <*> (x .:? "DefaultInstanceName")
-                     <*> (x .:? "ActivationId")
-                     <*> (x .:? "CreatedDate")
-                     <*> (x .:? "RegistrationLimit")
-                     <*> (x .:? "ExpirationDate")
-                     <*> (x .:? "Description")
-                     <*> (x .:? "RegistrationsCount")
-                     <*> (x .:? "IamRole"))
-
-instance Hashable Activation
-
-instance NFData Activation
-
--- | Describes an association of an SSM document and an instance.
---
---
---
--- /See:/ 'association' smart constructor.
-data Association = Association'
-    { _aAssociationId      :: !(Maybe Text)
-    , _aInstanceId         :: !(Maybe Text)
-    , _aOverview           :: !(Maybe AssociationOverview)
-    , _aLastExecutionDate  :: !(Maybe POSIX)
-    , _aScheduleExpression :: !(Maybe Text)
-    , _aName               :: !(Maybe Text)
-    , _aTargets            :: !(Maybe [Target])
-    , _aDocumentVersion    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Association' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aAssociationId' - The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.
---
--- * 'aInstanceId' - The ID of the instance.
---
--- * 'aOverview' - Information about the association.
---
--- * 'aLastExecutionDate' - The date on which the association was last run.
---
--- * 'aScheduleExpression' - A cron expression that specifies a schedule when the association runs.
---
--- * 'aName' - The name of the SSM document.
---
--- * 'aTargets' - The instances targeted by the request to create an association.
---
--- * 'aDocumentVersion' - The version of the document used in the association.
-association
-    :: Association
-association =
-    Association'
-    { _aAssociationId = Nothing
-    , _aInstanceId = Nothing
-    , _aOverview = Nothing
-    , _aLastExecutionDate = Nothing
-    , _aScheduleExpression = Nothing
-    , _aName = Nothing
-    , _aTargets = Nothing
-    , _aDocumentVersion = Nothing
-    }
-
--- | The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.
-aAssociationId :: Lens' Association (Maybe Text)
-aAssociationId = lens _aAssociationId (\ s a -> s{_aAssociationId = a});
-
--- | The ID of the instance.
-aInstanceId :: Lens' Association (Maybe Text)
-aInstanceId = lens _aInstanceId (\ s a -> s{_aInstanceId = a});
-
--- | Information about the association.
-aOverview :: Lens' Association (Maybe AssociationOverview)
-aOverview = lens _aOverview (\ s a -> s{_aOverview = a});
-
--- | The date on which the association was last run.
-aLastExecutionDate :: Lens' Association (Maybe UTCTime)
-aLastExecutionDate = lens _aLastExecutionDate (\ s a -> s{_aLastExecutionDate = a}) . mapping _Time;
-
--- | A cron expression that specifies a schedule when the association runs.
-aScheduleExpression :: Lens' Association (Maybe Text)
-aScheduleExpression = lens _aScheduleExpression (\ s a -> s{_aScheduleExpression = a});
-
--- | The name of the SSM document.
-aName :: Lens' Association (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a});
-
--- | The instances targeted by the request to create an association.
-aTargets :: Lens' Association [Target]
-aTargets = lens _aTargets (\ s a -> s{_aTargets = a}) . _Default . _Coerce;
-
--- | The version of the document used in the association.
-aDocumentVersion :: Lens' Association (Maybe Text)
-aDocumentVersion = lens _aDocumentVersion (\ s a -> s{_aDocumentVersion = a});
-
-instance FromJSON Association where
-        parseJSON
-          = withObject "Association"
-              (\ x ->
-                 Association' <$>
-                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
-                     (x .:? "Overview")
-                     <*> (x .:? "LastExecutionDate")
-                     <*> (x .:? "ScheduleExpression")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "DocumentVersion"))
-
-instance Hashable Association
-
-instance NFData Association
-
--- | Describes the parameters for a document.
---
---
---
--- /See:/ 'associationDescription' smart constructor.
-data AssociationDescription = AssociationDescription'
-    { _adAssociationId               :: !(Maybe Text)
-    , _adInstanceId                  :: !(Maybe Text)
-    , _adStatus                      :: !(Maybe AssociationStatus)
-    , _adLastSuccessfulExecutionDate :: !(Maybe POSIX)
-    , _adOverview                    :: !(Maybe AssociationOverview)
-    , _adLastUpdateAssociationDate   :: !(Maybe POSIX)
-    , _adDate                        :: !(Maybe POSIX)
-    , _adLastExecutionDate           :: !(Maybe POSIX)
-    , _adScheduleExpression          :: !(Maybe Text)
-    , _adName                        :: !(Maybe Text)
-    , _adOutputLocation              :: !(Maybe InstanceAssociationOutputLocation)
-    , _adTargets                     :: !(Maybe [Target])
-    , _adParameters                  :: !(Maybe (Map Text [Text]))
-    , _adDocumentVersion             :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AssociationDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'adAssociationId' - The association ID.
---
--- * 'adInstanceId' - The ID of the instance.
---
--- * 'adStatus' - The association status.
---
--- * 'adLastSuccessfulExecutionDate' - The last date on which the association was successfully run.
---
--- * 'adOverview' - Information about the association.
---
--- * 'adLastUpdateAssociationDate' - The date when the association was last updated.
---
--- * 'adDate' - The date when the association was made.
---
--- * 'adLastExecutionDate' - The date on which the association was last run.
---
--- * 'adScheduleExpression' - A cron expression that specifies a schedule when the association runs.
---
--- * 'adName' - The name of the SSM document.
---
--- * 'adOutputLocation' - An Amazon S3 bucket where you want to store the output details of the request.
---
--- * 'adTargets' - The instances targeted by the request.
---
--- * 'adParameters' - A description of the parameters for a document.
---
--- * 'adDocumentVersion' - The document version.
-associationDescription
-    :: AssociationDescription
-associationDescription =
-    AssociationDescription'
-    { _adAssociationId = Nothing
-    , _adInstanceId = Nothing
-    , _adStatus = Nothing
-    , _adLastSuccessfulExecutionDate = Nothing
-    , _adOverview = Nothing
-    , _adLastUpdateAssociationDate = Nothing
-    , _adDate = Nothing
-    , _adLastExecutionDate = Nothing
-    , _adScheduleExpression = Nothing
-    , _adName = Nothing
-    , _adOutputLocation = Nothing
-    , _adTargets = Nothing
-    , _adParameters = Nothing
-    , _adDocumentVersion = Nothing
-    }
-
--- | The association ID.
-adAssociationId :: Lens' AssociationDescription (Maybe Text)
-adAssociationId = lens _adAssociationId (\ s a -> s{_adAssociationId = a});
-
--- | The ID of the instance.
-adInstanceId :: Lens' AssociationDescription (Maybe Text)
-adInstanceId = lens _adInstanceId (\ s a -> s{_adInstanceId = a});
-
--- | The association status.
-adStatus :: Lens' AssociationDescription (Maybe AssociationStatus)
-adStatus = lens _adStatus (\ s a -> s{_adStatus = a});
-
--- | The last date on which the association was successfully run.
-adLastSuccessfulExecutionDate :: Lens' AssociationDescription (Maybe UTCTime)
-adLastSuccessfulExecutionDate = lens _adLastSuccessfulExecutionDate (\ s a -> s{_adLastSuccessfulExecutionDate = a}) . mapping _Time;
-
--- | Information about the association.
-adOverview :: Lens' AssociationDescription (Maybe AssociationOverview)
-adOverview = lens _adOverview (\ s a -> s{_adOverview = a});
-
--- | The date when the association was last updated.
-adLastUpdateAssociationDate :: Lens' AssociationDescription (Maybe UTCTime)
-adLastUpdateAssociationDate = lens _adLastUpdateAssociationDate (\ s a -> s{_adLastUpdateAssociationDate = a}) . mapping _Time;
-
--- | The date when the association was made.
-adDate :: Lens' AssociationDescription (Maybe UTCTime)
-adDate = lens _adDate (\ s a -> s{_adDate = a}) . mapping _Time;
-
--- | The date on which the association was last run.
-adLastExecutionDate :: Lens' AssociationDescription (Maybe UTCTime)
-adLastExecutionDate = lens _adLastExecutionDate (\ s a -> s{_adLastExecutionDate = a}) . mapping _Time;
-
--- | A cron expression that specifies a schedule when the association runs.
-adScheduleExpression :: Lens' AssociationDescription (Maybe Text)
-adScheduleExpression = lens _adScheduleExpression (\ s a -> s{_adScheduleExpression = a});
-
--- | The name of the SSM document.
-adName :: Lens' AssociationDescription (Maybe Text)
-adName = lens _adName (\ s a -> s{_adName = a});
-
--- | An Amazon S3 bucket where you want to store the output details of the request.
-adOutputLocation :: Lens' AssociationDescription (Maybe InstanceAssociationOutputLocation)
-adOutputLocation = lens _adOutputLocation (\ s a -> s{_adOutputLocation = a});
-
--- | The instances targeted by the request.
-adTargets :: Lens' AssociationDescription [Target]
-adTargets = lens _adTargets (\ s a -> s{_adTargets = a}) . _Default . _Coerce;
-
--- | A description of the parameters for a document.
-adParameters :: Lens' AssociationDescription (HashMap Text [Text])
-adParameters = lens _adParameters (\ s a -> s{_adParameters = a}) . _Default . _Map;
-
--- | The document version.
-adDocumentVersion :: Lens' AssociationDescription (Maybe Text)
-adDocumentVersion = lens _adDocumentVersion (\ s a -> s{_adDocumentVersion = a});
-
-instance FromJSON AssociationDescription where
-        parseJSON
-          = withObject "AssociationDescription"
-              (\ x ->
-                 AssociationDescription' <$>
-                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
-                     (x .:? "Status")
-                     <*> (x .:? "LastSuccessfulExecutionDate")
-                     <*> (x .:? "Overview")
-                     <*> (x .:? "LastUpdateAssociationDate")
-                     <*> (x .:? "Date")
-                     <*> (x .:? "LastExecutionDate")
-                     <*> (x .:? "ScheduleExpression")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "OutputLocation")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "Parameters" .!= mempty)
-                     <*> (x .:? "DocumentVersion"))
-
-instance Hashable AssociationDescription
-
-instance NFData AssociationDescription
-
--- | Describes a filter.
---
---
---
--- /See:/ 'associationFilter' smart constructor.
-data AssociationFilter = AssociationFilter'
-    { _afKey   :: !AssociationFilterKey
-    , _afValue :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AssociationFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'afKey' - The name of the filter.
---
--- * 'afValue' - The filter value.
-associationFilter
-    :: AssociationFilterKey -- ^ 'afKey'
-    -> Text -- ^ 'afValue'
-    -> AssociationFilter
-associationFilter pKey_ pValue_ =
-    AssociationFilter'
-    { _afKey = pKey_
-    , _afValue = pValue_
-    }
-
--- | The name of the filter.
-afKey :: Lens' AssociationFilter AssociationFilterKey
-afKey = lens _afKey (\ s a -> s{_afKey = a});
-
--- | The filter value.
-afValue :: Lens' AssociationFilter Text
-afValue = lens _afValue (\ s a -> s{_afValue = a});
-
-instance Hashable AssociationFilter
-
-instance NFData AssociationFilter
-
-instance ToJSON AssociationFilter where
-        toJSON AssociationFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("key" .= _afKey), Just ("value" .= _afValue)])
-
--- | Information about the association.
---
---
---
--- /See:/ 'associationOverview' smart constructor.
-data AssociationOverview = AssociationOverview'
-    { _aoDetailedStatus                   :: !(Maybe Text)
-    , _aoStatus                           :: !(Maybe Text)
-    , _aoAssociationStatusAggregatedCount :: !(Maybe (Map Text Int))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AssociationOverview' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aoDetailedStatus' - A detailed status of the association.
---
--- * 'aoStatus' - The status of the association. Status can be: @Pending@ , @Success@ , or @Failed@ .
---
--- * 'aoAssociationStatusAggregatedCount' - Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status.
-associationOverview
-    :: AssociationOverview
-associationOverview =
-    AssociationOverview'
-    { _aoDetailedStatus = Nothing
-    , _aoStatus = Nothing
-    , _aoAssociationStatusAggregatedCount = Nothing
-    }
-
--- | A detailed status of the association.
-aoDetailedStatus :: Lens' AssociationOverview (Maybe Text)
-aoDetailedStatus = lens _aoDetailedStatus (\ s a -> s{_aoDetailedStatus = a});
-
--- | The status of the association. Status can be: @Pending@ , @Success@ , or @Failed@ .
-aoStatus :: Lens' AssociationOverview (Maybe Text)
-aoStatus = lens _aoStatus (\ s a -> s{_aoStatus = a});
-
--- | Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status.
-aoAssociationStatusAggregatedCount :: Lens' AssociationOverview (HashMap Text Int)
-aoAssociationStatusAggregatedCount = lens _aoAssociationStatusAggregatedCount (\ s a -> s{_aoAssociationStatusAggregatedCount = a}) . _Default . _Map;
-
-instance FromJSON AssociationOverview where
-        parseJSON
-          = withObject "AssociationOverview"
-              (\ x ->
-                 AssociationOverview' <$>
-                   (x .:? "DetailedStatus") <*> (x .:? "Status") <*>
-                     (x .:? "AssociationStatusAggregatedCount" .!=
-                        mempty))
-
-instance Hashable AssociationOverview
-
-instance NFData AssociationOverview
-
--- | Describes an association status.
---
---
---
--- /See:/ 'associationStatus' smart constructor.
-data AssociationStatus = AssociationStatus'
-    { _asAdditionalInfo :: !(Maybe Text)
-    , _asDate           :: !POSIX
-    , _asName           :: !AssociationStatusName
-    , _asMessage        :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AssociationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asAdditionalInfo' - A user-defined string.
---
--- * 'asDate' - The date when the status changed.
---
--- * 'asName' - The status.
---
--- * 'asMessage' - The reason for the status.
-associationStatus
-    :: UTCTime -- ^ 'asDate'
-    -> AssociationStatusName -- ^ 'asName'
-    -> Text -- ^ 'asMessage'
-    -> AssociationStatus
-associationStatus pDate_ pName_ pMessage_ =
-    AssociationStatus'
-    { _asAdditionalInfo = Nothing
-    , _asDate = _Time # pDate_
-    , _asName = pName_
-    , _asMessage = pMessage_
-    }
-
--- | A user-defined string.
-asAdditionalInfo :: Lens' AssociationStatus (Maybe Text)
-asAdditionalInfo = lens _asAdditionalInfo (\ s a -> s{_asAdditionalInfo = a});
-
--- | The date when the status changed.
-asDate :: Lens' AssociationStatus UTCTime
-asDate = lens _asDate (\ s a -> s{_asDate = a}) . _Time;
-
--- | The status.
-asName :: Lens' AssociationStatus AssociationStatusName
-asName = lens _asName (\ s a -> s{_asName = a});
-
--- | The reason for the status.
-asMessage :: Lens' AssociationStatus Text
-asMessage = lens _asMessage (\ s a -> s{_asMessage = a});
-
-instance FromJSON AssociationStatus where
-        parseJSON
-          = withObject "AssociationStatus"
-              (\ x ->
-                 AssociationStatus' <$>
-                   (x .:? "AdditionalInfo") <*> (x .: "Date") <*>
-                     (x .: "Name")
-                     <*> (x .: "Message"))
-
-instance Hashable AssociationStatus
-
-instance NFData AssociationStatus
-
-instance ToJSON AssociationStatus where
-        toJSON AssociationStatus'{..}
-          = object
-              (catMaybes
-                 [("AdditionalInfo" .=) <$> _asAdditionalInfo,
-                  Just ("Date" .= _asDate), Just ("Name" .= _asName),
-                  Just ("Message" .= _asMessage)])
-
--- | Detailed information about the current state of an individual Automation execution.
---
---
---
--- /See:/ 'automationExecution' smart constructor.
-data AutomationExecution = AutomationExecution'
-    { _aeDocumentName              :: !(Maybe Text)
-    , _aeExecutionEndTime          :: !(Maybe POSIX)
-    , _aeFailureMessage            :: !(Maybe Text)
-    , _aeAutomationExecutionStatus :: !(Maybe AutomationExecutionStatus)
-    , _aeOutputs                   :: !(Maybe (Map Text [Text]))
-    , _aeExecutionStartTime        :: !(Maybe POSIX)
-    , _aeParameters                :: !(Maybe (Map Text [Text]))
-    , _aeDocumentVersion           :: !(Maybe Text)
-    , _aeAutomationExecutionId     :: !(Maybe Text)
-    , _aeStepExecutions            :: !(Maybe [StepExecution])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutomationExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aeDocumentName' - The name of the Automation document used during the execution.
---
--- * 'aeExecutionEndTime' - The time the execution finished.
---
--- * 'aeFailureMessage' - A message describing why an execution has failed, if the status is set to Failed.
---
--- * 'aeAutomationExecutionStatus' - The execution status of the Automation.
---
--- * 'aeOutputs' - The list of execution outputs as defined in the automation document.
---
--- * 'aeExecutionStartTime' - The time the execution started.
---
--- * 'aeParameters' - The key-value map of execution parameters, which were supplied when calling @StartAutomationExecution@ .
---
--- * 'aeDocumentVersion' - The version of the document to use during execution.
---
--- * 'aeAutomationExecutionId' - The execution ID.
---
--- * 'aeStepExecutions' - A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are executed in order.
-automationExecution
-    :: AutomationExecution
-automationExecution =
-    AutomationExecution'
-    { _aeDocumentName = Nothing
-    , _aeExecutionEndTime = Nothing
-    , _aeFailureMessage = Nothing
-    , _aeAutomationExecutionStatus = Nothing
-    , _aeOutputs = Nothing
-    , _aeExecutionStartTime = Nothing
-    , _aeParameters = Nothing
-    , _aeDocumentVersion = Nothing
-    , _aeAutomationExecutionId = Nothing
-    , _aeStepExecutions = Nothing
-    }
-
--- | The name of the Automation document used during the execution.
-aeDocumentName :: Lens' AutomationExecution (Maybe Text)
-aeDocumentName = lens _aeDocumentName (\ s a -> s{_aeDocumentName = a});
-
--- | The time the execution finished.
-aeExecutionEndTime :: Lens' AutomationExecution (Maybe UTCTime)
-aeExecutionEndTime = lens _aeExecutionEndTime (\ s a -> s{_aeExecutionEndTime = a}) . mapping _Time;
-
--- | A message describing why an execution has failed, if the status is set to Failed.
-aeFailureMessage :: Lens' AutomationExecution (Maybe Text)
-aeFailureMessage = lens _aeFailureMessage (\ s a -> s{_aeFailureMessage = a});
-
--- | The execution status of the Automation.
-aeAutomationExecutionStatus :: Lens' AutomationExecution (Maybe AutomationExecutionStatus)
-aeAutomationExecutionStatus = lens _aeAutomationExecutionStatus (\ s a -> s{_aeAutomationExecutionStatus = a});
-
--- | The list of execution outputs as defined in the automation document.
-aeOutputs :: Lens' AutomationExecution (HashMap Text [Text])
-aeOutputs = lens _aeOutputs (\ s a -> s{_aeOutputs = a}) . _Default . _Map;
-
--- | The time the execution started.
-aeExecutionStartTime :: Lens' AutomationExecution (Maybe UTCTime)
-aeExecutionStartTime = lens _aeExecutionStartTime (\ s a -> s{_aeExecutionStartTime = a}) . mapping _Time;
-
--- | The key-value map of execution parameters, which were supplied when calling @StartAutomationExecution@ .
-aeParameters :: Lens' AutomationExecution (HashMap Text [Text])
-aeParameters = lens _aeParameters (\ s a -> s{_aeParameters = a}) . _Default . _Map;
-
--- | The version of the document to use during execution.
-aeDocumentVersion :: Lens' AutomationExecution (Maybe Text)
-aeDocumentVersion = lens _aeDocumentVersion (\ s a -> s{_aeDocumentVersion = a});
-
--- | The execution ID.
-aeAutomationExecutionId :: Lens' AutomationExecution (Maybe Text)
-aeAutomationExecutionId = lens _aeAutomationExecutionId (\ s a -> s{_aeAutomationExecutionId = a});
-
--- | A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are executed in order.
-aeStepExecutions :: Lens' AutomationExecution [StepExecution]
-aeStepExecutions = lens _aeStepExecutions (\ s a -> s{_aeStepExecutions = a}) . _Default . _Coerce;
-
-instance FromJSON AutomationExecution where
-        parseJSON
-          = withObject "AutomationExecution"
-              (\ x ->
-                 AutomationExecution' <$>
-                   (x .:? "DocumentName") <*> (x .:? "ExecutionEndTime")
-                     <*> (x .:? "FailureMessage")
-                     <*> (x .:? "AutomationExecutionStatus")
-                     <*> (x .:? "Outputs" .!= mempty)
-                     <*> (x .:? "ExecutionStartTime")
-                     <*> (x .:? "Parameters" .!= mempty)
-                     <*> (x .:? "DocumentVersion")
-                     <*> (x .:? "AutomationExecutionId")
-                     <*> (x .:? "StepExecutions" .!= mempty))
-
-instance Hashable AutomationExecution
-
-instance NFData AutomationExecution
-
--- | A filter used to match specific automation executions. This is used to limit the scope of Automation execution information returned.
---
---
---
--- /See:/ 'automationExecutionFilter' smart constructor.
-data AutomationExecutionFilter = AutomationExecutionFilter'
-    { _aefKey    :: !AutomationExecutionFilterKey
-    , _aefValues :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutomationExecutionFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aefKey' - The aspect of the Automation execution information that should be limited.
---
--- * 'aefValues' - The values used to limit the execution information associated with the filter's key.
-automationExecutionFilter
-    :: AutomationExecutionFilterKey -- ^ 'aefKey'
-    -> NonEmpty Text -- ^ 'aefValues'
-    -> AutomationExecutionFilter
-automationExecutionFilter pKey_ pValues_ =
-    AutomationExecutionFilter'
-    { _aefKey = pKey_
-    , _aefValues = _List1 # pValues_
-    }
-
--- | The aspect of the Automation execution information that should be limited.
-aefKey :: Lens' AutomationExecutionFilter AutomationExecutionFilterKey
-aefKey = lens _aefKey (\ s a -> s{_aefKey = a});
-
--- | The values used to limit the execution information associated with the filter's key.
-aefValues :: Lens' AutomationExecutionFilter (NonEmpty Text)
-aefValues = lens _aefValues (\ s a -> s{_aefValues = a}) . _List1;
-
-instance Hashable AutomationExecutionFilter
-
-instance NFData AutomationExecutionFilter
-
-instance ToJSON AutomationExecutionFilter where
-        toJSON AutomationExecutionFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("Key" .= _aefKey),
-                  Just ("Values" .= _aefValues)])
-
--- | Details about a specific Automation execution.
---
---
---
--- /See:/ 'automationExecutionMetadata' smart constructor.
-data AutomationExecutionMetadata = AutomationExecutionMetadata'
-    { _aemLogFile                   :: !(Maybe Text)
-    , _aemExecutedBy                :: !(Maybe Text)
-    , _aemDocumentName              :: !(Maybe Text)
-    , _aemExecutionEndTime          :: !(Maybe POSIX)
-    , _aemAutomationExecutionStatus :: !(Maybe AutomationExecutionStatus)
-    , _aemOutputs                   :: !(Maybe (Map Text [Text]))
-    , _aemExecutionStartTime        :: !(Maybe POSIX)
-    , _aemDocumentVersion           :: !(Maybe Text)
-    , _aemAutomationExecutionId     :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AutomationExecutionMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aemLogFile' - An Amazon S3 bucket where execution information is stored.
---
--- * 'aemExecutedBy' - The IAM role ARN of the user who executed the Automation.
---
--- * 'aemDocumentName' - The name of the Automation document used during execution.
---
--- * 'aemExecutionEndTime' - The time the execution finished. This is not populated if the execution is still in progress.
---
--- * 'aemAutomationExecutionStatus' - The status of the execution. Valid values include: Running, Succeeded, Failed, Timed out, or Cancelled.
---
--- * 'aemOutputs' - The list of execution outputs as defined in the Automation document.
---
--- * 'aemExecutionStartTime' - The time the execution started.>
---
--- * 'aemDocumentVersion' - The document version used during the execution.
---
--- * 'aemAutomationExecutionId' - The execution ID.
-automationExecutionMetadata
-    :: AutomationExecutionMetadata
-automationExecutionMetadata =
-    AutomationExecutionMetadata'
-    { _aemLogFile = Nothing
-    , _aemExecutedBy = Nothing
-    , _aemDocumentName = Nothing
-    , _aemExecutionEndTime = Nothing
-    , _aemAutomationExecutionStatus = Nothing
-    , _aemOutputs = Nothing
-    , _aemExecutionStartTime = Nothing
-    , _aemDocumentVersion = Nothing
-    , _aemAutomationExecutionId = Nothing
-    }
-
--- | An Amazon S3 bucket where execution information is stored.
-aemLogFile :: Lens' AutomationExecutionMetadata (Maybe Text)
-aemLogFile = lens _aemLogFile (\ s a -> s{_aemLogFile = a});
-
--- | The IAM role ARN of the user who executed the Automation.
-aemExecutedBy :: Lens' AutomationExecutionMetadata (Maybe Text)
-aemExecutedBy = lens _aemExecutedBy (\ s a -> s{_aemExecutedBy = a});
-
--- | The name of the Automation document used during execution.
-aemDocumentName :: Lens' AutomationExecutionMetadata (Maybe Text)
-aemDocumentName = lens _aemDocumentName (\ s a -> s{_aemDocumentName = a});
-
--- | The time the execution finished. This is not populated if the execution is still in progress.
-aemExecutionEndTime :: Lens' AutomationExecutionMetadata (Maybe UTCTime)
-aemExecutionEndTime = lens _aemExecutionEndTime (\ s a -> s{_aemExecutionEndTime = a}) . mapping _Time;
-
--- | The status of the execution. Valid values include: Running, Succeeded, Failed, Timed out, or Cancelled.
-aemAutomationExecutionStatus :: Lens' AutomationExecutionMetadata (Maybe AutomationExecutionStatus)
-aemAutomationExecutionStatus = lens _aemAutomationExecutionStatus (\ s a -> s{_aemAutomationExecutionStatus = a});
-
--- | The list of execution outputs as defined in the Automation document.
-aemOutputs :: Lens' AutomationExecutionMetadata (HashMap Text [Text])
-aemOutputs = lens _aemOutputs (\ s a -> s{_aemOutputs = a}) . _Default . _Map;
-
--- | The time the execution started.>
-aemExecutionStartTime :: Lens' AutomationExecutionMetadata (Maybe UTCTime)
-aemExecutionStartTime = lens _aemExecutionStartTime (\ s a -> s{_aemExecutionStartTime = a}) . mapping _Time;
-
--- | The document version used during the execution.
-aemDocumentVersion :: Lens' AutomationExecutionMetadata (Maybe Text)
-aemDocumentVersion = lens _aemDocumentVersion (\ s a -> s{_aemDocumentVersion = a});
-
--- | The execution ID.
-aemAutomationExecutionId :: Lens' AutomationExecutionMetadata (Maybe Text)
-aemAutomationExecutionId = lens _aemAutomationExecutionId (\ s a -> s{_aemAutomationExecutionId = a});
-
-instance FromJSON AutomationExecutionMetadata where
-        parseJSON
-          = withObject "AutomationExecutionMetadata"
-              (\ x ->
-                 AutomationExecutionMetadata' <$>
-                   (x .:? "LogFile") <*> (x .:? "ExecutedBy") <*>
-                     (x .:? "DocumentName")
-                     <*> (x .:? "ExecutionEndTime")
-                     <*> (x .:? "AutomationExecutionStatus")
-                     <*> (x .:? "Outputs" .!= mempty)
-                     <*> (x .:? "ExecutionStartTime")
-                     <*> (x .:? "DocumentVersion")
-                     <*> (x .:? "AutomationExecutionId"))
-
-instance Hashable AutomationExecutionMetadata
-
-instance NFData AutomationExecutionMetadata
-
--- | Describes a command request.
---
---
---
--- /See:/ 'command' smart constructor.
-data Command = Command'
-    { _cStatus             :: !(Maybe CommandStatus)
-    , _cExpiresAfter       :: !(Maybe POSIX)
-    , _cNotificationConfig :: !(Maybe NotificationConfig)
-    , _cTargetCount        :: !(Maybe Int)
-    , _cOutputS3KeyPrefix  :: !(Maybe Text)
-    , _cDocumentName       :: !(Maybe Text)
-    , _cErrorCount         :: !(Maybe Int)
-    , _cStatusDetails      :: !(Maybe Text)
-    , _cMaxErrors          :: !(Maybe Text)
-    , _cInstanceIds        :: !(Maybe [Text])
-    , _cOutputS3Region     :: !(Maybe Text)
-    , _cTargets            :: !(Maybe [Target])
-    , _cCommandId          :: !(Maybe Text)
-    , _cParameters         :: !(Maybe (Map Text [Text]))
-    , _cComment            :: !(Maybe Text)
-    , _cCompletedCount     :: !(Maybe Int)
-    , _cOutputS3BucketName :: !(Maybe Text)
-    , _cMaxConcurrency     :: !(Maybe Text)
-    , _cRequestedDateTime  :: !(Maybe POSIX)
-    , _cServiceRole        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Command' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cStatus' - The status of the command.
---
--- * 'cExpiresAfter' - If this time is reached and the command has not already started executing, it will not execute. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API.
---
--- * 'cNotificationConfig' - Configurations for sending notifications about command status changes.
---
--- * 'cTargetCount' - The number of targets for the command.
---
--- * 'cOutputS3KeyPrefix' - The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command.
---
--- * 'cDocumentName' - The name of the SSM document requested for execution.
---
--- * 'cErrorCount' - The number of targets for which the status is @Failed@ or @Execution Timed Out@ .
---
--- * 'cStatusDetails' - A detailed status of the command execution. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:     * Pending – The command has not been sent to any instances.     * In Progress – The command has been sent to at least one instance but has not reached a final state on all instances.     * Success – The command successfully executed on all invocations. This is a terminal state.     * Delivery Timed Out – The value of @MaxErrors@ or more command invocations shows a status of @Delivery Timed Out@ . This is a terminal state.     * Execution Timed Out – The value of @MaxErrors@ or more command invocations shows a status of @Execution Timed Out@ . This is a terminal state.     * Failed – The value of @MaxErrors@ or more command invocations shows a status of @Failed@ . This is a terminal state.     * Incomplete – The command was attempted on all instances and one or more invocations does not have a value of @Success@ but not enough invocations failed for the status to be @Failed@ . This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Rate Exceeded – The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before executing it on any instance. This is a terminal state.
---
--- * 'cMaxErrors' - The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 50. For more information about how to use @MaxErrors@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
---
--- * 'cInstanceIds' - The instance IDs against which this command was requested.
---
--- * 'cOutputS3Region' - The region where the Amazon Simple Storage Service (Amazon S3) output bucket is located. The default value is the region where Run Command is being called.
---
--- * 'cTargets' - An array of search criteria that targets instances using a @Key@ ;@Value@ combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call.
---
--- * 'cCommandId' - A unique identifier for this command.
---
--- * 'cParameters' - The parameter values to be inserted in the SSM document when executing the command.
---
--- * 'cComment' - User-specified information about the command, such as a brief description of what the command should do.
---
--- * 'cCompletedCount' - The number of targets for which the command invocation reached a terminal state. Terminal states include the following: @Success@ , @Failed@ , @Execution Timed Out@ , @Delivery Timed Out@ , @Canceled@ , @Terminated@ , or @Undeliverable@ .
---
--- * 'cOutputS3BucketName' - The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command.
---
--- * 'cMaxConcurrency' - The maximum number of instances that are allowed to execute the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use @MaxConcurrency@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
---
--- * 'cRequestedDateTime' - The date and time the command was requested.
---
--- * 'cServiceRole' - The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes.
-command
-    :: Command
-command =
-    Command'
-    { _cStatus = Nothing
-    , _cExpiresAfter = Nothing
-    , _cNotificationConfig = Nothing
-    , _cTargetCount = Nothing
-    , _cOutputS3KeyPrefix = Nothing
-    , _cDocumentName = Nothing
-    , _cErrorCount = Nothing
-    , _cStatusDetails = Nothing
-    , _cMaxErrors = Nothing
-    , _cInstanceIds = Nothing
-    , _cOutputS3Region = Nothing
-    , _cTargets = Nothing
-    , _cCommandId = Nothing
-    , _cParameters = Nothing
-    , _cComment = Nothing
-    , _cCompletedCount = Nothing
-    , _cOutputS3BucketName = Nothing
-    , _cMaxConcurrency = Nothing
-    , _cRequestedDateTime = Nothing
-    , _cServiceRole = Nothing
-    }
-
--- | The status of the command.
-cStatus :: Lens' Command (Maybe CommandStatus)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a});
-
--- | If this time is reached and the command has not already started executing, it will not execute. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API.
-cExpiresAfter :: Lens' Command (Maybe UTCTime)
-cExpiresAfter = lens _cExpiresAfter (\ s a -> s{_cExpiresAfter = a}) . mapping _Time;
-
--- | Configurations for sending notifications about command status changes.
-cNotificationConfig :: Lens' Command (Maybe NotificationConfig)
-cNotificationConfig = lens _cNotificationConfig (\ s a -> s{_cNotificationConfig = a});
-
--- | The number of targets for the command.
-cTargetCount :: Lens' Command (Maybe Int)
-cTargetCount = lens _cTargetCount (\ s a -> s{_cTargetCount = a});
-
--- | The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command.
-cOutputS3KeyPrefix :: Lens' Command (Maybe Text)
-cOutputS3KeyPrefix = lens _cOutputS3KeyPrefix (\ s a -> s{_cOutputS3KeyPrefix = a});
-
--- | The name of the SSM document requested for execution.
-cDocumentName :: Lens' Command (Maybe Text)
-cDocumentName = lens _cDocumentName (\ s a -> s{_cDocumentName = a});
-
--- | The number of targets for which the status is @Failed@ or @Execution Timed Out@ .
-cErrorCount :: Lens' Command (Maybe Int)
-cErrorCount = lens _cErrorCount (\ s a -> s{_cErrorCount = a});
-
--- | A detailed status of the command execution. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:     * Pending – The command has not been sent to any instances.     * In Progress – The command has been sent to at least one instance but has not reached a final state on all instances.     * Success – The command successfully executed on all invocations. This is a terminal state.     * Delivery Timed Out – The value of @MaxErrors@ or more command invocations shows a status of @Delivery Timed Out@ . This is a terminal state.     * Execution Timed Out – The value of @MaxErrors@ or more command invocations shows a status of @Execution Timed Out@ . This is a terminal state.     * Failed – The value of @MaxErrors@ or more command invocations shows a status of @Failed@ . This is a terminal state.     * Incomplete – The command was attempted on all instances and one or more invocations does not have a value of @Success@ but not enough invocations failed for the status to be @Failed@ . This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Rate Exceeded – The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before executing it on any instance. This is a terminal state.
-cStatusDetails :: Lens' Command (Maybe Text)
-cStatusDetails = lens _cStatusDetails (\ s a -> s{_cStatusDetails = a});
-
--- | The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 50. For more information about how to use @MaxErrors@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
-cMaxErrors :: Lens' Command (Maybe Text)
-cMaxErrors = lens _cMaxErrors (\ s a -> s{_cMaxErrors = a});
-
--- | The instance IDs against which this command was requested.
-cInstanceIds :: Lens' Command [Text]
-cInstanceIds = lens _cInstanceIds (\ s a -> s{_cInstanceIds = a}) . _Default . _Coerce;
-
--- | The region where the Amazon Simple Storage Service (Amazon S3) output bucket is located. The default value is the region where Run Command is being called.
-cOutputS3Region :: Lens' Command (Maybe Text)
-cOutputS3Region = lens _cOutputS3Region (\ s a -> s{_cOutputS3Region = a});
-
--- | An array of search criteria that targets instances using a @Key@ ;@Value@ combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call.
-cTargets :: Lens' Command [Target]
-cTargets = lens _cTargets (\ s a -> s{_cTargets = a}) . _Default . _Coerce;
-
--- | A unique identifier for this command.
-cCommandId :: Lens' Command (Maybe Text)
-cCommandId = lens _cCommandId (\ s a -> s{_cCommandId = a});
-
--- | The parameter values to be inserted in the SSM document when executing the command.
-cParameters :: Lens' Command (HashMap Text [Text])
-cParameters = lens _cParameters (\ s a -> s{_cParameters = a}) . _Default . _Map;
-
--- | User-specified information about the command, such as a brief description of what the command should do.
-cComment :: Lens' Command (Maybe Text)
-cComment = lens _cComment (\ s a -> s{_cComment = a});
-
--- | The number of targets for which the command invocation reached a terminal state. Terminal states include the following: @Success@ , @Failed@ , @Execution Timed Out@ , @Delivery Timed Out@ , @Canceled@ , @Terminated@ , or @Undeliverable@ .
-cCompletedCount :: Lens' Command (Maybe Int)
-cCompletedCount = lens _cCompletedCount (\ s a -> s{_cCompletedCount = a});
-
--- | The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command.
-cOutputS3BucketName :: Lens' Command (Maybe Text)
-cOutputS3BucketName = lens _cOutputS3BucketName (\ s a -> s{_cOutputS3BucketName = a});
-
--- | The maximum number of instances that are allowed to execute the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use @MaxConcurrency@ , see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
-cMaxConcurrency :: Lens' Command (Maybe Text)
-cMaxConcurrency = lens _cMaxConcurrency (\ s a -> s{_cMaxConcurrency = a});
-
--- | The date and time the command was requested.
-cRequestedDateTime :: Lens' Command (Maybe UTCTime)
-cRequestedDateTime = lens _cRequestedDateTime (\ s a -> s{_cRequestedDateTime = a}) . mapping _Time;
-
--- | The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes.
-cServiceRole :: Lens' Command (Maybe Text)
-cServiceRole = lens _cServiceRole (\ s a -> s{_cServiceRole = a});
-
-instance FromJSON Command where
-        parseJSON
-          = withObject "Command"
-              (\ x ->
-                 Command' <$>
-                   (x .:? "Status") <*> (x .:? "ExpiresAfter") <*>
-                     (x .:? "NotificationConfig")
-                     <*> (x .:? "TargetCount")
-                     <*> (x .:? "OutputS3KeyPrefix")
-                     <*> (x .:? "DocumentName")
-                     <*> (x .:? "ErrorCount")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "MaxErrors")
-                     <*> (x .:? "InstanceIds" .!= mempty)
-                     <*> (x .:? "OutputS3Region")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "CommandId")
-                     <*> (x .:? "Parameters" .!= mempty)
-                     <*> (x .:? "Comment")
-                     <*> (x .:? "CompletedCount")
-                     <*> (x .:? "OutputS3BucketName")
-                     <*> (x .:? "MaxConcurrency")
-                     <*> (x .:? "RequestedDateTime")
-                     <*> (x .:? "ServiceRole"))
-
-instance Hashable Command
-
-instance NFData Command
-
--- | Describes a command filter.
---
---
---
--- /See:/ 'commandFilter' smart constructor.
-data CommandFilter = CommandFilter'
-    { _cfKey   :: !CommandFilterKey
-    , _cfValue :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommandFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfKey' - The name of the filter. For example, requested date and time.
---
--- * 'cfValue' - The filter value. For example: June 30, 2015.
-commandFilter
-    :: CommandFilterKey -- ^ 'cfKey'
-    -> Text -- ^ 'cfValue'
-    -> CommandFilter
-commandFilter pKey_ pValue_ =
-    CommandFilter'
-    { _cfKey = pKey_
-    , _cfValue = pValue_
-    }
-
--- | The name of the filter. For example, requested date and time.
-cfKey :: Lens' CommandFilter CommandFilterKey
-cfKey = lens _cfKey (\ s a -> s{_cfKey = a});
-
--- | The filter value. For example: June 30, 2015.
-cfValue :: Lens' CommandFilter Text
-cfValue = lens _cfValue (\ s a -> s{_cfValue = a});
-
-instance Hashable CommandFilter
-
-instance NFData CommandFilter
-
-instance ToJSON CommandFilter where
-        toJSON CommandFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("key" .= _cfKey), Just ("value" .= _cfValue)])
-
--- | An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user executes SendCommand against three instances, then a command invocation is created for each requested instance ID. A command invocation returns status and detail information about a command you executed.
---
---
---
--- /See:/ 'commandInvocation' smart constructor.
-data CommandInvocation = CommandInvocation'
-    { _ciInstanceId         :: !(Maybe Text)
-    , _ciStatus             :: !(Maybe CommandInvocationStatus)
-    , _ciNotificationConfig :: !(Maybe NotificationConfig)
-    , _ciCommandPlugins     :: !(Maybe [CommandPlugin])
-    , _ciDocumentName       :: !(Maybe Text)
-    , _ciStandardErrorURL   :: !(Maybe Text)
-    , _ciStatusDetails      :: !(Maybe Text)
-    , _ciStandardOutputURL  :: !(Maybe Text)
-    , _ciCommandId          :: !(Maybe Text)
-    , _ciComment            :: !(Maybe Text)
-    , _ciTraceOutput        :: !(Maybe Text)
-    , _ciInstanceName       :: !(Maybe Text)
-    , _ciRequestedDateTime  :: !(Maybe POSIX)
-    , _ciServiceRole        :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommandInvocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ciInstanceId' - The instance ID in which this invocation was requested.
---
--- * 'ciStatus' - Whether or not the invocation succeeded, failed, or is pending.
---
--- * 'ciNotificationConfig' - Configurations for sending notifications about command status changes on a per instance basis.
---
--- * 'ciCommandPlugins' - Undocumented member.
---
--- * 'ciDocumentName' - The document name that was requested for execution.
---
--- * 'ciStandardErrorURL' - The URL to the plugin’s StdErr file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, @StandardErrorUrl@ is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
---
--- * 'ciStatusDetails' - A detailed status of the command execution for each invocation (each instance targeted by the command). @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:      * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Success – The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit and don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
---
--- * 'ciStandardOutputURL' - The URL to the plugin’s StdOut file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, @StandardOutputUrl@ is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
---
--- * 'ciCommandId' - The command against which this invocation was requested.
---
--- * 'ciComment' - User-specified information about the command, such as a brief description of what the command should do.
---
--- * 'ciTraceOutput' - Gets the trace output sent by the agent.
---
--- * 'ciInstanceName' - The name of the invocation target. For Amazon EC2 instances this is the value for the @aws:Name@ tag. For on-premises instances, this is the name of the instance.
---
--- * 'ciRequestedDateTime' - The time and date the request was sent to this instance.
---
--- * 'ciServiceRole' - The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis.
-commandInvocation
-    :: CommandInvocation
-commandInvocation =
-    CommandInvocation'
-    { _ciInstanceId = Nothing
-    , _ciStatus = Nothing
-    , _ciNotificationConfig = Nothing
-    , _ciCommandPlugins = Nothing
-    , _ciDocumentName = Nothing
-    , _ciStandardErrorURL = Nothing
-    , _ciStatusDetails = Nothing
-    , _ciStandardOutputURL = Nothing
-    , _ciCommandId = Nothing
-    , _ciComment = Nothing
-    , _ciTraceOutput = Nothing
-    , _ciInstanceName = Nothing
-    , _ciRequestedDateTime = Nothing
-    , _ciServiceRole = Nothing
-    }
-
--- | The instance ID in which this invocation was requested.
-ciInstanceId :: Lens' CommandInvocation (Maybe Text)
-ciInstanceId = lens _ciInstanceId (\ s a -> s{_ciInstanceId = a});
-
--- | Whether or not the invocation succeeded, failed, or is pending.
-ciStatus :: Lens' CommandInvocation (Maybe CommandInvocationStatus)
-ciStatus = lens _ciStatus (\ s a -> s{_ciStatus = a});
-
--- | Configurations for sending notifications about command status changes on a per instance basis.
-ciNotificationConfig :: Lens' CommandInvocation (Maybe NotificationConfig)
-ciNotificationConfig = lens _ciNotificationConfig (\ s a -> s{_ciNotificationConfig = a});
-
--- | Undocumented member.
-ciCommandPlugins :: Lens' CommandInvocation [CommandPlugin]
-ciCommandPlugins = lens _ciCommandPlugins (\ s a -> s{_ciCommandPlugins = a}) . _Default . _Coerce;
-
--- | The document name that was requested for execution.
-ciDocumentName :: Lens' CommandInvocation (Maybe Text)
-ciDocumentName = lens _ciDocumentName (\ s a -> s{_ciDocumentName = a});
-
--- | The URL to the plugin’s StdErr file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, @StandardErrorUrl@ is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
-ciStandardErrorURL :: Lens' CommandInvocation (Maybe Text)
-ciStandardErrorURL = lens _ciStandardErrorURL (\ s a -> s{_ciStandardErrorURL = a});
-
--- | A detailed status of the command execution for each invocation (each instance targeted by the command). @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:      * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Success – The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit and don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
-ciStatusDetails :: Lens' CommandInvocation (Maybe Text)
-ciStatusDetails = lens _ciStatusDetails (\ s a -> s{_ciStatusDetails = a});
-
--- | The URL to the plugin’s StdOut file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, @StandardOutputUrl@ is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
-ciStandardOutputURL :: Lens' CommandInvocation (Maybe Text)
-ciStandardOutputURL = lens _ciStandardOutputURL (\ s a -> s{_ciStandardOutputURL = a});
-
--- | The command against which this invocation was requested.
-ciCommandId :: Lens' CommandInvocation (Maybe Text)
-ciCommandId = lens _ciCommandId (\ s a -> s{_ciCommandId = a});
-
--- | User-specified information about the command, such as a brief description of what the command should do.
-ciComment :: Lens' CommandInvocation (Maybe Text)
-ciComment = lens _ciComment (\ s a -> s{_ciComment = a});
-
--- | Gets the trace output sent by the agent.
-ciTraceOutput :: Lens' CommandInvocation (Maybe Text)
-ciTraceOutput = lens _ciTraceOutput (\ s a -> s{_ciTraceOutput = a});
-
--- | The name of the invocation target. For Amazon EC2 instances this is the value for the @aws:Name@ tag. For on-premises instances, this is the name of the instance.
-ciInstanceName :: Lens' CommandInvocation (Maybe Text)
-ciInstanceName = lens _ciInstanceName (\ s a -> s{_ciInstanceName = a});
-
--- | The time and date the request was sent to this instance.
-ciRequestedDateTime :: Lens' CommandInvocation (Maybe UTCTime)
-ciRequestedDateTime = lens _ciRequestedDateTime (\ s a -> s{_ciRequestedDateTime = a}) . mapping _Time;
-
--- | The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis.
-ciServiceRole :: Lens' CommandInvocation (Maybe Text)
-ciServiceRole = lens _ciServiceRole (\ s a -> s{_ciServiceRole = a});
-
-instance FromJSON CommandInvocation where
-        parseJSON
-          = withObject "CommandInvocation"
-              (\ x ->
-                 CommandInvocation' <$>
-                   (x .:? "InstanceId") <*> (x .:? "Status") <*>
-                     (x .:? "NotificationConfig")
-                     <*> (x .:? "CommandPlugins" .!= mempty)
-                     <*> (x .:? "DocumentName")
-                     <*> (x .:? "StandardErrorUrl")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "StandardOutputUrl")
-                     <*> (x .:? "CommandId")
-                     <*> (x .:? "Comment")
-                     <*> (x .:? "TraceOutput")
-                     <*> (x .:? "InstanceName")
-                     <*> (x .:? "RequestedDateTime")
-                     <*> (x .:? "ServiceRole"))
-
-instance Hashable CommandInvocation
-
-instance NFData CommandInvocation
-
--- | Describes plugin details.
---
---
---
--- /See:/ 'commandPlugin' smart constructor.
-data CommandPlugin = CommandPlugin'
-    { _cpStatus                 :: !(Maybe CommandPluginStatus)
-    , _cpResponseStartDateTime  :: !(Maybe POSIX)
-    , _cpOutputS3KeyPrefix      :: !(Maybe Text)
-    , _cpStandardErrorURL       :: !(Maybe Text)
-    , _cpResponseCode           :: !(Maybe Int)
-    , _cpStatusDetails          :: !(Maybe Text)
-    , _cpOutput                 :: !(Maybe Text)
-    , _cpStandardOutputURL      :: !(Maybe Text)
-    , _cpName                   :: !(Maybe Text)
-    , _cpOutputS3Region         :: !(Maybe Text)
-    , _cpOutputS3BucketName     :: !(Maybe Text)
-    , _cpResponseFinishDateTime :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommandPlugin' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpStatus' - The status of this plugin. You can execute a document with multiple plugins.
---
--- * 'cpResponseStartDateTime' - The time the plugin started executing.
---
--- * 'cpOutputS3KeyPrefix' - The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: @test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript@  @test_folder@ is the name of the Amazon S3 bucket; @ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix@ is the name of the S3 prefix; @i-1234567876543@ is the instance ID; @awsrunShellScript@ is the name of the plugin.
---
--- * 'cpStandardErrorURL' - The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty.
---
--- * 'cpResponseCode' - A numeric response code generated after executing the plugin.
---
--- * 'cpStatusDetails' - A detailed status of the plugin execution. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:     * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Success – The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit, and they don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
---
--- * 'cpOutput' - Output of the plugin execution.
---
--- * 'cpStandardOutputURL' - The URL for the complete text written by the plugin to stdout in Amazon S3. If the Amazon S3 bucket for the command was not specified, then this string is empty.
---
--- * 'cpName' - 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.
---
--- * 'cpOutputS3Region' - The name of the region where the output is stored in Amazon S3.
---
--- * 'cpOutputS3BucketName' - The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: @test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript@  @test_folder@ is the name of the Amazon S3 bucket; @ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix@ is the name of the S3 prefix; @i-1234567876543@ is the instance ID; @awsrunShellScript@ is the name of the plugin.
---
--- * 'cpResponseFinishDateTime' - The time the plugin stopped executing. Could stop prematurely if, for example, a cancel command was sent.
-commandPlugin
-    :: CommandPlugin
-commandPlugin =
-    CommandPlugin'
-    { _cpStatus = Nothing
-    , _cpResponseStartDateTime = Nothing
-    , _cpOutputS3KeyPrefix = Nothing
-    , _cpStandardErrorURL = Nothing
-    , _cpResponseCode = Nothing
-    , _cpStatusDetails = Nothing
-    , _cpOutput = Nothing
-    , _cpStandardOutputURL = Nothing
-    , _cpName = Nothing
-    , _cpOutputS3Region = Nothing
-    , _cpOutputS3BucketName = Nothing
-    , _cpResponseFinishDateTime = Nothing
-    }
-
--- | The status of this plugin. You can execute a document with multiple plugins.
-cpStatus :: Lens' CommandPlugin (Maybe CommandPluginStatus)
-cpStatus = lens _cpStatus (\ s a -> s{_cpStatus = a});
-
--- | The time the plugin started executing.
-cpResponseStartDateTime :: Lens' CommandPlugin (Maybe UTCTime)
-cpResponseStartDateTime = lens _cpResponseStartDateTime (\ s a -> s{_cpResponseStartDateTime = a}) . mapping _Time;
-
--- | The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: @test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript@  @test_folder@ is the name of the Amazon S3 bucket; @ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix@ is the name of the S3 prefix; @i-1234567876543@ is the instance ID; @awsrunShellScript@ is the name of the plugin.
-cpOutputS3KeyPrefix :: Lens' CommandPlugin (Maybe Text)
-cpOutputS3KeyPrefix = lens _cpOutputS3KeyPrefix (\ s a -> s{_cpOutputS3KeyPrefix = a});
-
--- | The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty.
-cpStandardErrorURL :: Lens' CommandPlugin (Maybe Text)
-cpStandardErrorURL = lens _cpStandardErrorURL (\ s a -> s{_cpStandardErrorURL = a});
-
--- | A numeric response code generated after executing the plugin.
-cpResponseCode :: Lens' CommandPlugin (Maybe Int)
-cpResponseCode = lens _cpResponseCode (\ s a -> s{_cpResponseCode = a});
-
--- | A detailed status of the plugin execution. @StatusDetails@ includes more information than @Status@ because it includes states resulting from error and concurrency control parameters. @StatusDetails@ can show different results than @Status@ . For more information about these statuses, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitor Commands> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/monitor-commands.html Monitor Commands> (Windows). @StatusDetails@ can be one of the following values:     * Pending – The command has not been sent to the instance.     * In Progress – The command has been sent to the instance but has not reached a terminal state.     * Success – The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out – The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command’s @MaxErrors@ limit, but they do contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Execution Timed Out – Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Failed – The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the @MaxErrors@ limit of the parent command. This is a terminal state.     * Canceled – The command was terminated before it was completed. This is a terminal state.     * Undeliverable – The command can't be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don't count against the parent command’s @MaxErrors@ limit, and they don't contribute to whether the parent command status is @Success@ or @Incomplete@ . This is a terminal state.     * Terminated – The parent command exceeded its @MaxErrors@ limit and subsequent command invocations were canceled by the system. This is a terminal state.
-cpStatusDetails :: Lens' CommandPlugin (Maybe Text)
-cpStatusDetails = lens _cpStatusDetails (\ s a -> s{_cpStatusDetails = a});
-
--- | Output of the plugin execution.
-cpOutput :: Lens' CommandPlugin (Maybe Text)
-cpOutput = lens _cpOutput (\ s a -> s{_cpOutput = a});
-
--- | The URL for the complete text written by the plugin to stdout in Amazon S3. If the Amazon S3 bucket for the command was not specified, then this string is empty.
-cpStandardOutputURL :: Lens' CommandPlugin (Maybe Text)
-cpStandardOutputURL = lens _cpStandardOutputURL (\ s a -> s{_cpStandardOutputURL = a});
-
--- | 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});
-
--- | The name of the region where the output is stored in Amazon S3.
-cpOutputS3Region :: Lens' CommandPlugin (Maybe Text)
-cpOutputS3Region = lens _cpOutputS3Region (\ s a -> s{_cpOutputS3Region = a});
-
--- | The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: @test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript@  @test_folder@ is the name of the Amazon S3 bucket; @ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix@ is the name of the S3 prefix; @i-1234567876543@ is the instance ID; @awsrunShellScript@ is the name of the plugin.
-cpOutputS3BucketName :: Lens' CommandPlugin (Maybe Text)
-cpOutputS3BucketName = lens _cpOutputS3BucketName (\ s a -> s{_cpOutputS3BucketName = a});
-
--- | The time the plugin stopped executing. Could stop prematurely if, for example, a cancel command was sent.
-cpResponseFinishDateTime :: Lens' CommandPlugin (Maybe UTCTime)
-cpResponseFinishDateTime = lens _cpResponseFinishDateTime (\ s a -> s{_cpResponseFinishDateTime = a}) . mapping _Time;
-
-instance FromJSON CommandPlugin where
-        parseJSON
-          = withObject "CommandPlugin"
-              (\ x ->
-                 CommandPlugin' <$>
-                   (x .:? "Status") <*> (x .:? "ResponseStartDateTime")
-                     <*> (x .:? "OutputS3KeyPrefix")
-                     <*> (x .:? "StandardErrorUrl")
-                     <*> (x .:? "ResponseCode")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "Output")
-                     <*> (x .:? "StandardOutputUrl")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "OutputS3Region")
-                     <*> (x .:? "OutputS3BucketName")
-                     <*> (x .:? "ResponseFinishDateTime"))
-
-instance Hashable CommandPlugin
-
-instance NFData CommandPlugin
-
--- | Describes the association of an SSM document and an instance.
---
---
---
--- /See:/ 'createAssociationBatchRequestEntry' smart constructor.
-data CreateAssociationBatchRequestEntry = CreateAssociationBatchRequestEntry'
-    { _cabreInstanceId         :: !(Maybe Text)
-    , _cabreScheduleExpression :: !(Maybe Text)
-    , _cabreOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
-    , _cabreTargets            :: !(Maybe [Target])
-    , _cabreParameters         :: !(Maybe (Map Text [Text]))
-    , _cabreDocumentVersion    :: !(Maybe Text)
-    , _cabreName               :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CreateAssociationBatchRequestEntry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cabreInstanceId' - The ID of the instance.
---
--- * 'cabreScheduleExpression' - A cron expression that specifies a schedule when the association runs.
---
--- * 'cabreOutputLocation' - An Amazon S3 bucket where you want to store the results of this request.
---
--- * 'cabreTargets' - The instances targeted by the request.
---
--- * 'cabreParameters' - A description of the parameters for a document.
---
--- * 'cabreDocumentVersion' - The document version.
---
--- * 'cabreName' - The name of the configuration document.
-createAssociationBatchRequestEntry
-    :: Text -- ^ 'cabreName'
-    -> CreateAssociationBatchRequestEntry
-createAssociationBatchRequestEntry pName_ =
-    CreateAssociationBatchRequestEntry'
-    { _cabreInstanceId = Nothing
-    , _cabreScheduleExpression = Nothing
-    , _cabreOutputLocation = Nothing
-    , _cabreTargets = Nothing
-    , _cabreParameters = Nothing
-    , _cabreDocumentVersion = Nothing
-    , _cabreName = pName_
-    }
-
--- | The ID of the instance.
-cabreInstanceId :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
-cabreInstanceId = lens _cabreInstanceId (\ s a -> s{_cabreInstanceId = a});
-
--- | A cron expression that specifies a schedule when the association runs.
-cabreScheduleExpression :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
-cabreScheduleExpression = lens _cabreScheduleExpression (\ s a -> s{_cabreScheduleExpression = a});
-
--- | An Amazon S3 bucket where you want to store the results of this request.
-cabreOutputLocation :: Lens' CreateAssociationBatchRequestEntry (Maybe InstanceAssociationOutputLocation)
-cabreOutputLocation = lens _cabreOutputLocation (\ s a -> s{_cabreOutputLocation = a});
-
--- | The instances targeted by the request.
-cabreTargets :: Lens' CreateAssociationBatchRequestEntry [Target]
-cabreTargets = lens _cabreTargets (\ s a -> s{_cabreTargets = a}) . _Default . _Coerce;
-
--- | A description of the parameters for a document.
-cabreParameters :: Lens' CreateAssociationBatchRequestEntry (HashMap Text [Text])
-cabreParameters = lens _cabreParameters (\ s a -> s{_cabreParameters = a}) . _Default . _Map;
-
--- | The document version.
-cabreDocumentVersion :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
-cabreDocumentVersion = lens _cabreDocumentVersion (\ s a -> s{_cabreDocumentVersion = a});
-
--- | The name of the configuration document.
-cabreName :: Lens' CreateAssociationBatchRequestEntry Text
-cabreName = lens _cabreName (\ s a -> s{_cabreName = a});
-
-instance FromJSON CreateAssociationBatchRequestEntry
-         where
-        parseJSON
-          = withObject "CreateAssociationBatchRequestEntry"
-              (\ x ->
-                 CreateAssociationBatchRequestEntry' <$>
-                   (x .:? "InstanceId") <*> (x .:? "ScheduleExpression")
-                     <*> (x .:? "OutputLocation")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "Parameters" .!= mempty)
-                     <*> (x .:? "DocumentVersion")
-                     <*> (x .: "Name"))
-
-instance Hashable CreateAssociationBatchRequestEntry
-
-instance NFData CreateAssociationBatchRequestEntry
-
-instance ToJSON CreateAssociationBatchRequestEntry
-         where
-        toJSON CreateAssociationBatchRequestEntry'{..}
-          = object
-              (catMaybes
-                 [("InstanceId" .=) <$> _cabreInstanceId,
-                  ("ScheduleExpression" .=) <$>
-                    _cabreScheduleExpression,
-                  ("OutputLocation" .=) <$> _cabreOutputLocation,
-                  ("Targets" .=) <$> _cabreTargets,
-                  ("Parameters" .=) <$> _cabreParameters,
-                  ("DocumentVersion" .=) <$> _cabreDocumentVersion,
-                  Just ("Name" .= _cabreName)])
-
--- | Filter for the DescribeActivation API.
---
---
---
--- /See:/ 'describeActivationsFilter' smart constructor.
-data DescribeActivationsFilter = DescribeActivationsFilter'
-    { _dafFilterKey    :: !(Maybe DescribeActivationsFilterKeys)
-    , _dafFilterValues :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DescribeActivationsFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dafFilterKey' - The name of the filter.
---
--- * 'dafFilterValues' - The filter values.
-describeActivationsFilter
-    :: DescribeActivationsFilter
-describeActivationsFilter =
-    DescribeActivationsFilter'
-    { _dafFilterKey = Nothing
-    , _dafFilterValues = Nothing
-    }
-
--- | The name of the filter.
-dafFilterKey :: Lens' DescribeActivationsFilter (Maybe DescribeActivationsFilterKeys)
-dafFilterKey = lens _dafFilterKey (\ s a -> s{_dafFilterKey = a});
-
--- | The filter values.
-dafFilterValues :: Lens' DescribeActivationsFilter [Text]
-dafFilterValues = lens _dafFilterValues (\ s a -> s{_dafFilterValues = a}) . _Default . _Coerce;
-
-instance Hashable DescribeActivationsFilter
-
-instance NFData DescribeActivationsFilter
-
-instance ToJSON DescribeActivationsFilter where
-        toJSON DescribeActivationsFilter'{..}
-          = object
-              (catMaybes
-                 [("FilterKey" .=) <$> _dafFilterKey,
-                  ("FilterValues" .=) <$> _dafFilterValues])
-
--- | A default version of a document.
---
---
---
--- /See:/ 'documentDefaultVersionDescription' smart constructor.
-data DocumentDefaultVersionDescription = DocumentDefaultVersionDescription'
-    { _ddvdDefaultVersion :: !(Maybe Text)
-    , _ddvdName           :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentDefaultVersionDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddvdDefaultVersion' - The default version of the document.
---
--- * 'ddvdName' - The name of the document.
-documentDefaultVersionDescription
-    :: DocumentDefaultVersionDescription
-documentDefaultVersionDescription =
-    DocumentDefaultVersionDescription'
-    { _ddvdDefaultVersion = Nothing
-    , _ddvdName = Nothing
-    }
-
--- | The default version of the document.
-ddvdDefaultVersion :: Lens' DocumentDefaultVersionDescription (Maybe Text)
-ddvdDefaultVersion = lens _ddvdDefaultVersion (\ s a -> s{_ddvdDefaultVersion = a});
-
--- | The name of the document.
-ddvdName :: Lens' DocumentDefaultVersionDescription (Maybe Text)
-ddvdName = lens _ddvdName (\ s a -> s{_ddvdName = a});
-
-instance FromJSON DocumentDefaultVersionDescription
-         where
-        parseJSON
-          = withObject "DocumentDefaultVersionDescription"
-              (\ x ->
-                 DocumentDefaultVersionDescription' <$>
-                   (x .:? "DefaultVersion") <*> (x .:? "Name"))
-
-instance Hashable DocumentDefaultVersionDescription
-
-instance NFData DocumentDefaultVersionDescription
-
--- | Describes an SSM document.
---
---
---
--- /See:/ 'documentDescription' smart constructor.
-data DocumentDescription = DocumentDescription'
-    { _dStatus          :: !(Maybe DocumentStatus)
-    , _dDocumentType    :: !(Maybe DocumentType)
-    , _dHash            :: !(Maybe Text)
-    , _dSchemaVersion   :: !(Maybe Text)
-    , _dSha1            :: !(Maybe Text)
-    , _dDefaultVersion  :: !(Maybe Text)
-    , _dOwner           :: !(Maybe Text)
-    , _dPlatformTypes   :: !(Maybe [PlatformType])
-    , _dCreatedDate     :: !(Maybe POSIX)
-    , _dName            :: !(Maybe Text)
-    , _dHashType        :: !(Maybe DocumentHashType)
-    , _dParameters      :: !(Maybe [DocumentParameter])
-    , _dDocumentVersion :: !(Maybe Text)
-    , _dDescription     :: !(Maybe Text)
-    , _dLatestVersion   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentDescription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dStatus' - The status of the SSM document.
---
--- * 'dDocumentType' - The type of document.
---
--- * 'dHash' - The Sha256 or Sha1 hash created by the system when the document was created.
---
--- * 'dSchemaVersion' - The schema version.
---
--- * 'dSha1' - The SHA1 hash of the document, which you can use for verification purposes.
---
--- * 'dDefaultVersion' - The default version.
---
--- * 'dOwner' - The AWS user account of the person who created the document.
---
--- * 'dPlatformTypes' - The list of OS platforms compatible with this SSM document.
---
--- * 'dCreatedDate' - The date when the SSM document was created.
---
--- * 'dName' - The name of the SSM document.
---
--- * 'dHashType' - Sha256 or Sha1.
---
--- * 'dParameters' - A description of the parameters for a document.
---
--- * 'dDocumentVersion' - The document version.
---
--- * 'dDescription' - A description of the document.
---
--- * 'dLatestVersion' - The latest version of the document.
-documentDescription
-    :: DocumentDescription
-documentDescription =
-    DocumentDescription'
-    { _dStatus = Nothing
-    , _dDocumentType = Nothing
-    , _dHash = Nothing
-    , _dSchemaVersion = Nothing
-    , _dSha1 = Nothing
-    , _dDefaultVersion = Nothing
-    , _dOwner = Nothing
-    , _dPlatformTypes = Nothing
-    , _dCreatedDate = Nothing
-    , _dName = Nothing
-    , _dHashType = Nothing
-    , _dParameters = Nothing
-    , _dDocumentVersion = Nothing
-    , _dDescription = Nothing
-    , _dLatestVersion = Nothing
-    }
-
--- | The status of the SSM document.
-dStatus :: Lens' DocumentDescription (Maybe DocumentStatus)
-dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
-
--- | The type of document.
-dDocumentType :: Lens' DocumentDescription (Maybe DocumentType)
-dDocumentType = lens _dDocumentType (\ s a -> s{_dDocumentType = a});
-
--- | The Sha256 or Sha1 hash created by the system when the document was created.
-dHash :: Lens' DocumentDescription (Maybe Text)
-dHash = lens _dHash (\ s a -> s{_dHash = a});
-
--- | The schema version.
-dSchemaVersion :: Lens' DocumentDescription (Maybe Text)
-dSchemaVersion = lens _dSchemaVersion (\ s a -> s{_dSchemaVersion = a});
-
--- | The SHA1 hash of the document, which you can use for verification purposes.
-dSha1 :: Lens' DocumentDescription (Maybe Text)
-dSha1 = lens _dSha1 (\ s a -> s{_dSha1 = a});
-
--- | The default version.
-dDefaultVersion :: Lens' DocumentDescription (Maybe Text)
-dDefaultVersion = lens _dDefaultVersion (\ s a -> s{_dDefaultVersion = a});
-
--- | The AWS user account of the person who created the document.
-dOwner :: Lens' DocumentDescription (Maybe Text)
-dOwner = lens _dOwner (\ s a -> s{_dOwner = a});
-
--- | The list of OS platforms compatible with this SSM document.
-dPlatformTypes :: Lens' DocumentDescription [PlatformType]
-dPlatformTypes = lens _dPlatformTypes (\ s a -> s{_dPlatformTypes = a}) . _Default . _Coerce;
-
--- | The date when the SSM document was created.
-dCreatedDate :: Lens' DocumentDescription (Maybe UTCTime)
-dCreatedDate = lens _dCreatedDate (\ s a -> s{_dCreatedDate = a}) . mapping _Time;
-
--- | The name of the SSM document.
-dName :: Lens' DocumentDescription (Maybe Text)
-dName = lens _dName (\ s a -> s{_dName = a});
-
--- | Sha256 or Sha1.
-dHashType :: Lens' DocumentDescription (Maybe DocumentHashType)
-dHashType = lens _dHashType (\ s a -> s{_dHashType = a});
-
--- | A description of the parameters for a document.
-dParameters :: Lens' DocumentDescription [DocumentParameter]
-dParameters = lens _dParameters (\ s a -> s{_dParameters = a}) . _Default . _Coerce;
-
--- | The document version.
-dDocumentVersion :: Lens' DocumentDescription (Maybe Text)
-dDocumentVersion = lens _dDocumentVersion (\ s a -> s{_dDocumentVersion = a});
-
--- | A description of the document.
-dDescription :: Lens' DocumentDescription (Maybe Text)
-dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
-
--- | The latest version of the document.
-dLatestVersion :: Lens' DocumentDescription (Maybe Text)
-dLatestVersion = lens _dLatestVersion (\ s a -> s{_dLatestVersion = a});
-
-instance FromJSON DocumentDescription where
-        parseJSON
-          = withObject "DocumentDescription"
-              (\ x ->
-                 DocumentDescription' <$>
-                   (x .:? "Status") <*> (x .:? "DocumentType") <*>
-                     (x .:? "Hash")
-                     <*> (x .:? "SchemaVersion")
-                     <*> (x .:? "Sha1")
-                     <*> (x .:? "DefaultVersion")
-                     <*> (x .:? "Owner")
-                     <*> (x .:? "PlatformTypes" .!= mempty)
-                     <*> (x .:? "CreatedDate")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "HashType")
-                     <*> (x .:? "Parameters" .!= mempty)
-                     <*> (x .:? "DocumentVersion")
-                     <*> (x .:? "Description")
-                     <*> (x .:? "LatestVersion"))
-
-instance Hashable DocumentDescription
-
-instance NFData DocumentDescription
-
--- | Describes a filter.
---
---
---
--- /See:/ 'documentFilter' smart constructor.
-data DocumentFilter = DocumentFilter'
-    { _dfKey   :: !DocumentFilterKey
-    , _dfValue :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfKey' - The name of the filter.
---
--- * 'dfValue' - The value of the filter.
-documentFilter
-    :: DocumentFilterKey -- ^ 'dfKey'
-    -> Text -- ^ 'dfValue'
-    -> DocumentFilter
-documentFilter pKey_ pValue_ =
-    DocumentFilter'
-    { _dfKey = pKey_
-    , _dfValue = pValue_
-    }
-
--- | The name of the filter.
-dfKey :: Lens' DocumentFilter DocumentFilterKey
-dfKey = lens _dfKey (\ s a -> s{_dfKey = a});
-
--- | The value of the filter.
-dfValue :: Lens' DocumentFilter Text
-dfValue = lens _dfValue (\ s a -> s{_dfValue = a});
-
-instance Hashable DocumentFilter
-
-instance NFData DocumentFilter
-
-instance ToJSON DocumentFilter where
-        toJSON DocumentFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("key" .= _dfKey), Just ("value" .= _dfValue)])
-
--- | Describes the name of an SSM document.
---
---
---
--- /See:/ 'documentIdentifier' smart constructor.
-data DocumentIdentifier = DocumentIdentifier'
-    { _diDocumentType    :: !(Maybe DocumentType)
-    , _diSchemaVersion   :: !(Maybe Text)
-    , _diOwner           :: !(Maybe Text)
-    , _diPlatformTypes   :: !(Maybe [PlatformType])
-    , _diName            :: !(Maybe Text)
-    , _diDocumentVersion :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentIdentifier' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diDocumentType' - The document type.
---
--- * 'diSchemaVersion' - The schema version.
---
--- * 'diOwner' - The AWS user account of the person who created the document.
---
--- * 'diPlatformTypes' - The operating system platform.
---
--- * 'diName' - The name of the SSM document.
---
--- * 'diDocumentVersion' - The document version.
-documentIdentifier
-    :: DocumentIdentifier
-documentIdentifier =
-    DocumentIdentifier'
-    { _diDocumentType = Nothing
-    , _diSchemaVersion = Nothing
-    , _diOwner = Nothing
-    , _diPlatformTypes = Nothing
-    , _diName = Nothing
-    , _diDocumentVersion = Nothing
-    }
-
--- | The document type.
-diDocumentType :: Lens' DocumentIdentifier (Maybe DocumentType)
-diDocumentType = lens _diDocumentType (\ s a -> s{_diDocumentType = a});
-
--- | The schema version.
-diSchemaVersion :: Lens' DocumentIdentifier (Maybe Text)
-diSchemaVersion = lens _diSchemaVersion (\ s a -> s{_diSchemaVersion = a});
-
--- | The AWS user account of the person who created the document.
-diOwner :: Lens' DocumentIdentifier (Maybe Text)
-diOwner = lens _diOwner (\ s a -> s{_diOwner = a});
-
--- | The operating system platform.
-diPlatformTypes :: Lens' DocumentIdentifier [PlatformType]
-diPlatformTypes = lens _diPlatformTypes (\ s a -> s{_diPlatformTypes = a}) . _Default . _Coerce;
-
--- | The name of the SSM document.
-diName :: Lens' DocumentIdentifier (Maybe Text)
-diName = lens _diName (\ s a -> s{_diName = a});
-
--- | The document version.
-diDocumentVersion :: Lens' DocumentIdentifier (Maybe Text)
-diDocumentVersion = lens _diDocumentVersion (\ s a -> s{_diDocumentVersion = a});
-
-instance FromJSON DocumentIdentifier where
-        parseJSON
-          = withObject "DocumentIdentifier"
-              (\ x ->
-                 DocumentIdentifier' <$>
-                   (x .:? "DocumentType") <*> (x .:? "SchemaVersion")
-                     <*> (x .:? "Owner")
-                     <*> (x .:? "PlatformTypes" .!= mempty)
-                     <*> (x .:? "Name")
-                     <*> (x .:? "DocumentVersion"))
-
-instance Hashable DocumentIdentifier
-
-instance NFData DocumentIdentifier
-
--- | Parameters specified in the SSM document that execute on the server when the command is run.
---
---
---
--- /See:/ 'documentParameter' smart constructor.
-data DocumentParameter = DocumentParameter'
-    { _dpName         :: !(Maybe Text)
-    , _dpDefaultValue :: !(Maybe Text)
-    , _dpType         :: !(Maybe DocumentParameterType)
-    , _dpDescription  :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentParameter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpName' - The name of the parameter.
---
--- * 'dpDefaultValue' - If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional.
---
--- * 'dpType' - The type of parameter. The type can be either “String” or “StringList”.
---
--- * 'dpDescription' - A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional.
-documentParameter
-    :: DocumentParameter
-documentParameter =
-    DocumentParameter'
-    { _dpName = Nothing
-    , _dpDefaultValue = Nothing
-    , _dpType = Nothing
-    , _dpDescription = Nothing
-    }
-
--- | The name of the parameter.
-dpName :: Lens' DocumentParameter (Maybe Text)
-dpName = lens _dpName (\ s a -> s{_dpName = a});
-
--- | If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional.
-dpDefaultValue :: Lens' DocumentParameter (Maybe Text)
-dpDefaultValue = lens _dpDefaultValue (\ s a -> s{_dpDefaultValue = a});
-
--- | The type of parameter. The type can be either “String” or “StringList”.
-dpType :: Lens' DocumentParameter (Maybe DocumentParameterType)
-dpType = lens _dpType (\ s a -> s{_dpType = a});
-
--- | A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional.
-dpDescription :: Lens' DocumentParameter (Maybe Text)
-dpDescription = lens _dpDescription (\ s a -> s{_dpDescription = a});
-
-instance FromJSON DocumentParameter where
-        parseJSON
-          = withObject "DocumentParameter"
-              (\ x ->
-                 DocumentParameter' <$>
-                   (x .:? "Name") <*> (x .:? "DefaultValue") <*>
-                     (x .:? "Type")
-                     <*> (x .:? "Description"))
-
-instance Hashable DocumentParameter
-
-instance NFData DocumentParameter
-
--- | Version information about the document.
---
---
---
--- /See:/ 'documentVersionInfo' smart constructor.
-data DocumentVersionInfo = DocumentVersionInfo'
-    { _dviCreatedDate      :: !(Maybe POSIX)
-    , _dviName             :: !(Maybe Text)
-    , _dviDocumentVersion  :: !(Maybe Text)
-    , _dviIsDefaultVersion :: !(Maybe Bool)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'DocumentVersionInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dviCreatedDate' - The date the document was created.
---
--- * 'dviName' - The document name.
---
--- * 'dviDocumentVersion' - The document version.
---
--- * 'dviIsDefaultVersion' - An identifier for the default version of the document.
-documentVersionInfo
-    :: DocumentVersionInfo
-documentVersionInfo =
-    DocumentVersionInfo'
-    { _dviCreatedDate = Nothing
-    , _dviName = Nothing
-    , _dviDocumentVersion = Nothing
-    , _dviIsDefaultVersion = Nothing
-    }
-
--- | The date the document was created.
-dviCreatedDate :: Lens' DocumentVersionInfo (Maybe UTCTime)
-dviCreatedDate = lens _dviCreatedDate (\ s a -> s{_dviCreatedDate = a}) . mapping _Time;
-
--- | The document name.
-dviName :: Lens' DocumentVersionInfo (Maybe Text)
-dviName = lens _dviName (\ s a -> s{_dviName = a});
-
--- | The document version.
-dviDocumentVersion :: Lens' DocumentVersionInfo (Maybe Text)
-dviDocumentVersion = lens _dviDocumentVersion (\ s a -> s{_dviDocumentVersion = a});
-
--- | An identifier for the default version of the document.
-dviIsDefaultVersion :: Lens' DocumentVersionInfo (Maybe Bool)
-dviIsDefaultVersion = lens _dviIsDefaultVersion (\ s a -> s{_dviIsDefaultVersion = a});
-
-instance FromJSON DocumentVersionInfo where
-        parseJSON
-          = withObject "DocumentVersionInfo"
-              (\ x ->
-                 DocumentVersionInfo' <$>
-                   (x .:? "CreatedDate") <*> (x .:? "Name") <*>
-                     (x .:? "DocumentVersion")
-                     <*> (x .:? "IsDefaultVersion"))
-
-instance Hashable DocumentVersionInfo
-
-instance NFData DocumentVersionInfo
-
--- | Describes a failed association.
---
---
---
--- /See:/ 'failedCreateAssociation' smart constructor.
-data FailedCreateAssociation = FailedCreateAssociation'
-    { _fcaEntry   :: !(Maybe CreateAssociationBatchRequestEntry)
-    , _fcaFault   :: !(Maybe Fault)
-    , _fcaMessage :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FailedCreateAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fcaEntry' - The association.
---
--- * 'fcaFault' - The source of the failure.
---
--- * 'fcaMessage' - A description of the failure.
-failedCreateAssociation
-    :: FailedCreateAssociation
-failedCreateAssociation =
-    FailedCreateAssociation'
-    { _fcaEntry = Nothing
-    , _fcaFault = Nothing
-    , _fcaMessage = Nothing
-    }
-
--- | The association.
-fcaEntry :: Lens' FailedCreateAssociation (Maybe CreateAssociationBatchRequestEntry)
-fcaEntry = lens _fcaEntry (\ s a -> s{_fcaEntry = a});
-
--- | The source of the failure.
-fcaFault :: Lens' FailedCreateAssociation (Maybe Fault)
-fcaFault = lens _fcaFault (\ s a -> s{_fcaFault = a});
-
--- | A description of the failure.
-fcaMessage :: Lens' FailedCreateAssociation (Maybe Text)
-fcaMessage = lens _fcaMessage (\ s a -> s{_fcaMessage = a});
-
-instance FromJSON FailedCreateAssociation where
-        parseJSON
-          = withObject "FailedCreateAssociation"
-              (\ x ->
-                 FailedCreateAssociation' <$>
-                   (x .:? "Entry") <*> (x .:? "Fault") <*>
-                     (x .:? "Message"))
-
-instance Hashable FailedCreateAssociation
-
-instance NFData FailedCreateAssociation
-
--- | Status information about the aggregated associations.
---
---
---
--- /See:/ 'instanceAggregatedAssociationOverview' smart constructor.
-data InstanceAggregatedAssociationOverview = InstanceAggregatedAssociationOverview'
-    { _iaaoDetailedStatus                           :: !(Maybe Text)
-    , _iaaoInstanceAssociationStatusAggregatedCount :: !(Maybe (Map Text Int))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAggregatedAssociationOverview' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaaoDetailedStatus' - Detailed status information about the aggregated associations.
---
--- * 'iaaoInstanceAssociationStatusAggregatedCount' - The number of associations for the instance(s).
-instanceAggregatedAssociationOverview
-    :: InstanceAggregatedAssociationOverview
-instanceAggregatedAssociationOverview =
-    InstanceAggregatedAssociationOverview'
-    { _iaaoDetailedStatus = Nothing
-    , _iaaoInstanceAssociationStatusAggregatedCount = Nothing
-    }
-
--- | Detailed status information about the aggregated associations.
-iaaoDetailedStatus :: Lens' InstanceAggregatedAssociationOverview (Maybe Text)
-iaaoDetailedStatus = lens _iaaoDetailedStatus (\ s a -> s{_iaaoDetailedStatus = a});
-
--- | The number of associations for the instance(s).
-iaaoInstanceAssociationStatusAggregatedCount :: Lens' InstanceAggregatedAssociationOverview (HashMap Text Int)
-iaaoInstanceAssociationStatusAggregatedCount = lens _iaaoInstanceAssociationStatusAggregatedCount (\ s a -> s{_iaaoInstanceAssociationStatusAggregatedCount = a}) . _Default . _Map;
-
-instance FromJSON
-         InstanceAggregatedAssociationOverview where
-        parseJSON
-          = withObject "InstanceAggregatedAssociationOverview"
-              (\ x ->
-                 InstanceAggregatedAssociationOverview' <$>
-                   (x .:? "DetailedStatus") <*>
-                     (x .:? "InstanceAssociationStatusAggregatedCount" .!=
-                        mempty))
-
-instance Hashable
-         InstanceAggregatedAssociationOverview
-
-instance NFData InstanceAggregatedAssociationOverview
-
--- | One or more association documents on the instance.
---
---
---
--- /See:/ 'instanceAssociation' smart constructor.
-data InstanceAssociation = InstanceAssociation'
-    { _iaAssociationId :: !(Maybe Text)
-    , _iaInstanceId    :: !(Maybe Text)
-    , _iaContent       :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAssociation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaAssociationId' - The association ID.
---
--- * 'iaInstanceId' - The instance ID.
---
--- * 'iaContent' - The content of the association document for the instance(s).
-instanceAssociation
-    :: InstanceAssociation
-instanceAssociation =
-    InstanceAssociation'
-    { _iaAssociationId = Nothing
-    , _iaInstanceId = Nothing
-    , _iaContent = Nothing
-    }
-
--- | The association ID.
-iaAssociationId :: Lens' InstanceAssociation (Maybe Text)
-iaAssociationId = lens _iaAssociationId (\ s a -> s{_iaAssociationId = a});
-
--- | The instance ID.
-iaInstanceId :: Lens' InstanceAssociation (Maybe Text)
-iaInstanceId = lens _iaInstanceId (\ s a -> s{_iaInstanceId = a});
-
--- | The content of the association document for the instance(s).
-iaContent :: Lens' InstanceAssociation (Maybe Text)
-iaContent = lens _iaContent (\ s a -> s{_iaContent = a});
-
-instance FromJSON InstanceAssociation where
-        parseJSON
-          = withObject "InstanceAssociation"
-              (\ x ->
-                 InstanceAssociation' <$>
-                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
-                     (x .:? "Content"))
-
-instance Hashable InstanceAssociation
-
-instance NFData InstanceAssociation
-
--- | An Amazon S3 bucket where you want to store the results of this request.
---
---
---
--- /See:/ 'instanceAssociationOutputLocation' smart constructor.
-newtype InstanceAssociationOutputLocation = InstanceAssociationOutputLocation'
-    { _iaolS3Location :: Maybe S3OutputLocation
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAssociationOutputLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaolS3Location' - An Amazon S3 bucket where you want to store the results of this request.
-instanceAssociationOutputLocation
-    :: InstanceAssociationOutputLocation
-instanceAssociationOutputLocation =
-    InstanceAssociationOutputLocation'
-    { _iaolS3Location = Nothing
-    }
-
--- | An Amazon S3 bucket where you want to store the results of this request.
-iaolS3Location :: Lens' InstanceAssociationOutputLocation (Maybe S3OutputLocation)
-iaolS3Location = lens _iaolS3Location (\ s a -> s{_iaolS3Location = a});
-
-instance FromJSON InstanceAssociationOutputLocation
-         where
-        parseJSON
-          = withObject "InstanceAssociationOutputLocation"
-              (\ x ->
-                 InstanceAssociationOutputLocation' <$>
-                   (x .:? "S3Location"))
-
-instance Hashable InstanceAssociationOutputLocation
-
-instance NFData InstanceAssociationOutputLocation
-
-instance ToJSON InstanceAssociationOutputLocation
-         where
-        toJSON InstanceAssociationOutputLocation'{..}
-          = object
-              (catMaybes [("S3Location" .=) <$> _iaolS3Location])
-
--- | The URL of Amazon S3 bucket where you want to store the results of this request.
---
---
---
--- /See:/ 'instanceAssociationOutputURL' smart constructor.
-newtype InstanceAssociationOutputURL = InstanceAssociationOutputURL'
-    { _iaouS3OutputURL :: Maybe S3OutputURL
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAssociationOutputURL' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iaouS3OutputURL' - The URL of Amazon S3 bucket where you want to store the results of this request.
-instanceAssociationOutputURL
-    :: InstanceAssociationOutputURL
-instanceAssociationOutputURL =
-    InstanceAssociationOutputURL'
-    { _iaouS3OutputURL = Nothing
-    }
-
--- | The URL of Amazon S3 bucket where you want to store the results of this request.
-iaouS3OutputURL :: Lens' InstanceAssociationOutputURL (Maybe S3OutputURL)
-iaouS3OutputURL = lens _iaouS3OutputURL (\ s a -> s{_iaouS3OutputURL = a});
-
-instance FromJSON InstanceAssociationOutputURL where
-        parseJSON
-          = withObject "InstanceAssociationOutputURL"
-              (\ x ->
-                 InstanceAssociationOutputURL' <$>
-                   (x .:? "S3OutputUrl"))
-
-instance Hashable InstanceAssociationOutputURL
-
-instance NFData InstanceAssociationOutputURL
-
--- | Status information about the instance association.
---
---
---
--- /See:/ 'instanceAssociationStatusInfo' smart constructor.
-data InstanceAssociationStatusInfo = InstanceAssociationStatusInfo'
-    { _iasiAssociationId    :: !(Maybe Text)
-    , _iasiInstanceId       :: !(Maybe Text)
-    , _iasiDetailedStatus   :: !(Maybe Text)
-    , _iasiStatus           :: !(Maybe Text)
-    , _iasiOutputURL        :: !(Maybe InstanceAssociationOutputURL)
-    , _iasiExecutionSummary :: !(Maybe Text)
-    , _iasiName             :: !(Maybe Text)
-    , _iasiErrorCode        :: !(Maybe Text)
-    , _iasiDocumentVersion  :: !(Maybe Text)
-    , _iasiExecutionDate    :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceAssociationStatusInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iasiAssociationId' - The association ID.
---
--- * 'iasiInstanceId' - The instance ID where the association was created.
---
--- * 'iasiDetailedStatus' - Detailed status information about the instance association.
---
--- * 'iasiStatus' - Status information about the instance association.
---
--- * 'iasiOutputURL' - A URL for an Amazon S3 bucket where you want to store the results of this request.
---
--- * 'iasiExecutionSummary' - Summary information about association execution.
---
--- * 'iasiName' - The name of the association.
---
--- * 'iasiErrorCode' - An error code returned by the request to create the association.
---
--- * 'iasiDocumentVersion' - The association document verions.
---
--- * 'iasiExecutionDate' - The date the instance association executed.
-instanceAssociationStatusInfo
-    :: InstanceAssociationStatusInfo
-instanceAssociationStatusInfo =
-    InstanceAssociationStatusInfo'
-    { _iasiAssociationId = Nothing
-    , _iasiInstanceId = Nothing
-    , _iasiDetailedStatus = Nothing
-    , _iasiStatus = Nothing
-    , _iasiOutputURL = Nothing
-    , _iasiExecutionSummary = Nothing
-    , _iasiName = Nothing
-    , _iasiErrorCode = Nothing
-    , _iasiDocumentVersion = Nothing
-    , _iasiExecutionDate = Nothing
-    }
-
--- | The association ID.
-iasiAssociationId :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiAssociationId = lens _iasiAssociationId (\ s a -> s{_iasiAssociationId = a});
-
--- | The instance ID where the association was created.
-iasiInstanceId :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiInstanceId = lens _iasiInstanceId (\ s a -> s{_iasiInstanceId = a});
-
--- | Detailed status information about the instance association.
-iasiDetailedStatus :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiDetailedStatus = lens _iasiDetailedStatus (\ s a -> s{_iasiDetailedStatus = a});
-
--- | Status information about the instance association.
-iasiStatus :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiStatus = lens _iasiStatus (\ s a -> s{_iasiStatus = a});
-
--- | A URL for an Amazon S3 bucket where you want to store the results of this request.
-iasiOutputURL :: Lens' InstanceAssociationStatusInfo (Maybe InstanceAssociationOutputURL)
-iasiOutputURL = lens _iasiOutputURL (\ s a -> s{_iasiOutputURL = a});
-
--- | Summary information about association execution.
-iasiExecutionSummary :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiExecutionSummary = lens _iasiExecutionSummary (\ s a -> s{_iasiExecutionSummary = a});
-
--- | The name of the association.
-iasiName :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiName = lens _iasiName (\ s a -> s{_iasiName = a});
-
--- | An error code returned by the request to create the association.
-iasiErrorCode :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiErrorCode = lens _iasiErrorCode (\ s a -> s{_iasiErrorCode = a});
-
--- | The association document verions.
-iasiDocumentVersion :: Lens' InstanceAssociationStatusInfo (Maybe Text)
-iasiDocumentVersion = lens _iasiDocumentVersion (\ s a -> s{_iasiDocumentVersion = a});
-
--- | The date the instance association executed.
-iasiExecutionDate :: Lens' InstanceAssociationStatusInfo (Maybe UTCTime)
-iasiExecutionDate = lens _iasiExecutionDate (\ s a -> s{_iasiExecutionDate = a}) . mapping _Time;
-
-instance FromJSON InstanceAssociationStatusInfo where
-        parseJSON
-          = withObject "InstanceAssociationStatusInfo"
-              (\ x ->
-                 InstanceAssociationStatusInfo' <$>
-                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
-                     (x .:? "DetailedStatus")
-                     <*> (x .:? "Status")
-                     <*> (x .:? "OutputUrl")
-                     <*> (x .:? "ExecutionSummary")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "ErrorCode")
-                     <*> (x .:? "DocumentVersion")
-                     <*> (x .:? "ExecutionDate"))
-
-instance Hashable InstanceAssociationStatusInfo
-
-instance NFData InstanceAssociationStatusInfo
-
--- | Describes a filter for a specific list of instances.
---
---
---
--- /See:/ 'instanceInformation' smart constructor.
-data InstanceInformation = InstanceInformation'
-    { _iiInstanceId                             :: !(Maybe Text)
-    , _iiPingStatus                             :: !(Maybe PingStatus)
-    , _iiIPAddress                              :: !(Maybe Text)
-    , _iiResourceType                           :: !(Maybe ResourceType)
-    , _iiRegistrationDate                       :: !(Maybe POSIX)
-    , _iiPlatformVersion                        :: !(Maybe Text)
-    , _iiIsLatestVersion                        :: !(Maybe Bool)
-    , _iiAgentVersion                           :: !(Maybe Text)
-    , _iiLastPingDateTime                       :: !(Maybe POSIX)
-    , _iiLastSuccessfulAssociationExecutionDate :: !(Maybe POSIX)
-    , _iiActivationId                           :: !(Maybe Text)
-    , _iiName                                   :: !(Maybe Text)
-    , _iiPlatformType                           :: !(Maybe PlatformType)
-    , _iiAssociationOverview                    :: !(Maybe InstanceAggregatedAssociationOverview)
-    , _iiAssociationStatus                      :: !(Maybe Text)
-    , _iiLastAssociationExecutionDate           :: !(Maybe POSIX)
-    , _iiPlatformName                           :: !(Maybe Text)
-    , _iiComputerName                           :: !(Maybe Text)
-    , _iiIAMRole                                :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceInformation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiInstanceId' - The instance ID.
---
--- * 'iiPingStatus' - Connection status of the SSM agent.
---
--- * 'iiIPAddress' - The IP address of the managed instance.
---
--- * 'iiResourceType' - The type of instance. Instances are either EC2 instances or managed instances.
---
--- * 'iiRegistrationDate' - The date the server or VM was registered with AWS as a managed instance.
---
--- * 'iiPlatformVersion' - The version of the OS platform running on your instance.
---
--- * 'iiIsLatestVersion' - Indicates whether latest version of the SSM agent is running on your instance.
---
--- * 'iiAgentVersion' - The version of the SSM agent running on your Linux instance.
---
--- * 'iiLastPingDateTime' - The date and time when agent last pinged Systems Manager service.
---
--- * 'iiLastSuccessfulAssociationExecutionDate' - The last date the association was successfully run.
---
--- * 'iiActivationId' - The activation ID created by Systems Manager when the server or VM was registered.
---
--- * 'iiName' - The name of the managed instance.
---
--- * 'iiPlatformType' - The operating system platform type.
---
--- * 'iiAssociationOverview' - Information about the association.
---
--- * 'iiAssociationStatus' - The status of the association.
---
--- * 'iiLastAssociationExecutionDate' - The date the association was last executed.
---
--- * 'iiPlatformName' - The name of the operating system platform running on your instance.
---
--- * 'iiComputerName' - The fully qualified host name of the managed instance.
---
--- * 'iiIAMRole' - The Amazon Identity and Access Management (IAM) role assigned to EC2 instances or managed instances.
-instanceInformation
-    :: InstanceInformation
-instanceInformation =
-    InstanceInformation'
-    { _iiInstanceId = Nothing
-    , _iiPingStatus = Nothing
-    , _iiIPAddress = Nothing
-    , _iiResourceType = Nothing
-    , _iiRegistrationDate = Nothing
-    , _iiPlatformVersion = Nothing
-    , _iiIsLatestVersion = Nothing
-    , _iiAgentVersion = Nothing
-    , _iiLastPingDateTime = Nothing
-    , _iiLastSuccessfulAssociationExecutionDate = Nothing
-    , _iiActivationId = Nothing
-    , _iiName = Nothing
-    , _iiPlatformType = Nothing
-    , _iiAssociationOverview = Nothing
-    , _iiAssociationStatus = Nothing
-    , _iiLastAssociationExecutionDate = Nothing
-    , _iiPlatformName = Nothing
-    , _iiComputerName = Nothing
-    , _iiIAMRole = Nothing
-    }
-
--- | The instance ID.
-iiInstanceId :: Lens' InstanceInformation (Maybe Text)
-iiInstanceId = lens _iiInstanceId (\ s a -> s{_iiInstanceId = a});
-
--- | Connection status of the SSM agent.
-iiPingStatus :: Lens' InstanceInformation (Maybe PingStatus)
-iiPingStatus = lens _iiPingStatus (\ s a -> s{_iiPingStatus = a});
-
--- | The IP address of the managed instance.
-iiIPAddress :: Lens' InstanceInformation (Maybe Text)
-iiIPAddress = lens _iiIPAddress (\ s a -> s{_iiIPAddress = a});
-
--- | The type of instance. Instances are either EC2 instances or managed instances.
-iiResourceType :: Lens' InstanceInformation (Maybe ResourceType)
-iiResourceType = lens _iiResourceType (\ s a -> s{_iiResourceType = a});
-
--- | The date the server or VM was registered with AWS as a managed instance.
-iiRegistrationDate :: Lens' InstanceInformation (Maybe UTCTime)
-iiRegistrationDate = lens _iiRegistrationDate (\ s a -> s{_iiRegistrationDate = a}) . mapping _Time;
-
--- | The version of the OS platform running on your instance.
-iiPlatformVersion :: Lens' InstanceInformation (Maybe Text)
-iiPlatformVersion = lens _iiPlatformVersion (\ s a -> s{_iiPlatformVersion = a});
-
--- | Indicates whether latest version of the SSM agent is running on your instance.
-iiIsLatestVersion :: Lens' InstanceInformation (Maybe Bool)
-iiIsLatestVersion = lens _iiIsLatestVersion (\ s a -> s{_iiIsLatestVersion = a});
-
--- | The version of the SSM agent running on your Linux instance.
-iiAgentVersion :: Lens' InstanceInformation (Maybe Text)
-iiAgentVersion = lens _iiAgentVersion (\ s a -> s{_iiAgentVersion = a});
-
--- | The date and time when agent last pinged Systems Manager service.
-iiLastPingDateTime :: Lens' InstanceInformation (Maybe UTCTime)
-iiLastPingDateTime = lens _iiLastPingDateTime (\ s a -> s{_iiLastPingDateTime = a}) . mapping _Time;
-
--- | The last date the association was successfully run.
-iiLastSuccessfulAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
-iiLastSuccessfulAssociationExecutionDate = lens _iiLastSuccessfulAssociationExecutionDate (\ s a -> s{_iiLastSuccessfulAssociationExecutionDate = a}) . mapping _Time;
-
--- | The activation ID created by Systems Manager when the server or VM was registered.
-iiActivationId :: Lens' InstanceInformation (Maybe Text)
-iiActivationId = lens _iiActivationId (\ s a -> s{_iiActivationId = a});
-
--- | The name of the managed instance.
-iiName :: Lens' InstanceInformation (Maybe Text)
-iiName = lens _iiName (\ s a -> s{_iiName = a});
-
--- | The operating system platform type.
-iiPlatformType :: Lens' InstanceInformation (Maybe PlatformType)
-iiPlatformType = lens _iiPlatformType (\ s a -> s{_iiPlatformType = a});
-
--- | Information about the association.
-iiAssociationOverview :: Lens' InstanceInformation (Maybe InstanceAggregatedAssociationOverview)
-iiAssociationOverview = lens _iiAssociationOverview (\ s a -> s{_iiAssociationOverview = a});
-
--- | The status of the association.
-iiAssociationStatus :: Lens' InstanceInformation (Maybe Text)
-iiAssociationStatus = lens _iiAssociationStatus (\ s a -> s{_iiAssociationStatus = a});
-
--- | The date the association was last executed.
-iiLastAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
-iiLastAssociationExecutionDate = lens _iiLastAssociationExecutionDate (\ s a -> s{_iiLastAssociationExecutionDate = a}) . mapping _Time;
-
--- | The name of the operating system platform running on your instance.
-iiPlatformName :: Lens' InstanceInformation (Maybe Text)
-iiPlatformName = lens _iiPlatformName (\ s a -> s{_iiPlatformName = a});
-
--- | The fully qualified host name of the managed instance.
-iiComputerName :: Lens' InstanceInformation (Maybe Text)
-iiComputerName = lens _iiComputerName (\ s a -> s{_iiComputerName = a});
-
--- | The Amazon Identity and Access Management (IAM) role assigned to EC2 instances or managed instances.
-iiIAMRole :: Lens' InstanceInformation (Maybe Text)
-iiIAMRole = lens _iiIAMRole (\ s a -> s{_iiIAMRole = a});
-
-instance FromJSON InstanceInformation where
-        parseJSON
-          = withObject "InstanceInformation"
-              (\ x ->
-                 InstanceInformation' <$>
-                   (x .:? "InstanceId") <*> (x .:? "PingStatus") <*>
-                     (x .:? "IPAddress")
-                     <*> (x .:? "ResourceType")
-                     <*> (x .:? "RegistrationDate")
-                     <*> (x .:? "PlatformVersion")
-                     <*> (x .:? "IsLatestVersion")
-                     <*> (x .:? "AgentVersion")
-                     <*> (x .:? "LastPingDateTime")
-                     <*> (x .:? "LastSuccessfulAssociationExecutionDate")
-                     <*> (x .:? "ActivationId")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "PlatformType")
-                     <*> (x .:? "AssociationOverview")
-                     <*> (x .:? "AssociationStatus")
-                     <*> (x .:? "LastAssociationExecutionDate")
-                     <*> (x .:? "PlatformName")
-                     <*> (x .:? "ComputerName")
-                     <*> (x .:? "IamRole"))
-
-instance Hashable InstanceInformation
-
-instance NFData InstanceInformation
-
--- | Describes a filter for a specific list of instances.
---
---
---
--- /See:/ 'instanceInformationFilter' smart constructor.
-data InstanceInformationFilter = InstanceInformationFilter'
-    { _iifKey      :: !InstanceInformationFilterKey
-    , _iifValueSet :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceInformationFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iifKey' - The name of the filter.
---
--- * 'iifValueSet' - The filter values.
-instanceInformationFilter
-    :: InstanceInformationFilterKey -- ^ 'iifKey'
-    -> NonEmpty Text -- ^ 'iifValueSet'
-    -> InstanceInformationFilter
-instanceInformationFilter pKey_ pValueSet_ =
-    InstanceInformationFilter'
-    { _iifKey = pKey_
-    , _iifValueSet = _List1 # pValueSet_
-    }
-
--- | The name of the filter.
-iifKey :: Lens' InstanceInformationFilter InstanceInformationFilterKey
-iifKey = lens _iifKey (\ s a -> s{_iifKey = a});
-
--- | The filter values.
-iifValueSet :: Lens' InstanceInformationFilter (NonEmpty Text)
-iifValueSet = lens _iifValueSet (\ s a -> s{_iifValueSet = a}) . _List1;
-
-instance Hashable InstanceInformationFilter
-
-instance NFData InstanceInformationFilter
-
-instance ToJSON InstanceInformationFilter where
-        toJSON InstanceInformationFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("key" .= _iifKey),
-                  Just ("valueSet" .= _iifValueSet)])
-
--- | The filters to describe or get information about your managed instances.
---
---
---
--- /See:/ 'instanceInformationStringFilter' smart constructor.
-data InstanceInformationStringFilter = InstanceInformationStringFilter'
-    { _iisfKey    :: !Text
-    , _iisfValues :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InstanceInformationStringFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iisfKey' - The filter key name to describe your instances. For example: "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|”AssociationStatus”|”Tag Key”
---
--- * 'iisfValues' - The filter values.
-instanceInformationStringFilter
-    :: Text -- ^ 'iisfKey'
-    -> NonEmpty Text -- ^ 'iisfValues'
-    -> InstanceInformationStringFilter
-instanceInformationStringFilter pKey_ pValues_ =
-    InstanceInformationStringFilter'
-    { _iisfKey = pKey_
-    , _iisfValues = _List1 # pValues_
-    }
-
--- | The filter key name to describe your instances. For example: "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|”AssociationStatus”|”Tag Key”
-iisfKey :: Lens' InstanceInformationStringFilter Text
-iisfKey = lens _iisfKey (\ s a -> s{_iisfKey = a});
-
--- | The filter values.
-iisfValues :: Lens' InstanceInformationStringFilter (NonEmpty Text)
-iisfValues = lens _iisfValues (\ s a -> s{_iisfValues = a}) . _List1;
-
-instance Hashable InstanceInformationStringFilter
-
-instance NFData InstanceInformationStringFilter
-
-instance ToJSON InstanceInformationStringFilter where
-        toJSON InstanceInformationStringFilter'{..}
-          = object
-              (catMaybes
-                 [Just ("Key" .= _iisfKey),
-                  Just ("Values" .= _iisfValues)])
-
--- | One or more filters. Use a filter to return a more specific list of results.
---
---
---
--- /See:/ 'inventoryFilter' smart constructor.
-data InventoryFilter = InventoryFilter'
-    { _ifType   :: !(Maybe InventoryQueryOperatorType)
-    , _ifKey    :: !Text
-    , _ifValues :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ifType' - The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"
---
--- * 'ifKey' - The name of the filter key.
---
--- * 'ifValues' - Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal
-inventoryFilter
-    :: Text -- ^ 'ifKey'
-    -> NonEmpty Text -- ^ 'ifValues'
-    -> InventoryFilter
-inventoryFilter pKey_ pValues_ =
-    InventoryFilter'
-    { _ifType = Nothing
-    , _ifKey = pKey_
-    , _ifValues = _List1 # pValues_
-    }
-
--- | The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"
-ifType :: Lens' InventoryFilter (Maybe InventoryQueryOperatorType)
-ifType = lens _ifType (\ s a -> s{_ifType = a});
-
--- | The name of the filter key.
-ifKey :: Lens' InventoryFilter Text
-ifKey = lens _ifKey (\ s a -> s{_ifKey = a});
-
--- | Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal
-ifValues :: Lens' InventoryFilter (NonEmpty Text)
-ifValues = lens _ifValues (\ s a -> s{_ifValues = a}) . _List1;
-
-instance Hashable InventoryFilter
-
-instance NFData InventoryFilter
-
-instance ToJSON InventoryFilter where
-        toJSON InventoryFilter'{..}
-          = object
-              (catMaybes
-                 [("Type" .=) <$> _ifType, Just ("Key" .= _ifKey),
-                  Just ("Values" .= _ifValues)])
-
--- | Information collected from managed instances based on your inventory policy document
---
---
---
--- /See:/ 'inventoryItem' smart constructor.
-data InventoryItem = InventoryItem'
-    { _iiContentHash   :: !(Maybe Text)
-    , _iiContent       :: !(Maybe [Map Text Text])
-    , _iiTypeName      :: !Text
-    , _iiSchemaVersion :: !Text
-    , _iiCaptureTime   :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiContentHash' - MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The @PutInventory@ API does not update the inventory item type contents if the MD5 hash has not changed since last update.
---
--- * 'iiContent' - The inventory data of the inventory type.
---
--- * 'iiTypeName' - The name of the inventory type. Default inventory item type names start with @AWS@ . Custom inventory type names will start with @Custom@ . Default inventory item types include the following: @AWS:AWSComponent@ , @AWS:Application@ , @AWS:InstanceInformation@ , @AWS:Network@ , and @AWS:WindowsUpdate@ .
---
--- * 'iiSchemaVersion' - The schema version for the inventory item.
---
--- * 'iiCaptureTime' - The time the inventory information was collected.
-inventoryItem
-    :: Text -- ^ 'iiTypeName'
-    -> Text -- ^ 'iiSchemaVersion'
-    -> Text -- ^ 'iiCaptureTime'
-    -> InventoryItem
-inventoryItem pTypeName_ pSchemaVersion_ pCaptureTime_ =
-    InventoryItem'
-    { _iiContentHash = Nothing
-    , _iiContent = Nothing
-    , _iiTypeName = pTypeName_
-    , _iiSchemaVersion = pSchemaVersion_
-    , _iiCaptureTime = pCaptureTime_
-    }
-
--- | MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The @PutInventory@ API does not update the inventory item type contents if the MD5 hash has not changed since last update.
-iiContentHash :: Lens' InventoryItem (Maybe Text)
-iiContentHash = lens _iiContentHash (\ s a -> s{_iiContentHash = a});
-
--- | The inventory data of the inventory type.
-iiContent :: Lens' InventoryItem [HashMap Text Text]
-iiContent = lens _iiContent (\ s a -> s{_iiContent = a}) . _Default . _Coerce;
-
--- | The name of the inventory type. Default inventory item type names start with @AWS@ . Custom inventory type names will start with @Custom@ . Default inventory item types include the following: @AWS:AWSComponent@ , @AWS:Application@ , @AWS:InstanceInformation@ , @AWS:Network@ , and @AWS:WindowsUpdate@ .
-iiTypeName :: Lens' InventoryItem Text
-iiTypeName = lens _iiTypeName (\ s a -> s{_iiTypeName = a});
-
--- | The schema version for the inventory item.
-iiSchemaVersion :: Lens' InventoryItem Text
-iiSchemaVersion = lens _iiSchemaVersion (\ s a -> s{_iiSchemaVersion = a});
-
--- | The time the inventory information was collected.
-iiCaptureTime :: Lens' InventoryItem Text
-iiCaptureTime = lens _iiCaptureTime (\ s a -> s{_iiCaptureTime = a});
-
-instance Hashable InventoryItem
-
-instance NFData InventoryItem
-
-instance ToJSON InventoryItem where
-        toJSON InventoryItem'{..}
-          = object
-              (catMaybes
-                 [("ContentHash" .=) <$> _iiContentHash,
-                  ("Content" .=) <$> _iiContent,
-                  Just ("TypeName" .= _iiTypeName),
-                  Just ("SchemaVersion" .= _iiSchemaVersion),
-                  Just ("CaptureTime" .= _iiCaptureTime)])
-
--- | Attributes are the entries within the inventory item content. It contains name and value.
---
---
---
--- /See:/ 'inventoryItemAttribute' smart constructor.
-data InventoryItemAttribute = InventoryItemAttribute'
-    { _iiaName     :: !Text
-    , _iiaDataType :: !InventoryAttributeDataType
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryItemAttribute' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iiaName' - Name of the inventory item attribute.
---
--- * 'iiaDataType' - The data type of the inventory item attribute.
-inventoryItemAttribute
-    :: Text -- ^ 'iiaName'
-    -> InventoryAttributeDataType -- ^ 'iiaDataType'
-    -> InventoryItemAttribute
-inventoryItemAttribute pName_ pDataType_ =
-    InventoryItemAttribute'
-    { _iiaName = pName_
-    , _iiaDataType = pDataType_
-    }
-
--- | Name of the inventory item attribute.
-iiaName :: Lens' InventoryItemAttribute Text
-iiaName = lens _iiaName (\ s a -> s{_iiaName = a});
-
--- | The data type of the inventory item attribute.
-iiaDataType :: Lens' InventoryItemAttribute InventoryAttributeDataType
-iiaDataType = lens _iiaDataType (\ s a -> s{_iiaDataType = a});
-
-instance FromJSON InventoryItemAttribute where
-        parseJSON
-          = withObject "InventoryItemAttribute"
-              (\ x ->
-                 InventoryItemAttribute' <$>
-                   (x .: "Name") <*> (x .: "DataType"))
-
-instance Hashable InventoryItemAttribute
-
-instance NFData InventoryItemAttribute
-
--- | The inventory item schema definition. Users can use this to compose inventory query filters.
---
---
---
--- /See:/ 'inventoryItemSchema' smart constructor.
-data InventoryItemSchema = InventoryItemSchema'
-    { _iisVersion    :: !(Maybe Text)
-    , _iisTypeName   :: !Text
-    , _iisAttributes :: !(List1 InventoryItemAttribute)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryItemSchema' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iisVersion' - The schema version for the inventory item.
---
--- * 'iisTypeName' - The name of the inventory type. Default inventory item type names start with @AWS@ . Custom inventory type names will start with @Custom@ . Default inventory item types include the following: @AWS:AWSComponent@ , @AWS:Application@ , @AWS:InstanceInformation@ , @AWS:Network@ , and @AWS:WindowsUpdate@ .
---
--- * 'iisAttributes' - The schema attributes for inventory. This contains data type and attribute name.
-inventoryItemSchema
-    :: Text -- ^ 'iisTypeName'
-    -> NonEmpty InventoryItemAttribute -- ^ 'iisAttributes'
-    -> InventoryItemSchema
-inventoryItemSchema pTypeName_ pAttributes_ =
-    InventoryItemSchema'
-    { _iisVersion = Nothing
-    , _iisTypeName = pTypeName_
-    , _iisAttributes = _List1 # pAttributes_
-    }
-
--- | The schema version for the inventory item.
-iisVersion :: Lens' InventoryItemSchema (Maybe Text)
-iisVersion = lens _iisVersion (\ s a -> s{_iisVersion = a});
-
--- | The name of the inventory type. Default inventory item type names start with @AWS@ . Custom inventory type names will start with @Custom@ . Default inventory item types include the following: @AWS:AWSComponent@ , @AWS:Application@ , @AWS:InstanceInformation@ , @AWS:Network@ , and @AWS:WindowsUpdate@ .
-iisTypeName :: Lens' InventoryItemSchema Text
-iisTypeName = lens _iisTypeName (\ s a -> s{_iisTypeName = a});
-
--- | The schema attributes for inventory. This contains data type and attribute name.
-iisAttributes :: Lens' InventoryItemSchema (NonEmpty InventoryItemAttribute)
-iisAttributes = lens _iisAttributes (\ s a -> s{_iisAttributes = a}) . _List1;
-
-instance FromJSON InventoryItemSchema where
-        parseJSON
-          = withObject "InventoryItemSchema"
-              (\ x ->
-                 InventoryItemSchema' <$>
-                   (x .:? "Version") <*> (x .: "TypeName") <*>
-                     (x .: "Attributes"))
-
-instance Hashable InventoryItemSchema
-
-instance NFData InventoryItemSchema
-
--- | Inventory query results.
---
---
---
--- /See:/ 'inventoryResultEntity' smart constructor.
-data InventoryResultEntity = InventoryResultEntity'
-    { _ireData :: !(Maybe (Map Text InventoryResultItem))
-    , _ireId   :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryResultEntity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ireData' - The data section in the inventory result entity json.
---
--- * 'ireId' - ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID.
-inventoryResultEntity
-    :: InventoryResultEntity
-inventoryResultEntity =
-    InventoryResultEntity'
-    { _ireData = Nothing
-    , _ireId = Nothing
-    }
-
--- | The data section in the inventory result entity json.
-ireData :: Lens' InventoryResultEntity (HashMap Text InventoryResultItem)
-ireData = lens _ireData (\ s a -> s{_ireData = a}) . _Default . _Map;
-
--- | ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID.
-ireId :: Lens' InventoryResultEntity (Maybe Text)
-ireId = lens _ireId (\ s a -> s{_ireId = a});
-
-instance FromJSON InventoryResultEntity where
-        parseJSON
-          = withObject "InventoryResultEntity"
-              (\ x ->
-                 InventoryResultEntity' <$>
-                   (x .:? "Data" .!= mempty) <*> (x .:? "Id"))
-
-instance Hashable InventoryResultEntity
-
-instance NFData InventoryResultEntity
-
--- | The inventory result item.
---
---
---
--- /See:/ 'inventoryResultItem' smart constructor.
-data InventoryResultItem = InventoryResultItem'
-    { _iriContentHash   :: !(Maybe Text)
-    , _iriCaptureTime   :: !(Maybe Text)
-    , _iriTypeName      :: !Text
-    , _iriSchemaVersion :: !Text
-    , _iriContent       :: ![Map Text Text]
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'InventoryResultItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iriContentHash' - MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The @PutInventory@ API does not update the inventory item type contents if the MD5 hash has not changed since last update.
---
--- * 'iriCaptureTime' - The time inventory item data was captured.
---
--- * 'iriTypeName' - The name of the inventory result item type.
---
--- * 'iriSchemaVersion' - The schema version for the inventory result item/
---
--- * 'iriContent' - Contains all the inventory data of the item type. Results include attribute names and values.
-inventoryResultItem
-    :: Text -- ^ 'iriTypeName'
-    -> Text -- ^ 'iriSchemaVersion'
-    -> InventoryResultItem
-inventoryResultItem pTypeName_ pSchemaVersion_ =
-    InventoryResultItem'
-    { _iriContentHash = Nothing
-    , _iriCaptureTime = Nothing
-    , _iriTypeName = pTypeName_
-    , _iriSchemaVersion = pSchemaVersion_
-    , _iriContent = mempty
-    }
-
--- | MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The @PutInventory@ API does not update the inventory item type contents if the MD5 hash has not changed since last update.
-iriContentHash :: Lens' InventoryResultItem (Maybe Text)
-iriContentHash = lens _iriContentHash (\ s a -> s{_iriContentHash = a});
-
--- | The time inventory item data was captured.
-iriCaptureTime :: Lens' InventoryResultItem (Maybe Text)
-iriCaptureTime = lens _iriCaptureTime (\ s a -> s{_iriCaptureTime = a});
-
--- | The name of the inventory result item type.
-iriTypeName :: Lens' InventoryResultItem Text
-iriTypeName = lens _iriTypeName (\ s a -> s{_iriTypeName = a});
-
--- | The schema version for the inventory result item/
-iriSchemaVersion :: Lens' InventoryResultItem Text
-iriSchemaVersion = lens _iriSchemaVersion (\ s a -> s{_iriSchemaVersion = a});
-
--- | Contains all the inventory data of the item type. Results include attribute names and values.
-iriContent :: Lens' InventoryResultItem [HashMap Text Text]
-iriContent = lens _iriContent (\ s a -> s{_iriContent = a}) . _Coerce;
-
-instance FromJSON InventoryResultItem where
-        parseJSON
-          = withObject "InventoryResultItem"
-              (\ x ->
-                 InventoryResultItem' <$>
-                   (x .:? "ContentHash") <*> (x .:? "CaptureTime") <*>
-                     (x .: "TypeName")
-                     <*> (x .: "SchemaVersion")
-                     <*> (x .:? "Content" .!= mempty))
-
-instance Hashable InventoryResultItem
-
-instance NFData InventoryResultItem
-
--- | Information about an Amazon S3 bucket to write instance-level logs to.
---
---
---
--- /See:/ 'loggingInfo' smart constructor.
-data LoggingInfo = LoggingInfo'
-    { _liS3KeyPrefix  :: !(Maybe Text)
-    , _liS3BucketName :: !Text
-    , _liS3Region     :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'LoggingInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'liS3KeyPrefix' - (Optional) The Amazon S3 bucket subfolder.
---
--- * 'liS3BucketName' - The name of an Amazon S3 bucket where execution logs are stored .
---
--- * 'liS3Region' - The region where the Amazon S3 bucket is located.
-loggingInfo
-    :: Text -- ^ 'liS3BucketName'
-    -> Text -- ^ 'liS3Region'
-    -> LoggingInfo
-loggingInfo pS3BucketName_ pS3Region_ =
-    LoggingInfo'
-    { _liS3KeyPrefix = Nothing
-    , _liS3BucketName = pS3BucketName_
-    , _liS3Region = pS3Region_
-    }
-
--- | (Optional) The Amazon S3 bucket subfolder.
-liS3KeyPrefix :: Lens' LoggingInfo (Maybe Text)
-liS3KeyPrefix = lens _liS3KeyPrefix (\ s a -> s{_liS3KeyPrefix = a});
-
--- | The name of an Amazon S3 bucket where execution logs are stored .
-liS3BucketName :: Lens' LoggingInfo Text
-liS3BucketName = lens _liS3BucketName (\ s a -> s{_liS3BucketName = a});
-
--- | The region where the Amazon S3 bucket is located.
-liS3Region :: Lens' LoggingInfo Text
-liS3Region = lens _liS3Region (\ s a -> s{_liS3Region = a});
-
-instance FromJSON LoggingInfo where
-        parseJSON
-          = withObject "LoggingInfo"
-              (\ x ->
-                 LoggingInfo' <$>
-                   (x .:? "S3KeyPrefix") <*> (x .: "S3BucketName") <*>
-                     (x .: "S3Region"))
-
-instance Hashable LoggingInfo
-
-instance NFData LoggingInfo
-
-instance ToJSON LoggingInfo where
-        toJSON LoggingInfo'{..}
-          = object
-              (catMaybes
-                 [("S3KeyPrefix" .=) <$> _liS3KeyPrefix,
-                  Just ("S3BucketName" .= _liS3BucketName),
-                  Just ("S3Region" .= _liS3Region)])
-
--- | Describes the information about an execution of a Maintenance Window.
---
---
---
--- /See:/ 'maintenanceWindowExecution' smart constructor.
-data MaintenanceWindowExecution = MaintenanceWindowExecution'
-    { _mweStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
-    , _mweStartTime         :: !(Maybe POSIX)
-    , _mweWindowExecutionId :: !(Maybe Text)
-    , _mweStatusDetails     :: !(Maybe Text)
-    , _mweEndTime           :: !(Maybe POSIX)
-    , _mweWindowId          :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mweStatus' - The status of the execution.
---
--- * 'mweStartTime' - The time the execution started.
---
--- * 'mweWindowExecutionId' - The ID of the Maintenance Window execution.
---
--- * 'mweStatusDetails' - The details explaining the Status. Only available for certain status values.
---
--- * 'mweEndTime' - The time the execution finished.
---
--- * 'mweWindowId' - The ID of the Maintenance Window.
-maintenanceWindowExecution
-    :: MaintenanceWindowExecution
-maintenanceWindowExecution =
-    MaintenanceWindowExecution'
-    { _mweStatus = Nothing
-    , _mweStartTime = Nothing
-    , _mweWindowExecutionId = Nothing
-    , _mweStatusDetails = Nothing
-    , _mweEndTime = Nothing
-    , _mweWindowId = Nothing
-    }
-
--- | The status of the execution.
-mweStatus :: Lens' MaintenanceWindowExecution (Maybe MaintenanceWindowExecutionStatus)
-mweStatus = lens _mweStatus (\ s a -> s{_mweStatus = a});
-
--- | The time the execution started.
-mweStartTime :: Lens' MaintenanceWindowExecution (Maybe UTCTime)
-mweStartTime = lens _mweStartTime (\ s a -> s{_mweStartTime = a}) . mapping _Time;
-
--- | The ID of the Maintenance Window execution.
-mweWindowExecutionId :: Lens' MaintenanceWindowExecution (Maybe Text)
-mweWindowExecutionId = lens _mweWindowExecutionId (\ s a -> s{_mweWindowExecutionId = a});
-
--- | The details explaining the Status. Only available for certain status values.
-mweStatusDetails :: Lens' MaintenanceWindowExecution (Maybe Text)
-mweStatusDetails = lens _mweStatusDetails (\ s a -> s{_mweStatusDetails = a});
-
--- | The time the execution finished.
-mweEndTime :: Lens' MaintenanceWindowExecution (Maybe UTCTime)
-mweEndTime = lens _mweEndTime (\ s a -> s{_mweEndTime = a}) . mapping _Time;
-
--- | The ID of the Maintenance Window.
-mweWindowId :: Lens' MaintenanceWindowExecution (Maybe Text)
-mweWindowId = lens _mweWindowId (\ s a -> s{_mweWindowId = a});
-
-instance FromJSON MaintenanceWindowExecution where
-        parseJSON
-          = withObject "MaintenanceWindowExecution"
-              (\ x ->
-                 MaintenanceWindowExecution' <$>
-                   (x .:? "Status") <*> (x .:? "StartTime") <*>
-                     (x .:? "WindowExecutionId")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "EndTime")
-                     <*> (x .:? "WindowId"))
-
-instance Hashable MaintenanceWindowExecution
-
-instance NFData MaintenanceWindowExecution
-
--- | Information about a task execution performed as part of a Maintenance Window execution.
---
---
---
--- /See:/ 'maintenanceWindowExecutionTaskIdentity' smart constructor.
-data MaintenanceWindowExecutionTaskIdentity = MaintenanceWindowExecutionTaskIdentity'
-    { _mwetiStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
-    , _mwetiTaskExecutionId   :: !(Maybe Text)
-    , _mwetiStartTime         :: !(Maybe POSIX)
-    , _mwetiTaskType          :: !(Maybe MaintenanceWindowTaskType)
-    , _mwetiTaskARN           :: !(Maybe Text)
-    , _mwetiWindowExecutionId :: !(Maybe Text)
-    , _mwetiStatusDetails     :: !(Maybe Text)
-    , _mwetiEndTime           :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowExecutionTaskIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwetiStatus' - The status of the task execution.
---
--- * 'mwetiTaskExecutionId' - The ID of the specific task execution in the Maintenance Window execution.
---
--- * 'mwetiStartTime' - The time the task execution started.
---
--- * 'mwetiTaskType' - The type of executed task.
---
--- * 'mwetiTaskARN' - The ARN of the executed task.
---
--- * 'mwetiWindowExecutionId' - The ID of the Maintenance Window execution that ran the task.
---
--- * 'mwetiStatusDetails' - The details explaining the status of the task execution. Only available for certain status values.
---
--- * 'mwetiEndTime' - The time the task execution finished.
-maintenanceWindowExecutionTaskIdentity
-    :: MaintenanceWindowExecutionTaskIdentity
-maintenanceWindowExecutionTaskIdentity =
-    MaintenanceWindowExecutionTaskIdentity'
-    { _mwetiStatus = Nothing
-    , _mwetiTaskExecutionId = Nothing
-    , _mwetiStartTime = Nothing
-    , _mwetiTaskType = Nothing
-    , _mwetiTaskARN = Nothing
-    , _mwetiWindowExecutionId = Nothing
-    , _mwetiStatusDetails = Nothing
-    , _mwetiEndTime = Nothing
-    }
-
--- | The status of the task execution.
-mwetiStatus :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe MaintenanceWindowExecutionStatus)
-mwetiStatus = lens _mwetiStatus (\ s a -> s{_mwetiStatus = a});
-
--- | The ID of the specific task execution in the Maintenance Window execution.
-mwetiTaskExecutionId :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
-mwetiTaskExecutionId = lens _mwetiTaskExecutionId (\ s a -> s{_mwetiTaskExecutionId = a});
-
--- | The time the task execution started.
-mwetiStartTime :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe UTCTime)
-mwetiStartTime = lens _mwetiStartTime (\ s a -> s{_mwetiStartTime = a}) . mapping _Time;
-
--- | The type of executed task.
-mwetiTaskType :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe MaintenanceWindowTaskType)
-mwetiTaskType = lens _mwetiTaskType (\ s a -> s{_mwetiTaskType = a});
-
--- | The ARN of the executed task.
-mwetiTaskARN :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
-mwetiTaskARN = lens _mwetiTaskARN (\ s a -> s{_mwetiTaskARN = a});
-
--- | The ID of the Maintenance Window execution that ran the task.
-mwetiWindowExecutionId :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
-mwetiWindowExecutionId = lens _mwetiWindowExecutionId (\ s a -> s{_mwetiWindowExecutionId = a});
-
--- | The details explaining the status of the task execution. Only available for certain status values.
-mwetiStatusDetails :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
-mwetiStatusDetails = lens _mwetiStatusDetails (\ s a -> s{_mwetiStatusDetails = a});
-
--- | The time the task execution finished.
-mwetiEndTime :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe UTCTime)
-mwetiEndTime = lens _mwetiEndTime (\ s a -> s{_mwetiEndTime = a}) . mapping _Time;
-
-instance FromJSON
-         MaintenanceWindowExecutionTaskIdentity where
-        parseJSON
-          = withObject "MaintenanceWindowExecutionTaskIdentity"
-              (\ x ->
-                 MaintenanceWindowExecutionTaskIdentity' <$>
-                   (x .:? "Status") <*> (x .:? "TaskExecutionId") <*>
-                     (x .:? "StartTime")
-                     <*> (x .:? "TaskType")
-                     <*> (x .:? "TaskArn")
-                     <*> (x .:? "WindowExecutionId")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "EndTime"))
-
-instance Hashable
-         MaintenanceWindowExecutionTaskIdentity
-
-instance NFData
-         MaintenanceWindowExecutionTaskIdentity
-
--- | Describes the information about a task invocation for a particular target as part of a task execution performed as part of a Maintenance Window execution.
---
---
---
--- /See:/ 'maintenanceWindowExecutionTaskInvocationIdentity' smart constructor.
-data MaintenanceWindowExecutionTaskInvocationIdentity = MaintenanceWindowExecutionTaskInvocationIdentity'
-    { _mwetiiStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
-    , _mwetiiExecutionId       :: !(Maybe Text)
-    , _mwetiiTaskExecutionId   :: !(Maybe Text)
-    , _mwetiiStartTime         :: !(Maybe POSIX)
-    , _mwetiiInvocationId      :: !(Maybe Text)
-    , _mwetiiOwnerInformation  :: !(Maybe (Sensitive Text))
-    , _mwetiiWindowTargetId    :: !(Maybe Text)
-    , _mwetiiWindowExecutionId :: !(Maybe Text)
-    , _mwetiiStatusDetails     :: !(Maybe Text)
-    , _mwetiiEndTime           :: !(Maybe POSIX)
-    , _mwetiiParameters        :: !(Maybe (Sensitive Text))
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowExecutionTaskInvocationIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwetiiStatus' - The status of the task invocation.
---
--- * 'mwetiiExecutionId' - The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID.
---
--- * 'mwetiiTaskExecutionId' - The ID of the specific task execution in the Maintenance Window execution.
---
--- * 'mwetiiStartTime' - The time the invocation started.
---
--- * 'mwetiiInvocationId' - The ID of the task invocation.
---
--- * 'mwetiiOwnerInformation' - User-provided value that was specified when the target was registered with the Maintenance Window. This was also included in any CloudWatch events raised during the task invocation.
---
--- * 'mwetiiWindowTargetId' - The ID of the target definition in this Maintenance Window the invocation was performed for.
---
--- * 'mwetiiWindowExecutionId' - The ID of the Maintenance Window execution that ran the task.
---
--- * 'mwetiiStatusDetails' - The details explaining the status of the task invocation. Only available for certain Status values.
---
--- * 'mwetiiEndTime' - The time the invocation finished.
---
--- * 'mwetiiParameters' - The parameters that were provided for the invocation when it was executed.
-maintenanceWindowExecutionTaskInvocationIdentity
-    :: MaintenanceWindowExecutionTaskInvocationIdentity
-maintenanceWindowExecutionTaskInvocationIdentity =
-    MaintenanceWindowExecutionTaskInvocationIdentity'
-    { _mwetiiStatus = Nothing
-    , _mwetiiExecutionId = Nothing
-    , _mwetiiTaskExecutionId = Nothing
-    , _mwetiiStartTime = Nothing
-    , _mwetiiInvocationId = Nothing
-    , _mwetiiOwnerInformation = Nothing
-    , _mwetiiWindowTargetId = Nothing
-    , _mwetiiWindowExecutionId = Nothing
-    , _mwetiiStatusDetails = Nothing
-    , _mwetiiEndTime = Nothing
-    , _mwetiiParameters = Nothing
-    }
-
--- | The status of the task invocation.
-mwetiiStatus :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe MaintenanceWindowExecutionStatus)
-mwetiiStatus = lens _mwetiiStatus (\ s a -> s{_mwetiiStatus = a});
-
--- | The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID.
-mwetiiExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiExecutionId = lens _mwetiiExecutionId (\ s a -> s{_mwetiiExecutionId = a});
-
--- | The ID of the specific task execution in the Maintenance Window execution.
-mwetiiTaskExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiTaskExecutionId = lens _mwetiiTaskExecutionId (\ s a -> s{_mwetiiTaskExecutionId = a});
-
--- | The time the invocation started.
-mwetiiStartTime :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe UTCTime)
-mwetiiStartTime = lens _mwetiiStartTime (\ s a -> s{_mwetiiStartTime = a}) . mapping _Time;
-
--- | The ID of the task invocation.
-mwetiiInvocationId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiInvocationId = lens _mwetiiInvocationId (\ s a -> s{_mwetiiInvocationId = a});
-
--- | User-provided value that was specified when the target was registered with the Maintenance Window. This was also included in any CloudWatch events raised during the task invocation.
-mwetiiOwnerInformation :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiOwnerInformation = lens _mwetiiOwnerInformation (\ s a -> s{_mwetiiOwnerInformation = a}) . mapping _Sensitive;
-
--- | The ID of the target definition in this Maintenance Window the invocation was performed for.
-mwetiiWindowTargetId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiWindowTargetId = lens _mwetiiWindowTargetId (\ s a -> s{_mwetiiWindowTargetId = a});
-
--- | The ID of the Maintenance Window execution that ran the task.
-mwetiiWindowExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiWindowExecutionId = lens _mwetiiWindowExecutionId (\ s a -> s{_mwetiiWindowExecutionId = a});
-
--- | The details explaining the status of the task invocation. Only available for certain Status values.
-mwetiiStatusDetails :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiStatusDetails = lens _mwetiiStatusDetails (\ s a -> s{_mwetiiStatusDetails = a});
-
--- | The time the invocation finished.
-mwetiiEndTime :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe UTCTime)
-mwetiiEndTime = lens _mwetiiEndTime (\ s a -> s{_mwetiiEndTime = a}) . mapping _Time;
-
--- | The parameters that were provided for the invocation when it was executed.
-mwetiiParameters :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
-mwetiiParameters = lens _mwetiiParameters (\ s a -> s{_mwetiiParameters = a}) . mapping _Sensitive;
-
-instance FromJSON
-         MaintenanceWindowExecutionTaskInvocationIdentity
-         where
-        parseJSON
-          = withObject
-              "MaintenanceWindowExecutionTaskInvocationIdentity"
-              (\ x ->
-                 MaintenanceWindowExecutionTaskInvocationIdentity' <$>
-                   (x .:? "Status") <*> (x .:? "ExecutionId") <*>
-                     (x .:? "TaskExecutionId")
-                     <*> (x .:? "StartTime")
-                     <*> (x .:? "InvocationId")
-                     <*> (x .:? "OwnerInformation")
-                     <*> (x .:? "WindowTargetId")
-                     <*> (x .:? "WindowExecutionId")
-                     <*> (x .:? "StatusDetails")
-                     <*> (x .:? "EndTime")
-                     <*> (x .:? "Parameters"))
-
-instance Hashable
-         MaintenanceWindowExecutionTaskInvocationIdentity
-
-instance NFData
-         MaintenanceWindowExecutionTaskInvocationIdentity
-
--- | Filter used in the request.
---
---
---
--- /See:/ 'maintenanceWindowFilter' smart constructor.
-data MaintenanceWindowFilter = MaintenanceWindowFilter'
-    { _mwfValues :: !(Maybe [Text])
-    , _mwfKey    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwfValues' - The filter values.
---
--- * 'mwfKey' - The name of the filter.
-maintenanceWindowFilter
-    :: MaintenanceWindowFilter
-maintenanceWindowFilter =
-    MaintenanceWindowFilter'
-    { _mwfValues = Nothing
-    , _mwfKey = Nothing
-    }
-
--- | The filter values.
-mwfValues :: Lens' MaintenanceWindowFilter [Text]
-mwfValues = lens _mwfValues (\ s a -> s{_mwfValues = a}) . _Default . _Coerce;
-
--- | The name of the filter.
-mwfKey :: Lens' MaintenanceWindowFilter (Maybe Text)
-mwfKey = lens _mwfKey (\ s a -> s{_mwfKey = a});
-
-instance Hashable MaintenanceWindowFilter
-
-instance NFData MaintenanceWindowFilter
-
-instance ToJSON MaintenanceWindowFilter where
-        toJSON MaintenanceWindowFilter'{..}
-          = object
-              (catMaybes
-                 [("Values" .=) <$> _mwfValues,
-                  ("Key" .=) <$> _mwfKey])
-
--- | Information about the Maintenance Window.
---
---
---
--- /See:/ 'maintenanceWindowIdentity' smart constructor.
-data MaintenanceWindowIdentity = MaintenanceWindowIdentity'
-    { _mwiEnabled  :: !(Maybe Bool)
-    , _mwiName     :: !(Maybe Text)
-    , _mwiCutoff   :: !(Maybe Nat)
-    , _mwiDuration :: !(Maybe Nat)
-    , _mwiWindowId :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwiEnabled' - Whether the Maintenance Window is enabled.
---
--- * 'mwiName' - The name of the Maintenance Window.
---
--- * 'mwiCutoff' - The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution.
---
--- * 'mwiDuration' - The duration of the Maintenance Window in hours.
---
--- * 'mwiWindowId' - The ID of the Maintenance Window.
-maintenanceWindowIdentity
-    :: MaintenanceWindowIdentity
-maintenanceWindowIdentity =
-    MaintenanceWindowIdentity'
-    { _mwiEnabled = Nothing
-    , _mwiName = Nothing
-    , _mwiCutoff = Nothing
-    , _mwiDuration = Nothing
-    , _mwiWindowId = Nothing
-    }
-
--- | Whether the Maintenance Window is enabled.
-mwiEnabled :: Lens' MaintenanceWindowIdentity (Maybe Bool)
-mwiEnabled = lens _mwiEnabled (\ s a -> s{_mwiEnabled = a});
-
--- | The name of the Maintenance Window.
-mwiName :: Lens' MaintenanceWindowIdentity (Maybe Text)
-mwiName = lens _mwiName (\ s a -> s{_mwiName = a});
-
--- | The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution.
-mwiCutoff :: Lens' MaintenanceWindowIdentity (Maybe Natural)
-mwiCutoff = lens _mwiCutoff (\ s a -> s{_mwiCutoff = a}) . mapping _Nat;
-
--- | The duration of the Maintenance Window in hours.
-mwiDuration :: Lens' MaintenanceWindowIdentity (Maybe Natural)
-mwiDuration = lens _mwiDuration (\ s a -> s{_mwiDuration = a}) . mapping _Nat;
-
--- | The ID of the Maintenance Window.
-mwiWindowId :: Lens' MaintenanceWindowIdentity (Maybe Text)
-mwiWindowId = lens _mwiWindowId (\ s a -> s{_mwiWindowId = a});
-
-instance FromJSON MaintenanceWindowIdentity where
-        parseJSON
-          = withObject "MaintenanceWindowIdentity"
-              (\ x ->
-                 MaintenanceWindowIdentity' <$>
-                   (x .:? "Enabled") <*> (x .:? "Name") <*>
-                     (x .:? "Cutoff")
-                     <*> (x .:? "Duration")
-                     <*> (x .:? "WindowId"))
-
-instance Hashable MaintenanceWindowIdentity
-
-instance NFData MaintenanceWindowIdentity
-
--- | The target registered with the Maintenance Window.
---
---
---
--- /See:/ 'maintenanceWindowTarget' smart constructor.
-data MaintenanceWindowTarget = MaintenanceWindowTarget'
-    { _mResourceType     :: !(Maybe MaintenanceWindowResourceType)
-    , _mOwnerInformation :: !(Maybe (Sensitive Text))
-    , _mWindowTargetId   :: !(Maybe Text)
-    , _mTargets          :: !(Maybe [Target])
-    , _mWindowId         :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowTarget' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mResourceType' - The type of target.
---
--- * 'mOwnerInformation' - User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
---
--- * 'mWindowTargetId' - The ID of the target.
---
--- * 'mTargets' - The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
---
--- * 'mWindowId' - The Maintenance Window ID where the target is registered.
-maintenanceWindowTarget
-    :: MaintenanceWindowTarget
-maintenanceWindowTarget =
-    MaintenanceWindowTarget'
-    { _mResourceType = Nothing
-    , _mOwnerInformation = Nothing
-    , _mWindowTargetId = Nothing
-    , _mTargets = Nothing
-    , _mWindowId = Nothing
-    }
-
--- | The type of target.
-mResourceType :: Lens' MaintenanceWindowTarget (Maybe MaintenanceWindowResourceType)
-mResourceType = lens _mResourceType (\ s a -> s{_mResourceType = a});
-
--- | User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
-mOwnerInformation :: Lens' MaintenanceWindowTarget (Maybe Text)
-mOwnerInformation = lens _mOwnerInformation (\ s a -> s{_mOwnerInformation = a}) . mapping _Sensitive;
-
--- | The ID of the target.
-mWindowTargetId :: Lens' MaintenanceWindowTarget (Maybe Text)
-mWindowTargetId = lens _mWindowTargetId (\ s a -> s{_mWindowTargetId = a});
-
--- | The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
-mTargets :: Lens' MaintenanceWindowTarget [Target]
-mTargets = lens _mTargets (\ s a -> s{_mTargets = a}) . _Default . _Coerce;
-
--- | The Maintenance Window ID where the target is registered.
-mWindowId :: Lens' MaintenanceWindowTarget (Maybe Text)
-mWindowId = lens _mWindowId (\ s a -> s{_mWindowId = a});
-
-instance FromJSON MaintenanceWindowTarget where
-        parseJSON
-          = withObject "MaintenanceWindowTarget"
-              (\ x ->
-                 MaintenanceWindowTarget' <$>
-                   (x .:? "ResourceType") <*> (x .:? "OwnerInformation")
-                     <*> (x .:? "WindowTargetId")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "WindowId"))
-
-instance Hashable MaintenanceWindowTarget
-
-instance NFData MaintenanceWindowTarget
-
--- | Information about a task defined for a Maintenance Window.
---
---
---
--- /See:/ 'maintenanceWindowTask' smart constructor.
-data MaintenanceWindowTask = MaintenanceWindowTask'
-    { _mwtServiceRoleARN :: !(Maybe Text)
-    , _mwtWindowTaskId   :: !(Maybe Text)
-    , _mwtTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
-    , _mwtPriority       :: !(Maybe Nat)
-    , _mwtTaskARN        :: !(Maybe Text)
-    , _mwtMaxErrors      :: !(Maybe Text)
-    , _mwtTargets        :: !(Maybe [Target])
-    , _mwtLoggingInfo    :: !(Maybe LoggingInfo)
-    , _mwtType           :: !(Maybe MaintenanceWindowTaskType)
-    , _mwtMaxConcurrency :: !(Maybe Text)
-    , _mwtWindowId       :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowTask' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwtServiceRoleARN' - The role that should be assumed when executing the task
---
--- * 'mwtWindowTaskId' - The task ID.
---
--- * 'mwtTaskParameters' - The parameters that should be passed to the task when it is executed.
---
--- * 'mwtPriority' - The priority of the task in the Maintenance Window, the lower the number the higher the priority. Tasks in a Maintenance Window are scheduled in priority order with tasks that have the same priority scheduled in parallel.
---
--- * 'mwtTaskARN' - The ARN of the task to execute.
---
--- * 'mwtMaxErrors' - The maximum number of errors allowed before this task stops being scheduled.
---
--- * 'mwtTargets' - The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
---
--- * 'mwtLoggingInfo' - Information about an Amazon S3 bucket to write task-level logs to.
---
--- * 'mwtType' - The type of task.
---
--- * 'mwtMaxConcurrency' - The maximum number of targets this task can be run for in parallel.
---
--- * 'mwtWindowId' - The Maintenance Window ID where the task is registered.
-maintenanceWindowTask
-    :: MaintenanceWindowTask
-maintenanceWindowTask =
-    MaintenanceWindowTask'
-    { _mwtServiceRoleARN = Nothing
-    , _mwtWindowTaskId = Nothing
-    , _mwtTaskParameters = Nothing
-    , _mwtPriority = Nothing
-    , _mwtTaskARN = Nothing
-    , _mwtMaxErrors = Nothing
-    , _mwtTargets = Nothing
-    , _mwtLoggingInfo = Nothing
-    , _mwtType = Nothing
-    , _mwtMaxConcurrency = Nothing
-    , _mwtWindowId = Nothing
-    }
-
--- | The role that should be assumed when executing the task
-mwtServiceRoleARN :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtServiceRoleARN = lens _mwtServiceRoleARN (\ s a -> s{_mwtServiceRoleARN = a});
-
--- | The task ID.
-mwtWindowTaskId :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtWindowTaskId = lens _mwtWindowTaskId (\ s a -> s{_mwtWindowTaskId = a});
-
--- | The parameters that should be passed to the task when it is executed.
-mwtTaskParameters :: Lens' MaintenanceWindowTask (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
-mwtTaskParameters = lens _mwtTaskParameters (\ s a -> s{_mwtTaskParameters = a}) . mapping (_Sensitive . _Map);
-
--- | The priority of the task in the Maintenance Window, the lower the number the higher the priority. Tasks in a Maintenance Window are scheduled in priority order with tasks that have the same priority scheduled in parallel.
-mwtPriority :: Lens' MaintenanceWindowTask (Maybe Natural)
-mwtPriority = lens _mwtPriority (\ s a -> s{_mwtPriority = a}) . mapping _Nat;
-
--- | The ARN of the task to execute.
-mwtTaskARN :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtTaskARN = lens _mwtTaskARN (\ s a -> s{_mwtTaskARN = a});
-
--- | The maximum number of errors allowed before this task stops being scheduled.
-mwtMaxErrors :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtMaxErrors = lens _mwtMaxErrors (\ s a -> s{_mwtMaxErrors = a});
-
--- | The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
-mwtTargets :: Lens' MaintenanceWindowTask [Target]
-mwtTargets = lens _mwtTargets (\ s a -> s{_mwtTargets = a}) . _Default . _Coerce;
-
--- | Information about an Amazon S3 bucket to write task-level logs to.
-mwtLoggingInfo :: Lens' MaintenanceWindowTask (Maybe LoggingInfo)
-mwtLoggingInfo = lens _mwtLoggingInfo (\ s a -> s{_mwtLoggingInfo = a});
-
--- | The type of task.
-mwtType :: Lens' MaintenanceWindowTask (Maybe MaintenanceWindowTaskType)
-mwtType = lens _mwtType (\ s a -> s{_mwtType = a});
-
--- | The maximum number of targets this task can be run for in parallel.
-mwtMaxConcurrency :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtMaxConcurrency = lens _mwtMaxConcurrency (\ s a -> s{_mwtMaxConcurrency = a});
-
--- | The Maintenance Window ID where the task is registered.
-mwtWindowId :: Lens' MaintenanceWindowTask (Maybe Text)
-mwtWindowId = lens _mwtWindowId (\ s a -> s{_mwtWindowId = a});
-
-instance FromJSON MaintenanceWindowTask where
-        parseJSON
-          = withObject "MaintenanceWindowTask"
-              (\ x ->
-                 MaintenanceWindowTask' <$>
-                   (x .:? "ServiceRoleArn") <*> (x .:? "WindowTaskId")
-                     <*> (x .:? "TaskParameters" .!= mempty)
-                     <*> (x .:? "Priority")
-                     <*> (x .:? "TaskArn")
-                     <*> (x .:? "MaxErrors")
-                     <*> (x .:? "Targets" .!= mempty)
-                     <*> (x .:? "LoggingInfo")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "MaxConcurrency")
-                     <*> (x .:? "WindowId"))
-
-instance Hashable MaintenanceWindowTask
-
-instance NFData MaintenanceWindowTask
-
--- | Defines the values for a task parameter.
---
---
---
--- /See:/ 'maintenanceWindowTaskParameterValueExpression' smart constructor.
-newtype MaintenanceWindowTaskParameterValueExpression = MaintenanceWindowTaskParameterValueExpression'
-    { _mwtpveValues :: Maybe (Sensitive [Sensitive Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'MaintenanceWindowTaskParameterValueExpression' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mwtpveValues' - This field contains an array of 0 or more strings, each 1 to 255 characters in length.
-maintenanceWindowTaskParameterValueExpression
-    :: MaintenanceWindowTaskParameterValueExpression
-maintenanceWindowTaskParameterValueExpression =
-    MaintenanceWindowTaskParameterValueExpression'
-    { _mwtpveValues = Nothing
-    }
-
--- | This field contains an array of 0 or more strings, each 1 to 255 characters in length.
-mwtpveValues :: Lens' MaintenanceWindowTaskParameterValueExpression (Maybe [Text])
-mwtpveValues = lens _mwtpveValues (\ s a -> s{_mwtpveValues = a}) . mapping (_Sensitive . _Coerce);
-
-instance FromJSON
-         MaintenanceWindowTaskParameterValueExpression where
-        parseJSON
-          = withObject
-              "MaintenanceWindowTaskParameterValueExpression"
-              (\ x ->
-                 MaintenanceWindowTaskParameterValueExpression' <$>
-                   (x .:? "Values" .!= mempty))
-
-instance Hashable
-         MaintenanceWindowTaskParameterValueExpression
-
-instance NFData
-         MaintenanceWindowTaskParameterValueExpression
-
-instance ToJSON
-         MaintenanceWindowTaskParameterValueExpression where
-        toJSON
-          MaintenanceWindowTaskParameterValueExpression'{..}
-          = object
-              (catMaybes [("Values" .=) <$> _mwtpveValues])
-
--- | Configurations for sending notifications.
---
---
---
--- /See:/ 'notificationConfig' smart constructor.
-data NotificationConfig = NotificationConfig'
-    { _ncNotificationEvents :: !(Maybe [NotificationEvent])
-    , _ncNotificationType   :: !(Maybe NotificationType)
-    , _ncNotificationARN    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'NotificationConfig' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ncNotificationEvents' - The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitoring Commands> in the /Amazon Elastic Compute Cloud User Guide / .
---
--- * 'ncNotificationType' - Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes.
---
--- * 'ncNotificationARN' - An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic. Run Command pushes notifications about command status changes to this topic.
-notificationConfig
-    :: NotificationConfig
-notificationConfig =
-    NotificationConfig'
-    { _ncNotificationEvents = Nothing
-    , _ncNotificationType = Nothing
-    , _ncNotificationARN = Nothing
-    }
-
--- | The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/monitor-commands.html Monitoring Commands> in the /Amazon Elastic Compute Cloud User Guide / .
-ncNotificationEvents :: Lens' NotificationConfig [NotificationEvent]
-ncNotificationEvents = lens _ncNotificationEvents (\ s a -> s{_ncNotificationEvents = a}) . _Default . _Coerce;
-
--- | Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes.
-ncNotificationType :: Lens' NotificationConfig (Maybe NotificationType)
-ncNotificationType = lens _ncNotificationType (\ s a -> s{_ncNotificationType = a});
-
--- | An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic. Run Command pushes notifications about command status changes to this topic.
-ncNotificationARN :: Lens' NotificationConfig (Maybe Text)
-ncNotificationARN = lens _ncNotificationARN (\ s a -> s{_ncNotificationARN = a});
-
-instance FromJSON NotificationConfig where
-        parseJSON
-          = withObject "NotificationConfig"
-              (\ x ->
-                 NotificationConfig' <$>
-                   (x .:? "NotificationEvents" .!= mempty) <*>
-                     (x .:? "NotificationType")
-                     <*> (x .:? "NotificationArn"))
-
-instance Hashable NotificationConfig
-
-instance NFData NotificationConfig
-
-instance ToJSON NotificationConfig where
-        toJSON NotificationConfig'{..}
-          = object
-              (catMaybes
-                 [("NotificationEvents" .=) <$> _ncNotificationEvents,
-                  ("NotificationType" .=) <$> _ncNotificationType,
-                  ("NotificationArn" .=) <$> _ncNotificationARN])
-
--- | An Amazon EC2 Systems Manager parameter in Parameter Store.
---
---
---
--- /See:/ 'parameter' smart constructor.
-data Parameter = Parameter'
-    { _pValue :: !(Maybe Text)
-    , _pName  :: !(Maybe Text)
-    , _pType  :: !(Maybe ParameterType)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Parameter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pValue' - The parameter value.
---
--- * 'pName' - The name of the parameter.
---
--- * 'pType' - The type of parameter. Valid values include the following: String, String list, Secure string.
-parameter
-    :: Parameter
-parameter =
-    Parameter'
-    { _pValue = Nothing
-    , _pName = Nothing
-    , _pType = Nothing
-    }
-
--- | The parameter value.
-pValue :: Lens' Parameter (Maybe Text)
-pValue = lens _pValue (\ s a -> s{_pValue = a});
-
--- | The name of the parameter.
-pName :: Lens' Parameter (Maybe Text)
-pName = lens _pName (\ s a -> s{_pName = a});
-
--- | The type of parameter. Valid values include the following: String, String list, Secure string.
-pType :: Lens' Parameter (Maybe ParameterType)
-pType = lens _pType (\ s a -> s{_pType = a});
-
-instance FromJSON Parameter where
-        parseJSON
-          = withObject "Parameter"
-              (\ x ->
-                 Parameter' <$>
-                   (x .:? "Value") <*> (x .:? "Name") <*>
-                     (x .:? "Type"))
-
-instance Hashable Parameter
-
-instance NFData Parameter
-
--- | Information about parameter usage.
---
---
---
--- /See:/ 'parameterHistory' smart constructor.
-data ParameterHistory = ParameterHistory'
-    { _phLastModifiedDate :: !(Maybe POSIX)
-    , _phKeyId            :: !(Maybe Text)
-    , _phValue            :: !(Maybe Text)
-    , _phName             :: !(Maybe Text)
-    , _phLastModifiedUser :: !(Maybe Text)
-    , _phType             :: !(Maybe ParameterType)
-    , _phDescription      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParameterHistory' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'phLastModifiedDate' - Date the parameter was last changed or updated.
---
--- * 'phKeyId' - The ID of the query key used for this parameter.
---
--- * 'phValue' - The parameter value.
---
--- * 'phName' - The name of the parameter.
---
--- * 'phLastModifiedUser' - Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
---
--- * 'phType' - The type of parameter used.
---
--- * 'phDescription' - Information about the parameter.
-parameterHistory
-    :: ParameterHistory
-parameterHistory =
-    ParameterHistory'
-    { _phLastModifiedDate = Nothing
-    , _phKeyId = Nothing
-    , _phValue = Nothing
-    , _phName = Nothing
-    , _phLastModifiedUser = Nothing
-    , _phType = Nothing
-    , _phDescription = Nothing
-    }
-
--- | Date the parameter was last changed or updated.
-phLastModifiedDate :: Lens' ParameterHistory (Maybe UTCTime)
-phLastModifiedDate = lens _phLastModifiedDate (\ s a -> s{_phLastModifiedDate = a}) . mapping _Time;
-
--- | The ID of the query key used for this parameter.
-phKeyId :: Lens' ParameterHistory (Maybe Text)
-phKeyId = lens _phKeyId (\ s a -> s{_phKeyId = a});
-
--- | The parameter value.
-phValue :: Lens' ParameterHistory (Maybe Text)
-phValue = lens _phValue (\ s a -> s{_phValue = a});
-
--- | The name of the parameter.
-phName :: Lens' ParameterHistory (Maybe Text)
-phName = lens _phName (\ s a -> s{_phName = a});
-
--- | Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
-phLastModifiedUser :: Lens' ParameterHistory (Maybe Text)
-phLastModifiedUser = lens _phLastModifiedUser (\ s a -> s{_phLastModifiedUser = a});
-
--- | The type of parameter used.
-phType :: Lens' ParameterHistory (Maybe ParameterType)
-phType = lens _phType (\ s a -> s{_phType = a});
-
--- | Information about the parameter.
-phDescription :: Lens' ParameterHistory (Maybe Text)
-phDescription = lens _phDescription (\ s a -> s{_phDescription = a});
-
-instance FromJSON ParameterHistory where
-        parseJSON
-          = withObject "ParameterHistory"
-              (\ x ->
-                 ParameterHistory' <$>
-                   (x .:? "LastModifiedDate") <*> (x .:? "KeyId") <*>
-                     (x .:? "Value")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "LastModifiedUser")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "Description"))
-
-instance Hashable ParameterHistory
-
-instance NFData ParameterHistory
-
--- | Metada includes information like the ARN of the last user and the date/time the parameter was last used.
---
---
---
--- /See:/ 'parameterMetadata' smart constructor.
-data ParameterMetadata = ParameterMetadata'
-    { _pmLastModifiedDate :: !(Maybe POSIX)
-    , _pmKeyId            :: !(Maybe Text)
-    , _pmName             :: !(Maybe Text)
-    , _pmLastModifiedUser :: !(Maybe Text)
-    , _pmType             :: !(Maybe ParameterType)
-    , _pmDescription      :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParameterMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pmLastModifiedDate' - Date the parameter was last changed or updated.
---
--- * 'pmKeyId' - The ID of the query key used for this parameter.
---
--- * 'pmName' - The parameter name.
---
--- * 'pmLastModifiedUser' - Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
---
--- * 'pmType' - The type of parameter. Valid parameter types include the following: String, String list, Secure string.
---
--- * 'pmDescription' - Description of the parameter actions.
-parameterMetadata
-    :: ParameterMetadata
-parameterMetadata =
-    ParameterMetadata'
-    { _pmLastModifiedDate = Nothing
-    , _pmKeyId = Nothing
-    , _pmName = Nothing
-    , _pmLastModifiedUser = Nothing
-    , _pmType = Nothing
-    , _pmDescription = Nothing
-    }
-
--- | Date the parameter was last changed or updated.
-pmLastModifiedDate :: Lens' ParameterMetadata (Maybe UTCTime)
-pmLastModifiedDate = lens _pmLastModifiedDate (\ s a -> s{_pmLastModifiedDate = a}) . mapping _Time;
-
--- | The ID of the query key used for this parameter.
-pmKeyId :: Lens' ParameterMetadata (Maybe Text)
-pmKeyId = lens _pmKeyId (\ s a -> s{_pmKeyId = a});
-
--- | The parameter name.
-pmName :: Lens' ParameterMetadata (Maybe Text)
-pmName = lens _pmName (\ s a -> s{_pmName = a});
-
--- | Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
-pmLastModifiedUser :: Lens' ParameterMetadata (Maybe Text)
-pmLastModifiedUser = lens _pmLastModifiedUser (\ s a -> s{_pmLastModifiedUser = a});
-
--- | The type of parameter. Valid parameter types include the following: String, String list, Secure string.
-pmType :: Lens' ParameterMetadata (Maybe ParameterType)
-pmType = lens _pmType (\ s a -> s{_pmType = a});
-
--- | Description of the parameter actions.
-pmDescription :: Lens' ParameterMetadata (Maybe Text)
-pmDescription = lens _pmDescription (\ s a -> s{_pmDescription = a});
-
-instance FromJSON ParameterMetadata where
-        parseJSON
-          = withObject "ParameterMetadata"
-              (\ x ->
-                 ParameterMetadata' <$>
-                   (x .:? "LastModifiedDate") <*> (x .:? "KeyId") <*>
-                     (x .:? "Name")
-                     <*> (x .:? "LastModifiedUser")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "Description"))
-
-instance Hashable ParameterMetadata
-
-instance NFData ParameterMetadata
-
--- | One or more filters. Use a filter to return a more specific list of results.
---
---
---
--- /See:/ 'parametersFilter' smart constructor.
-data ParametersFilter = ParametersFilter'
-    { _pfKey    :: !(Maybe ParametersFilterKey)
-    , _pfValues :: !(List1 Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParametersFilter' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pfKey' - The name of the filter.
---
--- * 'pfValues' - The filter values.
-parametersFilter
-    :: NonEmpty Text -- ^ 'pfValues'
-    -> ParametersFilter
-parametersFilter pValues_ =
-    ParametersFilter'
-    { _pfKey = Nothing
-    , _pfValues = _List1 # pValues_
-    }
-
--- | The name of the filter.
-pfKey :: Lens' ParametersFilter (Maybe ParametersFilterKey)
-pfKey = lens _pfKey (\ s a -> s{_pfKey = a});
-
--- | The filter values.
-pfValues :: Lens' ParametersFilter (NonEmpty Text)
-pfValues = lens _pfValues (\ s a -> s{_pfValues = a}) . _List1;
-
-instance Hashable ParametersFilter
-
-instance NFData ParametersFilter
-
-instance ToJSON ParametersFilter where
-        toJSON ParametersFilter'{..}
-          = object
-              (catMaybes
-                 [("Key" .=) <$> _pfKey,
-                  Just ("Values" .= _pfValues)])
-
--- | The inventory item result attribute.
---
---
---
--- /See:/ 'resultAttribute' smart constructor.
-newtype ResultAttribute = ResultAttribute'
-    { _raTypeName :: Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ResultAttribute' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'raTypeName' - Name of the inventory item type. Valid value: “AWS:InstanceInformation”. Default Value: “AWS:InstanceInformation”.
-resultAttribute
-    :: Text -- ^ 'raTypeName'
-    -> ResultAttribute
-resultAttribute pTypeName_ =
-    ResultAttribute'
-    { _raTypeName = pTypeName_
-    }
-
--- | Name of the inventory item type. Valid value: “AWS:InstanceInformation”. Default Value: “AWS:InstanceInformation”.
-raTypeName :: Lens' ResultAttribute Text
-raTypeName = lens _raTypeName (\ s a -> s{_raTypeName = a});
-
-instance Hashable ResultAttribute
-
-instance NFData ResultAttribute
-
-instance ToJSON ResultAttribute where
-        toJSON ResultAttribute'{..}
-          = object
-              (catMaybes [Just ("TypeName" .= _raTypeName)])
-
--- | An Amazon S3 bucket where you want to store the results of this request.
---
---
---
--- /See:/ 's3OutputLocation' smart constructor.
-data S3OutputLocation = S3OutputLocation'
-    { _solOutputS3KeyPrefix  :: !(Maybe Text)
-    , _solOutputS3Region     :: !(Maybe Text)
-    , _solOutputS3BucketName :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'S3OutputLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'solOutputS3KeyPrefix' - The Amazon S3 bucket subfolder.
---
--- * 'solOutputS3Region' - The Amazon S3 region where the association information is stored.
---
--- * 'solOutputS3BucketName' - The name of the Amazon S3 bucket.
-s3OutputLocation
-    :: S3OutputLocation
-s3OutputLocation =
-    S3OutputLocation'
-    { _solOutputS3KeyPrefix = Nothing
-    , _solOutputS3Region = Nothing
-    , _solOutputS3BucketName = Nothing
-    }
-
--- | The Amazon S3 bucket subfolder.
-solOutputS3KeyPrefix :: Lens' S3OutputLocation (Maybe Text)
-solOutputS3KeyPrefix = lens _solOutputS3KeyPrefix (\ s a -> s{_solOutputS3KeyPrefix = a});
-
--- | The Amazon S3 region where the association information is stored.
-solOutputS3Region :: Lens' S3OutputLocation (Maybe Text)
-solOutputS3Region = lens _solOutputS3Region (\ s a -> s{_solOutputS3Region = a});
-
--- | The name of the Amazon S3 bucket.
-solOutputS3BucketName :: Lens' S3OutputLocation (Maybe Text)
-solOutputS3BucketName = lens _solOutputS3BucketName (\ s a -> s{_solOutputS3BucketName = a});
-
-instance FromJSON S3OutputLocation where
-        parseJSON
-          = withObject "S3OutputLocation"
-              (\ x ->
-                 S3OutputLocation' <$>
-                   (x .:? "OutputS3KeyPrefix") <*>
-                     (x .:? "OutputS3Region")
-                     <*> (x .:? "OutputS3BucketName"))
-
-instance Hashable S3OutputLocation
-
-instance NFData S3OutputLocation
-
-instance ToJSON S3OutputLocation where
-        toJSON S3OutputLocation'{..}
-          = object
-              (catMaybes
-                 [("OutputS3KeyPrefix" .=) <$> _solOutputS3KeyPrefix,
-                  ("OutputS3Region" .=) <$> _solOutputS3Region,
-                  ("OutputS3BucketName" .=) <$>
-                    _solOutputS3BucketName])
-
--- | A URL for the Amazon S3 bucket where you want to store the results of this request.
---
---
---
--- /See:/ 's3OutputURL' smart constructor.
-newtype S3OutputURL = S3OutputURL'
-    { _souOutputURL :: Maybe Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'S3OutputURL' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'souOutputURL' - A URL for an Amazon S3 bucket where you want to store the results of this request.
-s3OutputURL
-    :: S3OutputURL
-s3OutputURL =
-    S3OutputURL'
-    { _souOutputURL = Nothing
-    }
-
--- | A URL for an Amazon S3 bucket where you want to store the results of this request.
-souOutputURL :: Lens' S3OutputURL (Maybe Text)
-souOutputURL = lens _souOutputURL (\ s a -> s{_souOutputURL = a});
-
-instance FromJSON S3OutputURL where
-        parseJSON
-          = withObject "S3OutputURL"
-              (\ x -> S3OutputURL' <$> (x .:? "OutputUrl"))
-
-instance Hashable S3OutputURL
-
-instance NFData S3OutputURL
-
--- | Detailed information about an the execution state of an Automation step.
---
---
---
--- /See:/ 'stepExecution' smart constructor.
-data StepExecution = StepExecution'
-    { _seInputs             :: !(Maybe (Map Text Text))
-    , _seStepName           :: !(Maybe Text)
-    , _seExecutionEndTime   :: !(Maybe POSIX)
-    , _seFailureMessage     :: !(Maybe Text)
-    , _seResponse           :: !(Maybe Text)
-    , _seAction             :: !(Maybe Text)
-    , _seResponseCode       :: !(Maybe Text)
-    , _seStepStatus         :: !(Maybe AutomationExecutionStatus)
-    , _seOutputs            :: !(Maybe (Map Text [Text]))
-    , _seExecutionStartTime :: !(Maybe POSIX)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StepExecution' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'seInputs' - Fully-resolved values passed into the step before execution.
---
--- * 'seStepName' - The name of this execution step.
---
--- * 'seExecutionEndTime' - If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated.
---
--- * 'seFailureMessage' - If a step failed, this message explains why the execution failed.
---
--- * 'seResponse' - A message associated with the response code for an execution.
---
--- * 'seAction' - The action this step performs. The action determines the behavior of the step.
---
--- * 'seResponseCode' - The response code returned by the execution of the step.
---
--- * 'seStepStatus' - The execution status for this step. Valid values include: @Pending@ , @InProgress@ , @Success@ , @Cancelled@ , @Failed@ , and @TimedOut@ .
---
--- * 'seOutputs' - Returned values from the execution of the step.
---
--- * 'seExecutionStartTime' - If a step has begun execution, this contains the time the step started. If the step is in @Pending@ status, this field is not populated.
-stepExecution
-    :: StepExecution
-stepExecution =
-    StepExecution'
-    { _seInputs = Nothing
-    , _seStepName = Nothing
-    , _seExecutionEndTime = Nothing
-    , _seFailureMessage = Nothing
-    , _seResponse = Nothing
-    , _seAction = Nothing
-    , _seResponseCode = Nothing
-    , _seStepStatus = Nothing
-    , _seOutputs = Nothing
-    , _seExecutionStartTime = Nothing
-    }
-
--- | Fully-resolved values passed into the step before execution.
-seInputs :: Lens' StepExecution (HashMap Text Text)
-seInputs = lens _seInputs (\ s a -> s{_seInputs = a}) . _Default . _Map;
-
--- | The name of this execution step.
-seStepName :: Lens' StepExecution (Maybe Text)
-seStepName = lens _seStepName (\ s a -> s{_seStepName = a});
-
--- | If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated.
-seExecutionEndTime :: Lens' StepExecution (Maybe UTCTime)
-seExecutionEndTime = lens _seExecutionEndTime (\ s a -> s{_seExecutionEndTime = a}) . mapping _Time;
-
--- | If a step failed, this message explains why the execution failed.
-seFailureMessage :: Lens' StepExecution (Maybe Text)
-seFailureMessage = lens _seFailureMessage (\ s a -> s{_seFailureMessage = a});
-
--- | A message associated with the response code for an execution.
-seResponse :: Lens' StepExecution (Maybe Text)
-seResponse = lens _seResponse (\ s a -> s{_seResponse = a});
-
--- | The action this step performs. The action determines the behavior of the step.
-seAction :: Lens' StepExecution (Maybe Text)
-seAction = lens _seAction (\ s a -> s{_seAction = a});
-
--- | The response code returned by the execution of the step.
-seResponseCode :: Lens' StepExecution (Maybe Text)
-seResponseCode = lens _seResponseCode (\ s a -> s{_seResponseCode = a});
-
--- | The execution status for this step. Valid values include: @Pending@ , @InProgress@ , @Success@ , @Cancelled@ , @Failed@ , and @TimedOut@ .
-seStepStatus :: Lens' StepExecution (Maybe AutomationExecutionStatus)
-seStepStatus = lens _seStepStatus (\ s a -> s{_seStepStatus = a});
-
--- | Returned values from the execution of the step.
-seOutputs :: Lens' StepExecution (HashMap Text [Text])
-seOutputs = lens _seOutputs (\ s a -> s{_seOutputs = a}) . _Default . _Map;
-
--- | If a step has begun execution, this contains the time the step started. If the step is in @Pending@ status, this field is not populated.
-seExecutionStartTime :: Lens' StepExecution (Maybe UTCTime)
-seExecutionStartTime = lens _seExecutionStartTime (\ s a -> s{_seExecutionStartTime = a}) . mapping _Time;
-
-instance FromJSON StepExecution where
-        parseJSON
-          = withObject "StepExecution"
-              (\ x ->
-                 StepExecution' <$>
-                   (x .:? "Inputs" .!= mempty) <*> (x .:? "StepName")
-                     <*> (x .:? "ExecutionEndTime")
-                     <*> (x .:? "FailureMessage")
-                     <*> (x .:? "Response")
-                     <*> (x .:? "Action")
-                     <*> (x .:? "ResponseCode")
-                     <*> (x .:? "StepStatus")
-                     <*> (x .:? "Outputs" .!= mempty)
-                     <*> (x .:? "ExecutionStartTime"))
-
-instance Hashable StepExecution
-
-instance NFData StepExecution
-
--- | Metadata that you assign to your managed instances. Tags enable you to categorize your managed instances in different ways, for example, by purpose, owner, or environment.
---
---
---
--- /See:/ 'tag' smart constructor.
-data Tag = Tag'
-    { _tagKey   :: !Text
-    , _tagValue :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Tag' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tagKey' - The name of the tag.
---
--- * 'tagValue' - The value of the tag.
-tag
-    :: Text -- ^ 'tagKey'
-    -> Text -- ^ 'tagValue'
-    -> Tag
-tag pKey_ pValue_ =
-    Tag'
-    { _tagKey = pKey_
-    , _tagValue = pValue_
-    }
-
--- | The name of the tag.
-tagKey :: Lens' Tag Text
-tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
-
--- | The value of the tag.
-tagValue :: Lens' Tag Text
-tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
-
-instance FromJSON Tag where
-        parseJSON
-          = withObject "Tag"
-              (\ x -> Tag' <$> (x .: "Key") <*> (x .: "Value"))
-
-instance Hashable Tag
-
-instance NFData Tag
-
-instance ToJSON Tag where
-        toJSON Tag'{..}
-          = object
-              (catMaybes
-                 [Just ("Key" .= _tagKey),
-                  Just ("Value" .= _tagValue)])
-
--- | An array of search criteria that targets instances using a @Key@ ;@Value@ combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call.
---
---
---
--- /See:/ 'target' smart constructor.
-data Target = Target'
-    { _tValues :: !(Maybe [Text])
-    , _tKey    :: !(Maybe Text)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Target' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tValues' - User-defined criteria that maps to @Key@ . For example, if you specified @tag:ServerRole@ , you could specify @value:WebServer@ to execute a command on instances that include Amazon EC2 tags of ServerRole;WebServer. For more information about how to send commands that target instances using @Key@ ;@Value@ parameters, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
---
--- * 'tKey' - User-defined criteria for sending commands that target instances that meet the criteria. @Key@ can be @tag:<Amazon EC2 tag>@ or @name:<Amazon EC2 instance ID>@ . For example, @tag:ServerRole@ or @name:0123456789012345@ . For more information about how to send commands that target instances using @Key@ ;@Value@ parameters, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
-target
-    :: Target
-target =
-    Target'
-    { _tValues = Nothing
-    , _tKey = Nothing
-    }
-
--- | User-defined criteria that maps to @Key@ . For example, if you specified @tag:ServerRole@ , you could specify @value:WebServer@ to execute a command on instances that include Amazon EC2 tags of ServerRole;WebServer. For more information about how to send commands that target instances using @Key@ ;@Value@ parameters, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
-tValues :: Lens' Target [Text]
-tValues = lens _tValues (\ s a -> s{_tValues = a}) . _Default . _Coerce;
-
--- | User-defined criteria for sending commands that target instances that meet the criteria. @Key@ can be @tag:<Amazon EC2 tag>@ or @name:<Amazon EC2 instance ID>@ . For example, @tag:ServerRole@ or @name:0123456789012345@ . For more information about how to send commands that target instances using @Key@ ;@Value@ parameters, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Linux) or <http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/run-command.html Executing a Command Using Amazon EC2 Run Command> (Windows).
-tKey :: Lens' Target (Maybe Text)
-tKey = lens _tKey (\ s a -> s{_tKey = a});
-
-instance FromJSON Target where
-        parseJSON
-          = withObject "Target"
-              (\ x ->
-                 Target' <$>
-                   (x .:? "Values" .!= mempty) <*> (x .:? "Key"))
-
-instance Hashable Target
-
-instance NFData Target
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.AWS.SSM.Types.Product where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.SSM.Types.Sum
+
+-- | An activation registers one or more on-premises servers or virtual machines (VMs) with AWS so that you can configure those servers or VMs using Run Command. A server or VM that has been registered with AWS is called a managed instance.
+--
+--
+--
+-- /See:/ 'activation' smart constructor.
+data Activation = Activation'
+  { _aExpired             :: !(Maybe Bool)
+  , _aDefaultInstanceName :: !(Maybe Text)
+  , _aActivationId        :: !(Maybe Text)
+  , _aCreatedDate         :: !(Maybe POSIX)
+  , _aRegistrationLimit   :: !(Maybe Nat)
+  , _aExpirationDate      :: !(Maybe POSIX)
+  , _aDescription         :: !(Maybe Text)
+  , _aRegistrationsCount  :: !(Maybe Nat)
+  , _aIAMRole             :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Activation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aExpired' - Whether or not the activation is expired.
+--
+-- * 'aDefaultInstanceName' - A name for the managed instance when it is created.
+--
+-- * 'aActivationId' - The ID created by Systems Manager when you submitted the activation.
+--
+-- * 'aCreatedDate' - The date the activation was created.
+--
+-- * 'aRegistrationLimit' - The maximum number of managed instances that can be registered using this activation.
+--
+-- * 'aExpirationDate' - The date when this activation can no longer be used to register managed instances.
+--
+-- * 'aDescription' - A user defined description of the activation.
+--
+-- * 'aRegistrationsCount' - The number of managed instances already registered with this activation.
+--
+-- * 'aIAMRole' - The Amazon Identity and Access Management (IAM) role to assign to the managed instance.
+activation
+    :: Activation
+activation =
+  Activation'
+  { _aExpired = Nothing
+  , _aDefaultInstanceName = Nothing
+  , _aActivationId = Nothing
+  , _aCreatedDate = Nothing
+  , _aRegistrationLimit = Nothing
+  , _aExpirationDate = Nothing
+  , _aDescription = Nothing
+  , _aRegistrationsCount = Nothing
+  , _aIAMRole = Nothing
+  }
+
+
+-- | Whether or not the activation is expired.
+aExpired :: Lens' Activation (Maybe Bool)
+aExpired = lens _aExpired (\ s a -> s{_aExpired = a});
+
+-- | A name for the managed instance when it is created.
+aDefaultInstanceName :: Lens' Activation (Maybe Text)
+aDefaultInstanceName = lens _aDefaultInstanceName (\ s a -> s{_aDefaultInstanceName = a});
+
+-- | The ID created by Systems Manager when you submitted the activation.
+aActivationId :: Lens' Activation (Maybe Text)
+aActivationId = lens _aActivationId (\ s a -> s{_aActivationId = a});
+
+-- | The date the activation was created.
+aCreatedDate :: Lens' Activation (Maybe UTCTime)
+aCreatedDate = lens _aCreatedDate (\ s a -> s{_aCreatedDate = a}) . mapping _Time;
+
+-- | The maximum number of managed instances that can be registered using this activation.
+aRegistrationLimit :: Lens' Activation (Maybe Natural)
+aRegistrationLimit = lens _aRegistrationLimit (\ s a -> s{_aRegistrationLimit = a}) . mapping _Nat;
+
+-- | The date when this activation can no longer be used to register managed instances.
+aExpirationDate :: Lens' Activation (Maybe UTCTime)
+aExpirationDate = lens _aExpirationDate (\ s a -> s{_aExpirationDate = a}) . mapping _Time;
+
+-- | A user defined description of the activation.
+aDescription :: Lens' Activation (Maybe Text)
+aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
+
+-- | The number of managed instances already registered with this activation.
+aRegistrationsCount :: Lens' Activation (Maybe Natural)
+aRegistrationsCount = lens _aRegistrationsCount (\ s a -> s{_aRegistrationsCount = a}) . mapping _Nat;
+
+-- | The Amazon Identity and Access Management (IAM) role to assign to the managed instance.
+aIAMRole :: Lens' Activation (Maybe Text)
+aIAMRole = lens _aIAMRole (\ s a -> s{_aIAMRole = a});
+
+instance FromJSON Activation where
+        parseJSON
+          = withObject "Activation"
+              (\ x ->
+                 Activation' <$>
+                   (x .:? "Expired") <*> (x .:? "DefaultInstanceName")
+                     <*> (x .:? "ActivationId")
+                     <*> (x .:? "CreatedDate")
+                     <*> (x .:? "RegistrationLimit")
+                     <*> (x .:? "ExpirationDate")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "RegistrationsCount")
+                     <*> (x .:? "IamRole"))
+
+instance Hashable Activation where
+
+instance NFData Activation where
+
+-- | Describes an association of a Systems Manager document and an instance.
+--
+--
+--
+-- /See:/ 'association' smart constructor.
+data Association = Association'
+  { _aAssociationId      :: !(Maybe Text)
+  , _aInstanceId         :: !(Maybe Text)
+  , _aOverview           :: !(Maybe AssociationOverview)
+  , _aLastExecutionDate  :: !(Maybe POSIX)
+  , _aScheduleExpression :: !(Maybe Text)
+  , _aName               :: !(Maybe Text)
+  , _aTargets            :: !(Maybe [Target])
+  , _aDocumentVersion    :: !(Maybe Text)
+  , _aAssociationVersion :: !(Maybe Text)
+  , _aAssociationName    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Association' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aAssociationId' - The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.
+--
+-- * 'aInstanceId' - The ID of the instance.
+--
+-- * 'aOverview' - Information about the association.
+--
+-- * 'aLastExecutionDate' - The date on which the association was last run.
+--
+-- * 'aScheduleExpression' - A cron expression that specifies a schedule when the association runs.
+--
+-- * 'aName' - The name of the Systems Manager document.
+--
+-- * 'aTargets' - The instances targeted by the request to create an association.
+--
+-- * 'aDocumentVersion' - The version of the document used in the association.
+--
+-- * 'aAssociationVersion' - The association version.
+--
+-- * 'aAssociationName' - The association name.
+association
+    :: Association
+association =
+  Association'
+  { _aAssociationId = Nothing
+  , _aInstanceId = Nothing
+  , _aOverview = Nothing
+  , _aLastExecutionDate = Nothing
+  , _aScheduleExpression = Nothing
+  , _aName = Nothing
+  , _aTargets = Nothing
+  , _aDocumentVersion = Nothing
+  , _aAssociationVersion = Nothing
+  , _aAssociationName = Nothing
+  }
+
+
+-- | The ID created by the system when you create an association. An association is a binding between a document and a set of targets with a schedule.
+aAssociationId :: Lens' Association (Maybe Text)
+aAssociationId = lens _aAssociationId (\ s a -> s{_aAssociationId = a});
+
+-- | The ID of the instance.
+aInstanceId :: Lens' Association (Maybe Text)
+aInstanceId = lens _aInstanceId (\ s a -> s{_aInstanceId = a});
+
+-- | Information about the association.
+aOverview :: Lens' Association (Maybe AssociationOverview)
+aOverview = lens _aOverview (\ s a -> s{_aOverview = a});
+
+-- | The date on which the association was last run.
+aLastExecutionDate :: Lens' Association (Maybe UTCTime)
+aLastExecutionDate = lens _aLastExecutionDate (\ s a -> s{_aLastExecutionDate = a}) . mapping _Time;
+
+-- | A cron expression that specifies a schedule when the association runs.
+aScheduleExpression :: Lens' Association (Maybe Text)
+aScheduleExpression = lens _aScheduleExpression (\ s a -> s{_aScheduleExpression = a});
+
+-- | The name of the Systems Manager document.
+aName :: Lens' Association (Maybe Text)
+aName = lens _aName (\ s a -> s{_aName = a});
+
+-- | The instances targeted by the request to create an association.
+aTargets :: Lens' Association [Target]
+aTargets = lens _aTargets (\ s a -> s{_aTargets = a}) . _Default . _Coerce;
+
+-- | The version of the document used in the association.
+aDocumentVersion :: Lens' Association (Maybe Text)
+aDocumentVersion = lens _aDocumentVersion (\ s a -> s{_aDocumentVersion = a});
+
+-- | The association version.
+aAssociationVersion :: Lens' Association (Maybe Text)
+aAssociationVersion = lens _aAssociationVersion (\ s a -> s{_aAssociationVersion = a});
+
+-- | The association name.
+aAssociationName :: Lens' Association (Maybe Text)
+aAssociationName = lens _aAssociationName (\ s a -> s{_aAssociationName = a});
+
+instance FromJSON Association where
+        parseJSON
+          = withObject "Association"
+              (\ x ->
+                 Association' <$>
+                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
+                     (x .:? "Overview")
+                     <*> (x .:? "LastExecutionDate")
+                     <*> (x .:? "ScheduleExpression")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AssociationVersion")
+                     <*> (x .:? "AssociationName"))
+
+instance Hashable Association where
+
+instance NFData Association where
+
+-- | Describes the parameters for a document.
+--
+--
+--
+-- /See:/ 'associationDescription' smart constructor.
+data AssociationDescription = AssociationDescription'
+  { _adAssociationId               :: !(Maybe Text)
+  , _adInstanceId                  :: !(Maybe Text)
+  , _adStatus                      :: !(Maybe AssociationStatus)
+  , _adLastSuccessfulExecutionDate :: !(Maybe POSIX)
+  , _adOverview                    :: !(Maybe AssociationOverview)
+  , _adLastUpdateAssociationDate   :: !(Maybe POSIX)
+  , _adDate                        :: !(Maybe POSIX)
+  , _adLastExecutionDate           :: !(Maybe POSIX)
+  , _adScheduleExpression          :: !(Maybe Text)
+  , _adName                        :: !(Maybe Text)
+  , _adOutputLocation              :: !(Maybe InstanceAssociationOutputLocation)
+  , _adTargets                     :: !(Maybe [Target])
+  , _adParameters                  :: !(Maybe (Map Text [Text]))
+  , _adDocumentVersion             :: !(Maybe Text)
+  , _adAssociationVersion          :: !(Maybe Text)
+  , _adAssociationName             :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AssociationDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adAssociationId' - The association ID.
+--
+-- * 'adInstanceId' - The ID of the instance.
+--
+-- * 'adStatus' - The association status.
+--
+-- * 'adLastSuccessfulExecutionDate' - The last date on which the association was successfully run.
+--
+-- * 'adOverview' - Information about the association.
+--
+-- * 'adLastUpdateAssociationDate' - The date when the association was last updated.
+--
+-- * 'adDate' - The date when the association was made.
+--
+-- * 'adLastExecutionDate' - The date on which the association was last run.
+--
+-- * 'adScheduleExpression' - A cron expression that specifies a schedule when the association runs.
+--
+-- * 'adName' - The name of the Systems Manager document.
+--
+-- * 'adOutputLocation' - An Amazon S3 bucket where you want to store the output details of the request.
+--
+-- * 'adTargets' - The instances targeted by the request.
+--
+-- * 'adParameters' - A description of the parameters for a document.
+--
+-- * 'adDocumentVersion' - The document version.
+--
+-- * 'adAssociationVersion' - The association version.
+--
+-- * 'adAssociationName' - The association name.
+associationDescription
+    :: AssociationDescription
+associationDescription =
+  AssociationDescription'
+  { _adAssociationId = Nothing
+  , _adInstanceId = Nothing
+  , _adStatus = Nothing
+  , _adLastSuccessfulExecutionDate = Nothing
+  , _adOverview = Nothing
+  , _adLastUpdateAssociationDate = Nothing
+  , _adDate = Nothing
+  , _adLastExecutionDate = Nothing
+  , _adScheduleExpression = Nothing
+  , _adName = Nothing
+  , _adOutputLocation = Nothing
+  , _adTargets = Nothing
+  , _adParameters = Nothing
+  , _adDocumentVersion = Nothing
+  , _adAssociationVersion = Nothing
+  , _adAssociationName = Nothing
+  }
+
+
+-- | The association ID.
+adAssociationId :: Lens' AssociationDescription (Maybe Text)
+adAssociationId = lens _adAssociationId (\ s a -> s{_adAssociationId = a});
+
+-- | The ID of the instance.
+adInstanceId :: Lens' AssociationDescription (Maybe Text)
+adInstanceId = lens _adInstanceId (\ s a -> s{_adInstanceId = a});
+
+-- | The association status.
+adStatus :: Lens' AssociationDescription (Maybe AssociationStatus)
+adStatus = lens _adStatus (\ s a -> s{_adStatus = a});
+
+-- | The last date on which the association was successfully run.
+adLastSuccessfulExecutionDate :: Lens' AssociationDescription (Maybe UTCTime)
+adLastSuccessfulExecutionDate = lens _adLastSuccessfulExecutionDate (\ s a -> s{_adLastSuccessfulExecutionDate = a}) . mapping _Time;
+
+-- | Information about the association.
+adOverview :: Lens' AssociationDescription (Maybe AssociationOverview)
+adOverview = lens _adOverview (\ s a -> s{_adOverview = a});
+
+-- | The date when the association was last updated.
+adLastUpdateAssociationDate :: Lens' AssociationDescription (Maybe UTCTime)
+adLastUpdateAssociationDate = lens _adLastUpdateAssociationDate (\ s a -> s{_adLastUpdateAssociationDate = a}) . mapping _Time;
+
+-- | The date when the association was made.
+adDate :: Lens' AssociationDescription (Maybe UTCTime)
+adDate = lens _adDate (\ s a -> s{_adDate = a}) . mapping _Time;
+
+-- | The date on which the association was last run.
+adLastExecutionDate :: Lens' AssociationDescription (Maybe UTCTime)
+adLastExecutionDate = lens _adLastExecutionDate (\ s a -> s{_adLastExecutionDate = a}) . mapping _Time;
+
+-- | A cron expression that specifies a schedule when the association runs.
+adScheduleExpression :: Lens' AssociationDescription (Maybe Text)
+adScheduleExpression = lens _adScheduleExpression (\ s a -> s{_adScheduleExpression = a});
+
+-- | The name of the Systems Manager document.
+adName :: Lens' AssociationDescription (Maybe Text)
+adName = lens _adName (\ s a -> s{_adName = a});
+
+-- | An Amazon S3 bucket where you want to store the output details of the request.
+adOutputLocation :: Lens' AssociationDescription (Maybe InstanceAssociationOutputLocation)
+adOutputLocation = lens _adOutputLocation (\ s a -> s{_adOutputLocation = a});
+
+-- | The instances targeted by the request.
+adTargets :: Lens' AssociationDescription [Target]
+adTargets = lens _adTargets (\ s a -> s{_adTargets = a}) . _Default . _Coerce;
+
+-- | A description of the parameters for a document.
+adParameters :: Lens' AssociationDescription (HashMap Text [Text])
+adParameters = lens _adParameters (\ s a -> s{_adParameters = a}) . _Default . _Map;
+
+-- | The document version.
+adDocumentVersion :: Lens' AssociationDescription (Maybe Text)
+adDocumentVersion = lens _adDocumentVersion (\ s a -> s{_adDocumentVersion = a});
+
+-- | The association version.
+adAssociationVersion :: Lens' AssociationDescription (Maybe Text)
+adAssociationVersion = lens _adAssociationVersion (\ s a -> s{_adAssociationVersion = a});
+
+-- | The association name.
+adAssociationName :: Lens' AssociationDescription (Maybe Text)
+adAssociationName = lens _adAssociationName (\ s a -> s{_adAssociationName = a});
+
+instance FromJSON AssociationDescription where
+        parseJSON
+          = withObject "AssociationDescription"
+              (\ x ->
+                 AssociationDescription' <$>
+                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
+                     (x .:? "Status")
+                     <*> (x .:? "LastSuccessfulExecutionDate")
+                     <*> (x .:? "Overview")
+                     <*> (x .:? "LastUpdateAssociationDate")
+                     <*> (x .:? "Date")
+                     <*> (x .:? "LastExecutionDate")
+                     <*> (x .:? "ScheduleExpression")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "OutputLocation")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AssociationVersion")
+                     <*> (x .:? "AssociationName"))
+
+instance Hashable AssociationDescription where
+
+instance NFData AssociationDescription where
+
+-- | Describes a filter.
+--
+--
+--
+-- /See:/ 'associationFilter' smart constructor.
+data AssociationFilter = AssociationFilter'
+  { _afKey   :: !AssociationFilterKey
+  , _afValue :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AssociationFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'afKey' - The name of the filter.
+--
+-- * 'afValue' - The filter value.
+associationFilter
+    :: AssociationFilterKey -- ^ 'afKey'
+    -> Text -- ^ 'afValue'
+    -> AssociationFilter
+associationFilter pKey_ pValue_ =
+  AssociationFilter' {_afKey = pKey_, _afValue = pValue_}
+
+
+-- | The name of the filter.
+afKey :: Lens' AssociationFilter AssociationFilterKey
+afKey = lens _afKey (\ s a -> s{_afKey = a});
+
+-- | The filter value.
+afValue :: Lens' AssociationFilter Text
+afValue = lens _afValue (\ s a -> s{_afValue = a});
+
+instance Hashable AssociationFilter where
+
+instance NFData AssociationFilter where
+
+instance ToJSON AssociationFilter where
+        toJSON AssociationFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("key" .= _afKey), Just ("value" .= _afValue)])
+
+-- | Information about the association.
+--
+--
+--
+-- /See:/ 'associationOverview' smart constructor.
+data AssociationOverview = AssociationOverview'
+  { _aoDetailedStatus                   :: !(Maybe Text)
+  , _aoStatus                           :: !(Maybe Text)
+  , _aoAssociationStatusAggregatedCount :: !(Maybe (Map Text Int))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AssociationOverview' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aoDetailedStatus' - A detailed status of the association.
+--
+-- * 'aoStatus' - The status of the association. Status can be: Pending, Success, or Failed.
+--
+-- * 'aoAssociationStatusAggregatedCount' - Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status.
+associationOverview
+    :: AssociationOverview
+associationOverview =
+  AssociationOverview'
+  { _aoDetailedStatus = Nothing
+  , _aoStatus = Nothing
+  , _aoAssociationStatusAggregatedCount = Nothing
+  }
+
+
+-- | A detailed status of the association.
+aoDetailedStatus :: Lens' AssociationOverview (Maybe Text)
+aoDetailedStatus = lens _aoDetailedStatus (\ s a -> s{_aoDetailedStatus = a});
+
+-- | The status of the association. Status can be: Pending, Success, or Failed.
+aoStatus :: Lens' AssociationOverview (Maybe Text)
+aoStatus = lens _aoStatus (\ s a -> s{_aoStatus = a});
+
+-- | Returns the number of targets for the association status. For example, if you created an association with two instances, and one of them was successful, this would return the count of instances by status.
+aoAssociationStatusAggregatedCount :: Lens' AssociationOverview (HashMap Text Int)
+aoAssociationStatusAggregatedCount = lens _aoAssociationStatusAggregatedCount (\ s a -> s{_aoAssociationStatusAggregatedCount = a}) . _Default . _Map;
+
+instance FromJSON AssociationOverview where
+        parseJSON
+          = withObject "AssociationOverview"
+              (\ x ->
+                 AssociationOverview' <$>
+                   (x .:? "DetailedStatus") <*> (x .:? "Status") <*>
+                     (x .:? "AssociationStatusAggregatedCount" .!=
+                        mempty))
+
+instance Hashable AssociationOverview where
+
+instance NFData AssociationOverview where
+
+-- | Describes an association status.
+--
+--
+--
+-- /See:/ 'associationStatus' smart constructor.
+data AssociationStatus = AssociationStatus'
+  { _asAdditionalInfo :: !(Maybe Text)
+  , _asDate           :: !POSIX
+  , _asName           :: !AssociationStatusName
+  , _asMessage        :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AssociationStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asAdditionalInfo' - A user-defined string.
+--
+-- * 'asDate' - The date when the status changed.
+--
+-- * 'asName' - The status.
+--
+-- * 'asMessage' - The reason for the status.
+associationStatus
+    :: UTCTime -- ^ 'asDate'
+    -> AssociationStatusName -- ^ 'asName'
+    -> Text -- ^ 'asMessage'
+    -> AssociationStatus
+associationStatus pDate_ pName_ pMessage_ =
+  AssociationStatus'
+  { _asAdditionalInfo = Nothing
+  , _asDate = _Time # pDate_
+  , _asName = pName_
+  , _asMessage = pMessage_
+  }
+
+
+-- | A user-defined string.
+asAdditionalInfo :: Lens' AssociationStatus (Maybe Text)
+asAdditionalInfo = lens _asAdditionalInfo (\ s a -> s{_asAdditionalInfo = a});
+
+-- | The date when the status changed.
+asDate :: Lens' AssociationStatus UTCTime
+asDate = lens _asDate (\ s a -> s{_asDate = a}) . _Time;
+
+-- | The status.
+asName :: Lens' AssociationStatus AssociationStatusName
+asName = lens _asName (\ s a -> s{_asName = a});
+
+-- | The reason for the status.
+asMessage :: Lens' AssociationStatus Text
+asMessage = lens _asMessage (\ s a -> s{_asMessage = a});
+
+instance FromJSON AssociationStatus where
+        parseJSON
+          = withObject "AssociationStatus"
+              (\ x ->
+                 AssociationStatus' <$>
+                   (x .:? "AdditionalInfo") <*> (x .: "Date") <*>
+                     (x .: "Name")
+                     <*> (x .: "Message"))
+
+instance Hashable AssociationStatus where
+
+instance NFData AssociationStatus where
+
+instance ToJSON AssociationStatus where
+        toJSON AssociationStatus'{..}
+          = object
+              (catMaybes
+                 [("AdditionalInfo" .=) <$> _asAdditionalInfo,
+                  Just ("Date" .= _asDate), Just ("Name" .= _asName),
+                  Just ("Message" .= _asMessage)])
+
+-- | Information about the association version.
+--
+--
+--
+-- /See:/ 'associationVersionInfo' smart constructor.
+data AssociationVersionInfo = AssociationVersionInfo'
+  { _aviAssociationId      :: !(Maybe Text)
+  , _aviCreatedDate        :: !(Maybe POSIX)
+  , _aviScheduleExpression :: !(Maybe Text)
+  , _aviName               :: !(Maybe Text)
+  , _aviOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
+  , _aviTargets            :: !(Maybe [Target])
+  , _aviParameters         :: !(Maybe (Map Text [Text]))
+  , _aviDocumentVersion    :: !(Maybe Text)
+  , _aviAssociationVersion :: !(Maybe Text)
+  , _aviAssociationName    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AssociationVersionInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aviAssociationId' - The ID created by the system when the association was created.
+--
+-- * 'aviCreatedDate' - The date the association version was created.
+--
+-- * 'aviScheduleExpression' - The cron or rate schedule specified for the association when the association version was created.
+--
+-- * 'aviName' - The name specified when the association was created.
+--
+-- * 'aviOutputLocation' - The location in Amazon S3 specified for the association when the association version was created.
+--
+-- * 'aviTargets' - The targets specified for the association when the association version was created.
+--
+-- * 'aviParameters' - Parameters specified when the association version was created.
+--
+-- * 'aviDocumentVersion' - The version of a Systems Manager document used when the association version was created.
+--
+-- * 'aviAssociationVersion' - The association version.
+--
+-- * 'aviAssociationName' - The name specified for the association version when the association version was created.
+associationVersionInfo
+    :: AssociationVersionInfo
+associationVersionInfo =
+  AssociationVersionInfo'
+  { _aviAssociationId = Nothing
+  , _aviCreatedDate = Nothing
+  , _aviScheduleExpression = Nothing
+  , _aviName = Nothing
+  , _aviOutputLocation = Nothing
+  , _aviTargets = Nothing
+  , _aviParameters = Nothing
+  , _aviDocumentVersion = Nothing
+  , _aviAssociationVersion = Nothing
+  , _aviAssociationName = Nothing
+  }
+
+
+-- | The ID created by the system when the association was created.
+aviAssociationId :: Lens' AssociationVersionInfo (Maybe Text)
+aviAssociationId = lens _aviAssociationId (\ s a -> s{_aviAssociationId = a});
+
+-- | The date the association version was created.
+aviCreatedDate :: Lens' AssociationVersionInfo (Maybe UTCTime)
+aviCreatedDate = lens _aviCreatedDate (\ s a -> s{_aviCreatedDate = a}) . mapping _Time;
+
+-- | The cron or rate schedule specified for the association when the association version was created.
+aviScheduleExpression :: Lens' AssociationVersionInfo (Maybe Text)
+aviScheduleExpression = lens _aviScheduleExpression (\ s a -> s{_aviScheduleExpression = a});
+
+-- | The name specified when the association was created.
+aviName :: Lens' AssociationVersionInfo (Maybe Text)
+aviName = lens _aviName (\ s a -> s{_aviName = a});
+
+-- | The location in Amazon S3 specified for the association when the association version was created.
+aviOutputLocation :: Lens' AssociationVersionInfo (Maybe InstanceAssociationOutputLocation)
+aviOutputLocation = lens _aviOutputLocation (\ s a -> s{_aviOutputLocation = a});
+
+-- | The targets specified for the association when the association version was created.
+aviTargets :: Lens' AssociationVersionInfo [Target]
+aviTargets = lens _aviTargets (\ s a -> s{_aviTargets = a}) . _Default . _Coerce;
+
+-- | Parameters specified when the association version was created.
+aviParameters :: Lens' AssociationVersionInfo (HashMap Text [Text])
+aviParameters = lens _aviParameters (\ s a -> s{_aviParameters = a}) . _Default . _Map;
+
+-- | The version of a Systems Manager document used when the association version was created.
+aviDocumentVersion :: Lens' AssociationVersionInfo (Maybe Text)
+aviDocumentVersion = lens _aviDocumentVersion (\ s a -> s{_aviDocumentVersion = a});
+
+-- | The association version.
+aviAssociationVersion :: Lens' AssociationVersionInfo (Maybe Text)
+aviAssociationVersion = lens _aviAssociationVersion (\ s a -> s{_aviAssociationVersion = a});
+
+-- | The name specified for the association version when the association version was created.
+aviAssociationName :: Lens' AssociationVersionInfo (Maybe Text)
+aviAssociationName = lens _aviAssociationName (\ s a -> s{_aviAssociationName = a});
+
+instance FromJSON AssociationVersionInfo where
+        parseJSON
+          = withObject "AssociationVersionInfo"
+              (\ x ->
+                 AssociationVersionInfo' <$>
+                   (x .:? "AssociationId") <*> (x .:? "CreatedDate") <*>
+                     (x .:? "ScheduleExpression")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "OutputLocation")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AssociationVersion")
+                     <*> (x .:? "AssociationName"))
+
+instance Hashable AssociationVersionInfo where
+
+instance NFData AssociationVersionInfo where
+
+-- | Detailed information about the current state of an individual Automation execution.
+--
+--
+--
+-- /See:/ 'automationExecution' smart constructor.
+data AutomationExecution = AutomationExecution'
+  { _aeDocumentName              :: !(Maybe Text)
+  , _aeExecutionEndTime          :: !(Maybe POSIX)
+  , _aeFailureMessage            :: !(Maybe Text)
+  , _aeAutomationExecutionStatus :: !(Maybe AutomationExecutionStatus)
+  , _aeOutputs                   :: !(Maybe (Map Text [Text]))
+  , _aeExecutionStartTime        :: !(Maybe POSIX)
+  , _aeParameters                :: !(Maybe (Map Text [Text]))
+  , _aeDocumentVersion           :: !(Maybe Text)
+  , _aeAutomationExecutionId     :: !(Maybe Text)
+  , _aeStepExecutions            :: !(Maybe [StepExecution])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutomationExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aeDocumentName' - The name of the Automation document used during the execution.
+--
+-- * 'aeExecutionEndTime' - The time the execution finished.
+--
+-- * 'aeFailureMessage' - A message describing why an execution has failed, if the status is set to Failed.
+--
+-- * 'aeAutomationExecutionStatus' - The execution status of the Automation.
+--
+-- * 'aeOutputs' - The list of execution outputs as defined in the automation document.
+--
+-- * 'aeExecutionStartTime' - The time the execution started.
+--
+-- * 'aeParameters' - The key-value map of execution parameters, which were supplied when calling StartAutomationExecution.
+--
+-- * 'aeDocumentVersion' - The version of the document to use during execution.
+--
+-- * 'aeAutomationExecutionId' - The execution ID.
+--
+-- * 'aeStepExecutions' - A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are executed in order.
+automationExecution
+    :: AutomationExecution
+automationExecution =
+  AutomationExecution'
+  { _aeDocumentName = Nothing
+  , _aeExecutionEndTime = Nothing
+  , _aeFailureMessage = Nothing
+  , _aeAutomationExecutionStatus = Nothing
+  , _aeOutputs = Nothing
+  , _aeExecutionStartTime = Nothing
+  , _aeParameters = Nothing
+  , _aeDocumentVersion = Nothing
+  , _aeAutomationExecutionId = Nothing
+  , _aeStepExecutions = Nothing
+  }
+
+
+-- | The name of the Automation document used during the execution.
+aeDocumentName :: Lens' AutomationExecution (Maybe Text)
+aeDocumentName = lens _aeDocumentName (\ s a -> s{_aeDocumentName = a});
+
+-- | The time the execution finished.
+aeExecutionEndTime :: Lens' AutomationExecution (Maybe UTCTime)
+aeExecutionEndTime = lens _aeExecutionEndTime (\ s a -> s{_aeExecutionEndTime = a}) . mapping _Time;
+
+-- | A message describing why an execution has failed, if the status is set to Failed.
+aeFailureMessage :: Lens' AutomationExecution (Maybe Text)
+aeFailureMessage = lens _aeFailureMessage (\ s a -> s{_aeFailureMessage = a});
+
+-- | The execution status of the Automation.
+aeAutomationExecutionStatus :: Lens' AutomationExecution (Maybe AutomationExecutionStatus)
+aeAutomationExecutionStatus = lens _aeAutomationExecutionStatus (\ s a -> s{_aeAutomationExecutionStatus = a});
+
+-- | The list of execution outputs as defined in the automation document.
+aeOutputs :: Lens' AutomationExecution (HashMap Text [Text])
+aeOutputs = lens _aeOutputs (\ s a -> s{_aeOutputs = a}) . _Default . _Map;
+
+-- | The time the execution started.
+aeExecutionStartTime :: Lens' AutomationExecution (Maybe UTCTime)
+aeExecutionStartTime = lens _aeExecutionStartTime (\ s a -> s{_aeExecutionStartTime = a}) . mapping _Time;
+
+-- | The key-value map of execution parameters, which were supplied when calling StartAutomationExecution.
+aeParameters :: Lens' AutomationExecution (HashMap Text [Text])
+aeParameters = lens _aeParameters (\ s a -> s{_aeParameters = a}) . _Default . _Map;
+
+-- | The version of the document to use during execution.
+aeDocumentVersion :: Lens' AutomationExecution (Maybe Text)
+aeDocumentVersion = lens _aeDocumentVersion (\ s a -> s{_aeDocumentVersion = a});
+
+-- | The execution ID.
+aeAutomationExecutionId :: Lens' AutomationExecution (Maybe Text)
+aeAutomationExecutionId = lens _aeAutomationExecutionId (\ s a -> s{_aeAutomationExecutionId = a});
+
+-- | A list of details about the current state of all steps that comprise an execution. An Automation document contains a list of steps that are executed in order.
+aeStepExecutions :: Lens' AutomationExecution [StepExecution]
+aeStepExecutions = lens _aeStepExecutions (\ s a -> s{_aeStepExecutions = a}) . _Default . _Coerce;
+
+instance FromJSON AutomationExecution where
+        parseJSON
+          = withObject "AutomationExecution"
+              (\ x ->
+                 AutomationExecution' <$>
+                   (x .:? "DocumentName") <*> (x .:? "ExecutionEndTime")
+                     <*> (x .:? "FailureMessage")
+                     <*> (x .:? "AutomationExecutionStatus")
+                     <*> (x .:? "Outputs" .!= mempty)
+                     <*> (x .:? "ExecutionStartTime")
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AutomationExecutionId")
+                     <*> (x .:? "StepExecutions" .!= mempty))
+
+instance Hashable AutomationExecution where
+
+instance NFData AutomationExecution where
+
+-- | A filter used to match specific automation executions. This is used to limit the scope of Automation execution information returned.
+--
+--
+--
+-- /See:/ 'automationExecutionFilter' smart constructor.
+data AutomationExecutionFilter = AutomationExecutionFilter'
+  { _aefKey    :: !AutomationExecutionFilterKey
+  , _aefValues :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutomationExecutionFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aefKey' - The aspect of the Automation execution information that should be limited.
+--
+-- * 'aefValues' - The values used to limit the execution information associated with the filter's key.
+automationExecutionFilter
+    :: AutomationExecutionFilterKey -- ^ 'aefKey'
+    -> NonEmpty Text -- ^ 'aefValues'
+    -> AutomationExecutionFilter
+automationExecutionFilter pKey_ pValues_ =
+  AutomationExecutionFilter' {_aefKey = pKey_, _aefValues = _List1 # pValues_}
+
+
+-- | The aspect of the Automation execution information that should be limited.
+aefKey :: Lens' AutomationExecutionFilter AutomationExecutionFilterKey
+aefKey = lens _aefKey (\ s a -> s{_aefKey = a});
+
+-- | The values used to limit the execution information associated with the filter's key.
+aefValues :: Lens' AutomationExecutionFilter (NonEmpty Text)
+aefValues = lens _aefValues (\ s a -> s{_aefValues = a}) . _List1;
+
+instance Hashable AutomationExecutionFilter where
+
+instance NFData AutomationExecutionFilter where
+
+instance ToJSON AutomationExecutionFilter where
+        toJSON AutomationExecutionFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _aefKey),
+                  Just ("Values" .= _aefValues)])
+
+-- | Details about a specific Automation execution.
+--
+--
+--
+-- /See:/ 'automationExecutionMetadata' smart constructor.
+data AutomationExecutionMetadata = AutomationExecutionMetadata'
+  { _aemLogFile                   :: !(Maybe Text)
+  , _aemExecutedBy                :: !(Maybe Text)
+  , _aemDocumentName              :: !(Maybe Text)
+  , _aemExecutionEndTime          :: !(Maybe POSIX)
+  , _aemAutomationExecutionStatus :: !(Maybe AutomationExecutionStatus)
+  , _aemOutputs                   :: !(Maybe (Map Text [Text]))
+  , _aemExecutionStartTime        :: !(Maybe POSIX)
+  , _aemDocumentVersion           :: !(Maybe Text)
+  , _aemAutomationExecutionId     :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AutomationExecutionMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aemLogFile' - An Amazon S3 bucket where execution information is stored.
+--
+-- * 'aemExecutedBy' - The IAM role ARN of the user who executed the Automation.
+--
+-- * 'aemDocumentName' - The name of the Automation document used during execution.
+--
+-- * 'aemExecutionEndTime' - The time the execution finished. This is not populated if the execution is still in progress.
+--
+-- * 'aemAutomationExecutionStatus' - The status of the execution. Valid values include: Running, Succeeded, Failed, Timed out, or Cancelled.
+--
+-- * 'aemOutputs' - The list of execution outputs as defined in the Automation document.
+--
+-- * 'aemExecutionStartTime' - The time the execution started.>
+--
+-- * 'aemDocumentVersion' - The document version used during the execution.
+--
+-- * 'aemAutomationExecutionId' - The execution ID.
+automationExecutionMetadata
+    :: AutomationExecutionMetadata
+automationExecutionMetadata =
+  AutomationExecutionMetadata'
+  { _aemLogFile = Nothing
+  , _aemExecutedBy = Nothing
+  , _aemDocumentName = Nothing
+  , _aemExecutionEndTime = Nothing
+  , _aemAutomationExecutionStatus = Nothing
+  , _aemOutputs = Nothing
+  , _aemExecutionStartTime = Nothing
+  , _aemDocumentVersion = Nothing
+  , _aemAutomationExecutionId = Nothing
+  }
+
+
+-- | An Amazon S3 bucket where execution information is stored.
+aemLogFile :: Lens' AutomationExecutionMetadata (Maybe Text)
+aemLogFile = lens _aemLogFile (\ s a -> s{_aemLogFile = a});
+
+-- | The IAM role ARN of the user who executed the Automation.
+aemExecutedBy :: Lens' AutomationExecutionMetadata (Maybe Text)
+aemExecutedBy = lens _aemExecutedBy (\ s a -> s{_aemExecutedBy = a});
+
+-- | The name of the Automation document used during execution.
+aemDocumentName :: Lens' AutomationExecutionMetadata (Maybe Text)
+aemDocumentName = lens _aemDocumentName (\ s a -> s{_aemDocumentName = a});
+
+-- | The time the execution finished. This is not populated if the execution is still in progress.
+aemExecutionEndTime :: Lens' AutomationExecutionMetadata (Maybe UTCTime)
+aemExecutionEndTime = lens _aemExecutionEndTime (\ s a -> s{_aemExecutionEndTime = a}) . mapping _Time;
+
+-- | The status of the execution. Valid values include: Running, Succeeded, Failed, Timed out, or Cancelled.
+aemAutomationExecutionStatus :: Lens' AutomationExecutionMetadata (Maybe AutomationExecutionStatus)
+aemAutomationExecutionStatus = lens _aemAutomationExecutionStatus (\ s a -> s{_aemAutomationExecutionStatus = a});
+
+-- | The list of execution outputs as defined in the Automation document.
+aemOutputs :: Lens' AutomationExecutionMetadata (HashMap Text [Text])
+aemOutputs = lens _aemOutputs (\ s a -> s{_aemOutputs = a}) . _Default . _Map;
+
+-- | The time the execution started.>
+aemExecutionStartTime :: Lens' AutomationExecutionMetadata (Maybe UTCTime)
+aemExecutionStartTime = lens _aemExecutionStartTime (\ s a -> s{_aemExecutionStartTime = a}) . mapping _Time;
+
+-- | The document version used during the execution.
+aemDocumentVersion :: Lens' AutomationExecutionMetadata (Maybe Text)
+aemDocumentVersion = lens _aemDocumentVersion (\ s a -> s{_aemDocumentVersion = a});
+
+-- | The execution ID.
+aemAutomationExecutionId :: Lens' AutomationExecutionMetadata (Maybe Text)
+aemAutomationExecutionId = lens _aemAutomationExecutionId (\ s a -> s{_aemAutomationExecutionId = a});
+
+instance FromJSON AutomationExecutionMetadata where
+        parseJSON
+          = withObject "AutomationExecutionMetadata"
+              (\ x ->
+                 AutomationExecutionMetadata' <$>
+                   (x .:? "LogFile") <*> (x .:? "ExecutedBy") <*>
+                     (x .:? "DocumentName")
+                     <*> (x .:? "ExecutionEndTime")
+                     <*> (x .:? "AutomationExecutionStatus")
+                     <*> (x .:? "Outputs" .!= mempty)
+                     <*> (x .:? "ExecutionStartTime")
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AutomationExecutionId"))
+
+instance Hashable AutomationExecutionMetadata where
+
+instance NFData AutomationExecutionMetadata where
+
+-- | Describes a command request.
+--
+--
+--
+-- /See:/ 'command' smart constructor.
+data Command = Command'
+  { _cStatus             :: !(Maybe CommandStatus)
+  , _cExpiresAfter       :: !(Maybe POSIX)
+  , _cNotificationConfig :: !(Maybe NotificationConfig)
+  , _cTargetCount        :: !(Maybe Int)
+  , _cOutputS3KeyPrefix  :: !(Maybe Text)
+  , _cDocumentName       :: !(Maybe Text)
+  , _cErrorCount         :: !(Maybe Int)
+  , _cStatusDetails      :: !(Maybe Text)
+  , _cMaxErrors          :: !(Maybe Text)
+  , _cInstanceIds        :: !(Maybe [Text])
+  , _cOutputS3Region     :: !(Maybe Text)
+  , _cTargets            :: !(Maybe [Target])
+  , _cCommandId          :: !(Maybe Text)
+  , _cParameters         :: !(Maybe (Map Text [Text]))
+  , _cComment            :: !(Maybe Text)
+  , _cCompletedCount     :: !(Maybe Int)
+  , _cOutputS3BucketName :: !(Maybe Text)
+  , _cMaxConcurrency     :: !(Maybe Text)
+  , _cRequestedDateTime  :: !(Maybe POSIX)
+  , _cServiceRole        :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Command' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cStatus' - The status of the command.
+--
+-- * 'cExpiresAfter' - If this time is reached and the command has not already started executing, it will not execute. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API.
+--
+-- * 'cNotificationConfig' - Configurations for sending notifications about command status changes.
+--
+-- * 'cTargetCount' - The number of targets for the command.
+--
+-- * 'cOutputS3KeyPrefix' - The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command.
+--
+-- * 'cDocumentName' - The name of the document requested for execution.
+--
+-- * 'cErrorCount' - The number of targets for which the status is Failed or Execution Timed Out.
+--
+-- * 'cStatusDetails' - A detailed status of the command execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to any instances.     * In Progress: The command has been sent to at least one instance but has not reached a final state on all instances.     * Success: The command successfully executed on all invocations. This is a terminal state.     * Delivery Timed Out: The value of MaxErrors or more command invocations shows a status of Delivery Timed Out. This is a terminal state.     * Execution Timed Out: The value of MaxErrors or more command invocations shows a status of Execution Timed Out. This is a terminal state.     * Failed: The value of MaxErrors or more command invocations shows a status of Failed. This is a terminal state.     * Incomplete: The command was attempted on all instances and one or more invocations does not have a value of Success but not enough invocations failed for the status to be Failed. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Rate Exceeded: The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before executing it on any instance. This is a terminal state.
+--
+-- * 'cMaxErrors' - The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 50. For more information about how to use MaxErrors, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html Executing a Command Using Systems Manager Run Command> .
+--
+-- * 'cInstanceIds' - The instance IDs against which this command was requested.
+--
+-- * 'cOutputS3Region' - (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+--
+-- * 'cTargets' - An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call.
+--
+-- * 'cCommandId' - A unique identifier for this command.
+--
+-- * 'cParameters' - The parameter values to be inserted in the document when executing the command.
+--
+-- * 'cComment' - User-specified information about the command, such as a brief description of what the command should do.
+--
+-- * 'cCompletedCount' - The number of targets for which the command invocation reached a terminal state. Terminal states include the following: Success, Failed, Execution Timed Out, Delivery Timed Out, Canceled, Terminated, or Undeliverable.
+--
+-- * 'cOutputS3BucketName' - The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command.
+--
+-- * 'cMaxConcurrency' - The maximum number of instances that are allowed to execute the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html Executing a Command Using Systems Manager Run Command> .
+--
+-- * 'cRequestedDateTime' - The date and time the command was requested.
+--
+-- * 'cServiceRole' - The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes.
+command
+    :: Command
+command =
+  Command'
+  { _cStatus = Nothing
+  , _cExpiresAfter = Nothing
+  , _cNotificationConfig = Nothing
+  , _cTargetCount = Nothing
+  , _cOutputS3KeyPrefix = Nothing
+  , _cDocumentName = Nothing
+  , _cErrorCount = Nothing
+  , _cStatusDetails = Nothing
+  , _cMaxErrors = Nothing
+  , _cInstanceIds = Nothing
+  , _cOutputS3Region = Nothing
+  , _cTargets = Nothing
+  , _cCommandId = Nothing
+  , _cParameters = Nothing
+  , _cComment = Nothing
+  , _cCompletedCount = Nothing
+  , _cOutputS3BucketName = Nothing
+  , _cMaxConcurrency = Nothing
+  , _cRequestedDateTime = Nothing
+  , _cServiceRole = Nothing
+  }
+
+
+-- | The status of the command.
+cStatus :: Lens' Command (Maybe CommandStatus)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a});
+
+-- | If this time is reached and the command has not already started executing, it will not execute. Calculated based on the ExpiresAfter user input provided as part of the SendCommand API.
+cExpiresAfter :: Lens' Command (Maybe UTCTime)
+cExpiresAfter = lens _cExpiresAfter (\ s a -> s{_cExpiresAfter = a}) . mapping _Time;
+
+-- | Configurations for sending notifications about command status changes.
+cNotificationConfig :: Lens' Command (Maybe NotificationConfig)
+cNotificationConfig = lens _cNotificationConfig (\ s a -> s{_cNotificationConfig = a});
+
+-- | The number of targets for the command.
+cTargetCount :: Lens' Command (Maybe Int)
+cTargetCount = lens _cTargetCount (\ s a -> s{_cTargetCount = a});
+
+-- | The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command.
+cOutputS3KeyPrefix :: Lens' Command (Maybe Text)
+cOutputS3KeyPrefix = lens _cOutputS3KeyPrefix (\ s a -> s{_cOutputS3KeyPrefix = a});
+
+-- | The name of the document requested for execution.
+cDocumentName :: Lens' Command (Maybe Text)
+cDocumentName = lens _cDocumentName (\ s a -> s{_cDocumentName = a});
+
+-- | The number of targets for which the status is Failed or Execution Timed Out.
+cErrorCount :: Lens' Command (Maybe Int)
+cErrorCount = lens _cErrorCount (\ s a -> s{_cErrorCount = a});
+
+-- | A detailed status of the command execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to any instances.     * In Progress: The command has been sent to at least one instance but has not reached a final state on all instances.     * Success: The command successfully executed on all invocations. This is a terminal state.     * Delivery Timed Out: The value of MaxErrors or more command invocations shows a status of Delivery Timed Out. This is a terminal state.     * Execution Timed Out: The value of MaxErrors or more command invocations shows a status of Execution Timed Out. This is a terminal state.     * Failed: The value of MaxErrors or more command invocations shows a status of Failed. This is a terminal state.     * Incomplete: The command was attempted on all instances and one or more invocations does not have a value of Success but not enough invocations failed for the status to be Failed. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Rate Exceeded: The number of instances targeted by the command exceeded the account limit for pending invocations. The system has canceled the command before executing it on any instance. This is a terminal state.
+cStatusDetails :: Lens' Command (Maybe Text)
+cStatusDetails = lens _cStatusDetails (\ s a -> s{_cStatusDetails = a});
+
+-- | The maximum number of errors allowed before the system stops sending the command to additional targets. You can specify a number of errors, such as 10, or a percentage or errors, such as 10%. The default value is 50. For more information about how to use MaxErrors, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html Executing a Command Using Systems Manager Run Command> .
+cMaxErrors :: Lens' Command (Maybe Text)
+cMaxErrors = lens _cMaxErrors (\ s a -> s{_cMaxErrors = a});
+
+-- | The instance IDs against which this command was requested.
+cInstanceIds :: Lens' Command [Text]
+cInstanceIds = lens _cInstanceIds (\ s a -> s{_cInstanceIds = a}) . _Default . _Coerce;
+
+-- | (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+cOutputS3Region :: Lens' Command (Maybe Text)
+cOutputS3Region = lens _cOutputS3Region (\ s a -> s{_cOutputS3Region = a});
+
+-- | An array of search criteria that targets instances using a Key,Value combination that you specify. Targets is required if you don't provide one or more instance IDs in the call.
+cTargets :: Lens' Command [Target]
+cTargets = lens _cTargets (\ s a -> s{_cTargets = a}) . _Default . _Coerce;
+
+-- | A unique identifier for this command.
+cCommandId :: Lens' Command (Maybe Text)
+cCommandId = lens _cCommandId (\ s a -> s{_cCommandId = a});
+
+-- | The parameter values to be inserted in the document when executing the command.
+cParameters :: Lens' Command (HashMap Text [Text])
+cParameters = lens _cParameters (\ s a -> s{_cParameters = a}) . _Default . _Map;
+
+-- | User-specified information about the command, such as a brief description of what the command should do.
+cComment :: Lens' Command (Maybe Text)
+cComment = lens _cComment (\ s a -> s{_cComment = a});
+
+-- | The number of targets for which the command invocation reached a terminal state. Terminal states include the following: Success, Failed, Execution Timed Out, Delivery Timed Out, Canceled, Terminated, or Undeliverable.
+cCompletedCount :: Lens' Command (Maybe Int)
+cCompletedCount = lens _cCompletedCount (\ s a -> s{_cCompletedCount = a});
+
+-- | The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command.
+cOutputS3BucketName :: Lens' Command (Maybe Text)
+cOutputS3BucketName = lens _cOutputS3BucketName (\ s a -> s{_cOutputS3BucketName = a});
+
+-- | The maximum number of instances that are allowed to execute the command at the same time. You can specify a number of instances, such as 10, or a percentage of instances, such as 10%. The default value is 50. For more information about how to use MaxConcurrency, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html Executing a Command Using Systems Manager Run Command> .
+cMaxConcurrency :: Lens' Command (Maybe Text)
+cMaxConcurrency = lens _cMaxConcurrency (\ s a -> s{_cMaxConcurrency = a});
+
+-- | The date and time the command was requested.
+cRequestedDateTime :: Lens' Command (Maybe UTCTime)
+cRequestedDateTime = lens _cRequestedDateTime (\ s a -> s{_cRequestedDateTime = a}) . mapping _Time;
+
+-- | The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes.
+cServiceRole :: Lens' Command (Maybe Text)
+cServiceRole = lens _cServiceRole (\ s a -> s{_cServiceRole = a});
+
+instance FromJSON Command where
+        parseJSON
+          = withObject "Command"
+              (\ x ->
+                 Command' <$>
+                   (x .:? "Status") <*> (x .:? "ExpiresAfter") <*>
+                     (x .:? "NotificationConfig")
+                     <*> (x .:? "TargetCount")
+                     <*> (x .:? "OutputS3KeyPrefix")
+                     <*> (x .:? "DocumentName")
+                     <*> (x .:? "ErrorCount")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "MaxErrors")
+                     <*> (x .:? "InstanceIds" .!= mempty)
+                     <*> (x .:? "OutputS3Region")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "CommandId")
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "Comment")
+                     <*> (x .:? "CompletedCount")
+                     <*> (x .:? "OutputS3BucketName")
+                     <*> (x .:? "MaxConcurrency")
+                     <*> (x .:? "RequestedDateTime")
+                     <*> (x .:? "ServiceRole"))
+
+instance Hashable Command where
+
+instance NFData Command where
+
+-- | Describes a command filter.
+--
+--
+--
+-- /See:/ 'commandFilter' smart constructor.
+data CommandFilter = CommandFilter'
+  { _cfKey   :: !CommandFilterKey
+  , _cfValue :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommandFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cfKey' - The name of the filter.
+--
+-- * 'cfValue' - The filter value.
+commandFilter
+    :: CommandFilterKey -- ^ 'cfKey'
+    -> Text -- ^ 'cfValue'
+    -> CommandFilter
+commandFilter pKey_ pValue_ =
+  CommandFilter' {_cfKey = pKey_, _cfValue = pValue_}
+
+
+-- | The name of the filter.
+cfKey :: Lens' CommandFilter CommandFilterKey
+cfKey = lens _cfKey (\ s a -> s{_cfKey = a});
+
+-- | The filter value.
+cfValue :: Lens' CommandFilter Text
+cfValue = lens _cfValue (\ s a -> s{_cfValue = a});
+
+instance Hashable CommandFilter where
+
+instance NFData CommandFilter where
+
+instance ToJSON CommandFilter where
+        toJSON CommandFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("key" .= _cfKey), Just ("value" .= _cfValue)])
+
+-- | An invocation is copy of a command sent to a specific instance. A command can apply to one or more instances. A command invocation applies to one instance. For example, if a user executes SendCommand against three instances, then a command invocation is created for each requested instance ID. A command invocation returns status and detail information about a command you executed.
+--
+--
+--
+-- /See:/ 'commandInvocation' smart constructor.
+data CommandInvocation = CommandInvocation'
+  { _comInstanceId         :: !(Maybe Text)
+  , _comStatus             :: !(Maybe CommandInvocationStatus)
+  , _comNotificationConfig :: !(Maybe NotificationConfig)
+  , _comCommandPlugins     :: !(Maybe [CommandPlugin])
+  , _comDocumentName       :: !(Maybe Text)
+  , _comStandardErrorURL   :: !(Maybe Text)
+  , _comStatusDetails      :: !(Maybe Text)
+  , _comStandardOutputURL  :: !(Maybe Text)
+  , _comCommandId          :: !(Maybe Text)
+  , _comComment            :: !(Maybe Text)
+  , _comTraceOutput        :: !(Maybe Text)
+  , _comInstanceName       :: !(Maybe Text)
+  , _comRequestedDateTime  :: !(Maybe POSIX)
+  , _comServiceRole        :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommandInvocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'comInstanceId' - The instance ID in which this invocation was requested.
+--
+-- * 'comStatus' - Whether or not the invocation succeeded, failed, or is pending.
+--
+-- * 'comNotificationConfig' - Configurations for sending notifications about command status changes on a per instance basis.
+--
+-- * 'comCommandPlugins' - Undocumented member.
+--
+-- * 'comDocumentName' - The document name that was requested for execution.
+--
+-- * 'comStandardErrorURL' - The URL to the plugin's StdErr file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardErrorUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
+--
+-- * 'comStatusDetails' - A detailed status of the command execution for each invocation (each instance targeted by the command). StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Success: The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
+--
+-- * 'comStandardOutputURL' - The URL to the plugin's StdOut file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardOutputUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
+--
+-- * 'comCommandId' - The command against which this invocation was requested.
+--
+-- * 'comComment' - User-specified information about the command, such as a brief description of what the command should do.
+--
+-- * 'comTraceOutput' - Gets the trace output sent by the agent.
+--
+-- * 'comInstanceName' - The name of the invocation target. For Amazon EC2 instances this is the value for the aws:Name tag. For on-premises instances, this is the name of the instance.
+--
+-- * 'comRequestedDateTime' - The time and date the request was sent to this instance.
+--
+-- * 'comServiceRole' - The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis.
+commandInvocation
+    :: CommandInvocation
+commandInvocation =
+  CommandInvocation'
+  { _comInstanceId = Nothing
+  , _comStatus = Nothing
+  , _comNotificationConfig = Nothing
+  , _comCommandPlugins = Nothing
+  , _comDocumentName = Nothing
+  , _comStandardErrorURL = Nothing
+  , _comStatusDetails = Nothing
+  , _comStandardOutputURL = Nothing
+  , _comCommandId = Nothing
+  , _comComment = Nothing
+  , _comTraceOutput = Nothing
+  , _comInstanceName = Nothing
+  , _comRequestedDateTime = Nothing
+  , _comServiceRole = Nothing
+  }
+
+
+-- | The instance ID in which this invocation was requested.
+comInstanceId :: Lens' CommandInvocation (Maybe Text)
+comInstanceId = lens _comInstanceId (\ s a -> s{_comInstanceId = a});
+
+-- | Whether or not the invocation succeeded, failed, or is pending.
+comStatus :: Lens' CommandInvocation (Maybe CommandInvocationStatus)
+comStatus = lens _comStatus (\ s a -> s{_comStatus = a});
+
+-- | Configurations for sending notifications about command status changes on a per instance basis.
+comNotificationConfig :: Lens' CommandInvocation (Maybe NotificationConfig)
+comNotificationConfig = lens _comNotificationConfig (\ s a -> s{_comNotificationConfig = a});
+
+-- | Undocumented member.
+comCommandPlugins :: Lens' CommandInvocation [CommandPlugin]
+comCommandPlugins = lens _comCommandPlugins (\ s a -> s{_comCommandPlugins = a}) . _Default . _Coerce;
+
+-- | The document name that was requested for execution.
+comDocumentName :: Lens' CommandInvocation (Maybe Text)
+comDocumentName = lens _comDocumentName (\ s a -> s{_comDocumentName = a});
+
+-- | The URL to the plugin's StdErr file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardErrorUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
+comStandardErrorURL :: Lens' CommandInvocation (Maybe Text)
+comStandardErrorURL = lens _comStandardErrorURL (\ s a -> s{_comStandardErrorURL = a});
+
+-- | A detailed status of the command execution for each invocation (each instance targeted by the command). StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Success: The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist or might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit and don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
+comStatusDetails :: Lens' CommandInvocation (Maybe Text)
+comStatusDetails = lens _comStatusDetails (\ s a -> s{_comStatusDetails = a});
+
+-- | The URL to the plugin's StdOut file in Amazon S3, if the Amazon S3 bucket was defined for the parent command. For an invocation, StandardOutputUrl is populated if there is just one plugin defined for the command, and the Amazon S3 bucket was defined for the command.
+comStandardOutputURL :: Lens' CommandInvocation (Maybe Text)
+comStandardOutputURL = lens _comStandardOutputURL (\ s a -> s{_comStandardOutputURL = a});
+
+-- | The command against which this invocation was requested.
+comCommandId :: Lens' CommandInvocation (Maybe Text)
+comCommandId = lens _comCommandId (\ s a -> s{_comCommandId = a});
+
+-- | User-specified information about the command, such as a brief description of what the command should do.
+comComment :: Lens' CommandInvocation (Maybe Text)
+comComment = lens _comComment (\ s a -> s{_comComment = a});
+
+-- | Gets the trace output sent by the agent.
+comTraceOutput :: Lens' CommandInvocation (Maybe Text)
+comTraceOutput = lens _comTraceOutput (\ s a -> s{_comTraceOutput = a});
+
+-- | The name of the invocation target. For Amazon EC2 instances this is the value for the aws:Name tag. For on-premises instances, this is the name of the instance.
+comInstanceName :: Lens' CommandInvocation (Maybe Text)
+comInstanceName = lens _comInstanceName (\ s a -> s{_comInstanceName = a});
+
+-- | The time and date the request was sent to this instance.
+comRequestedDateTime :: Lens' CommandInvocation (Maybe UTCTime)
+comRequestedDateTime = lens _comRequestedDateTime (\ s a -> s{_comRequestedDateTime = a}) . mapping _Time;
+
+-- | The IAM service role that Run Command uses to act on your behalf when sending notifications about command status changes on a per instance basis.
+comServiceRole :: Lens' CommandInvocation (Maybe Text)
+comServiceRole = lens _comServiceRole (\ s a -> s{_comServiceRole = a});
+
+instance FromJSON CommandInvocation where
+        parseJSON
+          = withObject "CommandInvocation"
+              (\ x ->
+                 CommandInvocation' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Status") <*>
+                     (x .:? "NotificationConfig")
+                     <*> (x .:? "CommandPlugins" .!= mempty)
+                     <*> (x .:? "DocumentName")
+                     <*> (x .:? "StandardErrorUrl")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "StandardOutputUrl")
+                     <*> (x .:? "CommandId")
+                     <*> (x .:? "Comment")
+                     <*> (x .:? "TraceOutput")
+                     <*> (x .:? "InstanceName")
+                     <*> (x .:? "RequestedDateTime")
+                     <*> (x .:? "ServiceRole"))
+
+instance Hashable CommandInvocation where
+
+instance NFData CommandInvocation where
+
+-- | Describes plugin details.
+--
+--
+--
+-- /See:/ 'commandPlugin' smart constructor.
+data CommandPlugin = CommandPlugin'
+  { _cpStatus                 :: !(Maybe CommandPluginStatus)
+  , _cpResponseStartDateTime  :: !(Maybe POSIX)
+  , _cpOutputS3KeyPrefix      :: !(Maybe Text)
+  , _cpStandardErrorURL       :: !(Maybe Text)
+  , _cpResponseCode           :: !(Maybe Int)
+  , _cpStatusDetails          :: !(Maybe Text)
+  , _cpOutput                 :: !(Maybe Text)
+  , _cpStandardOutputURL      :: !(Maybe Text)
+  , _cpName                   :: !(Maybe Text)
+  , _cpOutputS3Region         :: !(Maybe Text)
+  , _cpOutputS3BucketName     :: !(Maybe Text)
+  , _cpResponseFinishDateTime :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommandPlugin' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpStatus' - The status of this plugin. You can execute a document with multiple plugins.
+--
+-- * 'cpResponseStartDateTime' - The time the plugin started executing.
+--
+-- * 'cpOutputS3KeyPrefix' - The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript  test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin.
+--
+-- * 'cpStandardErrorURL' - The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty.
+--
+-- * 'cpResponseCode' - A numeric response code generated after executing the plugin.
+--
+-- * 'cpStatusDetails' - A detailed status of the plugin execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Success: The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit, and they don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
+--
+-- * 'cpOutput' - Output of the plugin execution.
+--
+-- * 'cpStandardOutputURL' - The URL for the complete text written by the plugin to stdout in Amazon S3. If the Amazon S3 bucket for the command was not specified, then this string is empty.
+--
+-- * 'cpName' - 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.
+--
+-- * 'cpOutputS3Region' - (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+--
+-- * 'cpOutputS3BucketName' - The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript  test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin.
+--
+-- * 'cpResponseFinishDateTime' - The time the plugin stopped executing. Could stop prematurely if, for example, a cancel command was sent.
+commandPlugin
+    :: CommandPlugin
+commandPlugin =
+  CommandPlugin'
+  { _cpStatus = Nothing
+  , _cpResponseStartDateTime = Nothing
+  , _cpOutputS3KeyPrefix = Nothing
+  , _cpStandardErrorURL = Nothing
+  , _cpResponseCode = Nothing
+  , _cpStatusDetails = Nothing
+  , _cpOutput = Nothing
+  , _cpStandardOutputURL = Nothing
+  , _cpName = Nothing
+  , _cpOutputS3Region = Nothing
+  , _cpOutputS3BucketName = Nothing
+  , _cpResponseFinishDateTime = Nothing
+  }
+
+
+-- | The status of this plugin. You can execute a document with multiple plugins.
+cpStatus :: Lens' CommandPlugin (Maybe CommandPluginStatus)
+cpStatus = lens _cpStatus (\ s a -> s{_cpStatus = a});
+
+-- | The time the plugin started executing.
+cpResponseStartDateTime :: Lens' CommandPlugin (Maybe UTCTime)
+cpResponseStartDateTime = lens _cpResponseStartDateTime (\ s a -> s{_cpResponseStartDateTime = a}) . mapping _Time;
+
+-- | The S3 directory path inside the bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript  test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin.
+cpOutputS3KeyPrefix :: Lens' CommandPlugin (Maybe Text)
+cpOutputS3KeyPrefix = lens _cpOutputS3KeyPrefix (\ s a -> s{_cpOutputS3KeyPrefix = a});
+
+-- | The URL for the complete text written by the plugin to stderr. If execution is not yet complete, then this string is empty.
+cpStandardErrorURL :: Lens' CommandPlugin (Maybe Text)
+cpStandardErrorURL = lens _cpStandardErrorURL (\ s a -> s{_cpStandardErrorURL = a});
+
+-- | A numeric response code generated after executing the plugin.
+cpResponseCode :: Lens' CommandPlugin (Maybe Int)
+cpResponseCode = lens _cpResponseCode (\ s a -> s{_cpResponseCode = a});
+
+-- | A detailed status of the plugin execution. StatusDetails includes more information than Status because it includes states resulting from error and concurrency control parameters. StatusDetails can show different results than Status. For more information about these statuses, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-about-status.html Run Command Status> . StatusDetails can be one of the following values:     * Pending: The command has not been sent to the instance.     * In Progress: The command has been sent to the instance but has not reached a terminal state.     * Success: The execution of the command or plugin was successfully completed. This is a terminal state.     * Delivery Timed Out: The command was not delivered to the instance before the delivery timeout expired. Delivery timeouts do not count against the parent command's MaxErrors limit, but they do contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Execution Timed Out: Command execution started on the instance, but the execution was not complete before the execution timeout expired. Execution timeouts count against the MaxErrors limit of the parent command. This is a terminal state.     * Failed: The command was not successful on the instance. For a plugin, this indicates that the result code was not zero. For a command invocation, this indicates that the result code for one or more plugins was not zero. Invocation failures count against the MaxErrors limit of the parent command. This is a terminal state.     * Canceled: The command was terminated before it was completed. This is a terminal state.     * Undeliverable: The command can't be delivered to the instance. The instance might not exist, or it might not be responding. Undeliverable invocations don't count against the parent command's MaxErrors limit, and they don't contribute to whether the parent command status is Success or Incomplete. This is a terminal state.     * Terminated: The parent command exceeded its MaxErrors limit and subsequent command invocations were canceled by the system. This is a terminal state.
+cpStatusDetails :: Lens' CommandPlugin (Maybe Text)
+cpStatusDetails = lens _cpStatusDetails (\ s a -> s{_cpStatusDetails = a});
+
+-- | Output of the plugin execution.
+cpOutput :: Lens' CommandPlugin (Maybe Text)
+cpOutput = lens _cpOutput (\ s a -> s{_cpOutput = a});
+
+-- | The URL for the complete text written by the plugin to stdout in Amazon S3. If the Amazon S3 bucket for the command was not specified, then this string is empty.
+cpStandardOutputURL :: Lens' CommandPlugin (Maybe Text)
+cpStandardOutputURL = lens _cpStandardOutputURL (\ s a -> s{_cpStandardOutputURL = a});
+
+-- | 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});
+
+-- | (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+cpOutputS3Region :: Lens' CommandPlugin (Maybe Text)
+cpOutputS3Region = lens _cpOutputS3Region (\ s a -> s{_cpOutputS3Region = a});
+
+-- | The S3 bucket where the responses to the command executions should be stored. This was requested when issuing the command. For example, in the following response: test_folder/ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix/i-1234567876543/awsrunShellScript  test_folder is the name of the Amazon S3 bucket; ab19cb99-a030-46dd-9dfc-8eSAMPLEPre-Fix is the name of the S3 prefix; i-1234567876543 is the instance ID; awsrunShellScript is the name of the plugin.
+cpOutputS3BucketName :: Lens' CommandPlugin (Maybe Text)
+cpOutputS3BucketName = lens _cpOutputS3BucketName (\ s a -> s{_cpOutputS3BucketName = a});
+
+-- | The time the plugin stopped executing. Could stop prematurely if, for example, a cancel command was sent.
+cpResponseFinishDateTime :: Lens' CommandPlugin (Maybe UTCTime)
+cpResponseFinishDateTime = lens _cpResponseFinishDateTime (\ s a -> s{_cpResponseFinishDateTime = a}) . mapping _Time;
+
+instance FromJSON CommandPlugin where
+        parseJSON
+          = withObject "CommandPlugin"
+              (\ x ->
+                 CommandPlugin' <$>
+                   (x .:? "Status") <*> (x .:? "ResponseStartDateTime")
+                     <*> (x .:? "OutputS3KeyPrefix")
+                     <*> (x .:? "StandardErrorUrl")
+                     <*> (x .:? "ResponseCode")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "Output")
+                     <*> (x .:? "StandardOutputUrl")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "OutputS3Region")
+                     <*> (x .:? "OutputS3BucketName")
+                     <*> (x .:? "ResponseFinishDateTime"))
+
+instance Hashable CommandPlugin where
+
+instance NFData CommandPlugin where
+
+-- | A summary of the call execution that includes an execution ID, the type of execution (for example, @Command@ ), and the date/time of the execution using a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.
+--
+--
+--
+-- /See:/ 'complianceExecutionSummary' smart constructor.
+data ComplianceExecutionSummary = ComplianceExecutionSummary'
+  { _cesExecutionId   :: !(Maybe Text)
+  , _cesExecutionType :: !(Maybe Text)
+  , _cesExecutionTime :: !POSIX
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComplianceExecutionSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cesExecutionId' - An ID created by the system when @PutComplianceItems@ was called. For example, @CommandID@ is a valid execution ID. You can use this ID in subsequent calls.
+--
+-- * 'cesExecutionType' - The type of execution. For example, @Command@ is a valid execution type.
+--
+-- * 'cesExecutionTime' - The time the execution ran as a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.
+complianceExecutionSummary
+    :: UTCTime -- ^ 'cesExecutionTime'
+    -> ComplianceExecutionSummary
+complianceExecutionSummary pExecutionTime_ =
+  ComplianceExecutionSummary'
+  { _cesExecutionId = Nothing
+  , _cesExecutionType = Nothing
+  , _cesExecutionTime = _Time # pExecutionTime_
+  }
+
+
+-- | An ID created by the system when @PutComplianceItems@ was called. For example, @CommandID@ is a valid execution ID. You can use this ID in subsequent calls.
+cesExecutionId :: Lens' ComplianceExecutionSummary (Maybe Text)
+cesExecutionId = lens _cesExecutionId (\ s a -> s{_cesExecutionId = a});
+
+-- | The type of execution. For example, @Command@ is a valid execution type.
+cesExecutionType :: Lens' ComplianceExecutionSummary (Maybe Text)
+cesExecutionType = lens _cesExecutionType (\ s a -> s{_cesExecutionType = a});
+
+-- | The time the execution ran as a datetime object that is saved in the following format: yyyy-MM-dd'T'HH:mm:ss'Z'.
+cesExecutionTime :: Lens' ComplianceExecutionSummary UTCTime
+cesExecutionTime = lens _cesExecutionTime (\ s a -> s{_cesExecutionTime = a}) . _Time;
+
+instance FromJSON ComplianceExecutionSummary where
+        parseJSON
+          = withObject "ComplianceExecutionSummary"
+              (\ x ->
+                 ComplianceExecutionSummary' <$>
+                   (x .:? "ExecutionId") <*> (x .:? "ExecutionType") <*>
+                     (x .: "ExecutionTime"))
+
+instance Hashable ComplianceExecutionSummary where
+
+instance NFData ComplianceExecutionSummary where
+
+instance ToJSON ComplianceExecutionSummary where
+        toJSON ComplianceExecutionSummary'{..}
+          = object
+              (catMaybes
+                 [("ExecutionId" .=) <$> _cesExecutionId,
+                  ("ExecutionType" .=) <$> _cesExecutionType,
+                  Just ("ExecutionTime" .= _cesExecutionTime)])
+
+-- | Information about the compliance as defined by the resource type. For example, for a patch resource type, @Items@ includes information about the PatchSeverity, Classification, etc.
+--
+--
+--
+-- /See:/ 'complianceItem' smart constructor.
+data ComplianceItem = ComplianceItem'
+  { _ciStatus           :: !(Maybe ComplianceStatus)
+  , _ciResourceId       :: !(Maybe Text)
+  , _ciResourceType     :: !(Maybe Text)
+  , _ciSeverity         :: !(Maybe ComplianceSeverity)
+  , _ciExecutionSummary :: !(Maybe ComplianceExecutionSummary)
+  , _ciDetails          :: !(Maybe (Map Text Text))
+  , _ciId               :: !(Maybe Text)
+  , _ciComplianceType   :: !(Maybe Text)
+  , _ciTitle            :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComplianceItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciStatus' - The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.
+--
+-- * 'ciResourceId' - An ID for the resource. For a managed instance, this is the instance ID.
+--
+-- * 'ciResourceType' - The type of resource. @ManagedInstance@ is currently the only supported resource type.
+--
+-- * 'ciSeverity' - The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.
+--
+-- * 'ciExecutionSummary' - A summary for the compliance item. The summary includes an execution ID, the execution type (for example, command), and the execution time.
+--
+-- * 'ciDetails' - A "Key": "Value" tag combination for the compliance item.
+--
+-- * 'ciId' - An ID for the compliance item. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article. Here's an example: KB4010320.
+--
+-- * 'ciComplianceType' - The compliance type. For example, Association (for a State Manager association), Patch, or Custom:@string@ are all valid compliance types.
+--
+-- * 'ciTitle' - A title for the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services.
+complianceItem
+    :: ComplianceItem
+complianceItem =
+  ComplianceItem'
+  { _ciStatus = Nothing
+  , _ciResourceId = Nothing
+  , _ciResourceType = Nothing
+  , _ciSeverity = Nothing
+  , _ciExecutionSummary = Nothing
+  , _ciDetails = Nothing
+  , _ciId = Nothing
+  , _ciComplianceType = Nothing
+  , _ciTitle = Nothing
+  }
+
+
+-- | The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.
+ciStatus :: Lens' ComplianceItem (Maybe ComplianceStatus)
+ciStatus = lens _ciStatus (\ s a -> s{_ciStatus = a});
+
+-- | An ID for the resource. For a managed instance, this is the instance ID.
+ciResourceId :: Lens' ComplianceItem (Maybe Text)
+ciResourceId = lens _ciResourceId (\ s a -> s{_ciResourceId = a});
+
+-- | The type of resource. @ManagedInstance@ is currently the only supported resource type.
+ciResourceType :: Lens' ComplianceItem (Maybe Text)
+ciResourceType = lens _ciResourceType (\ s a -> s{_ciResourceType = a});
+
+-- | The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.
+ciSeverity :: Lens' ComplianceItem (Maybe ComplianceSeverity)
+ciSeverity = lens _ciSeverity (\ s a -> s{_ciSeverity = a});
+
+-- | A summary for the compliance item. The summary includes an execution ID, the execution type (for example, command), and the execution time.
+ciExecutionSummary :: Lens' ComplianceItem (Maybe ComplianceExecutionSummary)
+ciExecutionSummary = lens _ciExecutionSummary (\ s a -> s{_ciExecutionSummary = a});
+
+-- | A "Key": "Value" tag combination for the compliance item.
+ciDetails :: Lens' ComplianceItem (HashMap Text Text)
+ciDetails = lens _ciDetails (\ s a -> s{_ciDetails = a}) . _Default . _Map;
+
+-- | An ID for the compliance item. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article. Here's an example: KB4010320.
+ciId :: Lens' ComplianceItem (Maybe Text)
+ciId = lens _ciId (\ s a -> s{_ciId = a});
+
+-- | The compliance type. For example, Association (for a State Manager association), Patch, or Custom:@string@ are all valid compliance types.
+ciComplianceType :: Lens' ComplianceItem (Maybe Text)
+ciComplianceType = lens _ciComplianceType (\ s a -> s{_ciComplianceType = a});
+
+-- | A title for the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services.
+ciTitle :: Lens' ComplianceItem (Maybe Text)
+ciTitle = lens _ciTitle (\ s a -> s{_ciTitle = a});
+
+instance FromJSON ComplianceItem where
+        parseJSON
+          = withObject "ComplianceItem"
+              (\ x ->
+                 ComplianceItem' <$>
+                   (x .:? "Status") <*> (x .:? "ResourceId") <*>
+                     (x .:? "ResourceType")
+                     <*> (x .:? "Severity")
+                     <*> (x .:? "ExecutionSummary")
+                     <*> (x .:? "Details" .!= mempty)
+                     <*> (x .:? "Id")
+                     <*> (x .:? "ComplianceType")
+                     <*> (x .:? "Title"))
+
+instance Hashable ComplianceItem where
+
+instance NFData ComplianceItem where
+
+-- | Information about a compliance item.
+--
+--
+--
+-- /See:/ 'complianceItemEntry' smart constructor.
+data ComplianceItemEntry = ComplianceItemEntry'
+  { _cieDetails  :: !(Maybe (Map Text Text))
+  , _cieId       :: !(Maybe Text)
+  , _cieTitle    :: !(Maybe Text)
+  , _cieSeverity :: !ComplianceSeverity
+  , _cieStatus   :: !ComplianceStatus
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComplianceItemEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cieDetails' - A "Key": "Value" tag combination for the compliance item.
+--
+-- * 'cieId' - The compliance item ID. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article.
+--
+-- * 'cieTitle' - The title of the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services.
+--
+-- * 'cieSeverity' - The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.
+--
+-- * 'cieStatus' - The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.
+complianceItemEntry
+    :: ComplianceSeverity -- ^ 'cieSeverity'
+    -> ComplianceStatus -- ^ 'cieStatus'
+    -> ComplianceItemEntry
+complianceItemEntry pSeverity_ pStatus_ =
+  ComplianceItemEntry'
+  { _cieDetails = Nothing
+  , _cieId = Nothing
+  , _cieTitle = Nothing
+  , _cieSeverity = pSeverity_
+  , _cieStatus = pStatus_
+  }
+
+
+-- | A "Key": "Value" tag combination for the compliance item.
+cieDetails :: Lens' ComplianceItemEntry (HashMap Text Text)
+cieDetails = lens _cieDetails (\ s a -> s{_cieDetails = a}) . _Default . _Map;
+
+-- | The compliance item ID. For example, if the compliance item is a Windows patch, the ID could be the number of the KB article.
+cieId :: Lens' ComplianceItemEntry (Maybe Text)
+cieId = lens _cieId (\ s a -> s{_cieId = a});
+
+-- | The title of the compliance item. For example, if the compliance item is a Windows patch, the title could be the title of the KB article for the patch. Here's an example: Security Update for Active Directory Federation Services.
+cieTitle :: Lens' ComplianceItemEntry (Maybe Text)
+cieTitle = lens _cieTitle (\ s a -> s{_cieTitle = a});
+
+-- | The severity of the compliance status. Severity can be one of the following: Critical, High, Medium, Low, Informational, Unspecified.
+cieSeverity :: Lens' ComplianceItemEntry ComplianceSeverity
+cieSeverity = lens _cieSeverity (\ s a -> s{_cieSeverity = a});
+
+-- | The status of the compliance item. An item is either COMPLIANT or NON_COMPLIANT.
+cieStatus :: Lens' ComplianceItemEntry ComplianceStatus
+cieStatus = lens _cieStatus (\ s a -> s{_cieStatus = a});
+
+instance Hashable ComplianceItemEntry where
+
+instance NFData ComplianceItemEntry where
+
+instance ToJSON ComplianceItemEntry where
+        toJSON ComplianceItemEntry'{..}
+          = object
+              (catMaybes
+                 [("Details" .=) <$> _cieDetails,
+                  ("Id" .=) <$> _cieId, ("Title" .=) <$> _cieTitle,
+                  Just ("Severity" .= _cieSeverity),
+                  Just ("Status" .= _cieStatus)])
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+--
+--
+--
+-- /See:/ 'complianceStringFilter' smart constructor.
+data ComplianceStringFilter = ComplianceStringFilter'
+  { _csfValues :: !(Maybe (List1 Text))
+  , _csfKey    :: !(Maybe Text)
+  , _csfType   :: !(Maybe ComplianceQueryOperatorType)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComplianceStringFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csfValues' - The value for which to search.
+--
+-- * 'csfKey' - The name of the filter.
+--
+-- * 'csfType' - The type of comparison that should be performed for the value: Equal, NotEqual, BeginWith, LessThan, or GreaterThan.
+complianceStringFilter
+    :: ComplianceStringFilter
+complianceStringFilter =
+  ComplianceStringFilter'
+  {_csfValues = Nothing, _csfKey = Nothing, _csfType = Nothing}
+
+
+-- | The value for which to search.
+csfValues :: Lens' ComplianceStringFilter (Maybe (NonEmpty Text))
+csfValues = lens _csfValues (\ s a -> s{_csfValues = a}) . mapping _List1;
+
+-- | The name of the filter.
+csfKey :: Lens' ComplianceStringFilter (Maybe Text)
+csfKey = lens _csfKey (\ s a -> s{_csfKey = a});
+
+-- | The type of comparison that should be performed for the value: Equal, NotEqual, BeginWith, LessThan, or GreaterThan.
+csfType :: Lens' ComplianceStringFilter (Maybe ComplianceQueryOperatorType)
+csfType = lens _csfType (\ s a -> s{_csfType = a});
+
+instance Hashable ComplianceStringFilter where
+
+instance NFData ComplianceStringFilter where
+
+instance ToJSON ComplianceStringFilter where
+        toJSON ComplianceStringFilter'{..}
+          = object
+              (catMaybes
+                 [("Values" .=) <$> _csfValues,
+                  ("Key" .=) <$> _csfKey, ("Type" .=) <$> _csfType])
+
+-- | A summary of compliance information by compliance type.
+--
+--
+--
+-- /See:/ 'complianceSummaryItem' smart constructor.
+data ComplianceSummaryItem = ComplianceSummaryItem'
+  { _csiNonCompliantSummary :: !(Maybe NonCompliantSummary)
+  , _csiCompliantSummary    :: !(Maybe CompliantSummary)
+  , _csiComplianceType      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ComplianceSummaryItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csiNonCompliantSummary' - A list of NON_COMPLIANT items for the specified compliance type.
+--
+-- * 'csiCompliantSummary' - A list of COMPLIANT items for the specified compliance type.
+--
+-- * 'csiComplianceType' - The type of compliance item. For example, the compliance type can be Association, Patch, or Custom:string.
+complianceSummaryItem
+    :: ComplianceSummaryItem
+complianceSummaryItem =
+  ComplianceSummaryItem'
+  { _csiNonCompliantSummary = Nothing
+  , _csiCompliantSummary = Nothing
+  , _csiComplianceType = Nothing
+  }
+
+
+-- | A list of NON_COMPLIANT items for the specified compliance type.
+csiNonCompliantSummary :: Lens' ComplianceSummaryItem (Maybe NonCompliantSummary)
+csiNonCompliantSummary = lens _csiNonCompliantSummary (\ s a -> s{_csiNonCompliantSummary = a});
+
+-- | A list of COMPLIANT items for the specified compliance type.
+csiCompliantSummary :: Lens' ComplianceSummaryItem (Maybe CompliantSummary)
+csiCompliantSummary = lens _csiCompliantSummary (\ s a -> s{_csiCompliantSummary = a});
+
+-- | The type of compliance item. For example, the compliance type can be Association, Patch, or Custom:string.
+csiComplianceType :: Lens' ComplianceSummaryItem (Maybe Text)
+csiComplianceType = lens _csiComplianceType (\ s a -> s{_csiComplianceType = a});
+
+instance FromJSON ComplianceSummaryItem where
+        parseJSON
+          = withObject "ComplianceSummaryItem"
+              (\ x ->
+                 ComplianceSummaryItem' <$>
+                   (x .:? "NonCompliantSummary") <*>
+                     (x .:? "CompliantSummary")
+                     <*> (x .:? "ComplianceType"))
+
+instance Hashable ComplianceSummaryItem where
+
+instance NFData ComplianceSummaryItem where
+
+-- | A summary of resources that are compliant. The summary is organized according to the resource count for each compliance type.
+--
+--
+--
+-- /See:/ 'compliantSummary' smart constructor.
+data CompliantSummary = CompliantSummary'
+  { _csCompliantCount  :: !(Maybe Int)
+  , _csSeveritySummary :: !(Maybe SeveritySummary)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CompliantSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csCompliantCount' - The total number of resources that are compliant.
+--
+-- * 'csSeveritySummary' - A summary of the compliance severity by compliance type.
+compliantSummary
+    :: CompliantSummary
+compliantSummary =
+  CompliantSummary' {_csCompliantCount = Nothing, _csSeveritySummary = Nothing}
+
+
+-- | The total number of resources that are compliant.
+csCompliantCount :: Lens' CompliantSummary (Maybe Int)
+csCompliantCount = lens _csCompliantCount (\ s a -> s{_csCompliantCount = a});
+
+-- | A summary of the compliance severity by compliance type.
+csSeveritySummary :: Lens' CompliantSummary (Maybe SeveritySummary)
+csSeveritySummary = lens _csSeveritySummary (\ s a -> s{_csSeveritySummary = a});
+
+instance FromJSON CompliantSummary where
+        parseJSON
+          = withObject "CompliantSummary"
+              (\ x ->
+                 CompliantSummary' <$>
+                   (x .:? "CompliantCount") <*>
+                     (x .:? "SeveritySummary"))
+
+instance Hashable CompliantSummary where
+
+instance NFData CompliantSummary where
+
+-- | Describes the association of a Systems Manager document and an instance.
+--
+--
+--
+-- /See:/ 'createAssociationBatchRequestEntry' smart constructor.
+data CreateAssociationBatchRequestEntry = CreateAssociationBatchRequestEntry'
+  { _cabreInstanceId         :: !(Maybe Text)
+  , _cabreScheduleExpression :: !(Maybe Text)
+  , _cabreOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
+  , _cabreTargets            :: !(Maybe [Target])
+  , _cabreParameters         :: !(Maybe (Map Text [Text]))
+  , _cabreDocumentVersion    :: !(Maybe Text)
+  , _cabreAssociationName    :: !(Maybe Text)
+  , _cabreName               :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CreateAssociationBatchRequestEntry' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cabreInstanceId' - The ID of the instance.
+--
+-- * 'cabreScheduleExpression' - A cron expression that specifies a schedule when the association runs.
+--
+-- * 'cabreOutputLocation' - An Amazon S3 bucket where you want to store the results of this request.
+--
+-- * 'cabreTargets' - The instances targeted by the request.
+--
+-- * 'cabreParameters' - A description of the parameters for a document.
+--
+-- * 'cabreDocumentVersion' - The document version.
+--
+-- * 'cabreAssociationName' - Specify a descriptive name for the association.
+--
+-- * 'cabreName' - The name of the configuration document.
+createAssociationBatchRequestEntry
+    :: Text -- ^ 'cabreName'
+    -> CreateAssociationBatchRequestEntry
+createAssociationBatchRequestEntry pName_ =
+  CreateAssociationBatchRequestEntry'
+  { _cabreInstanceId = Nothing
+  , _cabreScheduleExpression = Nothing
+  , _cabreOutputLocation = Nothing
+  , _cabreTargets = Nothing
+  , _cabreParameters = Nothing
+  , _cabreDocumentVersion = Nothing
+  , _cabreAssociationName = Nothing
+  , _cabreName = pName_
+  }
+
+
+-- | The ID of the instance.
+cabreInstanceId :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
+cabreInstanceId = lens _cabreInstanceId (\ s a -> s{_cabreInstanceId = a});
+
+-- | A cron expression that specifies a schedule when the association runs.
+cabreScheduleExpression :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
+cabreScheduleExpression = lens _cabreScheduleExpression (\ s a -> s{_cabreScheduleExpression = a});
+
+-- | An Amazon S3 bucket where you want to store the results of this request.
+cabreOutputLocation :: Lens' CreateAssociationBatchRequestEntry (Maybe InstanceAssociationOutputLocation)
+cabreOutputLocation = lens _cabreOutputLocation (\ s a -> s{_cabreOutputLocation = a});
+
+-- | The instances targeted by the request.
+cabreTargets :: Lens' CreateAssociationBatchRequestEntry [Target]
+cabreTargets = lens _cabreTargets (\ s a -> s{_cabreTargets = a}) . _Default . _Coerce;
+
+-- | A description of the parameters for a document.
+cabreParameters :: Lens' CreateAssociationBatchRequestEntry (HashMap Text [Text])
+cabreParameters = lens _cabreParameters (\ s a -> s{_cabreParameters = a}) . _Default . _Map;
+
+-- | The document version.
+cabreDocumentVersion :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
+cabreDocumentVersion = lens _cabreDocumentVersion (\ s a -> s{_cabreDocumentVersion = a});
+
+-- | Specify a descriptive name for the association.
+cabreAssociationName :: Lens' CreateAssociationBatchRequestEntry (Maybe Text)
+cabreAssociationName = lens _cabreAssociationName (\ s a -> s{_cabreAssociationName = a});
+
+-- | The name of the configuration document.
+cabreName :: Lens' CreateAssociationBatchRequestEntry Text
+cabreName = lens _cabreName (\ s a -> s{_cabreName = a});
+
+instance FromJSON CreateAssociationBatchRequestEntry
+         where
+        parseJSON
+          = withObject "CreateAssociationBatchRequestEntry"
+              (\ x ->
+                 CreateAssociationBatchRequestEntry' <$>
+                   (x .:? "InstanceId") <*> (x .:? "ScheduleExpression")
+                     <*> (x .:? "OutputLocation")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AssociationName")
+                     <*> (x .: "Name"))
+
+instance Hashable CreateAssociationBatchRequestEntry
+         where
+
+instance NFData CreateAssociationBatchRequestEntry
+         where
+
+instance ToJSON CreateAssociationBatchRequestEntry
+         where
+        toJSON CreateAssociationBatchRequestEntry'{..}
+          = object
+              (catMaybes
+                 [("InstanceId" .=) <$> _cabreInstanceId,
+                  ("ScheduleExpression" .=) <$>
+                    _cabreScheduleExpression,
+                  ("OutputLocation" .=) <$> _cabreOutputLocation,
+                  ("Targets" .=) <$> _cabreTargets,
+                  ("Parameters" .=) <$> _cabreParameters,
+                  ("DocumentVersion" .=) <$> _cabreDocumentVersion,
+                  ("AssociationName" .=) <$> _cabreAssociationName,
+                  Just ("Name" .= _cabreName)])
+
+-- | Filter for the DescribeActivation API.
+--
+--
+--
+-- /See:/ 'describeActivationsFilter' smart constructor.
+data DescribeActivationsFilter = DescribeActivationsFilter'
+  { _dafFilterKey    :: !(Maybe DescribeActivationsFilterKeys)
+  , _dafFilterValues :: !(Maybe [Text])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DescribeActivationsFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dafFilterKey' - The name of the filter.
+--
+-- * 'dafFilterValues' - The filter values.
+describeActivationsFilter
+    :: DescribeActivationsFilter
+describeActivationsFilter =
+  DescribeActivationsFilter'
+  {_dafFilterKey = Nothing, _dafFilterValues = Nothing}
+
+
+-- | The name of the filter.
+dafFilterKey :: Lens' DescribeActivationsFilter (Maybe DescribeActivationsFilterKeys)
+dafFilterKey = lens _dafFilterKey (\ s a -> s{_dafFilterKey = a});
+
+-- | The filter values.
+dafFilterValues :: Lens' DescribeActivationsFilter [Text]
+dafFilterValues = lens _dafFilterValues (\ s a -> s{_dafFilterValues = a}) . _Default . _Coerce;
+
+instance Hashable DescribeActivationsFilter where
+
+instance NFData DescribeActivationsFilter where
+
+instance ToJSON DescribeActivationsFilter where
+        toJSON DescribeActivationsFilter'{..}
+          = object
+              (catMaybes
+                 [("FilterKey" .=) <$> _dafFilterKey,
+                  ("FilterValues" .=) <$> _dafFilterValues])
+
+-- | A default version of a document.
+--
+--
+--
+-- /See:/ 'documentDefaultVersionDescription' smart constructor.
+data DocumentDefaultVersionDescription = DocumentDefaultVersionDescription'
+  { _ddvdDefaultVersion :: !(Maybe Text)
+  , _ddvdName           :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentDefaultVersionDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddvdDefaultVersion' - The default version of the document.
+--
+-- * 'ddvdName' - The name of the document.
+documentDefaultVersionDescription
+    :: DocumentDefaultVersionDescription
+documentDefaultVersionDescription =
+  DocumentDefaultVersionDescription'
+  {_ddvdDefaultVersion = Nothing, _ddvdName = Nothing}
+
+
+-- | The default version of the document.
+ddvdDefaultVersion :: Lens' DocumentDefaultVersionDescription (Maybe Text)
+ddvdDefaultVersion = lens _ddvdDefaultVersion (\ s a -> s{_ddvdDefaultVersion = a});
+
+-- | The name of the document.
+ddvdName :: Lens' DocumentDefaultVersionDescription (Maybe Text)
+ddvdName = lens _ddvdName (\ s a -> s{_ddvdName = a});
+
+instance FromJSON DocumentDefaultVersionDescription
+         where
+        parseJSON
+          = withObject "DocumentDefaultVersionDescription"
+              (\ x ->
+                 DocumentDefaultVersionDescription' <$>
+                   (x .:? "DefaultVersion") <*> (x .:? "Name"))
+
+instance Hashable DocumentDefaultVersionDescription
+         where
+
+instance NFData DocumentDefaultVersionDescription
+         where
+
+-- | Describes a Systems Manager document.
+--
+--
+--
+-- /See:/ 'documentDescription' smart constructor.
+data DocumentDescription = DocumentDescription'
+  { _dStatus          :: !(Maybe DocumentStatus)
+  , _dDocumentType    :: !(Maybe DocumentType)
+  , _dHash            :: !(Maybe Text)
+  , _dSchemaVersion   :: !(Maybe Text)
+  , _dSha1            :: !(Maybe Text)
+  , _dDefaultVersion  :: !(Maybe Text)
+  , _dOwner           :: !(Maybe Text)
+  , _dPlatformTypes   :: !(Maybe [PlatformType])
+  , _dCreatedDate     :: !(Maybe POSIX)
+  , _dName            :: !(Maybe Text)
+  , _dHashType        :: !(Maybe DocumentHashType)
+  , _dParameters      :: !(Maybe [DocumentParameter])
+  , _dDocumentVersion :: !(Maybe Text)
+  , _dDescription     :: !(Maybe Text)
+  , _dTags            :: !(Maybe [Tag])
+  , _dLatestVersion   :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dStatus' - The status of the Systems Manager document.
+--
+-- * 'dDocumentType' - The type of document.
+--
+-- * 'dHash' - The Sha256 or Sha1 hash created by the system when the document was created.
+--
+-- * 'dSchemaVersion' - The schema version.
+--
+-- * 'dSha1' - The SHA1 hash of the document, which you can use for verification.
+--
+-- * 'dDefaultVersion' - The default version.
+--
+-- * 'dOwner' - The AWS user account that created the document.
+--
+-- * 'dPlatformTypes' - The list of OS platforms compatible with this Systems Manager document.
+--
+-- * 'dCreatedDate' - The date when the document was created.
+--
+-- * 'dName' - The name of the Systems Manager document.
+--
+-- * 'dHashType' - Sha256 or Sha1.
+--
+-- * 'dParameters' - A description of the parameters for a document.
+--
+-- * 'dDocumentVersion' - The document version.
+--
+-- * 'dDescription' - A description of the document.
+--
+-- * 'dTags' - The tags, or metadata, that have been applied to the document.
+--
+-- * 'dLatestVersion' - The latest version of the document.
+documentDescription
+    :: DocumentDescription
+documentDescription =
+  DocumentDescription'
+  { _dStatus = Nothing
+  , _dDocumentType = Nothing
+  , _dHash = Nothing
+  , _dSchemaVersion = Nothing
+  , _dSha1 = Nothing
+  , _dDefaultVersion = Nothing
+  , _dOwner = Nothing
+  , _dPlatformTypes = Nothing
+  , _dCreatedDate = Nothing
+  , _dName = Nothing
+  , _dHashType = Nothing
+  , _dParameters = Nothing
+  , _dDocumentVersion = Nothing
+  , _dDescription = Nothing
+  , _dTags = Nothing
+  , _dLatestVersion = Nothing
+  }
+
+
+-- | The status of the Systems Manager document.
+dStatus :: Lens' DocumentDescription (Maybe DocumentStatus)
+dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
+
+-- | The type of document.
+dDocumentType :: Lens' DocumentDescription (Maybe DocumentType)
+dDocumentType = lens _dDocumentType (\ s a -> s{_dDocumentType = a});
+
+-- | The Sha256 or Sha1 hash created by the system when the document was created.
+dHash :: Lens' DocumentDescription (Maybe Text)
+dHash = lens _dHash (\ s a -> s{_dHash = a});
+
+-- | The schema version.
+dSchemaVersion :: Lens' DocumentDescription (Maybe Text)
+dSchemaVersion = lens _dSchemaVersion (\ s a -> s{_dSchemaVersion = a});
+
+-- | The SHA1 hash of the document, which you can use for verification.
+dSha1 :: Lens' DocumentDescription (Maybe Text)
+dSha1 = lens _dSha1 (\ s a -> s{_dSha1 = a});
+
+-- | The default version.
+dDefaultVersion :: Lens' DocumentDescription (Maybe Text)
+dDefaultVersion = lens _dDefaultVersion (\ s a -> s{_dDefaultVersion = a});
+
+-- | The AWS user account that created the document.
+dOwner :: Lens' DocumentDescription (Maybe Text)
+dOwner = lens _dOwner (\ s a -> s{_dOwner = a});
+
+-- | The list of OS platforms compatible with this Systems Manager document.
+dPlatformTypes :: Lens' DocumentDescription [PlatformType]
+dPlatformTypes = lens _dPlatformTypes (\ s a -> s{_dPlatformTypes = a}) . _Default . _Coerce;
+
+-- | The date when the document was created.
+dCreatedDate :: Lens' DocumentDescription (Maybe UTCTime)
+dCreatedDate = lens _dCreatedDate (\ s a -> s{_dCreatedDate = a}) . mapping _Time;
+
+-- | The name of the Systems Manager document.
+dName :: Lens' DocumentDescription (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a});
+
+-- | Sha256 or Sha1.
+dHashType :: Lens' DocumentDescription (Maybe DocumentHashType)
+dHashType = lens _dHashType (\ s a -> s{_dHashType = a});
+
+-- | A description of the parameters for a document.
+dParameters :: Lens' DocumentDescription [DocumentParameter]
+dParameters = lens _dParameters (\ s a -> s{_dParameters = a}) . _Default . _Coerce;
+
+-- | The document version.
+dDocumentVersion :: Lens' DocumentDescription (Maybe Text)
+dDocumentVersion = lens _dDocumentVersion (\ s a -> s{_dDocumentVersion = a});
+
+-- | A description of the document.
+dDescription :: Lens' DocumentDescription (Maybe Text)
+dDescription = lens _dDescription (\ s a -> s{_dDescription = a});
+
+-- | The tags, or metadata, that have been applied to the document.
+dTags :: Lens' DocumentDescription [Tag]
+dTags = lens _dTags (\ s a -> s{_dTags = a}) . _Default . _Coerce;
+
+-- | The latest version of the document.
+dLatestVersion :: Lens' DocumentDescription (Maybe Text)
+dLatestVersion = lens _dLatestVersion (\ s a -> s{_dLatestVersion = a});
+
+instance FromJSON DocumentDescription where
+        parseJSON
+          = withObject "DocumentDescription"
+              (\ x ->
+                 DocumentDescription' <$>
+                   (x .:? "Status") <*> (x .:? "DocumentType") <*>
+                     (x .:? "Hash")
+                     <*> (x .:? "SchemaVersion")
+                     <*> (x .:? "Sha1")
+                     <*> (x .:? "DefaultVersion")
+                     <*> (x .:? "Owner")
+                     <*> (x .:? "PlatformTypes" .!= mempty)
+                     <*> (x .:? "CreatedDate")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "HashType")
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "Tags" .!= mempty)
+                     <*> (x .:? "LatestVersion"))
+
+instance Hashable DocumentDescription where
+
+instance NFData DocumentDescription where
+
+-- | Describes a filter.
+--
+--
+--
+-- /See:/ 'documentFilter' smart constructor.
+data DocumentFilter = DocumentFilter'
+  { _dfKey   :: !DocumentFilterKey
+  , _dfValue :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dfKey' - The name of the filter.
+--
+-- * 'dfValue' - The value of the filter.
+documentFilter
+    :: DocumentFilterKey -- ^ 'dfKey'
+    -> Text -- ^ 'dfValue'
+    -> DocumentFilter
+documentFilter pKey_ pValue_ =
+  DocumentFilter' {_dfKey = pKey_, _dfValue = pValue_}
+
+
+-- | The name of the filter.
+dfKey :: Lens' DocumentFilter DocumentFilterKey
+dfKey = lens _dfKey (\ s a -> s{_dfKey = a});
+
+-- | The value of the filter.
+dfValue :: Lens' DocumentFilter Text
+dfValue = lens _dfValue (\ s a -> s{_dfValue = a});
+
+instance Hashable DocumentFilter where
+
+instance NFData DocumentFilter where
+
+instance ToJSON DocumentFilter where
+        toJSON DocumentFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("key" .= _dfKey), Just ("value" .= _dfValue)])
+
+-- | Describes the name of a Systems Manager document.
+--
+--
+--
+-- /See:/ 'documentIdentifier' smart constructor.
+data DocumentIdentifier = DocumentIdentifier'
+  { _diDocumentType    :: !(Maybe DocumentType)
+  , _diSchemaVersion   :: !(Maybe Text)
+  , _diOwner           :: !(Maybe Text)
+  , _diPlatformTypes   :: !(Maybe [PlatformType])
+  , _diName            :: !(Maybe Text)
+  , _diDocumentVersion :: !(Maybe Text)
+  , _diTags            :: !(Maybe [Tag])
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentIdentifier' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'diDocumentType' - The document type.
+--
+-- * 'diSchemaVersion' - The schema version.
+--
+-- * 'diOwner' - The AWS user account that created the document.
+--
+-- * 'diPlatformTypes' - The operating system platform.
+--
+-- * 'diName' - The name of the Systems Manager document.
+--
+-- * 'diDocumentVersion' - The document version.
+--
+-- * 'diTags' - The tags, or metadata, that have been applied to the document.
+documentIdentifier
+    :: DocumentIdentifier
+documentIdentifier =
+  DocumentIdentifier'
+  { _diDocumentType = Nothing
+  , _diSchemaVersion = Nothing
+  , _diOwner = Nothing
+  , _diPlatformTypes = Nothing
+  , _diName = Nothing
+  , _diDocumentVersion = Nothing
+  , _diTags = Nothing
+  }
+
+
+-- | The document type.
+diDocumentType :: Lens' DocumentIdentifier (Maybe DocumentType)
+diDocumentType = lens _diDocumentType (\ s a -> s{_diDocumentType = a});
+
+-- | The schema version.
+diSchemaVersion :: Lens' DocumentIdentifier (Maybe Text)
+diSchemaVersion = lens _diSchemaVersion (\ s a -> s{_diSchemaVersion = a});
+
+-- | The AWS user account that created the document.
+diOwner :: Lens' DocumentIdentifier (Maybe Text)
+diOwner = lens _diOwner (\ s a -> s{_diOwner = a});
+
+-- | The operating system platform.
+diPlatformTypes :: Lens' DocumentIdentifier [PlatformType]
+diPlatformTypes = lens _diPlatformTypes (\ s a -> s{_diPlatformTypes = a}) . _Default . _Coerce;
+
+-- | The name of the Systems Manager document.
+diName :: Lens' DocumentIdentifier (Maybe Text)
+diName = lens _diName (\ s a -> s{_diName = a});
+
+-- | The document version.
+diDocumentVersion :: Lens' DocumentIdentifier (Maybe Text)
+diDocumentVersion = lens _diDocumentVersion (\ s a -> s{_diDocumentVersion = a});
+
+-- | The tags, or metadata, that have been applied to the document.
+diTags :: Lens' DocumentIdentifier [Tag]
+diTags = lens _diTags (\ s a -> s{_diTags = a}) . _Default . _Coerce;
+
+instance FromJSON DocumentIdentifier where
+        parseJSON
+          = withObject "DocumentIdentifier"
+              (\ x ->
+                 DocumentIdentifier' <$>
+                   (x .:? "DocumentType") <*> (x .:? "SchemaVersion")
+                     <*> (x .:? "Owner")
+                     <*> (x .:? "PlatformTypes" .!= mempty)
+                     <*> (x .:? "Name")
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "Tags" .!= mempty))
+
+instance Hashable DocumentIdentifier where
+
+instance NFData DocumentIdentifier where
+
+-- | One or more filters. Use a filter to return a more specific list of documents.
+--
+--
+-- For keys, you can specify one or more tags that have been applied to a document.
+--
+-- Other valid values include Owner, Name, PlatformTypes, and DocumentType.
+--
+-- Note that only one Owner can be specified in a request. For example: @Key=Owner,Values=Self@ .
+--
+-- If you use Name as a key, you can use a name prefix to return a list of documents. For example, in the AWS CLI, to return a list of all documents that begin with @Te@ , run the following command:
+--
+-- @aws ssm list-documents --filters Key=Name,Values=Te@
+--
+-- If you specify more than two keys, only documents that are identified by all the tags are returned in the results. If you specify more than two values for a key, documents that are identified by any of the values are returned in the results.
+--
+-- To specify a custom key and value pair, use the format @Key=tag:[tagName],Values=[valueName]@ .
+--
+-- For example, if you created a Key called region and are using the AWS CLI to call the @list-documents@ command:
+--
+-- @aws ssm list-documents --filters Key=tag:region,Values=east,west Key=Owner,Values=Self@
+--
+--
+-- /See:/ 'documentKeyValuesFilter' smart constructor.
+data DocumentKeyValuesFilter = DocumentKeyValuesFilter'
+  { _dkvfValues :: !(Maybe [Text])
+  , _dkvfKey    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentKeyValuesFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dkvfValues' - The value for the filter key.
+--
+-- * 'dkvfKey' - The name of the filter key.
+documentKeyValuesFilter
+    :: DocumentKeyValuesFilter
+documentKeyValuesFilter =
+  DocumentKeyValuesFilter' {_dkvfValues = Nothing, _dkvfKey = Nothing}
+
+
+-- | The value for the filter key.
+dkvfValues :: Lens' DocumentKeyValuesFilter [Text]
+dkvfValues = lens _dkvfValues (\ s a -> s{_dkvfValues = a}) . _Default . _Coerce;
+
+-- | The name of the filter key.
+dkvfKey :: Lens' DocumentKeyValuesFilter (Maybe Text)
+dkvfKey = lens _dkvfKey (\ s a -> s{_dkvfKey = a});
+
+instance Hashable DocumentKeyValuesFilter where
+
+instance NFData DocumentKeyValuesFilter where
+
+instance ToJSON DocumentKeyValuesFilter where
+        toJSON DocumentKeyValuesFilter'{..}
+          = object
+              (catMaybes
+                 [("Values" .=) <$> _dkvfValues,
+                  ("Key" .=) <$> _dkvfKey])
+
+-- | Parameters specified in a System Manager document that execute on the server when the command is run.
+--
+--
+--
+-- /See:/ 'documentParameter' smart constructor.
+data DocumentParameter = DocumentParameter'
+  { _dpName         :: !(Maybe Text)
+  , _dpDefaultValue :: !(Maybe Text)
+  , _dpType         :: !(Maybe DocumentParameterType)
+  , _dpDescription  :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentParameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dpName' - The name of the parameter.
+--
+-- * 'dpDefaultValue' - If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional.
+--
+-- * 'dpType' - The type of parameter. The type can be either String or StringList.
+--
+-- * 'dpDescription' - A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional.
+documentParameter
+    :: DocumentParameter
+documentParameter =
+  DocumentParameter'
+  { _dpName = Nothing
+  , _dpDefaultValue = Nothing
+  , _dpType = Nothing
+  , _dpDescription = Nothing
+  }
+
+
+-- | The name of the parameter.
+dpName :: Lens' DocumentParameter (Maybe Text)
+dpName = lens _dpName (\ s a -> s{_dpName = a});
+
+-- | If specified, the default values for the parameters. Parameters without a default value are required. Parameters with a default value are optional.
+dpDefaultValue :: Lens' DocumentParameter (Maybe Text)
+dpDefaultValue = lens _dpDefaultValue (\ s a -> s{_dpDefaultValue = a});
+
+-- | The type of parameter. The type can be either String or StringList.
+dpType :: Lens' DocumentParameter (Maybe DocumentParameterType)
+dpType = lens _dpType (\ s a -> s{_dpType = a});
+
+-- | A description of what the parameter does, how to use it, the default value, and whether or not the parameter is optional.
+dpDescription :: Lens' DocumentParameter (Maybe Text)
+dpDescription = lens _dpDescription (\ s a -> s{_dpDescription = a});
+
+instance FromJSON DocumentParameter where
+        parseJSON
+          = withObject "DocumentParameter"
+              (\ x ->
+                 DocumentParameter' <$>
+                   (x .:? "Name") <*> (x .:? "DefaultValue") <*>
+                     (x .:? "Type")
+                     <*> (x .:? "Description"))
+
+instance Hashable DocumentParameter where
+
+instance NFData DocumentParameter where
+
+-- | Version information about the document.
+--
+--
+--
+-- /See:/ 'documentVersionInfo' smart constructor.
+data DocumentVersionInfo = DocumentVersionInfo'
+  { _dviCreatedDate      :: !(Maybe POSIX)
+  , _dviName             :: !(Maybe Text)
+  , _dviDocumentVersion  :: !(Maybe Text)
+  , _dviIsDefaultVersion :: !(Maybe Bool)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DocumentVersionInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dviCreatedDate' - The date the document was created.
+--
+-- * 'dviName' - The document name.
+--
+-- * 'dviDocumentVersion' - The document version.
+--
+-- * 'dviIsDefaultVersion' - An identifier for the default version of the document.
+documentVersionInfo
+    :: DocumentVersionInfo
+documentVersionInfo =
+  DocumentVersionInfo'
+  { _dviCreatedDate = Nothing
+  , _dviName = Nothing
+  , _dviDocumentVersion = Nothing
+  , _dviIsDefaultVersion = Nothing
+  }
+
+
+-- | The date the document was created.
+dviCreatedDate :: Lens' DocumentVersionInfo (Maybe UTCTime)
+dviCreatedDate = lens _dviCreatedDate (\ s a -> s{_dviCreatedDate = a}) . mapping _Time;
+
+-- | The document name.
+dviName :: Lens' DocumentVersionInfo (Maybe Text)
+dviName = lens _dviName (\ s a -> s{_dviName = a});
+
+-- | The document version.
+dviDocumentVersion :: Lens' DocumentVersionInfo (Maybe Text)
+dviDocumentVersion = lens _dviDocumentVersion (\ s a -> s{_dviDocumentVersion = a});
+
+-- | An identifier for the default version of the document.
+dviIsDefaultVersion :: Lens' DocumentVersionInfo (Maybe Bool)
+dviIsDefaultVersion = lens _dviIsDefaultVersion (\ s a -> s{_dviIsDefaultVersion = a});
+
+instance FromJSON DocumentVersionInfo where
+        parseJSON
+          = withObject "DocumentVersionInfo"
+              (\ x ->
+                 DocumentVersionInfo' <$>
+                   (x .:? "CreatedDate") <*> (x .:? "Name") <*>
+                     (x .:? "DocumentVersion")
+                     <*> (x .:? "IsDefaultVersion"))
+
+instance Hashable DocumentVersionInfo where
+
+instance NFData DocumentVersionInfo where
+
+-- | The EffectivePatch structure defines metadata about a patch along with the approval state of the patch in a particular patch baseline. The approval state includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved.
+--
+--
+--
+-- /See:/ 'effectivePatch' smart constructor.
+data EffectivePatch = EffectivePatch'
+  { _epPatch       :: !(Maybe Patch)
+  , _epPatchStatus :: !(Maybe PatchStatus)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'EffectivePatch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'epPatch' - Provides metadata for a patch, including information such as the KB ID, severity, classification and a URL for where more information can be obtained about the patch.
+--
+-- * 'epPatchStatus' - The status of the patch in a patch baseline. This includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved.
+effectivePatch
+    :: EffectivePatch
+effectivePatch = EffectivePatch' {_epPatch = Nothing, _epPatchStatus = Nothing}
+
+
+-- | Provides metadata for a patch, including information such as the KB ID, severity, classification and a URL for where more information can be obtained about the patch.
+epPatch :: Lens' EffectivePatch (Maybe Patch)
+epPatch = lens _epPatch (\ s a -> s{_epPatch = a});
+
+-- | The status of the patch in a patch baseline. This includes information about whether the patch is currently approved, due to be approved by a rule, explicitly approved, or explicitly rejected and the date the patch was or will be approved.
+epPatchStatus :: Lens' EffectivePatch (Maybe PatchStatus)
+epPatchStatus = lens _epPatchStatus (\ s a -> s{_epPatchStatus = a});
+
+instance FromJSON EffectivePatch where
+        parseJSON
+          = withObject "EffectivePatch"
+              (\ x ->
+                 EffectivePatch' <$>
+                   (x .:? "Patch") <*> (x .:? "PatchStatus"))
+
+instance Hashable EffectivePatch where
+
+instance NFData EffectivePatch where
+
+-- | Describes a failed association.
+--
+--
+--
+-- /See:/ 'failedCreateAssociation' smart constructor.
+data FailedCreateAssociation = FailedCreateAssociation'
+  { _fcaEntry   :: !(Maybe CreateAssociationBatchRequestEntry)
+  , _fcaFault   :: !(Maybe Fault)
+  , _fcaMessage :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FailedCreateAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fcaEntry' - The association.
+--
+-- * 'fcaFault' - The source of the failure.
+--
+-- * 'fcaMessage' - A description of the failure.
+failedCreateAssociation
+    :: FailedCreateAssociation
+failedCreateAssociation =
+  FailedCreateAssociation'
+  {_fcaEntry = Nothing, _fcaFault = Nothing, _fcaMessage = Nothing}
+
+
+-- | The association.
+fcaEntry :: Lens' FailedCreateAssociation (Maybe CreateAssociationBatchRequestEntry)
+fcaEntry = lens _fcaEntry (\ s a -> s{_fcaEntry = a});
+
+-- | The source of the failure.
+fcaFault :: Lens' FailedCreateAssociation (Maybe Fault)
+fcaFault = lens _fcaFault (\ s a -> s{_fcaFault = a});
+
+-- | A description of the failure.
+fcaMessage :: Lens' FailedCreateAssociation (Maybe Text)
+fcaMessage = lens _fcaMessage (\ s a -> s{_fcaMessage = a});
+
+instance FromJSON FailedCreateAssociation where
+        parseJSON
+          = withObject "FailedCreateAssociation"
+              (\ x ->
+                 FailedCreateAssociation' <$>
+                   (x .:? "Entry") <*> (x .:? "Fault") <*>
+                     (x .:? "Message"))
+
+instance Hashable FailedCreateAssociation where
+
+instance NFData FailedCreateAssociation where
+
+-- | Information about an Automation failure.
+--
+--
+--
+-- /See:/ 'failureDetails' smart constructor.
+data FailureDetails = FailureDetails'
+  { _fdFailureType  :: !(Maybe Text)
+  , _fdFailureStage :: !(Maybe Text)
+  , _fdDetails      :: !(Maybe (Map Text [Text]))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FailureDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fdFailureType' - The type of Automation failure. Failure types include the following: Action, Permission, Throttling, Verification, Internal.
+--
+-- * 'fdFailureStage' - The stage of the Automation execution when the failure occurred. The stages include the following: InputValidation, PreVerification, Invocation, PostVerification.
+--
+-- * 'fdDetails' - Detailed information about the Automation step failure.
+failureDetails
+    :: FailureDetails
+failureDetails =
+  FailureDetails'
+  {_fdFailureType = Nothing, _fdFailureStage = Nothing, _fdDetails = Nothing}
+
+
+-- | The type of Automation failure. Failure types include the following: Action, Permission, Throttling, Verification, Internal.
+fdFailureType :: Lens' FailureDetails (Maybe Text)
+fdFailureType = lens _fdFailureType (\ s a -> s{_fdFailureType = a});
+
+-- | The stage of the Automation execution when the failure occurred. The stages include the following: InputValidation, PreVerification, Invocation, PostVerification.
+fdFailureStage :: Lens' FailureDetails (Maybe Text)
+fdFailureStage = lens _fdFailureStage (\ s a -> s{_fdFailureStage = a});
+
+-- | Detailed information about the Automation step failure.
+fdDetails :: Lens' FailureDetails (HashMap Text [Text])
+fdDetails = lens _fdDetails (\ s a -> s{_fdDetails = a}) . _Default . _Map;
+
+instance FromJSON FailureDetails where
+        parseJSON
+          = withObject "FailureDetails"
+              (\ x ->
+                 FailureDetails' <$>
+                   (x .:? "FailureType") <*> (x .:? "FailureStage") <*>
+                     (x .:? "Details" .!= mempty))
+
+instance Hashable FailureDetails where
+
+instance NFData FailureDetails where
+
+-- | Status information about the aggregated associations.
+--
+--
+--
+-- /See:/ 'instanceAggregatedAssociationOverview' smart constructor.
+data InstanceAggregatedAssociationOverview = InstanceAggregatedAssociationOverview'
+  { _iaaoDetailedStatus                           :: !(Maybe Text)
+  , _iaaoInstanceAssociationStatusAggregatedCount :: !(Maybe (Map Text Int))
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceAggregatedAssociationOverview' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaaoDetailedStatus' - Detailed status information about the aggregated associations.
+--
+-- * 'iaaoInstanceAssociationStatusAggregatedCount' - The number of associations for the instance(s).
+instanceAggregatedAssociationOverview
+    :: InstanceAggregatedAssociationOverview
+instanceAggregatedAssociationOverview =
+  InstanceAggregatedAssociationOverview'
+  { _iaaoDetailedStatus = Nothing
+  , _iaaoInstanceAssociationStatusAggregatedCount = Nothing
+  }
+
+
+-- | Detailed status information about the aggregated associations.
+iaaoDetailedStatus :: Lens' InstanceAggregatedAssociationOverview (Maybe Text)
+iaaoDetailedStatus = lens _iaaoDetailedStatus (\ s a -> s{_iaaoDetailedStatus = a});
+
+-- | The number of associations for the instance(s).
+iaaoInstanceAssociationStatusAggregatedCount :: Lens' InstanceAggregatedAssociationOverview (HashMap Text Int)
+iaaoInstanceAssociationStatusAggregatedCount = lens _iaaoInstanceAssociationStatusAggregatedCount (\ s a -> s{_iaaoInstanceAssociationStatusAggregatedCount = a}) . _Default . _Map;
+
+instance FromJSON
+           InstanceAggregatedAssociationOverview
+         where
+        parseJSON
+          = withObject "InstanceAggregatedAssociationOverview"
+              (\ x ->
+                 InstanceAggregatedAssociationOverview' <$>
+                   (x .:? "DetailedStatus") <*>
+                     (x .:? "InstanceAssociationStatusAggregatedCount" .!=
+                        mempty))
+
+instance Hashable
+           InstanceAggregatedAssociationOverview
+         where
+
+instance NFData InstanceAggregatedAssociationOverview
+         where
+
+-- | One or more association documents on the instance.
+--
+--
+--
+-- /See:/ 'instanceAssociation' smart constructor.
+data InstanceAssociation = InstanceAssociation'
+  { _iaAssociationId      :: !(Maybe Text)
+  , _iaInstanceId         :: !(Maybe Text)
+  , _iaContent            :: !(Maybe Text)
+  , _iaAssociationVersion :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceAssociation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaAssociationId' - The association ID.
+--
+-- * 'iaInstanceId' - The instance ID.
+--
+-- * 'iaContent' - The content of the association document for the instance(s).
+--
+-- * 'iaAssociationVersion' - Version information for the association on the instance.
+instanceAssociation
+    :: InstanceAssociation
+instanceAssociation =
+  InstanceAssociation'
+  { _iaAssociationId = Nothing
+  , _iaInstanceId = Nothing
+  , _iaContent = Nothing
+  , _iaAssociationVersion = Nothing
+  }
+
+
+-- | The association ID.
+iaAssociationId :: Lens' InstanceAssociation (Maybe Text)
+iaAssociationId = lens _iaAssociationId (\ s a -> s{_iaAssociationId = a});
+
+-- | The instance ID.
+iaInstanceId :: Lens' InstanceAssociation (Maybe Text)
+iaInstanceId = lens _iaInstanceId (\ s a -> s{_iaInstanceId = a});
+
+-- | The content of the association document for the instance(s).
+iaContent :: Lens' InstanceAssociation (Maybe Text)
+iaContent = lens _iaContent (\ s a -> s{_iaContent = a});
+
+-- | Version information for the association on the instance.
+iaAssociationVersion :: Lens' InstanceAssociation (Maybe Text)
+iaAssociationVersion = lens _iaAssociationVersion (\ s a -> s{_iaAssociationVersion = a});
+
+instance FromJSON InstanceAssociation where
+        parseJSON
+          = withObject "InstanceAssociation"
+              (\ x ->
+                 InstanceAssociation' <$>
+                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
+                     (x .:? "Content")
+                     <*> (x .:? "AssociationVersion"))
+
+instance Hashable InstanceAssociation where
+
+instance NFData InstanceAssociation where
+
+-- | An Amazon S3 bucket where you want to store the results of this request.
+--
+--
+--
+-- /See:/ 'instanceAssociationOutputLocation' smart constructor.
+newtype InstanceAssociationOutputLocation = InstanceAssociationOutputLocation'
+  { _iaolS3Location :: Maybe S3OutputLocation
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceAssociationOutputLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaolS3Location' - An Amazon S3 bucket where you want to store the results of this request.
+instanceAssociationOutputLocation
+    :: InstanceAssociationOutputLocation
+instanceAssociationOutputLocation =
+  InstanceAssociationOutputLocation' {_iaolS3Location = Nothing}
+
+
+-- | An Amazon S3 bucket where you want to store the results of this request.
+iaolS3Location :: Lens' InstanceAssociationOutputLocation (Maybe S3OutputLocation)
+iaolS3Location = lens _iaolS3Location (\ s a -> s{_iaolS3Location = a});
+
+instance FromJSON InstanceAssociationOutputLocation
+         where
+        parseJSON
+          = withObject "InstanceAssociationOutputLocation"
+              (\ x ->
+                 InstanceAssociationOutputLocation' <$>
+                   (x .:? "S3Location"))
+
+instance Hashable InstanceAssociationOutputLocation
+         where
+
+instance NFData InstanceAssociationOutputLocation
+         where
+
+instance ToJSON InstanceAssociationOutputLocation
+         where
+        toJSON InstanceAssociationOutputLocation'{..}
+          = object
+              (catMaybes [("S3Location" .=) <$> _iaolS3Location])
+
+-- | The URL of Amazon S3 bucket where you want to store the results of this request.
+--
+--
+--
+-- /See:/ 'instanceAssociationOutputURL' smart constructor.
+newtype InstanceAssociationOutputURL = InstanceAssociationOutputURL'
+  { _iaouS3OutputURL :: Maybe S3OutputURL
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceAssociationOutputURL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iaouS3OutputURL' - The URL of Amazon S3 bucket where you want to store the results of this request.
+instanceAssociationOutputURL
+    :: InstanceAssociationOutputURL
+instanceAssociationOutputURL =
+  InstanceAssociationOutputURL' {_iaouS3OutputURL = Nothing}
+
+
+-- | The URL of Amazon S3 bucket where you want to store the results of this request.
+iaouS3OutputURL :: Lens' InstanceAssociationOutputURL (Maybe S3OutputURL)
+iaouS3OutputURL = lens _iaouS3OutputURL (\ s a -> s{_iaouS3OutputURL = a});
+
+instance FromJSON InstanceAssociationOutputURL where
+        parseJSON
+          = withObject "InstanceAssociationOutputURL"
+              (\ x ->
+                 InstanceAssociationOutputURL' <$>
+                   (x .:? "S3OutputUrl"))
+
+instance Hashable InstanceAssociationOutputURL where
+
+instance NFData InstanceAssociationOutputURL where
+
+-- | Status information about the instance association.
+--
+--
+--
+-- /See:/ 'instanceAssociationStatusInfo' smart constructor.
+data InstanceAssociationStatusInfo = InstanceAssociationStatusInfo'
+  { _iasiAssociationId      :: !(Maybe Text)
+  , _iasiInstanceId         :: !(Maybe Text)
+  , _iasiDetailedStatus     :: !(Maybe Text)
+  , _iasiStatus             :: !(Maybe Text)
+  , _iasiOutputURL          :: !(Maybe InstanceAssociationOutputURL)
+  , _iasiExecutionSummary   :: !(Maybe Text)
+  , _iasiName               :: !(Maybe Text)
+  , _iasiErrorCode          :: !(Maybe Text)
+  , _iasiDocumentVersion    :: !(Maybe Text)
+  , _iasiAssociationVersion :: !(Maybe Text)
+  , _iasiExecutionDate      :: !(Maybe POSIX)
+  , _iasiAssociationName    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceAssociationStatusInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iasiAssociationId' - The association ID.
+--
+-- * 'iasiInstanceId' - The instance ID where the association was created.
+--
+-- * 'iasiDetailedStatus' - Detailed status information about the instance association.
+--
+-- * 'iasiStatus' - Status information about the instance association.
+--
+-- * 'iasiOutputURL' - A URL for an Amazon S3 bucket where you want to store the results of this request.
+--
+-- * 'iasiExecutionSummary' - Summary information about association execution.
+--
+-- * 'iasiName' - The name of the association.
+--
+-- * 'iasiErrorCode' - An error code returned by the request to create the association.
+--
+-- * 'iasiDocumentVersion' - The association document verions.
+--
+-- * 'iasiAssociationVersion' - The version of the association applied to the instance.
+--
+-- * 'iasiExecutionDate' - The date the instance association executed.
+--
+-- * 'iasiAssociationName' - The name of the association applied to the instance.
+instanceAssociationStatusInfo
+    :: InstanceAssociationStatusInfo
+instanceAssociationStatusInfo =
+  InstanceAssociationStatusInfo'
+  { _iasiAssociationId = Nothing
+  , _iasiInstanceId = Nothing
+  , _iasiDetailedStatus = Nothing
+  , _iasiStatus = Nothing
+  , _iasiOutputURL = Nothing
+  , _iasiExecutionSummary = Nothing
+  , _iasiName = Nothing
+  , _iasiErrorCode = Nothing
+  , _iasiDocumentVersion = Nothing
+  , _iasiAssociationVersion = Nothing
+  , _iasiExecutionDate = Nothing
+  , _iasiAssociationName = Nothing
+  }
+
+
+-- | The association ID.
+iasiAssociationId :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiAssociationId = lens _iasiAssociationId (\ s a -> s{_iasiAssociationId = a});
+
+-- | The instance ID where the association was created.
+iasiInstanceId :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiInstanceId = lens _iasiInstanceId (\ s a -> s{_iasiInstanceId = a});
+
+-- | Detailed status information about the instance association.
+iasiDetailedStatus :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiDetailedStatus = lens _iasiDetailedStatus (\ s a -> s{_iasiDetailedStatus = a});
+
+-- | Status information about the instance association.
+iasiStatus :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiStatus = lens _iasiStatus (\ s a -> s{_iasiStatus = a});
+
+-- | A URL for an Amazon S3 bucket where you want to store the results of this request.
+iasiOutputURL :: Lens' InstanceAssociationStatusInfo (Maybe InstanceAssociationOutputURL)
+iasiOutputURL = lens _iasiOutputURL (\ s a -> s{_iasiOutputURL = a});
+
+-- | Summary information about association execution.
+iasiExecutionSummary :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiExecutionSummary = lens _iasiExecutionSummary (\ s a -> s{_iasiExecutionSummary = a});
+
+-- | The name of the association.
+iasiName :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiName = lens _iasiName (\ s a -> s{_iasiName = a});
+
+-- | An error code returned by the request to create the association.
+iasiErrorCode :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiErrorCode = lens _iasiErrorCode (\ s a -> s{_iasiErrorCode = a});
+
+-- | The association document verions.
+iasiDocumentVersion :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiDocumentVersion = lens _iasiDocumentVersion (\ s a -> s{_iasiDocumentVersion = a});
+
+-- | The version of the association applied to the instance.
+iasiAssociationVersion :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiAssociationVersion = lens _iasiAssociationVersion (\ s a -> s{_iasiAssociationVersion = a});
+
+-- | The date the instance association executed.
+iasiExecutionDate :: Lens' InstanceAssociationStatusInfo (Maybe UTCTime)
+iasiExecutionDate = lens _iasiExecutionDate (\ s a -> s{_iasiExecutionDate = a}) . mapping _Time;
+
+-- | The name of the association applied to the instance.
+iasiAssociationName :: Lens' InstanceAssociationStatusInfo (Maybe Text)
+iasiAssociationName = lens _iasiAssociationName (\ s a -> s{_iasiAssociationName = a});
+
+instance FromJSON InstanceAssociationStatusInfo where
+        parseJSON
+          = withObject "InstanceAssociationStatusInfo"
+              (\ x ->
+                 InstanceAssociationStatusInfo' <$>
+                   (x .:? "AssociationId") <*> (x .:? "InstanceId") <*>
+                     (x .:? "DetailedStatus")
+                     <*> (x .:? "Status")
+                     <*> (x .:? "OutputUrl")
+                     <*> (x .:? "ExecutionSummary")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "ErrorCode")
+                     <*> (x .:? "DocumentVersion")
+                     <*> (x .:? "AssociationVersion")
+                     <*> (x .:? "ExecutionDate")
+                     <*> (x .:? "AssociationName"))
+
+instance Hashable InstanceAssociationStatusInfo where
+
+instance NFData InstanceAssociationStatusInfo where
+
+-- | Describes a filter for a specific list of instances.
+--
+--
+--
+-- /See:/ 'instanceInformation' smart constructor.
+data InstanceInformation = InstanceInformation'
+  { _iiInstanceId :: !(Maybe Text)
+  , _iiPingStatus :: !(Maybe PingStatus)
+  , _iiIPAddress :: !(Maybe Text)
+  , _iiResourceType :: !(Maybe ResourceType)
+  , _iiRegistrationDate :: !(Maybe POSIX)
+  , _iiPlatformVersion :: !(Maybe Text)
+  , _iiIsLatestVersion :: !(Maybe Bool)
+  , _iiAgentVersion :: !(Maybe Text)
+  , _iiLastPingDateTime :: !(Maybe POSIX)
+  , _iiLastSuccessfulAssociationExecutionDate :: !(Maybe POSIX)
+  , _iiActivationId :: !(Maybe Text)
+  , _iiName :: !(Maybe Text)
+  , _iiPlatformType :: !(Maybe PlatformType)
+  , _iiAssociationOverview :: !(Maybe InstanceAggregatedAssociationOverview)
+  , _iiAssociationStatus :: !(Maybe Text)
+  , _iiLastAssociationExecutionDate :: !(Maybe POSIX)
+  , _iiPlatformName :: !(Maybe Text)
+  , _iiComputerName :: !(Maybe Text)
+  , _iiIAMRole :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceInformation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiInstanceId' - The instance ID.
+--
+-- * 'iiPingStatus' - Connection status of the SSM Agent.
+--
+-- * 'iiIPAddress' - The IP address of the managed instance.
+--
+-- * 'iiResourceType' - The type of instance. Instances are either EC2 instances or managed instances.
+--
+-- * 'iiRegistrationDate' - The date the server or VM was registered with AWS as a managed instance.
+--
+-- * 'iiPlatformVersion' - The version of the OS platform running on your instance.
+--
+-- * 'iiIsLatestVersion' - Indicates whether latest version of the SSM Agent is running on your instance.
+--
+-- * 'iiAgentVersion' - The version of the SSM Agent running on your Linux instance.
+--
+-- * 'iiLastPingDateTime' - The date and time when agent last pinged Systems Manager service.
+--
+-- * 'iiLastSuccessfulAssociationExecutionDate' - The last date the association was successfully run.
+--
+-- * 'iiActivationId' - The activation ID created by Systems Manager when the server or VM was registered.
+--
+-- * 'iiName' - The name of the managed instance.
+--
+-- * 'iiPlatformType' - The operating system platform type.
+--
+-- * 'iiAssociationOverview' - Information about the association.
+--
+-- * 'iiAssociationStatus' - The status of the association.
+--
+-- * 'iiLastAssociationExecutionDate' - The date the association was last executed.
+--
+-- * 'iiPlatformName' - The name of the operating system platform running on your instance.
+--
+-- * 'iiComputerName' - The fully qualified host name of the managed instance.
+--
+-- * 'iiIAMRole' - The Amazon Identity and Access Management (IAM) role assigned to EC2 instances or managed instances.
+instanceInformation
+    :: InstanceInformation
+instanceInformation =
+  InstanceInformation'
+  { _iiInstanceId = Nothing
+  , _iiPingStatus = Nothing
+  , _iiIPAddress = Nothing
+  , _iiResourceType = Nothing
+  , _iiRegistrationDate = Nothing
+  , _iiPlatformVersion = Nothing
+  , _iiIsLatestVersion = Nothing
+  , _iiAgentVersion = Nothing
+  , _iiLastPingDateTime = Nothing
+  , _iiLastSuccessfulAssociationExecutionDate = Nothing
+  , _iiActivationId = Nothing
+  , _iiName = Nothing
+  , _iiPlatformType = Nothing
+  , _iiAssociationOverview = Nothing
+  , _iiAssociationStatus = Nothing
+  , _iiLastAssociationExecutionDate = Nothing
+  , _iiPlatformName = Nothing
+  , _iiComputerName = Nothing
+  , _iiIAMRole = Nothing
+  }
+
+
+-- | The instance ID.
+iiInstanceId :: Lens' InstanceInformation (Maybe Text)
+iiInstanceId = lens _iiInstanceId (\ s a -> s{_iiInstanceId = a});
+
+-- | Connection status of the SSM Agent.
+iiPingStatus :: Lens' InstanceInformation (Maybe PingStatus)
+iiPingStatus = lens _iiPingStatus (\ s a -> s{_iiPingStatus = a});
+
+-- | The IP address of the managed instance.
+iiIPAddress :: Lens' InstanceInformation (Maybe Text)
+iiIPAddress = lens _iiIPAddress (\ s a -> s{_iiIPAddress = a});
+
+-- | The type of instance. Instances are either EC2 instances or managed instances.
+iiResourceType :: Lens' InstanceInformation (Maybe ResourceType)
+iiResourceType = lens _iiResourceType (\ s a -> s{_iiResourceType = a});
+
+-- | The date the server or VM was registered with AWS as a managed instance.
+iiRegistrationDate :: Lens' InstanceInformation (Maybe UTCTime)
+iiRegistrationDate = lens _iiRegistrationDate (\ s a -> s{_iiRegistrationDate = a}) . mapping _Time;
+
+-- | The version of the OS platform running on your instance.
+iiPlatformVersion :: Lens' InstanceInformation (Maybe Text)
+iiPlatformVersion = lens _iiPlatformVersion (\ s a -> s{_iiPlatformVersion = a});
+
+-- | Indicates whether latest version of the SSM Agent is running on your instance.
+iiIsLatestVersion :: Lens' InstanceInformation (Maybe Bool)
+iiIsLatestVersion = lens _iiIsLatestVersion (\ s a -> s{_iiIsLatestVersion = a});
+
+-- | The version of the SSM Agent running on your Linux instance.
+iiAgentVersion :: Lens' InstanceInformation (Maybe Text)
+iiAgentVersion = lens _iiAgentVersion (\ s a -> s{_iiAgentVersion = a});
+
+-- | The date and time when agent last pinged Systems Manager service.
+iiLastPingDateTime :: Lens' InstanceInformation (Maybe UTCTime)
+iiLastPingDateTime = lens _iiLastPingDateTime (\ s a -> s{_iiLastPingDateTime = a}) . mapping _Time;
+
+-- | The last date the association was successfully run.
+iiLastSuccessfulAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
+iiLastSuccessfulAssociationExecutionDate = lens _iiLastSuccessfulAssociationExecutionDate (\ s a -> s{_iiLastSuccessfulAssociationExecutionDate = a}) . mapping _Time;
+
+-- | The activation ID created by Systems Manager when the server or VM was registered.
+iiActivationId :: Lens' InstanceInformation (Maybe Text)
+iiActivationId = lens _iiActivationId (\ s a -> s{_iiActivationId = a});
+
+-- | The name of the managed instance.
+iiName :: Lens' InstanceInformation (Maybe Text)
+iiName = lens _iiName (\ s a -> s{_iiName = a});
+
+-- | The operating system platform type.
+iiPlatformType :: Lens' InstanceInformation (Maybe PlatformType)
+iiPlatformType = lens _iiPlatformType (\ s a -> s{_iiPlatformType = a});
+
+-- | Information about the association.
+iiAssociationOverview :: Lens' InstanceInformation (Maybe InstanceAggregatedAssociationOverview)
+iiAssociationOverview = lens _iiAssociationOverview (\ s a -> s{_iiAssociationOverview = a});
+
+-- | The status of the association.
+iiAssociationStatus :: Lens' InstanceInformation (Maybe Text)
+iiAssociationStatus = lens _iiAssociationStatus (\ s a -> s{_iiAssociationStatus = a});
+
+-- | The date the association was last executed.
+iiLastAssociationExecutionDate :: Lens' InstanceInformation (Maybe UTCTime)
+iiLastAssociationExecutionDate = lens _iiLastAssociationExecutionDate (\ s a -> s{_iiLastAssociationExecutionDate = a}) . mapping _Time;
+
+-- | The name of the operating system platform running on your instance.
+iiPlatformName :: Lens' InstanceInformation (Maybe Text)
+iiPlatformName = lens _iiPlatformName (\ s a -> s{_iiPlatformName = a});
+
+-- | The fully qualified host name of the managed instance.
+iiComputerName :: Lens' InstanceInformation (Maybe Text)
+iiComputerName = lens _iiComputerName (\ s a -> s{_iiComputerName = a});
+
+-- | The Amazon Identity and Access Management (IAM) role assigned to EC2 instances or managed instances.
+iiIAMRole :: Lens' InstanceInformation (Maybe Text)
+iiIAMRole = lens _iiIAMRole (\ s a -> s{_iiIAMRole = a});
+
+instance FromJSON InstanceInformation where
+        parseJSON
+          = withObject "InstanceInformation"
+              (\ x ->
+                 InstanceInformation' <$>
+                   (x .:? "InstanceId") <*> (x .:? "PingStatus") <*>
+                     (x .:? "IPAddress")
+                     <*> (x .:? "ResourceType")
+                     <*> (x .:? "RegistrationDate")
+                     <*> (x .:? "PlatformVersion")
+                     <*> (x .:? "IsLatestVersion")
+                     <*> (x .:? "AgentVersion")
+                     <*> (x .:? "LastPingDateTime")
+                     <*> (x .:? "LastSuccessfulAssociationExecutionDate")
+                     <*> (x .:? "ActivationId")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "PlatformType")
+                     <*> (x .:? "AssociationOverview")
+                     <*> (x .:? "AssociationStatus")
+                     <*> (x .:? "LastAssociationExecutionDate")
+                     <*> (x .:? "PlatformName")
+                     <*> (x .:? "ComputerName")
+                     <*> (x .:? "IamRole"))
+
+instance Hashable InstanceInformation where
+
+instance NFData InstanceInformation where
+
+-- | Describes a filter for a specific list of instances.
+--
+--
+--
+-- /See:/ 'instanceInformationFilter' smart constructor.
+data InstanceInformationFilter = InstanceInformationFilter'
+  { _iifKey      :: !InstanceInformationFilterKey
+  , _iifValueSet :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceInformationFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iifKey' - The name of the filter.
+--
+-- * 'iifValueSet' - The filter values.
+instanceInformationFilter
+    :: InstanceInformationFilterKey -- ^ 'iifKey'
+    -> NonEmpty Text -- ^ 'iifValueSet'
+    -> InstanceInformationFilter
+instanceInformationFilter pKey_ pValueSet_ =
+  InstanceInformationFilter'
+  {_iifKey = pKey_, _iifValueSet = _List1 # pValueSet_}
+
+
+-- | The name of the filter.
+iifKey :: Lens' InstanceInformationFilter InstanceInformationFilterKey
+iifKey = lens _iifKey (\ s a -> s{_iifKey = a});
+
+-- | The filter values.
+iifValueSet :: Lens' InstanceInformationFilter (NonEmpty Text)
+iifValueSet = lens _iifValueSet (\ s a -> s{_iifValueSet = a}) . _List1;
+
+instance Hashable InstanceInformationFilter where
+
+instance NFData InstanceInformationFilter where
+
+instance ToJSON InstanceInformationFilter where
+        toJSON InstanceInformationFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("key" .= _iifKey),
+                  Just ("valueSet" .= _iifValueSet)])
+
+-- | The filters to describe or get information about your managed instances.
+--
+--
+--
+-- /See:/ 'instanceInformationStringFilter' smart constructor.
+data InstanceInformationStringFilter = InstanceInformationStringFilter'
+  { _iisfKey    :: !Text
+  , _iisfValues :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstanceInformationStringFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iisfKey' - The filter key name to describe your instances. For example: "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|"Tag Key"
+--
+-- * 'iisfValues' - The filter values.
+instanceInformationStringFilter
+    :: Text -- ^ 'iisfKey'
+    -> NonEmpty Text -- ^ 'iisfValues'
+    -> InstanceInformationStringFilter
+instanceInformationStringFilter pKey_ pValues_ =
+  InstanceInformationStringFilter'
+  {_iisfKey = pKey_, _iisfValues = _List1 # pValues_}
+
+
+-- | The filter key name to describe your instances. For example: "InstanceIds"|"AgentVersion"|"PingStatus"|"PlatformTypes"|"ActivationIds"|"IamRole"|"ResourceType"|"AssociationStatus"|"Tag Key"
+iisfKey :: Lens' InstanceInformationStringFilter Text
+iisfKey = lens _iisfKey (\ s a -> s{_iisfKey = a});
+
+-- | The filter values.
+iisfValues :: Lens' InstanceInformationStringFilter (NonEmpty Text)
+iisfValues = lens _iisfValues (\ s a -> s{_iisfValues = a}) . _List1;
+
+instance Hashable InstanceInformationStringFilter
+         where
+
+instance NFData InstanceInformationStringFilter where
+
+instance ToJSON InstanceInformationStringFilter where
+        toJSON InstanceInformationStringFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _iisfKey),
+                  Just ("Values" .= _iisfValues)])
+
+-- | Defines the high-level patch compliance state for a managed instance, providing information about the number of installed, missing, not applicable, and failed patches along with metadata about the operation when this information was gathered for the instance.
+--
+--
+--
+-- /See:/ 'instancePatchState' smart constructor.
+data InstancePatchState = InstancePatchState'
+  { _ipsOwnerInformation    :: !(Maybe (Sensitive Text))
+  , _ipsFailedCount         :: !(Maybe Int)
+  , _ipsInstalledOtherCount :: !(Maybe Int)
+  , _ipsMissingCount        :: !(Maybe Int)
+  , _ipsNotApplicableCount  :: !(Maybe Int)
+  , _ipsInstalledCount      :: !(Maybe Int)
+  , _ipsSnapshotId          :: !(Maybe Text)
+  , _ipsInstanceId          :: !Text
+  , _ipsPatchGroup          :: !Text
+  , _ipsBaselineId          :: !Text
+  , _ipsOperationStartTime  :: !POSIX
+  , _ipsOperationEndTime    :: !POSIX
+  , _ipsOperation           :: !PatchOperationType
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancePatchState' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipsOwnerInformation' - Placeholder information, this field will always be empty in the current release of the service.
+--
+-- * 'ipsFailedCount' - The number of patches from the patch baseline that were attempted to be installed during the last patching operation, but failed to install.
+--
+-- * 'ipsInstalledOtherCount' - The number of patches not specified in the patch baseline that are installed on the instance.
+--
+-- * 'ipsMissingCount' - The number of patches from the patch baseline that are applicable for the instance but aren't currently installed.
+--
+-- * 'ipsNotApplicableCount' - The number of patches from the patch baseline that aren't applicable for the instance and hence aren't installed on the instance.
+--
+-- * 'ipsInstalledCount' - The number of patches from the patch baseline that are installed on the instance.
+--
+-- * 'ipsSnapshotId' - The ID of the patch baseline snapshot used during the patching operation when this compliance data was collected.
+--
+-- * 'ipsInstanceId' - The ID of the managed instance the high-level patch compliance information was collected for.
+--
+-- * 'ipsPatchGroup' - The name of the patch group the managed instance belongs to.
+--
+-- * 'ipsBaselineId' - The ID of the patch baseline used to patch the instance.
+--
+-- * 'ipsOperationStartTime' - The time the most recent patching operation was started on the instance.
+--
+-- * 'ipsOperationEndTime' - The time the most recent patching operation completed on the instance.
+--
+-- * 'ipsOperation' - The type of patching operation that was performed: SCAN (assess patch compliance state) or INSTALL (install missing patches).
+instancePatchState
+    :: Text -- ^ 'ipsInstanceId'
+    -> Text -- ^ 'ipsPatchGroup'
+    -> Text -- ^ 'ipsBaselineId'
+    -> UTCTime -- ^ 'ipsOperationStartTime'
+    -> UTCTime -- ^ 'ipsOperationEndTime'
+    -> PatchOperationType -- ^ 'ipsOperation'
+    -> InstancePatchState
+instancePatchState pInstanceId_ pPatchGroup_ pBaselineId_ pOperationStartTime_ pOperationEndTime_ pOperation_ =
+  InstancePatchState'
+  { _ipsOwnerInformation = Nothing
+  , _ipsFailedCount = Nothing
+  , _ipsInstalledOtherCount = Nothing
+  , _ipsMissingCount = Nothing
+  , _ipsNotApplicableCount = Nothing
+  , _ipsInstalledCount = Nothing
+  , _ipsSnapshotId = Nothing
+  , _ipsInstanceId = pInstanceId_
+  , _ipsPatchGroup = pPatchGroup_
+  , _ipsBaselineId = pBaselineId_
+  , _ipsOperationStartTime = _Time # pOperationStartTime_
+  , _ipsOperationEndTime = _Time # pOperationEndTime_
+  , _ipsOperation = pOperation_
+  }
+
+
+-- | Placeholder information, this field will always be empty in the current release of the service.
+ipsOwnerInformation :: Lens' InstancePatchState (Maybe Text)
+ipsOwnerInformation = lens _ipsOwnerInformation (\ s a -> s{_ipsOwnerInformation = a}) . mapping _Sensitive;
+
+-- | The number of patches from the patch baseline that were attempted to be installed during the last patching operation, but failed to install.
+ipsFailedCount :: Lens' InstancePatchState (Maybe Int)
+ipsFailedCount = lens _ipsFailedCount (\ s a -> s{_ipsFailedCount = a});
+
+-- | The number of patches not specified in the patch baseline that are installed on the instance.
+ipsInstalledOtherCount :: Lens' InstancePatchState (Maybe Int)
+ipsInstalledOtherCount = lens _ipsInstalledOtherCount (\ s a -> s{_ipsInstalledOtherCount = a});
+
+-- | The number of patches from the patch baseline that are applicable for the instance but aren't currently installed.
+ipsMissingCount :: Lens' InstancePatchState (Maybe Int)
+ipsMissingCount = lens _ipsMissingCount (\ s a -> s{_ipsMissingCount = a});
+
+-- | The number of patches from the patch baseline that aren't applicable for the instance and hence aren't installed on the instance.
+ipsNotApplicableCount :: Lens' InstancePatchState (Maybe Int)
+ipsNotApplicableCount = lens _ipsNotApplicableCount (\ s a -> s{_ipsNotApplicableCount = a});
+
+-- | The number of patches from the patch baseline that are installed on the instance.
+ipsInstalledCount :: Lens' InstancePatchState (Maybe Int)
+ipsInstalledCount = lens _ipsInstalledCount (\ s a -> s{_ipsInstalledCount = a});
+
+-- | The ID of the patch baseline snapshot used during the patching operation when this compliance data was collected.
+ipsSnapshotId :: Lens' InstancePatchState (Maybe Text)
+ipsSnapshotId = lens _ipsSnapshotId (\ s a -> s{_ipsSnapshotId = a});
+
+-- | The ID of the managed instance the high-level patch compliance information was collected for.
+ipsInstanceId :: Lens' InstancePatchState Text
+ipsInstanceId = lens _ipsInstanceId (\ s a -> s{_ipsInstanceId = a});
+
+-- | The name of the patch group the managed instance belongs to.
+ipsPatchGroup :: Lens' InstancePatchState Text
+ipsPatchGroup = lens _ipsPatchGroup (\ s a -> s{_ipsPatchGroup = a});
+
+-- | The ID of the patch baseline used to patch the instance.
+ipsBaselineId :: Lens' InstancePatchState Text
+ipsBaselineId = lens _ipsBaselineId (\ s a -> s{_ipsBaselineId = a});
+
+-- | The time the most recent patching operation was started on the instance.
+ipsOperationStartTime :: Lens' InstancePatchState UTCTime
+ipsOperationStartTime = lens _ipsOperationStartTime (\ s a -> s{_ipsOperationStartTime = a}) . _Time;
+
+-- | The time the most recent patching operation completed on the instance.
+ipsOperationEndTime :: Lens' InstancePatchState UTCTime
+ipsOperationEndTime = lens _ipsOperationEndTime (\ s a -> s{_ipsOperationEndTime = a}) . _Time;
+
+-- | The type of patching operation that was performed: SCAN (assess patch compliance state) or INSTALL (install missing patches).
+ipsOperation :: Lens' InstancePatchState PatchOperationType
+ipsOperation = lens _ipsOperation (\ s a -> s{_ipsOperation = a});
+
+instance FromJSON InstancePatchState where
+        parseJSON
+          = withObject "InstancePatchState"
+              (\ x ->
+                 InstancePatchState' <$>
+                   (x .:? "OwnerInformation") <*> (x .:? "FailedCount")
+                     <*> (x .:? "InstalledOtherCount")
+                     <*> (x .:? "MissingCount")
+                     <*> (x .:? "NotApplicableCount")
+                     <*> (x .:? "InstalledCount")
+                     <*> (x .:? "SnapshotId")
+                     <*> (x .: "InstanceId")
+                     <*> (x .: "PatchGroup")
+                     <*> (x .: "BaselineId")
+                     <*> (x .: "OperationStartTime")
+                     <*> (x .: "OperationEndTime")
+                     <*> (x .: "Operation"))
+
+instance Hashable InstancePatchState where
+
+instance NFData InstancePatchState where
+
+-- | Defines a filter used in DescribeInstancePatchStatesForPatchGroup used to scope down the information returned by the API.
+--
+--
+--
+-- /See:/ 'instancePatchStateFilter' smart constructor.
+data InstancePatchStateFilter = InstancePatchStateFilter'
+  { _ipsfKey    :: !Text
+  , _ipsfValues :: !(List1 Text)
+  , _ipsfType   :: !InstancePatchStateOperatorType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InstancePatchStateFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ipsfKey' - The key for the filter. Supported values are FailedCount, InstalledCount, InstalledOtherCount, MissingCount and NotApplicableCount.
+--
+-- * 'ipsfValues' - The value for the filter, must be an integer greater than or equal to 0.
+--
+-- * 'ipsfType' - The type of comparison that should be performed for the value: Equal, NotEqual, LessThan or GreaterThan.
+instancePatchStateFilter
+    :: Text -- ^ 'ipsfKey'
+    -> NonEmpty Text -- ^ 'ipsfValues'
+    -> InstancePatchStateOperatorType -- ^ 'ipsfType'
+    -> InstancePatchStateFilter
+instancePatchStateFilter pKey_ pValues_ pType_ =
+  InstancePatchStateFilter'
+  {_ipsfKey = pKey_, _ipsfValues = _List1 # pValues_, _ipsfType = pType_}
+
+
+-- | The key for the filter. Supported values are FailedCount, InstalledCount, InstalledOtherCount, MissingCount and NotApplicableCount.
+ipsfKey :: Lens' InstancePatchStateFilter Text
+ipsfKey = lens _ipsfKey (\ s a -> s{_ipsfKey = a});
+
+-- | The value for the filter, must be an integer greater than or equal to 0.
+ipsfValues :: Lens' InstancePatchStateFilter (NonEmpty Text)
+ipsfValues = lens _ipsfValues (\ s a -> s{_ipsfValues = a}) . _List1;
+
+-- | The type of comparison that should be performed for the value: Equal, NotEqual, LessThan or GreaterThan.
+ipsfType :: Lens' InstancePatchStateFilter InstancePatchStateOperatorType
+ipsfType = lens _ipsfType (\ s a -> s{_ipsfType = a});
+
+instance Hashable InstancePatchStateFilter where
+
+instance NFData InstancePatchStateFilter where
+
+instance ToJSON InstancePatchStateFilter where
+        toJSON InstancePatchStateFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _ipsfKey),
+                  Just ("Values" .= _ipsfValues),
+                  Just ("Type" .= _ipsfType)])
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+--
+--
+--
+-- /See:/ 'inventoryFilter' smart constructor.
+data InventoryFilter = InventoryFilter'
+  { _ifType   :: !(Maybe InventoryQueryOperatorType)
+  , _ifKey    :: !Text
+  , _ifValues :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ifType' - The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"
+--
+-- * 'ifKey' - The name of the filter key.
+--
+-- * 'ifValues' - Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal
+inventoryFilter
+    :: Text -- ^ 'ifKey'
+    -> NonEmpty Text -- ^ 'ifValues'
+    -> InventoryFilter
+inventoryFilter pKey_ pValues_ =
+  InventoryFilter'
+  {_ifType = Nothing, _ifKey = pKey_, _ifValues = _List1 # pValues_}
+
+
+-- | The type of filter. Valid values include the following: "Equal"|"NotEqual"|"BeginWith"|"LessThan"|"GreaterThan"
+ifType :: Lens' InventoryFilter (Maybe InventoryQueryOperatorType)
+ifType = lens _ifType (\ s a -> s{_ifType = a});
+
+-- | The name of the filter key.
+ifKey :: Lens' InventoryFilter Text
+ifKey = lens _ifKey (\ s a -> s{_ifKey = a});
+
+-- | Inventory filter values. Example: inventory filter where instance IDs are specified as values Key=AWS:InstanceInformation.InstanceId,Values= i-a12b3c4d5e6g, i-1a2b3c4d5e6,Type=Equal
+ifValues :: Lens' InventoryFilter (NonEmpty Text)
+ifValues = lens _ifValues (\ s a -> s{_ifValues = a}) . _List1;
+
+instance Hashable InventoryFilter where
+
+instance NFData InventoryFilter where
+
+instance ToJSON InventoryFilter where
+        toJSON InventoryFilter'{..}
+          = object
+              (catMaybes
+                 [("Type" .=) <$> _ifType, Just ("Key" .= _ifKey),
+                  Just ("Values" .= _ifValues)])
+
+-- | Information collected from managed instances based on your inventory policy document
+--
+--
+--
+-- /See:/ 'inventoryItem' smart constructor.
+data InventoryItem = InventoryItem'
+  { _iiContext       :: !(Maybe (Map Text Text))
+  , _iiContentHash   :: !(Maybe Text)
+  , _iiContent       :: !(Maybe [Map Text Text])
+  , _iiTypeName      :: !Text
+  , _iiSchemaVersion :: !Text
+  , _iiCaptureTime   :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiContext' - A map of associated properties for a specified inventory type. For example, with this attribute, you can specify the @ExecutionId@ , @ExecutionType@ , @ComplianceType@ properties of the @AWS:ComplianceItem@ type.
+--
+-- * 'iiContentHash' - MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update.
+--
+-- * 'iiContent' - The inventory data of the inventory type.
+--
+-- * 'iiTypeName' - The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.
+--
+-- * 'iiSchemaVersion' - The schema version for the inventory item.
+--
+-- * 'iiCaptureTime' - The time the inventory information was collected.
+inventoryItem
+    :: Text -- ^ 'iiTypeName'
+    -> Text -- ^ 'iiSchemaVersion'
+    -> Text -- ^ 'iiCaptureTime'
+    -> InventoryItem
+inventoryItem pTypeName_ pSchemaVersion_ pCaptureTime_ =
+  InventoryItem'
+  { _iiContext = Nothing
+  , _iiContentHash = Nothing
+  , _iiContent = Nothing
+  , _iiTypeName = pTypeName_
+  , _iiSchemaVersion = pSchemaVersion_
+  , _iiCaptureTime = pCaptureTime_
+  }
+
+
+-- | A map of associated properties for a specified inventory type. For example, with this attribute, you can specify the @ExecutionId@ , @ExecutionType@ , @ComplianceType@ properties of the @AWS:ComplianceItem@ type.
+iiContext :: Lens' InventoryItem (HashMap Text Text)
+iiContext = lens _iiContext (\ s a -> s{_iiContext = a}) . _Default . _Map;
+
+-- | MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update.
+iiContentHash :: Lens' InventoryItem (Maybe Text)
+iiContentHash = lens _iiContentHash (\ s a -> s{_iiContentHash = a});
+
+-- | The inventory data of the inventory type.
+iiContent :: Lens' InventoryItem [HashMap Text Text]
+iiContent = lens _iiContent (\ s a -> s{_iiContent = a}) . _Default . _Coerce;
+
+-- | The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.
+iiTypeName :: Lens' InventoryItem Text
+iiTypeName = lens _iiTypeName (\ s a -> s{_iiTypeName = a});
+
+-- | The schema version for the inventory item.
+iiSchemaVersion :: Lens' InventoryItem Text
+iiSchemaVersion = lens _iiSchemaVersion (\ s a -> s{_iiSchemaVersion = a});
+
+-- | The time the inventory information was collected.
+iiCaptureTime :: Lens' InventoryItem Text
+iiCaptureTime = lens _iiCaptureTime (\ s a -> s{_iiCaptureTime = a});
+
+instance Hashable InventoryItem where
+
+instance NFData InventoryItem where
+
+instance ToJSON InventoryItem where
+        toJSON InventoryItem'{..}
+          = object
+              (catMaybes
+                 [("Context" .=) <$> _iiContext,
+                  ("ContentHash" .=) <$> _iiContentHash,
+                  ("Content" .=) <$> _iiContent,
+                  Just ("TypeName" .= _iiTypeName),
+                  Just ("SchemaVersion" .= _iiSchemaVersion),
+                  Just ("CaptureTime" .= _iiCaptureTime)])
+
+-- | Attributes are the entries within the inventory item content. It contains name and value.
+--
+--
+--
+-- /See:/ 'inventoryItemAttribute' smart constructor.
+data InventoryItemAttribute = InventoryItemAttribute'
+  { _iiaName     :: !Text
+  , _iiaDataType :: !InventoryAttributeDataType
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryItemAttribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiaName' - Name of the inventory item attribute.
+--
+-- * 'iiaDataType' - The data type of the inventory item attribute.
+inventoryItemAttribute
+    :: Text -- ^ 'iiaName'
+    -> InventoryAttributeDataType -- ^ 'iiaDataType'
+    -> InventoryItemAttribute
+inventoryItemAttribute pName_ pDataType_ =
+  InventoryItemAttribute' {_iiaName = pName_, _iiaDataType = pDataType_}
+
+
+-- | Name of the inventory item attribute.
+iiaName :: Lens' InventoryItemAttribute Text
+iiaName = lens _iiaName (\ s a -> s{_iiaName = a});
+
+-- | The data type of the inventory item attribute.
+iiaDataType :: Lens' InventoryItemAttribute InventoryAttributeDataType
+iiaDataType = lens _iiaDataType (\ s a -> s{_iiaDataType = a});
+
+instance FromJSON InventoryItemAttribute where
+        parseJSON
+          = withObject "InventoryItemAttribute"
+              (\ x ->
+                 InventoryItemAttribute' <$>
+                   (x .: "Name") <*> (x .: "DataType"))
+
+instance Hashable InventoryItemAttribute where
+
+instance NFData InventoryItemAttribute where
+
+-- | The inventory item schema definition. Users can use this to compose inventory query filters.
+--
+--
+--
+-- /See:/ 'inventoryItemSchema' smart constructor.
+data InventoryItemSchema = InventoryItemSchema'
+  { _iisVersion    :: !(Maybe Text)
+  , _iisTypeName   :: !Text
+  , _iisAttributes :: !(List1 InventoryItemAttribute)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryItemSchema' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iisVersion' - The schema version for the inventory item.
+--
+-- * 'iisTypeName' - The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.
+--
+-- * 'iisAttributes' - The schema attributes for inventory. This contains data type and attribute name.
+inventoryItemSchema
+    :: Text -- ^ 'iisTypeName'
+    -> NonEmpty InventoryItemAttribute -- ^ 'iisAttributes'
+    -> InventoryItemSchema
+inventoryItemSchema pTypeName_ pAttributes_ =
+  InventoryItemSchema'
+  { _iisVersion = Nothing
+  , _iisTypeName = pTypeName_
+  , _iisAttributes = _List1 # pAttributes_
+  }
+
+
+-- | The schema version for the inventory item.
+iisVersion :: Lens' InventoryItemSchema (Maybe Text)
+iisVersion = lens _iisVersion (\ s a -> s{_iisVersion = a});
+
+-- | The name of the inventory type. Default inventory item type names start with AWS. Custom inventory type names will start with Custom. Default inventory item types include the following: AWS:AWSComponent, AWS:Application, AWS:InstanceInformation, AWS:Network, and AWS:WindowsUpdate.
+iisTypeName :: Lens' InventoryItemSchema Text
+iisTypeName = lens _iisTypeName (\ s a -> s{_iisTypeName = a});
+
+-- | The schema attributes for inventory. This contains data type and attribute name.
+iisAttributes :: Lens' InventoryItemSchema (NonEmpty InventoryItemAttribute)
+iisAttributes = lens _iisAttributes (\ s a -> s{_iisAttributes = a}) . _List1;
+
+instance FromJSON InventoryItemSchema where
+        parseJSON
+          = withObject "InventoryItemSchema"
+              (\ x ->
+                 InventoryItemSchema' <$>
+                   (x .:? "Version") <*> (x .: "TypeName") <*>
+                     (x .: "Attributes"))
+
+instance Hashable InventoryItemSchema where
+
+instance NFData InventoryItemSchema where
+
+-- | Inventory query results.
+--
+--
+--
+-- /See:/ 'inventoryResultEntity' smart constructor.
+data InventoryResultEntity = InventoryResultEntity'
+  { _ireData :: !(Maybe (Map Text InventoryResultItem))
+  , _ireId   :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryResultEntity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ireData' - The data section in the inventory result entity json.
+--
+-- * 'ireId' - ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID.
+inventoryResultEntity
+    :: InventoryResultEntity
+inventoryResultEntity =
+  InventoryResultEntity' {_ireData = Nothing, _ireId = Nothing}
+
+
+-- | The data section in the inventory result entity json.
+ireData :: Lens' InventoryResultEntity (HashMap Text InventoryResultItem)
+ireData = lens _ireData (\ s a -> s{_ireData = a}) . _Default . _Map;
+
+-- | ID of the inventory result entity. For example, for managed instance inventory the result will be the managed instance ID. For EC2 instance inventory, the result will be the instance ID.
+ireId :: Lens' InventoryResultEntity (Maybe Text)
+ireId = lens _ireId (\ s a -> s{_ireId = a});
+
+instance FromJSON InventoryResultEntity where
+        parseJSON
+          = withObject "InventoryResultEntity"
+              (\ x ->
+                 InventoryResultEntity' <$>
+                   (x .:? "Data" .!= mempty) <*> (x .:? "Id"))
+
+instance Hashable InventoryResultEntity where
+
+instance NFData InventoryResultEntity where
+
+-- | The inventory result item.
+--
+--
+--
+-- /See:/ 'inventoryResultItem' smart constructor.
+data InventoryResultItem = InventoryResultItem'
+  { _iriContentHash   :: !(Maybe Text)
+  , _iriCaptureTime   :: !(Maybe Text)
+  , _iriTypeName      :: !Text
+  , _iriSchemaVersion :: !Text
+  , _iriContent       :: ![Map Text Text]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'InventoryResultItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iriContentHash' - MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update.
+--
+-- * 'iriCaptureTime' - The time inventory item data was captured.
+--
+-- * 'iriTypeName' - The name of the inventory result item type.
+--
+-- * 'iriSchemaVersion' - The schema version for the inventory result item/
+--
+-- * 'iriContent' - Contains all the inventory data of the item type. Results include attribute names and values.
+inventoryResultItem
+    :: Text -- ^ 'iriTypeName'
+    -> Text -- ^ 'iriSchemaVersion'
+    -> InventoryResultItem
+inventoryResultItem pTypeName_ pSchemaVersion_ =
+  InventoryResultItem'
+  { _iriContentHash = Nothing
+  , _iriCaptureTime = Nothing
+  , _iriTypeName = pTypeName_
+  , _iriSchemaVersion = pSchemaVersion_
+  , _iriContent = mempty
+  }
+
+
+-- | MD5 hash of the inventory item type contents. The content hash is used to determine whether to update inventory information. The PutInventory API does not update the inventory item type contents if the MD5 hash has not changed since last update.
+iriContentHash :: Lens' InventoryResultItem (Maybe Text)
+iriContentHash = lens _iriContentHash (\ s a -> s{_iriContentHash = a});
+
+-- | The time inventory item data was captured.
+iriCaptureTime :: Lens' InventoryResultItem (Maybe Text)
+iriCaptureTime = lens _iriCaptureTime (\ s a -> s{_iriCaptureTime = a});
+
+-- | The name of the inventory result item type.
+iriTypeName :: Lens' InventoryResultItem Text
+iriTypeName = lens _iriTypeName (\ s a -> s{_iriTypeName = a});
+
+-- | The schema version for the inventory result item/
+iriSchemaVersion :: Lens' InventoryResultItem Text
+iriSchemaVersion = lens _iriSchemaVersion (\ s a -> s{_iriSchemaVersion = a});
+
+-- | Contains all the inventory data of the item type. Results include attribute names and values.
+iriContent :: Lens' InventoryResultItem [HashMap Text Text]
+iriContent = lens _iriContent (\ s a -> s{_iriContent = a}) . _Coerce;
+
+instance FromJSON InventoryResultItem where
+        parseJSON
+          = withObject "InventoryResultItem"
+              (\ x ->
+                 InventoryResultItem' <$>
+                   (x .:? "ContentHash") <*> (x .:? "CaptureTime") <*>
+                     (x .: "TypeName")
+                     <*> (x .: "SchemaVersion")
+                     <*> (x .:? "Content" .!= mempty))
+
+instance Hashable InventoryResultItem where
+
+instance NFData InventoryResultItem where
+
+-- | Information about an Amazon S3 bucket to write instance-level logs to.
+--
+--
+--
+-- /See:/ 'loggingInfo' smart constructor.
+data LoggingInfo = LoggingInfo'
+  { _liS3KeyPrefix  :: !(Maybe Text)
+  , _liS3BucketName :: !Text
+  , _liS3Region     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'LoggingInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'liS3KeyPrefix' - (Optional) The Amazon S3 bucket subfolder.
+--
+-- * 'liS3BucketName' - The name of an Amazon S3 bucket where execution logs are stored .
+--
+-- * 'liS3Region' - The region where the Amazon S3 bucket is located.
+loggingInfo
+    :: Text -- ^ 'liS3BucketName'
+    -> Text -- ^ 'liS3Region'
+    -> LoggingInfo
+loggingInfo pS3BucketName_ pS3Region_ =
+  LoggingInfo'
+  { _liS3KeyPrefix = Nothing
+  , _liS3BucketName = pS3BucketName_
+  , _liS3Region = pS3Region_
+  }
+
+
+-- | (Optional) The Amazon S3 bucket subfolder.
+liS3KeyPrefix :: Lens' LoggingInfo (Maybe Text)
+liS3KeyPrefix = lens _liS3KeyPrefix (\ s a -> s{_liS3KeyPrefix = a});
+
+-- | The name of an Amazon S3 bucket where execution logs are stored .
+liS3BucketName :: Lens' LoggingInfo Text
+liS3BucketName = lens _liS3BucketName (\ s a -> s{_liS3BucketName = a});
+
+-- | The region where the Amazon S3 bucket is located.
+liS3Region :: Lens' LoggingInfo Text
+liS3Region = lens _liS3Region (\ s a -> s{_liS3Region = a});
+
+instance FromJSON LoggingInfo where
+        parseJSON
+          = withObject "LoggingInfo"
+              (\ x ->
+                 LoggingInfo' <$>
+                   (x .:? "S3KeyPrefix") <*> (x .: "S3BucketName") <*>
+                     (x .: "S3Region"))
+
+instance Hashable LoggingInfo where
+
+instance NFData LoggingInfo where
+
+instance ToJSON LoggingInfo where
+        toJSON LoggingInfo'{..}
+          = object
+              (catMaybes
+                 [("S3KeyPrefix" .=) <$> _liS3KeyPrefix,
+                  Just ("S3BucketName" .= _liS3BucketName),
+                  Just ("S3Region" .= _liS3Region)])
+
+-- | The parameters for an AUTOMATION task type.
+--
+--
+--
+-- /See:/ 'maintenanceWindowAutomationParameters' smart constructor.
+data MaintenanceWindowAutomationParameters = MaintenanceWindowAutomationParameters'
+  { _mwapParameters      :: !(Maybe (Map Text [Text]))
+  , _mwapDocumentVersion :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowAutomationParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwapParameters' - The parameters for the AUTOMATION task.
+--
+-- * 'mwapDocumentVersion' - The version of an Automation document to use during task execution.
+maintenanceWindowAutomationParameters
+    :: MaintenanceWindowAutomationParameters
+maintenanceWindowAutomationParameters =
+  MaintenanceWindowAutomationParameters'
+  {_mwapParameters = Nothing, _mwapDocumentVersion = Nothing}
+
+
+-- | The parameters for the AUTOMATION task.
+mwapParameters :: Lens' MaintenanceWindowAutomationParameters (HashMap Text [Text])
+mwapParameters = lens _mwapParameters (\ s a -> s{_mwapParameters = a}) . _Default . _Map;
+
+-- | The version of an Automation document to use during task execution.
+mwapDocumentVersion :: Lens' MaintenanceWindowAutomationParameters (Maybe Text)
+mwapDocumentVersion = lens _mwapDocumentVersion (\ s a -> s{_mwapDocumentVersion = a});
+
+instance FromJSON
+           MaintenanceWindowAutomationParameters
+         where
+        parseJSON
+          = withObject "MaintenanceWindowAutomationParameters"
+              (\ x ->
+                 MaintenanceWindowAutomationParameters' <$>
+                   (x .:? "Parameters" .!= mempty) <*>
+                     (x .:? "DocumentVersion"))
+
+instance Hashable
+           MaintenanceWindowAutomationParameters
+         where
+
+instance NFData MaintenanceWindowAutomationParameters
+         where
+
+instance ToJSON MaintenanceWindowAutomationParameters
+         where
+        toJSON MaintenanceWindowAutomationParameters'{..}
+          = object
+              (catMaybes
+                 [("Parameters" .=) <$> _mwapParameters,
+                  ("DocumentVersion" .=) <$> _mwapDocumentVersion])
+
+-- | Describes the information about an execution of a Maintenance Window.
+--
+--
+--
+-- /See:/ 'maintenanceWindowExecution' smart constructor.
+data MaintenanceWindowExecution = MaintenanceWindowExecution'
+  { _mweStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _mweStartTime         :: !(Maybe POSIX)
+  , _mweWindowExecutionId :: !(Maybe Text)
+  , _mweStatusDetails     :: !(Maybe Text)
+  , _mweEndTime           :: !(Maybe POSIX)
+  , _mweWindowId          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mweStatus' - The status of the execution.
+--
+-- * 'mweStartTime' - The time the execution started.
+--
+-- * 'mweWindowExecutionId' - The ID of the Maintenance Window execution.
+--
+-- * 'mweStatusDetails' - The details explaining the Status. Only available for certain status values.
+--
+-- * 'mweEndTime' - The time the execution finished.
+--
+-- * 'mweWindowId' - The ID of the Maintenance Window.
+maintenanceWindowExecution
+    :: MaintenanceWindowExecution
+maintenanceWindowExecution =
+  MaintenanceWindowExecution'
+  { _mweStatus = Nothing
+  , _mweStartTime = Nothing
+  , _mweWindowExecutionId = Nothing
+  , _mweStatusDetails = Nothing
+  , _mweEndTime = Nothing
+  , _mweWindowId = Nothing
+  }
+
+
+-- | The status of the execution.
+mweStatus :: Lens' MaintenanceWindowExecution (Maybe MaintenanceWindowExecutionStatus)
+mweStatus = lens _mweStatus (\ s a -> s{_mweStatus = a});
+
+-- | The time the execution started.
+mweStartTime :: Lens' MaintenanceWindowExecution (Maybe UTCTime)
+mweStartTime = lens _mweStartTime (\ s a -> s{_mweStartTime = a}) . mapping _Time;
+
+-- | The ID of the Maintenance Window execution.
+mweWindowExecutionId :: Lens' MaintenanceWindowExecution (Maybe Text)
+mweWindowExecutionId = lens _mweWindowExecutionId (\ s a -> s{_mweWindowExecutionId = a});
+
+-- | The details explaining the Status. Only available for certain status values.
+mweStatusDetails :: Lens' MaintenanceWindowExecution (Maybe Text)
+mweStatusDetails = lens _mweStatusDetails (\ s a -> s{_mweStatusDetails = a});
+
+-- | The time the execution finished.
+mweEndTime :: Lens' MaintenanceWindowExecution (Maybe UTCTime)
+mweEndTime = lens _mweEndTime (\ s a -> s{_mweEndTime = a}) . mapping _Time;
+
+-- | The ID of the Maintenance Window.
+mweWindowId :: Lens' MaintenanceWindowExecution (Maybe Text)
+mweWindowId = lens _mweWindowId (\ s a -> s{_mweWindowId = a});
+
+instance FromJSON MaintenanceWindowExecution where
+        parseJSON
+          = withObject "MaintenanceWindowExecution"
+              (\ x ->
+                 MaintenanceWindowExecution' <$>
+                   (x .:? "Status") <*> (x .:? "StartTime") <*>
+                     (x .:? "WindowExecutionId")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "EndTime")
+                     <*> (x .:? "WindowId"))
+
+instance Hashable MaintenanceWindowExecution where
+
+instance NFData MaintenanceWindowExecution where
+
+-- | Information about a task execution performed as part of a Maintenance Window execution.
+--
+--
+--
+-- /See:/ 'maintenanceWindowExecutionTaskIdentity' smart constructor.
+data MaintenanceWindowExecutionTaskIdentity = MaintenanceWindowExecutionTaskIdentity'
+  { _mwetiStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _mwetiTaskExecutionId   :: !(Maybe Text)
+  , _mwetiStartTime         :: !(Maybe POSIX)
+  , _mwetiTaskType          :: !(Maybe MaintenanceWindowTaskType)
+  , _mwetiTaskARN           :: !(Maybe Text)
+  , _mwetiWindowExecutionId :: !(Maybe Text)
+  , _mwetiStatusDetails     :: !(Maybe Text)
+  , _mwetiEndTime           :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowExecutionTaskIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwetiStatus' - The status of the task execution.
+--
+-- * 'mwetiTaskExecutionId' - The ID of the specific task execution in the Maintenance Window execution.
+--
+-- * 'mwetiStartTime' - The time the task execution started.
+--
+-- * 'mwetiTaskType' - The type of executed task.
+--
+-- * 'mwetiTaskARN' - The ARN of the executed task.
+--
+-- * 'mwetiWindowExecutionId' - The ID of the Maintenance Window execution that ran the task.
+--
+-- * 'mwetiStatusDetails' - The details explaining the status of the task execution. Only available for certain status values.
+--
+-- * 'mwetiEndTime' - The time the task execution finished.
+maintenanceWindowExecutionTaskIdentity
+    :: MaintenanceWindowExecutionTaskIdentity
+maintenanceWindowExecutionTaskIdentity =
+  MaintenanceWindowExecutionTaskIdentity'
+  { _mwetiStatus = Nothing
+  , _mwetiTaskExecutionId = Nothing
+  , _mwetiStartTime = Nothing
+  , _mwetiTaskType = Nothing
+  , _mwetiTaskARN = Nothing
+  , _mwetiWindowExecutionId = Nothing
+  , _mwetiStatusDetails = Nothing
+  , _mwetiEndTime = Nothing
+  }
+
+
+-- | The status of the task execution.
+mwetiStatus :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe MaintenanceWindowExecutionStatus)
+mwetiStatus = lens _mwetiStatus (\ s a -> s{_mwetiStatus = a});
+
+-- | The ID of the specific task execution in the Maintenance Window execution.
+mwetiTaskExecutionId :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
+mwetiTaskExecutionId = lens _mwetiTaskExecutionId (\ s a -> s{_mwetiTaskExecutionId = a});
+
+-- | The time the task execution started.
+mwetiStartTime :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe UTCTime)
+mwetiStartTime = lens _mwetiStartTime (\ s a -> s{_mwetiStartTime = a}) . mapping _Time;
+
+-- | The type of executed task.
+mwetiTaskType :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe MaintenanceWindowTaskType)
+mwetiTaskType = lens _mwetiTaskType (\ s a -> s{_mwetiTaskType = a});
+
+-- | The ARN of the executed task.
+mwetiTaskARN :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
+mwetiTaskARN = lens _mwetiTaskARN (\ s a -> s{_mwetiTaskARN = a});
+
+-- | The ID of the Maintenance Window execution that ran the task.
+mwetiWindowExecutionId :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
+mwetiWindowExecutionId = lens _mwetiWindowExecutionId (\ s a -> s{_mwetiWindowExecutionId = a});
+
+-- | The details explaining the status of the task execution. Only available for certain status values.
+mwetiStatusDetails :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe Text)
+mwetiStatusDetails = lens _mwetiStatusDetails (\ s a -> s{_mwetiStatusDetails = a});
+
+-- | The time the task execution finished.
+mwetiEndTime :: Lens' MaintenanceWindowExecutionTaskIdentity (Maybe UTCTime)
+mwetiEndTime = lens _mwetiEndTime (\ s a -> s{_mwetiEndTime = a}) . mapping _Time;
+
+instance FromJSON
+           MaintenanceWindowExecutionTaskIdentity
+         where
+        parseJSON
+          = withObject "MaintenanceWindowExecutionTaskIdentity"
+              (\ x ->
+                 MaintenanceWindowExecutionTaskIdentity' <$>
+                   (x .:? "Status") <*> (x .:? "TaskExecutionId") <*>
+                     (x .:? "StartTime")
+                     <*> (x .:? "TaskType")
+                     <*> (x .:? "TaskArn")
+                     <*> (x .:? "WindowExecutionId")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "EndTime"))
+
+instance Hashable
+           MaintenanceWindowExecutionTaskIdentity
+         where
+
+instance NFData
+           MaintenanceWindowExecutionTaskIdentity
+         where
+
+-- | Describes the information about a task invocation for a particular target as part of a task execution performed as part of a Maintenance Window execution.
+--
+--
+--
+-- /See:/ 'maintenanceWindowExecutionTaskInvocationIdentity' smart constructor.
+data MaintenanceWindowExecutionTaskInvocationIdentity = MaintenanceWindowExecutionTaskInvocationIdentity'
+  { _mwetiiStatus            :: !(Maybe MaintenanceWindowExecutionStatus)
+  , _mwetiiExecutionId       :: !(Maybe Text)
+  , _mwetiiTaskExecutionId   :: !(Maybe Text)
+  , _mwetiiStartTime         :: !(Maybe POSIX)
+  , _mwetiiInvocationId      :: !(Maybe Text)
+  , _mwetiiOwnerInformation  :: !(Maybe (Sensitive Text))
+  , _mwetiiTaskType          :: !(Maybe MaintenanceWindowTaskType)
+  , _mwetiiWindowTargetId    :: !(Maybe Text)
+  , _mwetiiWindowExecutionId :: !(Maybe Text)
+  , _mwetiiStatusDetails     :: !(Maybe Text)
+  , _mwetiiEndTime           :: !(Maybe POSIX)
+  , _mwetiiParameters        :: !(Maybe (Sensitive Text))
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowExecutionTaskInvocationIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwetiiStatus' - The status of the task invocation.
+--
+-- * 'mwetiiExecutionId' - The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID.
+--
+-- * 'mwetiiTaskExecutionId' - The ID of the specific task execution in the Maintenance Window execution.
+--
+-- * 'mwetiiStartTime' - The time the invocation started.
+--
+-- * 'mwetiiInvocationId' - The ID of the task invocation.
+--
+-- * 'mwetiiOwnerInformation' - User-provided value that was specified when the target was registered with the Maintenance Window. This was also included in any CloudWatch events raised during the task invocation.
+--
+-- * 'mwetiiTaskType' - The task type.
+--
+-- * 'mwetiiWindowTargetId' - The ID of the target definition in this Maintenance Window the invocation was performed for.
+--
+-- * 'mwetiiWindowExecutionId' - The ID of the Maintenance Window execution that ran the task.
+--
+-- * 'mwetiiStatusDetails' - The details explaining the status of the task invocation. Only available for certain Status values.
+--
+-- * 'mwetiiEndTime' - The time the invocation finished.
+--
+-- * 'mwetiiParameters' - The parameters that were provided for the invocation when it was executed.
+maintenanceWindowExecutionTaskInvocationIdentity
+    :: MaintenanceWindowExecutionTaskInvocationIdentity
+maintenanceWindowExecutionTaskInvocationIdentity =
+  MaintenanceWindowExecutionTaskInvocationIdentity'
+  { _mwetiiStatus = Nothing
+  , _mwetiiExecutionId = Nothing
+  , _mwetiiTaskExecutionId = Nothing
+  , _mwetiiStartTime = Nothing
+  , _mwetiiInvocationId = Nothing
+  , _mwetiiOwnerInformation = Nothing
+  , _mwetiiTaskType = Nothing
+  , _mwetiiWindowTargetId = Nothing
+  , _mwetiiWindowExecutionId = Nothing
+  , _mwetiiStatusDetails = Nothing
+  , _mwetiiEndTime = Nothing
+  , _mwetiiParameters = Nothing
+  }
+
+
+-- | The status of the task invocation.
+mwetiiStatus :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe MaintenanceWindowExecutionStatus)
+mwetiiStatus = lens _mwetiiStatus (\ s a -> s{_mwetiiStatus = a});
+
+-- | The ID of the action performed in the service that actually handled the task invocation. If the task type is RUN_COMMAND, this value is the command ID.
+mwetiiExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiExecutionId = lens _mwetiiExecutionId (\ s a -> s{_mwetiiExecutionId = a});
+
+-- | The ID of the specific task execution in the Maintenance Window execution.
+mwetiiTaskExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiTaskExecutionId = lens _mwetiiTaskExecutionId (\ s a -> s{_mwetiiTaskExecutionId = a});
+
+-- | The time the invocation started.
+mwetiiStartTime :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe UTCTime)
+mwetiiStartTime = lens _mwetiiStartTime (\ s a -> s{_mwetiiStartTime = a}) . mapping _Time;
+
+-- | The ID of the task invocation.
+mwetiiInvocationId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiInvocationId = lens _mwetiiInvocationId (\ s a -> s{_mwetiiInvocationId = a});
+
+-- | User-provided value that was specified when the target was registered with the Maintenance Window. This was also included in any CloudWatch events raised during the task invocation.
+mwetiiOwnerInformation :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiOwnerInformation = lens _mwetiiOwnerInformation (\ s a -> s{_mwetiiOwnerInformation = a}) . mapping _Sensitive;
+
+-- | The task type.
+mwetiiTaskType :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe MaintenanceWindowTaskType)
+mwetiiTaskType = lens _mwetiiTaskType (\ s a -> s{_mwetiiTaskType = a});
+
+-- | The ID of the target definition in this Maintenance Window the invocation was performed for.
+mwetiiWindowTargetId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiWindowTargetId = lens _mwetiiWindowTargetId (\ s a -> s{_mwetiiWindowTargetId = a});
+
+-- | The ID of the Maintenance Window execution that ran the task.
+mwetiiWindowExecutionId :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiWindowExecutionId = lens _mwetiiWindowExecutionId (\ s a -> s{_mwetiiWindowExecutionId = a});
+
+-- | The details explaining the status of the task invocation. Only available for certain Status values.
+mwetiiStatusDetails :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiStatusDetails = lens _mwetiiStatusDetails (\ s a -> s{_mwetiiStatusDetails = a});
+
+-- | The time the invocation finished.
+mwetiiEndTime :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe UTCTime)
+mwetiiEndTime = lens _mwetiiEndTime (\ s a -> s{_mwetiiEndTime = a}) . mapping _Time;
+
+-- | The parameters that were provided for the invocation when it was executed.
+mwetiiParameters :: Lens' MaintenanceWindowExecutionTaskInvocationIdentity (Maybe Text)
+mwetiiParameters = lens _mwetiiParameters (\ s a -> s{_mwetiiParameters = a}) . mapping _Sensitive;
+
+instance FromJSON
+           MaintenanceWindowExecutionTaskInvocationIdentity
+         where
+        parseJSON
+          = withObject
+              "MaintenanceWindowExecutionTaskInvocationIdentity"
+              (\ x ->
+                 MaintenanceWindowExecutionTaskInvocationIdentity' <$>
+                   (x .:? "Status") <*> (x .:? "ExecutionId") <*>
+                     (x .:? "TaskExecutionId")
+                     <*> (x .:? "StartTime")
+                     <*> (x .:? "InvocationId")
+                     <*> (x .:? "OwnerInformation")
+                     <*> (x .:? "TaskType")
+                     <*> (x .:? "WindowTargetId")
+                     <*> (x .:? "WindowExecutionId")
+                     <*> (x .:? "StatusDetails")
+                     <*> (x .:? "EndTime")
+                     <*> (x .:? "Parameters"))
+
+instance Hashable
+           MaintenanceWindowExecutionTaskInvocationIdentity
+         where
+
+instance NFData
+           MaintenanceWindowExecutionTaskInvocationIdentity
+         where
+
+-- | Filter used in the request.
+--
+--
+--
+-- /See:/ 'maintenanceWindowFilter' smart constructor.
+data MaintenanceWindowFilter = MaintenanceWindowFilter'
+  { _mwfValues :: !(Maybe [Text])
+  , _mwfKey    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwfValues' - The filter values.
+--
+-- * 'mwfKey' - The name of the filter.
+maintenanceWindowFilter
+    :: MaintenanceWindowFilter
+maintenanceWindowFilter =
+  MaintenanceWindowFilter' {_mwfValues = Nothing, _mwfKey = Nothing}
+
+
+-- | The filter values.
+mwfValues :: Lens' MaintenanceWindowFilter [Text]
+mwfValues = lens _mwfValues (\ s a -> s{_mwfValues = a}) . _Default . _Coerce;
+
+-- | The name of the filter.
+mwfKey :: Lens' MaintenanceWindowFilter (Maybe Text)
+mwfKey = lens _mwfKey (\ s a -> s{_mwfKey = a});
+
+instance Hashable MaintenanceWindowFilter where
+
+instance NFData MaintenanceWindowFilter where
+
+instance ToJSON MaintenanceWindowFilter where
+        toJSON MaintenanceWindowFilter'{..}
+          = object
+              (catMaybes
+                 [("Values" .=) <$> _mwfValues,
+                  ("Key" .=) <$> _mwfKey])
+
+-- | Information about the Maintenance Window.
+--
+--
+--
+-- /See:/ 'maintenanceWindowIdentity' smart constructor.
+data MaintenanceWindowIdentity = MaintenanceWindowIdentity'
+  { _mwiEnabled     :: !(Maybe Bool)
+  , _mwiName        :: !(Maybe Text)
+  , _mwiCutoff      :: !(Maybe Nat)
+  , _mwiDescription :: !(Maybe (Sensitive Text))
+  , _mwiDuration    :: !(Maybe Nat)
+  , _mwiWindowId    :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwiEnabled' - Whether the Maintenance Window is enabled.
+--
+-- * 'mwiName' - The name of the Maintenance Window.
+--
+-- * 'mwiCutoff' - The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution.
+--
+-- * 'mwiDescription' - A description of the Maintenance Window.
+--
+-- * 'mwiDuration' - The duration of the Maintenance Window in hours.
+--
+-- * 'mwiWindowId' - The ID of the Maintenance Window.
+maintenanceWindowIdentity
+    :: MaintenanceWindowIdentity
+maintenanceWindowIdentity =
+  MaintenanceWindowIdentity'
+  { _mwiEnabled = Nothing
+  , _mwiName = Nothing
+  , _mwiCutoff = Nothing
+  , _mwiDescription = Nothing
+  , _mwiDuration = Nothing
+  , _mwiWindowId = Nothing
+  }
+
+
+-- | Whether the Maintenance Window is enabled.
+mwiEnabled :: Lens' MaintenanceWindowIdentity (Maybe Bool)
+mwiEnabled = lens _mwiEnabled (\ s a -> s{_mwiEnabled = a});
+
+-- | The name of the Maintenance Window.
+mwiName :: Lens' MaintenanceWindowIdentity (Maybe Text)
+mwiName = lens _mwiName (\ s a -> s{_mwiName = a});
+
+-- | The number of hours before the end of the Maintenance Window that Systems Manager stops scheduling new tasks for execution.
+mwiCutoff :: Lens' MaintenanceWindowIdentity (Maybe Natural)
+mwiCutoff = lens _mwiCutoff (\ s a -> s{_mwiCutoff = a}) . mapping _Nat;
+
+-- | A description of the Maintenance Window.
+mwiDescription :: Lens' MaintenanceWindowIdentity (Maybe Text)
+mwiDescription = lens _mwiDescription (\ s a -> s{_mwiDescription = a}) . mapping _Sensitive;
+
+-- | The duration of the Maintenance Window in hours.
+mwiDuration :: Lens' MaintenanceWindowIdentity (Maybe Natural)
+mwiDuration = lens _mwiDuration (\ s a -> s{_mwiDuration = a}) . mapping _Nat;
+
+-- | The ID of the Maintenance Window.
+mwiWindowId :: Lens' MaintenanceWindowIdentity (Maybe Text)
+mwiWindowId = lens _mwiWindowId (\ s a -> s{_mwiWindowId = a});
+
+instance FromJSON MaintenanceWindowIdentity where
+        parseJSON
+          = withObject "MaintenanceWindowIdentity"
+              (\ x ->
+                 MaintenanceWindowIdentity' <$>
+                   (x .:? "Enabled") <*> (x .:? "Name") <*>
+                     (x .:? "Cutoff")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "Duration")
+                     <*> (x .:? "WindowId"))
+
+instance Hashable MaintenanceWindowIdentity where
+
+instance NFData MaintenanceWindowIdentity where
+
+-- | The parameters for a LAMBDA task type.
+--
+--
+--
+-- /See:/ 'maintenanceWindowLambdaParameters' smart constructor.
+data MaintenanceWindowLambdaParameters = MaintenanceWindowLambdaParameters'
+  { _mwlpPayload       :: !(Maybe (Sensitive Base64))
+  , _mwlpQualifier     :: !(Maybe Text)
+  , _mwlpClientContext :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowLambdaParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwlpPayload' - JSON to provide to your Lambda function as input.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+--
+-- * 'mwlpQualifier' - (Optional) Specify a Lambda function version or alias name. If you specify a function version, the action uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the action uses the alias ARN to invoke the Lambda function version to which the alias points.
+--
+-- * 'mwlpClientContext' - Pass client-specific information to the Lambda function that you are invoking. You can then process the client information in your Lambda function as you choose through the context variable.
+maintenanceWindowLambdaParameters
+    :: MaintenanceWindowLambdaParameters
+maintenanceWindowLambdaParameters =
+  MaintenanceWindowLambdaParameters'
+  { _mwlpPayload = Nothing
+  , _mwlpQualifier = Nothing
+  , _mwlpClientContext = Nothing
+  }
+
+
+-- | JSON to provide to your Lambda function as input.-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data. The underlying isomorphism will encode to Base64 representation during serialisation, and decode from Base64 representation during deserialisation. This 'Lens' accepts and returns only raw unencoded data.
+mwlpPayload :: Lens' MaintenanceWindowLambdaParameters (Maybe ByteString)
+mwlpPayload = lens _mwlpPayload (\ s a -> s{_mwlpPayload = a}) . mapping (_Sensitive . _Base64);
+
+-- | (Optional) Specify a Lambda function version or alias name. If you specify a function version, the action uses the qualified function ARN to invoke a specific Lambda function. If you specify an alias name, the action uses the alias ARN to invoke the Lambda function version to which the alias points.
+mwlpQualifier :: Lens' MaintenanceWindowLambdaParameters (Maybe Text)
+mwlpQualifier = lens _mwlpQualifier (\ s a -> s{_mwlpQualifier = a});
+
+-- | Pass client-specific information to the Lambda function that you are invoking. You can then process the client information in your Lambda function as you choose through the context variable.
+mwlpClientContext :: Lens' MaintenanceWindowLambdaParameters (Maybe Text)
+mwlpClientContext = lens _mwlpClientContext (\ s a -> s{_mwlpClientContext = a});
+
+instance FromJSON MaintenanceWindowLambdaParameters
+         where
+        parseJSON
+          = withObject "MaintenanceWindowLambdaParameters"
+              (\ x ->
+                 MaintenanceWindowLambdaParameters' <$>
+                   (x .:? "Payload") <*> (x .:? "Qualifier") <*>
+                     (x .:? "ClientContext"))
+
+instance Hashable MaintenanceWindowLambdaParameters
+         where
+
+instance NFData MaintenanceWindowLambdaParameters
+         where
+
+instance ToJSON MaintenanceWindowLambdaParameters
+         where
+        toJSON MaintenanceWindowLambdaParameters'{..}
+          = object
+              (catMaybes
+                 [("Payload" .=) <$> _mwlpPayload,
+                  ("Qualifier" .=) <$> _mwlpQualifier,
+                  ("ClientContext" .=) <$> _mwlpClientContext])
+
+-- | The parameters for a RUN_COMMAND task type.
+--
+--
+--
+-- /See:/ 'maintenanceWindowRunCommandParameters' smart constructor.
+data MaintenanceWindowRunCommandParameters = MaintenanceWindowRunCommandParameters'
+  { _mwrcpServiceRoleARN     :: !(Maybe Text)
+  , _mwrcpNotificationConfig :: !(Maybe NotificationConfig)
+  , _mwrcpDocumentHashType   :: !(Maybe DocumentHashType)
+  , _mwrcpOutputS3KeyPrefix  :: !(Maybe Text)
+  , _mwrcpParameters         :: !(Maybe (Map Text [Text]))
+  , _mwrcpDocumentHash       :: !(Maybe Text)
+  , _mwrcpTimeoutSeconds     :: !(Maybe Nat)
+  , _mwrcpComment            :: !(Maybe Text)
+  , _mwrcpOutputS3BucketName :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowRunCommandParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwrcpServiceRoleARN' - The IAM service role to assume during task execution.
+--
+-- * 'mwrcpNotificationConfig' - Configurations for sending notifications about command status changes on a per-instance basis.
+--
+-- * 'mwrcpDocumentHashType' - SHA-256 or SHA-1. SHA-1 hashes have been deprecated.
+--
+-- * 'mwrcpOutputS3KeyPrefix' - The Amazon S3 bucket subfolder.
+--
+-- * 'mwrcpParameters' - The parameters for the RUN_COMMAND task execution.
+--
+-- * 'mwrcpDocumentHash' - The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes have been deprecated.
+--
+-- * 'mwrcpTimeoutSeconds' - If this time is reached and the command has not already started executing, it doesn not execute.
+--
+-- * 'mwrcpComment' - Information about the command(s) to execute.
+--
+-- * 'mwrcpOutputS3BucketName' - The name of the Amazon S3 bucket.
+maintenanceWindowRunCommandParameters
+    :: MaintenanceWindowRunCommandParameters
+maintenanceWindowRunCommandParameters =
+  MaintenanceWindowRunCommandParameters'
+  { _mwrcpServiceRoleARN = Nothing
+  , _mwrcpNotificationConfig = Nothing
+  , _mwrcpDocumentHashType = Nothing
+  , _mwrcpOutputS3KeyPrefix = Nothing
+  , _mwrcpParameters = Nothing
+  , _mwrcpDocumentHash = Nothing
+  , _mwrcpTimeoutSeconds = Nothing
+  , _mwrcpComment = Nothing
+  , _mwrcpOutputS3BucketName = Nothing
+  }
+
+
+-- | The IAM service role to assume during task execution.
+mwrcpServiceRoleARN :: Lens' MaintenanceWindowRunCommandParameters (Maybe Text)
+mwrcpServiceRoleARN = lens _mwrcpServiceRoleARN (\ s a -> s{_mwrcpServiceRoleARN = a});
+
+-- | Configurations for sending notifications about command status changes on a per-instance basis.
+mwrcpNotificationConfig :: Lens' MaintenanceWindowRunCommandParameters (Maybe NotificationConfig)
+mwrcpNotificationConfig = lens _mwrcpNotificationConfig (\ s a -> s{_mwrcpNotificationConfig = a});
+
+-- | SHA-256 or SHA-1. SHA-1 hashes have been deprecated.
+mwrcpDocumentHashType :: Lens' MaintenanceWindowRunCommandParameters (Maybe DocumentHashType)
+mwrcpDocumentHashType = lens _mwrcpDocumentHashType (\ s a -> s{_mwrcpDocumentHashType = a});
+
+-- | The Amazon S3 bucket subfolder.
+mwrcpOutputS3KeyPrefix :: Lens' MaintenanceWindowRunCommandParameters (Maybe Text)
+mwrcpOutputS3KeyPrefix = lens _mwrcpOutputS3KeyPrefix (\ s a -> s{_mwrcpOutputS3KeyPrefix = a});
+
+-- | The parameters for the RUN_COMMAND task execution.
+mwrcpParameters :: Lens' MaintenanceWindowRunCommandParameters (HashMap Text [Text])
+mwrcpParameters = lens _mwrcpParameters (\ s a -> s{_mwrcpParameters = a}) . _Default . _Map;
+
+-- | The SHA-256 or SHA-1 hash created by the system when the document was created. SHA-1 hashes have been deprecated.
+mwrcpDocumentHash :: Lens' MaintenanceWindowRunCommandParameters (Maybe Text)
+mwrcpDocumentHash = lens _mwrcpDocumentHash (\ s a -> s{_mwrcpDocumentHash = a});
+
+-- | If this time is reached and the command has not already started executing, it doesn not execute.
+mwrcpTimeoutSeconds :: Lens' MaintenanceWindowRunCommandParameters (Maybe Natural)
+mwrcpTimeoutSeconds = lens _mwrcpTimeoutSeconds (\ s a -> s{_mwrcpTimeoutSeconds = a}) . mapping _Nat;
+
+-- | Information about the command(s) to execute.
+mwrcpComment :: Lens' MaintenanceWindowRunCommandParameters (Maybe Text)
+mwrcpComment = lens _mwrcpComment (\ s a -> s{_mwrcpComment = a});
+
+-- | The name of the Amazon S3 bucket.
+mwrcpOutputS3BucketName :: Lens' MaintenanceWindowRunCommandParameters (Maybe Text)
+mwrcpOutputS3BucketName = lens _mwrcpOutputS3BucketName (\ s a -> s{_mwrcpOutputS3BucketName = a});
+
+instance FromJSON
+           MaintenanceWindowRunCommandParameters
+         where
+        parseJSON
+          = withObject "MaintenanceWindowRunCommandParameters"
+              (\ x ->
+                 MaintenanceWindowRunCommandParameters' <$>
+                   (x .:? "ServiceRoleArn") <*>
+                     (x .:? "NotificationConfig")
+                     <*> (x .:? "DocumentHashType")
+                     <*> (x .:? "OutputS3KeyPrefix")
+                     <*> (x .:? "Parameters" .!= mempty)
+                     <*> (x .:? "DocumentHash")
+                     <*> (x .:? "TimeoutSeconds")
+                     <*> (x .:? "Comment")
+                     <*> (x .:? "OutputS3BucketName"))
+
+instance Hashable
+           MaintenanceWindowRunCommandParameters
+         where
+
+instance NFData MaintenanceWindowRunCommandParameters
+         where
+
+instance ToJSON MaintenanceWindowRunCommandParameters
+         where
+        toJSON MaintenanceWindowRunCommandParameters'{..}
+          = object
+              (catMaybes
+                 [("ServiceRoleArn" .=) <$> _mwrcpServiceRoleARN,
+                  ("NotificationConfig" .=) <$>
+                    _mwrcpNotificationConfig,
+                  ("DocumentHashType" .=) <$> _mwrcpDocumentHashType,
+                  ("OutputS3KeyPrefix" .=) <$> _mwrcpOutputS3KeyPrefix,
+                  ("Parameters" .=) <$> _mwrcpParameters,
+                  ("DocumentHash" .=) <$> _mwrcpDocumentHash,
+                  ("TimeoutSeconds" .=) <$> _mwrcpTimeoutSeconds,
+                  ("Comment" .=) <$> _mwrcpComment,
+                  ("OutputS3BucketName" .=) <$>
+                    _mwrcpOutputS3BucketName])
+
+-- | The parameters for the STEP_FUNCTION execution.
+--
+--
+--
+-- /See:/ 'maintenanceWindowStepFunctionsParameters' smart constructor.
+data MaintenanceWindowStepFunctionsParameters = MaintenanceWindowStepFunctionsParameters'
+  { _mwsfpInput :: !(Maybe (Sensitive Text))
+  , _mwsfpName  :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowStepFunctionsParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwsfpInput' - The inputs for the STEP_FUNCTION task.
+--
+-- * 'mwsfpName' - The name of the STEP_FUNCTION task.
+maintenanceWindowStepFunctionsParameters
+    :: MaintenanceWindowStepFunctionsParameters
+maintenanceWindowStepFunctionsParameters =
+  MaintenanceWindowStepFunctionsParameters'
+  {_mwsfpInput = Nothing, _mwsfpName = Nothing}
+
+
+-- | The inputs for the STEP_FUNCTION task.
+mwsfpInput :: Lens' MaintenanceWindowStepFunctionsParameters (Maybe Text)
+mwsfpInput = lens _mwsfpInput (\ s a -> s{_mwsfpInput = a}) . mapping _Sensitive;
+
+-- | The name of the STEP_FUNCTION task.
+mwsfpName :: Lens' MaintenanceWindowStepFunctionsParameters (Maybe Text)
+mwsfpName = lens _mwsfpName (\ s a -> s{_mwsfpName = a});
+
+instance FromJSON
+           MaintenanceWindowStepFunctionsParameters
+         where
+        parseJSON
+          = withObject
+              "MaintenanceWindowStepFunctionsParameters"
+              (\ x ->
+                 MaintenanceWindowStepFunctionsParameters' <$>
+                   (x .:? "Input") <*> (x .:? "Name"))
+
+instance Hashable
+           MaintenanceWindowStepFunctionsParameters
+         where
+
+instance NFData
+           MaintenanceWindowStepFunctionsParameters
+         where
+
+instance ToJSON
+           MaintenanceWindowStepFunctionsParameters
+         where
+        toJSON MaintenanceWindowStepFunctionsParameters'{..}
+          = object
+              (catMaybes
+                 [("Input" .=) <$> _mwsfpInput,
+                  ("Name" .=) <$> _mwsfpName])
+
+-- | The target registered with the Maintenance Window.
+--
+--
+--
+-- /See:/ 'maintenanceWindowTarget' smart constructor.
+data MaintenanceWindowTarget = MaintenanceWindowTarget'
+  { _mResourceType     :: !(Maybe MaintenanceWindowResourceType)
+  , _mOwnerInformation :: !(Maybe (Sensitive Text))
+  , _mWindowTargetId   :: !(Maybe Text)
+  , _mName             :: !(Maybe Text)
+  , _mTargets          :: !(Maybe [Target])
+  , _mDescription      :: !(Maybe (Sensitive Text))
+  , _mWindowId         :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mResourceType' - The type of target.
+--
+-- * 'mOwnerInformation' - User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+--
+-- * 'mWindowTargetId' - The ID of the target.
+--
+-- * 'mName' - The target name.
+--
+-- * 'mTargets' - The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+--
+-- * 'mDescription' - A description of the target.
+--
+-- * 'mWindowId' - The Maintenance Window ID where the target is registered.
+maintenanceWindowTarget
+    :: MaintenanceWindowTarget
+maintenanceWindowTarget =
+  MaintenanceWindowTarget'
+  { _mResourceType = Nothing
+  , _mOwnerInformation = Nothing
+  , _mWindowTargetId = Nothing
+  , _mName = Nothing
+  , _mTargets = Nothing
+  , _mDescription = Nothing
+  , _mWindowId = Nothing
+  }
+
+
+-- | The type of target.
+mResourceType :: Lens' MaintenanceWindowTarget (Maybe MaintenanceWindowResourceType)
+mResourceType = lens _mResourceType (\ s a -> s{_mResourceType = a});
+
+-- | User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+mOwnerInformation :: Lens' MaintenanceWindowTarget (Maybe Text)
+mOwnerInformation = lens _mOwnerInformation (\ s a -> s{_mOwnerInformation = a}) . mapping _Sensitive;
+
+-- | The ID of the target.
+mWindowTargetId :: Lens' MaintenanceWindowTarget (Maybe Text)
+mWindowTargetId = lens _mWindowTargetId (\ s a -> s{_mWindowTargetId = a});
+
+-- | The target name.
+mName :: Lens' MaintenanceWindowTarget (Maybe Text)
+mName = lens _mName (\ s a -> s{_mName = a});
+
+-- | The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+mTargets :: Lens' MaintenanceWindowTarget [Target]
+mTargets = lens _mTargets (\ s a -> s{_mTargets = a}) . _Default . _Coerce;
+
+-- | A description of the target.
+mDescription :: Lens' MaintenanceWindowTarget (Maybe Text)
+mDescription = lens _mDescription (\ s a -> s{_mDescription = a}) . mapping _Sensitive;
+
+-- | The Maintenance Window ID where the target is registered.
+mWindowId :: Lens' MaintenanceWindowTarget (Maybe Text)
+mWindowId = lens _mWindowId (\ s a -> s{_mWindowId = a});
+
+instance FromJSON MaintenanceWindowTarget where
+        parseJSON
+          = withObject "MaintenanceWindowTarget"
+              (\ x ->
+                 MaintenanceWindowTarget' <$>
+                   (x .:? "ResourceType") <*> (x .:? "OwnerInformation")
+                     <*> (x .:? "WindowTargetId")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "Description")
+                     <*> (x .:? "WindowId"))
+
+instance Hashable MaintenanceWindowTarget where
+
+instance NFData MaintenanceWindowTarget where
+
+-- | Information about a task defined for a Maintenance Window.
+--
+--
+--
+-- /See:/ 'maintenanceWindowTask' smart constructor.
+data MaintenanceWindowTask = MaintenanceWindowTask'
+  { _mwtServiceRoleARN :: !(Maybe Text)
+  , _mwtWindowTaskId :: !(Maybe Text)
+  , _mwtTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
+  , _mwtPriority :: !(Maybe Nat)
+  , _mwtTaskARN :: !(Maybe Text)
+  , _mwtMaxErrors :: !(Maybe Text)
+  , _mwtName :: !(Maybe Text)
+  , _mwtTargets :: !(Maybe [Target])
+  , _mwtLoggingInfo :: !(Maybe LoggingInfo)
+  , _mwtType :: !(Maybe MaintenanceWindowTaskType)
+  , _mwtDescription :: !(Maybe (Sensitive Text))
+  , _mwtMaxConcurrency :: !(Maybe Text)
+  , _mwtWindowId :: !(Maybe Text)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwtServiceRoleARN' - The role that should be assumed when executing the task
+--
+-- * 'mwtWindowTaskId' - The task ID.
+--
+-- * 'mwtTaskParameters' - The parameters that should be passed to the task when it is executed.
+--
+-- * 'mwtPriority' - The priority of the task in the Maintenance Window. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+--
+-- * 'mwtTaskARN' - The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, @TaskArn@ is the Systems Manager document name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTION tasks, it's the state machine ARN.
+--
+-- * 'mwtMaxErrors' - The maximum number of errors allowed before this task stops being scheduled.
+--
+-- * 'mwtName' - The task name.
+--
+-- * 'mwtTargets' - The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+--
+-- * 'mwtLoggingInfo' - Information about an Amazon S3 bucket to write task-level logs to.
+--
+-- * 'mwtType' - The type of task. The type can be one of the following: RUN_COMMAND, AUTOMATION, LAMBDA, or STEP_FUNCTION.
+--
+-- * 'mwtDescription' - A description of the task.
+--
+-- * 'mwtMaxConcurrency' - The maximum number of targets this task can be run for in parallel.
+--
+-- * 'mwtWindowId' - The Maintenance Window ID where the task is registered.
+maintenanceWindowTask
+    :: MaintenanceWindowTask
+maintenanceWindowTask =
+  MaintenanceWindowTask'
+  { _mwtServiceRoleARN = Nothing
+  , _mwtWindowTaskId = Nothing
+  , _mwtTaskParameters = Nothing
+  , _mwtPriority = Nothing
+  , _mwtTaskARN = Nothing
+  , _mwtMaxErrors = Nothing
+  , _mwtName = Nothing
+  , _mwtTargets = Nothing
+  , _mwtLoggingInfo = Nothing
+  , _mwtType = Nothing
+  , _mwtDescription = Nothing
+  , _mwtMaxConcurrency = Nothing
+  , _mwtWindowId = Nothing
+  }
+
+
+-- | The role that should be assumed when executing the task
+mwtServiceRoleARN :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtServiceRoleARN = lens _mwtServiceRoleARN (\ s a -> s{_mwtServiceRoleARN = a});
+
+-- | The task ID.
+mwtWindowTaskId :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtWindowTaskId = lens _mwtWindowTaskId (\ s a -> s{_mwtWindowTaskId = a});
+
+-- | The parameters that should be passed to the task when it is executed.
+mwtTaskParameters :: Lens' MaintenanceWindowTask (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
+mwtTaskParameters = lens _mwtTaskParameters (\ s a -> s{_mwtTaskParameters = a}) . mapping (_Sensitive . _Map);
+
+-- | The priority of the task in the Maintenance Window. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+mwtPriority :: Lens' MaintenanceWindowTask (Maybe Natural)
+mwtPriority = lens _mwtPriority (\ s a -> s{_mwtPriority = a}) . mapping _Nat;
+
+-- | The resource that the task uses during execution. For RUN_COMMAND and AUTOMATION task types, @TaskArn@ is the Systems Manager document name or ARN. For LAMBDA tasks, it's the function name or ARN. For STEP_FUNCTION tasks, it's the state machine ARN.
+mwtTaskARN :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtTaskARN = lens _mwtTaskARN (\ s a -> s{_mwtTaskARN = a});
+
+-- | The maximum number of errors allowed before this task stops being scheduled.
+mwtMaxErrors :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtMaxErrors = lens _mwtMaxErrors (\ s a -> s{_mwtMaxErrors = a});
+
+-- | The task name.
+mwtName :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtName = lens _mwtName (\ s a -> s{_mwtName = a});
+
+-- | The targets (either instances or tags). Instances are specified using Key=instanceids,Values=<instanceid1>,<instanceid2>. Tags are specified using Key=<tag name>,Values=<tag value>.
+mwtTargets :: Lens' MaintenanceWindowTask [Target]
+mwtTargets = lens _mwtTargets (\ s a -> s{_mwtTargets = a}) . _Default . _Coerce;
+
+-- | Information about an Amazon S3 bucket to write task-level logs to.
+mwtLoggingInfo :: Lens' MaintenanceWindowTask (Maybe LoggingInfo)
+mwtLoggingInfo = lens _mwtLoggingInfo (\ s a -> s{_mwtLoggingInfo = a});
+
+-- | The type of task. The type can be one of the following: RUN_COMMAND, AUTOMATION, LAMBDA, or STEP_FUNCTION.
+mwtType :: Lens' MaintenanceWindowTask (Maybe MaintenanceWindowTaskType)
+mwtType = lens _mwtType (\ s a -> s{_mwtType = a});
+
+-- | A description of the task.
+mwtDescription :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtDescription = lens _mwtDescription (\ s a -> s{_mwtDescription = a}) . mapping _Sensitive;
+
+-- | The maximum number of targets this task can be run for in parallel.
+mwtMaxConcurrency :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtMaxConcurrency = lens _mwtMaxConcurrency (\ s a -> s{_mwtMaxConcurrency = a});
+
+-- | The Maintenance Window ID where the task is registered.
+mwtWindowId :: Lens' MaintenanceWindowTask (Maybe Text)
+mwtWindowId = lens _mwtWindowId (\ s a -> s{_mwtWindowId = a});
+
+instance FromJSON MaintenanceWindowTask where
+        parseJSON
+          = withObject "MaintenanceWindowTask"
+              (\ x ->
+                 MaintenanceWindowTask' <$>
+                   (x .:? "ServiceRoleArn") <*> (x .:? "WindowTaskId")
+                     <*> (x .:? "TaskParameters" .!= mempty)
+                     <*> (x .:? "Priority")
+                     <*> (x .:? "TaskArn")
+                     <*> (x .:? "MaxErrors")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Targets" .!= mempty)
+                     <*> (x .:? "LoggingInfo")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Description")
+                     <*> (x .:? "MaxConcurrency")
+                     <*> (x .:? "WindowId"))
+
+instance Hashable MaintenanceWindowTask where
+
+instance NFData MaintenanceWindowTask where
+
+-- | The parameters for task execution.
+--
+--
+--
+-- /See:/ 'maintenanceWindowTaskInvocationParameters' smart constructor.
+data MaintenanceWindowTaskInvocationParameters = MaintenanceWindowTaskInvocationParameters'
+  { _mwtipAutomation    :: !(Maybe MaintenanceWindowAutomationParameters)
+  , _mwtipStepFunctions :: !(Maybe MaintenanceWindowStepFunctionsParameters)
+  , _mwtipRunCommand    :: !(Maybe MaintenanceWindowRunCommandParameters)
+  , _mwtipLambda        :: !(Maybe MaintenanceWindowLambdaParameters)
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowTaskInvocationParameters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwtipAutomation' - The parameters for a AUTOMATION task type.
+--
+-- * 'mwtipStepFunctions' - The parameters for a STEP_FUNCTION task type.
+--
+-- * 'mwtipRunCommand' - The parameters for a RUN_COMMAND task type.
+--
+-- * 'mwtipLambda' - The parameters for a LAMBDA task type.
+maintenanceWindowTaskInvocationParameters
+    :: MaintenanceWindowTaskInvocationParameters
+maintenanceWindowTaskInvocationParameters =
+  MaintenanceWindowTaskInvocationParameters'
+  { _mwtipAutomation = Nothing
+  , _mwtipStepFunctions = Nothing
+  , _mwtipRunCommand = Nothing
+  , _mwtipLambda = Nothing
+  }
+
+
+-- | The parameters for a AUTOMATION task type.
+mwtipAutomation :: Lens' MaintenanceWindowTaskInvocationParameters (Maybe MaintenanceWindowAutomationParameters)
+mwtipAutomation = lens _mwtipAutomation (\ s a -> s{_mwtipAutomation = a});
+
+-- | The parameters for a STEP_FUNCTION task type.
+mwtipStepFunctions :: Lens' MaintenanceWindowTaskInvocationParameters (Maybe MaintenanceWindowStepFunctionsParameters)
+mwtipStepFunctions = lens _mwtipStepFunctions (\ s a -> s{_mwtipStepFunctions = a});
+
+-- | The parameters for a RUN_COMMAND task type.
+mwtipRunCommand :: Lens' MaintenanceWindowTaskInvocationParameters (Maybe MaintenanceWindowRunCommandParameters)
+mwtipRunCommand = lens _mwtipRunCommand (\ s a -> s{_mwtipRunCommand = a});
+
+-- | The parameters for a LAMBDA task type.
+mwtipLambda :: Lens' MaintenanceWindowTaskInvocationParameters (Maybe MaintenanceWindowLambdaParameters)
+mwtipLambda = lens _mwtipLambda (\ s a -> s{_mwtipLambda = a});
+
+instance FromJSON
+           MaintenanceWindowTaskInvocationParameters
+         where
+        parseJSON
+          = withObject
+              "MaintenanceWindowTaskInvocationParameters"
+              (\ x ->
+                 MaintenanceWindowTaskInvocationParameters' <$>
+                   (x .:? "Automation") <*> (x .:? "StepFunctions") <*>
+                     (x .:? "RunCommand")
+                     <*> (x .:? "Lambda"))
+
+instance Hashable
+           MaintenanceWindowTaskInvocationParameters
+         where
+
+instance NFData
+           MaintenanceWindowTaskInvocationParameters
+         where
+
+instance ToJSON
+           MaintenanceWindowTaskInvocationParameters
+         where
+        toJSON MaintenanceWindowTaskInvocationParameters'{..}
+          = object
+              (catMaybes
+                 [("Automation" .=) <$> _mwtipAutomation,
+                  ("StepFunctions" .=) <$> _mwtipStepFunctions,
+                  ("RunCommand" .=) <$> _mwtipRunCommand,
+                  ("Lambda" .=) <$> _mwtipLambda])
+
+-- | Defines the values for a task parameter.
+--
+--
+--
+-- /See:/ 'maintenanceWindowTaskParameterValueExpression' smart constructor.
+newtype MaintenanceWindowTaskParameterValueExpression = MaintenanceWindowTaskParameterValueExpression'
+  { _mwtpveValues :: Maybe (Sensitive [Sensitive Text])
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'MaintenanceWindowTaskParameterValueExpression' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mwtpveValues' - This field contains an array of 0 or more strings, each 1 to 255 characters in length.
+maintenanceWindowTaskParameterValueExpression
+    :: MaintenanceWindowTaskParameterValueExpression
+maintenanceWindowTaskParameterValueExpression =
+  MaintenanceWindowTaskParameterValueExpression' {_mwtpveValues = Nothing}
+
+
+-- | This field contains an array of 0 or more strings, each 1 to 255 characters in length.
+mwtpveValues :: Lens' MaintenanceWindowTaskParameterValueExpression (Maybe [Text])
+mwtpveValues = lens _mwtpveValues (\ s a -> s{_mwtpveValues = a}) . mapping (_Sensitive . _Coerce);
+
+instance FromJSON
+           MaintenanceWindowTaskParameterValueExpression
+         where
+        parseJSON
+          = withObject
+              "MaintenanceWindowTaskParameterValueExpression"
+              (\ x ->
+                 MaintenanceWindowTaskParameterValueExpression' <$>
+                   (x .:? "Values" .!= mempty))
+
+instance Hashable
+           MaintenanceWindowTaskParameterValueExpression
+         where
+
+instance NFData
+           MaintenanceWindowTaskParameterValueExpression
+         where
+
+instance ToJSON
+           MaintenanceWindowTaskParameterValueExpression
+         where
+        toJSON
+          MaintenanceWindowTaskParameterValueExpression'{..}
+          = object
+              (catMaybes [("Values" .=) <$> _mwtpveValues])
+
+-- | A summary of resources that are not compliant. The summary is organized according to resource type.
+--
+--
+--
+-- /See:/ 'nonCompliantSummary' smart constructor.
+data NonCompliantSummary = NonCompliantSummary'
+  { _ncsNonCompliantCount :: !(Maybe Int)
+  , _ncsSeveritySummary   :: !(Maybe SeveritySummary)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NonCompliantSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncsNonCompliantCount' - The total number of compliance items that are not compliant.
+--
+-- * 'ncsSeveritySummary' - A summary of the non-compliance severity by compliance type
+nonCompliantSummary
+    :: NonCompliantSummary
+nonCompliantSummary =
+  NonCompliantSummary'
+  {_ncsNonCompliantCount = Nothing, _ncsSeveritySummary = Nothing}
+
+
+-- | The total number of compliance items that are not compliant.
+ncsNonCompliantCount :: Lens' NonCompliantSummary (Maybe Int)
+ncsNonCompliantCount = lens _ncsNonCompliantCount (\ s a -> s{_ncsNonCompliantCount = a});
+
+-- | A summary of the non-compliance severity by compliance type
+ncsSeveritySummary :: Lens' NonCompliantSummary (Maybe SeveritySummary)
+ncsSeveritySummary = lens _ncsSeveritySummary (\ s a -> s{_ncsSeveritySummary = a});
+
+instance FromJSON NonCompliantSummary where
+        parseJSON
+          = withObject "NonCompliantSummary"
+              (\ x ->
+                 NonCompliantSummary' <$>
+                   (x .:? "NonCompliantCount") <*>
+                     (x .:? "SeveritySummary"))
+
+instance Hashable NonCompliantSummary where
+
+instance NFData NonCompliantSummary where
+
+-- | Configurations for sending notifications.
+--
+--
+--
+-- /See:/ 'notificationConfig' smart constructor.
+data NotificationConfig = NotificationConfig'
+  { _ncNotificationEvents :: !(Maybe [NotificationEvent])
+  , _ncNotificationType   :: !(Maybe NotificationType)
+  , _ncNotificationARN    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'NotificationConfig' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ncNotificationEvents' - The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html Setting Up Events and Notifications> in the /Amazon EC2 Systems Manager User Guide/ .
+--
+-- * 'ncNotificationType' - Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes.
+--
+-- * 'ncNotificationARN' - An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic. Run Command pushes notifications about command status changes to this topic.
+notificationConfig
+    :: NotificationConfig
+notificationConfig =
+  NotificationConfig'
+  { _ncNotificationEvents = Nothing
+  , _ncNotificationType = Nothing
+  , _ncNotificationARN = Nothing
+  }
+
+
+-- | The different events for which you can receive notifications. These events include the following: All (events), InProgress, Success, TimedOut, Cancelled, Failed. To learn more about these events, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/monitor-commands.html Setting Up Events and Notifications> in the /Amazon EC2 Systems Manager User Guide/ .
+ncNotificationEvents :: Lens' NotificationConfig [NotificationEvent]
+ncNotificationEvents = lens _ncNotificationEvents (\ s a -> s{_ncNotificationEvents = a}) . _Default . _Coerce;
+
+-- | Command: Receive notification when the status of a command changes. Invocation: For commands sent to multiple instances, receive notification on a per-instance basis when the status of a command changes.
+ncNotificationType :: Lens' NotificationConfig (Maybe NotificationType)
+ncNotificationType = lens _ncNotificationType (\ s a -> s{_ncNotificationType = a});
+
+-- | An Amazon Resource Name (ARN) for a Simple Notification Service (SNS) topic. Run Command pushes notifications about command status changes to this topic.
+ncNotificationARN :: Lens' NotificationConfig (Maybe Text)
+ncNotificationARN = lens _ncNotificationARN (\ s a -> s{_ncNotificationARN = a});
+
+instance FromJSON NotificationConfig where
+        parseJSON
+          = withObject "NotificationConfig"
+              (\ x ->
+                 NotificationConfig' <$>
+                   (x .:? "NotificationEvents" .!= mempty) <*>
+                     (x .:? "NotificationType")
+                     <*> (x .:? "NotificationArn"))
+
+instance Hashable NotificationConfig where
+
+instance NFData NotificationConfig where
+
+instance ToJSON NotificationConfig where
+        toJSON NotificationConfig'{..}
+          = object
+              (catMaybes
+                 [("NotificationEvents" .=) <$> _ncNotificationEvents,
+                  ("NotificationType" .=) <$> _ncNotificationType,
+                  ("NotificationArn" .=) <$> _ncNotificationARN])
+
+-- | An Amazon EC2 Systems Manager parameter in Parameter Store.
+--
+--
+--
+-- /See:/ 'parameter' smart constructor.
+data Parameter = Parameter'
+  { _pValue   :: !(Maybe Text)
+  , _pName    :: !(Maybe Text)
+  , _pVersion :: !(Maybe Integer)
+  , _pType    :: !(Maybe ParameterType)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Parameter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pValue' - The parameter value.
+--
+-- * 'pName' - The name of the parameter.
+--
+-- * 'pVersion' - The parameter version.
+--
+-- * 'pType' - The type of parameter. Valid values include the following: String, String list, Secure string.
+parameter
+    :: Parameter
+parameter =
+  Parameter'
+  {_pValue = Nothing, _pName = Nothing, _pVersion = Nothing, _pType = Nothing}
+
+
+-- | The parameter value.
+pValue :: Lens' Parameter (Maybe Text)
+pValue = lens _pValue (\ s a -> s{_pValue = a});
+
+-- | The name of the parameter.
+pName :: Lens' Parameter (Maybe Text)
+pName = lens _pName (\ s a -> s{_pName = a});
+
+-- | The parameter version.
+pVersion :: Lens' Parameter (Maybe Integer)
+pVersion = lens _pVersion (\ s a -> s{_pVersion = a});
+
+-- | The type of parameter. Valid values include the following: String, String list, Secure string.
+pType :: Lens' Parameter (Maybe ParameterType)
+pType = lens _pType (\ s a -> s{_pType = a});
+
+instance FromJSON Parameter where
+        parseJSON
+          = withObject "Parameter"
+              (\ x ->
+                 Parameter' <$>
+                   (x .:? "Value") <*> (x .:? "Name") <*>
+                     (x .:? "Version")
+                     <*> (x .:? "Type"))
+
+instance Hashable Parameter where
+
+instance NFData Parameter where
+
+-- | Information about parameter usage.
+--
+--
+--
+-- /See:/ 'parameterHistory' smart constructor.
+data ParameterHistory = ParameterHistory'
+  { _phLastModifiedDate :: !(Maybe POSIX)
+  , _phKeyId            :: !(Maybe Text)
+  , _phValue            :: !(Maybe Text)
+  , _phName             :: !(Maybe Text)
+  , _phVersion          :: !(Maybe Integer)
+  , _phLastModifiedUser :: !(Maybe Text)
+  , _phAllowedPattern   :: !(Maybe Text)
+  , _phType             :: !(Maybe ParameterType)
+  , _phDescription      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ParameterHistory' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'phLastModifiedDate' - Date the parameter was last changed or updated.
+--
+-- * 'phKeyId' - The ID of the query key used for this parameter.
+--
+-- * 'phValue' - The parameter value.
+--
+-- * 'phName' - The name of the parameter.
+--
+-- * 'phVersion' - The parameter version.
+--
+-- * 'phLastModifiedUser' - Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
+--
+-- * 'phAllowedPattern' - Parameter names can include the following letters and symbols. a-zA-Z0-9_.-
+--
+-- * 'phType' - The type of parameter used.
+--
+-- * 'phDescription' - Information about the parameter.
+parameterHistory
+    :: ParameterHistory
+parameterHistory =
+  ParameterHistory'
+  { _phLastModifiedDate = Nothing
+  , _phKeyId = Nothing
+  , _phValue = Nothing
+  , _phName = Nothing
+  , _phVersion = Nothing
+  , _phLastModifiedUser = Nothing
+  , _phAllowedPattern = Nothing
+  , _phType = Nothing
+  , _phDescription = Nothing
+  }
+
+
+-- | Date the parameter was last changed or updated.
+phLastModifiedDate :: Lens' ParameterHistory (Maybe UTCTime)
+phLastModifiedDate = lens _phLastModifiedDate (\ s a -> s{_phLastModifiedDate = a}) . mapping _Time;
+
+-- | The ID of the query key used for this parameter.
+phKeyId :: Lens' ParameterHistory (Maybe Text)
+phKeyId = lens _phKeyId (\ s a -> s{_phKeyId = a});
+
+-- | The parameter value.
+phValue :: Lens' ParameterHistory (Maybe Text)
+phValue = lens _phValue (\ s a -> s{_phValue = a});
+
+-- | The name of the parameter.
+phName :: Lens' ParameterHistory (Maybe Text)
+phName = lens _phName (\ s a -> s{_phName = a});
+
+-- | The parameter version.
+phVersion :: Lens' ParameterHistory (Maybe Integer)
+phVersion = lens _phVersion (\ s a -> s{_phVersion = a});
+
+-- | Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
+phLastModifiedUser :: Lens' ParameterHistory (Maybe Text)
+phLastModifiedUser = lens _phLastModifiedUser (\ s a -> s{_phLastModifiedUser = a});
+
+-- | Parameter names can include the following letters and symbols. a-zA-Z0-9_.-
+phAllowedPattern :: Lens' ParameterHistory (Maybe Text)
+phAllowedPattern = lens _phAllowedPattern (\ s a -> s{_phAllowedPattern = a});
+
+-- | The type of parameter used.
+phType :: Lens' ParameterHistory (Maybe ParameterType)
+phType = lens _phType (\ s a -> s{_phType = a});
+
+-- | Information about the parameter.
+phDescription :: Lens' ParameterHistory (Maybe Text)
+phDescription = lens _phDescription (\ s a -> s{_phDescription = a});
+
+instance FromJSON ParameterHistory where
+        parseJSON
+          = withObject "ParameterHistory"
+              (\ x ->
+                 ParameterHistory' <$>
+                   (x .:? "LastModifiedDate") <*> (x .:? "KeyId") <*>
+                     (x .:? "Value")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Version")
+                     <*> (x .:? "LastModifiedUser")
+                     <*> (x .:? "AllowedPattern")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Description"))
+
+instance Hashable ParameterHistory where
+
+instance NFData ParameterHistory where
+
+-- | Metada includes information like the ARN of the last user and the date/time the parameter was last used.
+--
+--
+--
+-- /See:/ 'parameterMetadata' smart constructor.
+data ParameterMetadata = ParameterMetadata'
+  { _pmLastModifiedDate :: !(Maybe POSIX)
+  , _pmKeyId            :: !(Maybe Text)
+  , _pmName             :: !(Maybe Text)
+  , _pmVersion          :: !(Maybe Integer)
+  , _pmLastModifiedUser :: !(Maybe Text)
+  , _pmAllowedPattern   :: !(Maybe Text)
+  , _pmType             :: !(Maybe ParameterType)
+  , _pmDescription      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ParameterMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pmLastModifiedDate' - Date the parameter was last changed or updated.
+--
+-- * 'pmKeyId' - The ID of the query key used for this parameter.
+--
+-- * 'pmName' - The parameter name.
+--
+-- * 'pmVersion' - The parameter version.
+--
+-- * 'pmLastModifiedUser' - Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
+--
+-- * 'pmAllowedPattern' - A parameter name can include only the following letters and symbols. a-zA-Z0-9_.-
+--
+-- * 'pmType' - The type of parameter. Valid parameter types include the following: String, String list, Secure string.
+--
+-- * 'pmDescription' - Description of the parameter actions.
+parameterMetadata
+    :: ParameterMetadata
+parameterMetadata =
+  ParameterMetadata'
+  { _pmLastModifiedDate = Nothing
+  , _pmKeyId = Nothing
+  , _pmName = Nothing
+  , _pmVersion = Nothing
+  , _pmLastModifiedUser = Nothing
+  , _pmAllowedPattern = Nothing
+  , _pmType = Nothing
+  , _pmDescription = Nothing
+  }
+
+
+-- | Date the parameter was last changed or updated.
+pmLastModifiedDate :: Lens' ParameterMetadata (Maybe UTCTime)
+pmLastModifiedDate = lens _pmLastModifiedDate (\ s a -> s{_pmLastModifiedDate = a}) . mapping _Time;
+
+-- | The ID of the query key used for this parameter.
+pmKeyId :: Lens' ParameterMetadata (Maybe Text)
+pmKeyId = lens _pmKeyId (\ s a -> s{_pmKeyId = a});
+
+-- | The parameter name.
+pmName :: Lens' ParameterMetadata (Maybe Text)
+pmName = lens _pmName (\ s a -> s{_pmName = a});
+
+-- | The parameter version.
+pmVersion :: Lens' ParameterMetadata (Maybe Integer)
+pmVersion = lens _pmVersion (\ s a -> s{_pmVersion = a});
+
+-- | Amazon Resource Name (ARN) of the AWS user who last changed the parameter.
+pmLastModifiedUser :: Lens' ParameterMetadata (Maybe Text)
+pmLastModifiedUser = lens _pmLastModifiedUser (\ s a -> s{_pmLastModifiedUser = a});
+
+-- | A parameter name can include only the following letters and symbols. a-zA-Z0-9_.-
+pmAllowedPattern :: Lens' ParameterMetadata (Maybe Text)
+pmAllowedPattern = lens _pmAllowedPattern (\ s a -> s{_pmAllowedPattern = a});
+
+-- | The type of parameter. Valid parameter types include the following: String, String list, Secure string.
+pmType :: Lens' ParameterMetadata (Maybe ParameterType)
+pmType = lens _pmType (\ s a -> s{_pmType = a});
+
+-- | Description of the parameter actions.
+pmDescription :: Lens' ParameterMetadata (Maybe Text)
+pmDescription = lens _pmDescription (\ s a -> s{_pmDescription = a});
+
+instance FromJSON ParameterMetadata where
+        parseJSON
+          = withObject "ParameterMetadata"
+              (\ x ->
+                 ParameterMetadata' <$>
+                   (x .:? "LastModifiedDate") <*> (x .:? "KeyId") <*>
+                     (x .:? "Name")
+                     <*> (x .:? "Version")
+                     <*> (x .:? "LastModifiedUser")
+                     <*> (x .:? "AllowedPattern")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Description"))
+
+instance Hashable ParameterMetadata where
+
+instance NFData ParameterMetadata where
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+--
+--
+--
+-- /See:/ 'parameterStringFilter' smart constructor.
+data ParameterStringFilter = ParameterStringFilter'
+  { _psfValues :: !(Maybe (List1 Text))
+  , _psfOption :: !(Maybe Text)
+  , _psfKey    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ParameterStringFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psfValues' - The value you want to search for.
+--
+-- * 'psfOption' - Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel.
+--
+-- * 'psfKey' - The name of the filter.
+parameterStringFilter
+    :: Text -- ^ 'psfKey'
+    -> ParameterStringFilter
+parameterStringFilter pKey_ =
+  ParameterStringFilter'
+  {_psfValues = Nothing, _psfOption = Nothing, _psfKey = pKey_}
+
+
+-- | The value you want to search for.
+psfValues :: Lens' ParameterStringFilter (Maybe (NonEmpty Text))
+psfValues = lens _psfValues (\ s a -> s{_psfValues = a}) . mapping _List1;
+
+-- | Valid options are Equals and BeginsWith. For Path filter, valid options are Recursive and OneLevel.
+psfOption :: Lens' ParameterStringFilter (Maybe Text)
+psfOption = lens _psfOption (\ s a -> s{_psfOption = a});
+
+-- | The name of the filter.
+psfKey :: Lens' ParameterStringFilter Text
+psfKey = lens _psfKey (\ s a -> s{_psfKey = a});
+
+instance Hashable ParameterStringFilter where
+
+instance NFData ParameterStringFilter where
+
+instance ToJSON ParameterStringFilter where
+        toJSON ParameterStringFilter'{..}
+          = object
+              (catMaybes
+                 [("Values" .=) <$> _psfValues,
+                  ("Option" .=) <$> _psfOption,
+                  Just ("Key" .= _psfKey)])
+
+-- | One or more filters. Use a filter to return a more specific list of results.
+--
+--
+--
+-- /See:/ 'parametersFilter' smart constructor.
+data ParametersFilter = ParametersFilter'
+  { _pKey    :: !ParametersFilterKey
+  , _pValues :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ParametersFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pKey' - The name of the filter.
+--
+-- * 'pValues' - The filter values.
+parametersFilter
+    :: ParametersFilterKey -- ^ 'pKey'
+    -> NonEmpty Text -- ^ 'pValues'
+    -> ParametersFilter
+parametersFilter pKey_ pValues_ =
+  ParametersFilter' {_pKey = pKey_, _pValues = _List1 # pValues_}
+
+
+-- | The name of the filter.
+pKey :: Lens' ParametersFilter ParametersFilterKey
+pKey = lens _pKey (\ s a -> s{_pKey = a});
+
+-- | The filter values.
+pValues :: Lens' ParametersFilter (NonEmpty Text)
+pValues = lens _pValues (\ s a -> s{_pValues = a}) . _List1;
+
+instance Hashable ParametersFilter where
+
+instance NFData ParametersFilter where
+
+instance ToJSON ParametersFilter where
+        toJSON ParametersFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _pKey), Just ("Values" .= _pValues)])
+
+-- | Represents metadata about a patch.
+--
+--
+--
+-- /See:/ 'patch' smart constructor.
+data Patch = Patch'
+  { _pVendor         :: !(Maybe Text)
+  , _pMsrcSeverity   :: !(Maybe Text)
+  , _pProductFamily  :: !(Maybe Text)
+  , _pClassification :: !(Maybe Text)
+  , _pMsrcNumber     :: !(Maybe Text)
+  , _pLanguage       :: !(Maybe Text)
+  , _pKbNumber       :: !(Maybe Text)
+  , _pContentURL     :: !(Maybe Text)
+  , _pId             :: !(Maybe Text)
+  , _pReleaseDate    :: !(Maybe POSIX)
+  , _pTitle          :: !(Maybe Text)
+  , _pProduct        :: !(Maybe Text)
+  , _pDescription    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Patch' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pVendor' - The name of the vendor providing the patch.
+--
+-- * 'pMsrcSeverity' - The severity of the patch (for example Critical, Important, Moderate).
+--
+-- * 'pProductFamily' - The product family the patch is applicable for (for example, Windows).
+--
+-- * 'pClassification' - The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
+--
+-- * 'pMsrcNumber' - The ID of the MSRC bulletin the patch is related to.
+--
+-- * 'pLanguage' - The language of the patch if it's language-specific.
+--
+-- * 'pKbNumber' - The Microsoft Knowledge Base ID of the patch.
+--
+-- * 'pContentURL' - The URL where more information can be obtained about the patch.
+--
+-- * 'pId' - The ID of the patch (this is different than the Microsoft Knowledge Base ID).
+--
+-- * 'pReleaseDate' - The date the patch was released.
+--
+-- * 'pTitle' - The title of the patch.
+--
+-- * 'pProduct' - The specific product the patch is applicable for (for example, WindowsServer2016).
+--
+-- * 'pDescription' - The description of the patch.
+patch
+    :: Patch
+patch =
+  Patch'
+  { _pVendor = Nothing
+  , _pMsrcSeverity = Nothing
+  , _pProductFamily = Nothing
+  , _pClassification = Nothing
+  , _pMsrcNumber = Nothing
+  , _pLanguage = Nothing
+  , _pKbNumber = Nothing
+  , _pContentURL = Nothing
+  , _pId = Nothing
+  , _pReleaseDate = Nothing
+  , _pTitle = Nothing
+  , _pProduct = Nothing
+  , _pDescription = Nothing
+  }
+
+
+-- | The name of the vendor providing the patch.
+pVendor :: Lens' Patch (Maybe Text)
+pVendor = lens _pVendor (\ s a -> s{_pVendor = a});
+
+-- | The severity of the patch (for example Critical, Important, Moderate).
+pMsrcSeverity :: Lens' Patch (Maybe Text)
+pMsrcSeverity = lens _pMsrcSeverity (\ s a -> s{_pMsrcSeverity = a});
+
+-- | The product family the patch is applicable for (for example, Windows).
+pProductFamily :: Lens' Patch (Maybe Text)
+pProductFamily = lens _pProductFamily (\ s a -> s{_pProductFamily = a});
+
+-- | The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
+pClassification :: Lens' Patch (Maybe Text)
+pClassification = lens _pClassification (\ s a -> s{_pClassification = a});
+
+-- | The ID of the MSRC bulletin the patch is related to.
+pMsrcNumber :: Lens' Patch (Maybe Text)
+pMsrcNumber = lens _pMsrcNumber (\ s a -> s{_pMsrcNumber = a});
+
+-- | The language of the patch if it's language-specific.
+pLanguage :: Lens' Patch (Maybe Text)
+pLanguage = lens _pLanguage (\ s a -> s{_pLanguage = a});
+
+-- | The Microsoft Knowledge Base ID of the patch.
+pKbNumber :: Lens' Patch (Maybe Text)
+pKbNumber = lens _pKbNumber (\ s a -> s{_pKbNumber = a});
+
+-- | The URL where more information can be obtained about the patch.
+pContentURL :: Lens' Patch (Maybe Text)
+pContentURL = lens _pContentURL (\ s a -> s{_pContentURL = a});
+
+-- | The ID of the patch (this is different than the Microsoft Knowledge Base ID).
+pId :: Lens' Patch (Maybe Text)
+pId = lens _pId (\ s a -> s{_pId = a});
+
+-- | The date the patch was released.
+pReleaseDate :: Lens' Patch (Maybe UTCTime)
+pReleaseDate = lens _pReleaseDate (\ s a -> s{_pReleaseDate = a}) . mapping _Time;
+
+-- | The title of the patch.
+pTitle :: Lens' Patch (Maybe Text)
+pTitle = lens _pTitle (\ s a -> s{_pTitle = a});
+
+-- | The specific product the patch is applicable for (for example, WindowsServer2016).
+pProduct :: Lens' Patch (Maybe Text)
+pProduct = lens _pProduct (\ s a -> s{_pProduct = a});
+
+-- | The description of the patch.
+pDescription :: Lens' Patch (Maybe Text)
+pDescription = lens _pDescription (\ s a -> s{_pDescription = a});
+
+instance FromJSON Patch where
+        parseJSON
+          = withObject "Patch"
+              (\ x ->
+                 Patch' <$>
+                   (x .:? "Vendor") <*> (x .:? "MsrcSeverity") <*>
+                     (x .:? "ProductFamily")
+                     <*> (x .:? "Classification")
+                     <*> (x .:? "MsrcNumber")
+                     <*> (x .:? "Language")
+                     <*> (x .:? "KbNumber")
+                     <*> (x .:? "ContentUrl")
+                     <*> (x .:? "Id")
+                     <*> (x .:? "ReleaseDate")
+                     <*> (x .:? "Title")
+                     <*> (x .:? "Product")
+                     <*> (x .:? "Description"))
+
+instance Hashable Patch where
+
+instance NFData Patch where
+
+-- | Defines the basic information about a patch baseline.
+--
+--
+--
+-- /See:/ 'patchBaselineIdentity' smart constructor.
+data PatchBaselineIdentity = PatchBaselineIdentity'
+  { _pbiBaselineName        :: !(Maybe Text)
+  , _pbiBaselineDescription :: !(Maybe Text)
+  , _pbiOperatingSystem     :: !(Maybe OperatingSystem)
+  , _pbiDefaultBaseline     :: !(Maybe Bool)
+  , _pbiBaselineId          :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchBaselineIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pbiBaselineName' - The name of the patch baseline.
+--
+-- * 'pbiBaselineDescription' - The description of the patch baseline.
+--
+-- * 'pbiOperatingSystem' - Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS.
+--
+-- * 'pbiDefaultBaseline' - Whether this is the default baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.
+--
+-- * 'pbiBaselineId' - The ID of the patch baseline.
+patchBaselineIdentity
+    :: PatchBaselineIdentity
+patchBaselineIdentity =
+  PatchBaselineIdentity'
+  { _pbiBaselineName = Nothing
+  , _pbiBaselineDescription = Nothing
+  , _pbiOperatingSystem = Nothing
+  , _pbiDefaultBaseline = Nothing
+  , _pbiBaselineId = Nothing
+  }
+
+
+-- | The name of the patch baseline.
+pbiBaselineName :: Lens' PatchBaselineIdentity (Maybe Text)
+pbiBaselineName = lens _pbiBaselineName (\ s a -> s{_pbiBaselineName = a});
+
+-- | The description of the patch baseline.
+pbiBaselineDescription :: Lens' PatchBaselineIdentity (Maybe Text)
+pbiBaselineDescription = lens _pbiBaselineDescription (\ s a -> s{_pbiBaselineDescription = a});
+
+-- | Defines the operating system the patch baseline applies to. Supported operating systems include WINDOWS, AMAZON_LINUX, UBUNTU and REDHAT_ENTERPRISE_LINUX. The Default value is WINDOWS.
+pbiOperatingSystem :: Lens' PatchBaselineIdentity (Maybe OperatingSystem)
+pbiOperatingSystem = lens _pbiOperatingSystem (\ s a -> s{_pbiOperatingSystem = a});
+
+-- | Whether this is the default baseline. Note that Systems Manager supports creating multiple default patch baselines. For example, you can create a default patch baseline for each operating system.
+pbiDefaultBaseline :: Lens' PatchBaselineIdentity (Maybe Bool)
+pbiDefaultBaseline = lens _pbiDefaultBaseline (\ s a -> s{_pbiDefaultBaseline = a});
+
+-- | The ID of the patch baseline.
+pbiBaselineId :: Lens' PatchBaselineIdentity (Maybe Text)
+pbiBaselineId = lens _pbiBaselineId (\ s a -> s{_pbiBaselineId = a});
+
+instance FromJSON PatchBaselineIdentity where
+        parseJSON
+          = withObject "PatchBaselineIdentity"
+              (\ x ->
+                 PatchBaselineIdentity' <$>
+                   (x .:? "BaselineName") <*>
+                     (x .:? "BaselineDescription")
+                     <*> (x .:? "OperatingSystem")
+                     <*> (x .:? "DefaultBaseline")
+                     <*> (x .:? "BaselineId"))
+
+instance Hashable PatchBaselineIdentity where
+
+instance NFData PatchBaselineIdentity where
+
+-- | Information about the state of a patch on a particular instance as it relates to the patch baseline used to patch the instance.
+--
+--
+--
+-- /See:/ 'patchComplianceData' smart constructor.
+data PatchComplianceData = PatchComplianceData'
+  { _pcdTitle          :: !Text
+  , _pcdKBId           :: !Text
+  , _pcdClassification :: !Text
+  , _pcdSeverity       :: !Text
+  , _pcdState          :: !PatchComplianceDataState
+  , _pcdInstalledTime  :: !POSIX
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchComplianceData' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pcdTitle' - The title of the patch.
+--
+-- * 'pcdKBId' - The operating system-specific ID of the patch.
+--
+-- * 'pcdClassification' - The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
+--
+-- * 'pcdSeverity' - The severity of the patch (for example, Critical, Important, Moderate).
+--
+-- * 'pcdState' - The state of the patch on the instance (INSTALLED, INSTALLED_OTHER, MISSING, NOT_APPLICABLE or FAILED).
+--
+-- * 'pcdInstalledTime' - The date/time the patch was installed on the instance. Note that not all operating systems provide this level of information.
+patchComplianceData
+    :: Text -- ^ 'pcdTitle'
+    -> Text -- ^ 'pcdKBId'
+    -> Text -- ^ 'pcdClassification'
+    -> Text -- ^ 'pcdSeverity'
+    -> PatchComplianceDataState -- ^ 'pcdState'
+    -> UTCTime -- ^ 'pcdInstalledTime'
+    -> PatchComplianceData
+patchComplianceData pTitle_ pKBId_ pClassification_ pSeverity_ pState_ pInstalledTime_ =
+  PatchComplianceData'
+  { _pcdTitle = pTitle_
+  , _pcdKBId = pKBId_
+  , _pcdClassification = pClassification_
+  , _pcdSeverity = pSeverity_
+  , _pcdState = pState_
+  , _pcdInstalledTime = _Time # pInstalledTime_
+  }
+
+
+-- | The title of the patch.
+pcdTitle :: Lens' PatchComplianceData Text
+pcdTitle = lens _pcdTitle (\ s a -> s{_pcdTitle = a});
+
+-- | The operating system-specific ID of the patch.
+pcdKBId :: Lens' PatchComplianceData Text
+pcdKBId = lens _pcdKBId (\ s a -> s{_pcdKBId = a});
+
+-- | The classification of the patch (for example, SecurityUpdates, Updates, CriticalUpdates).
+pcdClassification :: Lens' PatchComplianceData Text
+pcdClassification = lens _pcdClassification (\ s a -> s{_pcdClassification = a});
+
+-- | The severity of the patch (for example, Critical, Important, Moderate).
+pcdSeverity :: Lens' PatchComplianceData Text
+pcdSeverity = lens _pcdSeverity (\ s a -> s{_pcdSeverity = a});
+
+-- | The state of the patch on the instance (INSTALLED, INSTALLED_OTHER, MISSING, NOT_APPLICABLE or FAILED).
+pcdState :: Lens' PatchComplianceData PatchComplianceDataState
+pcdState = lens _pcdState (\ s a -> s{_pcdState = a});
+
+-- | The date/time the patch was installed on the instance. Note that not all operating systems provide this level of information.
+pcdInstalledTime :: Lens' PatchComplianceData UTCTime
+pcdInstalledTime = lens _pcdInstalledTime (\ s a -> s{_pcdInstalledTime = a}) . _Time;
+
+instance FromJSON PatchComplianceData where
+        parseJSON
+          = withObject "PatchComplianceData"
+              (\ x ->
+                 PatchComplianceData' <$>
+                   (x .: "Title") <*> (x .: "KBId") <*>
+                     (x .: "Classification")
+                     <*> (x .: "Severity")
+                     <*> (x .: "State")
+                     <*> (x .: "InstalledTime"))
+
+instance Hashable PatchComplianceData where
+
+instance NFData PatchComplianceData where
+
+-- | Defines a patch filter.
+--
+--
+--
+-- /See:/ 'patchFilter' smart constructor.
+data PatchFilter = PatchFilter'
+  { _pfKey    :: !PatchFilterKey
+  , _pfValues :: !(List1 Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfKey' - The key for the filter (PRODUCT, CLASSIFICATION, MSRC_SEVERITY, PATCH_ID)
+--
+-- * 'pfValues' - The value for the filter key.
+patchFilter
+    :: PatchFilterKey -- ^ 'pfKey'
+    -> NonEmpty Text -- ^ 'pfValues'
+    -> PatchFilter
+patchFilter pKey_ pValues_ =
+  PatchFilter' {_pfKey = pKey_, _pfValues = _List1 # pValues_}
+
+
+-- | The key for the filter (PRODUCT, CLASSIFICATION, MSRC_SEVERITY, PATCH_ID)
+pfKey :: Lens' PatchFilter PatchFilterKey
+pfKey = lens _pfKey (\ s a -> s{_pfKey = a});
+
+-- | The value for the filter key.
+pfValues :: Lens' PatchFilter (NonEmpty Text)
+pfValues = lens _pfValues (\ s a -> s{_pfValues = a}) . _List1;
+
+instance FromJSON PatchFilter where
+        parseJSON
+          = withObject "PatchFilter"
+              (\ x ->
+                 PatchFilter' <$> (x .: "Key") <*> (x .: "Values"))
+
+instance Hashable PatchFilter where
+
+instance NFData PatchFilter where
+
+instance ToJSON PatchFilter where
+        toJSON PatchFilter'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _pfKey),
+                  Just ("Values" .= _pfValues)])
+
+-- | A set of patch filters, typically used for approval rules.
+--
+--
+--
+-- /See:/ 'patchFilterGroup' smart constructor.
+newtype PatchFilterGroup = PatchFilterGroup'
+  { _pfgPatchFilters :: [PatchFilter]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchFilterGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pfgPatchFilters' - The set of patch filters that make up the group.
+patchFilterGroup
+    :: PatchFilterGroup
+patchFilterGroup = PatchFilterGroup' {_pfgPatchFilters = mempty}
+
+
+-- | The set of patch filters that make up the group.
+pfgPatchFilters :: Lens' PatchFilterGroup [PatchFilter]
+pfgPatchFilters = lens _pfgPatchFilters (\ s a -> s{_pfgPatchFilters = a}) . _Coerce;
+
+instance FromJSON PatchFilterGroup where
+        parseJSON
+          = withObject "PatchFilterGroup"
+              (\ x ->
+                 PatchFilterGroup' <$>
+                   (x .:? "PatchFilters" .!= mempty))
+
+instance Hashable PatchFilterGroup where
+
+instance NFData PatchFilterGroup where
+
+instance ToJSON PatchFilterGroup where
+        toJSON PatchFilterGroup'{..}
+          = object
+              (catMaybes
+                 [Just ("PatchFilters" .= _pfgPatchFilters)])
+
+-- | The mapping between a patch group and the patch baseline the patch group is registered with.
+--
+--
+--
+-- /See:/ 'patchGroupPatchBaselineMapping' smart constructor.
+data PatchGroupPatchBaselineMapping = PatchGroupPatchBaselineMapping'
+  { _pgpbmBaselineIdentity :: !(Maybe PatchBaselineIdentity)
+  , _pgpbmPatchGroup       :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchGroupPatchBaselineMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pgpbmBaselineIdentity' - The patch baseline the patch group is registered with.
+--
+-- * 'pgpbmPatchGroup' - The name of the patch group registered with the patch baseline.
+patchGroupPatchBaselineMapping
+    :: PatchGroupPatchBaselineMapping
+patchGroupPatchBaselineMapping =
+  PatchGroupPatchBaselineMapping'
+  {_pgpbmBaselineIdentity = Nothing, _pgpbmPatchGroup = Nothing}
+
+
+-- | The patch baseline the patch group is registered with.
+pgpbmBaselineIdentity :: Lens' PatchGroupPatchBaselineMapping (Maybe PatchBaselineIdentity)
+pgpbmBaselineIdentity = lens _pgpbmBaselineIdentity (\ s a -> s{_pgpbmBaselineIdentity = a});
+
+-- | The name of the patch group registered with the patch baseline.
+pgpbmPatchGroup :: Lens' PatchGroupPatchBaselineMapping (Maybe Text)
+pgpbmPatchGroup = lens _pgpbmPatchGroup (\ s a -> s{_pgpbmPatchGroup = a});
+
+instance FromJSON PatchGroupPatchBaselineMapping
+         where
+        parseJSON
+          = withObject "PatchGroupPatchBaselineMapping"
+              (\ x ->
+                 PatchGroupPatchBaselineMapping' <$>
+                   (x .:? "BaselineIdentity") <*> (x .:? "PatchGroup"))
+
+instance Hashable PatchGroupPatchBaselineMapping
+         where
+
+instance NFData PatchGroupPatchBaselineMapping where
+
+-- | Defines a filter used in Patch Manager APIs.
+--
+--
+--
+-- /See:/ 'patchOrchestratorFilter' smart constructor.
+data PatchOrchestratorFilter = PatchOrchestratorFilter'
+  { _pofValues :: !(Maybe [Text])
+  , _pofKey    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchOrchestratorFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pofValues' - The value for the filter.
+--
+-- * 'pofKey' - The key for the filter.
+patchOrchestratorFilter
+    :: PatchOrchestratorFilter
+patchOrchestratorFilter =
+  PatchOrchestratorFilter' {_pofValues = Nothing, _pofKey = Nothing}
+
+
+-- | The value for the filter.
+pofValues :: Lens' PatchOrchestratorFilter [Text]
+pofValues = lens _pofValues (\ s a -> s{_pofValues = a}) . _Default . _Coerce;
+
+-- | The key for the filter.
+pofKey :: Lens' PatchOrchestratorFilter (Maybe Text)
+pofKey = lens _pofKey (\ s a -> s{_pofKey = a});
+
+instance Hashable PatchOrchestratorFilter where
+
+instance NFData PatchOrchestratorFilter where
+
+instance ToJSON PatchOrchestratorFilter where
+        toJSON PatchOrchestratorFilter'{..}
+          = object
+              (catMaybes
+                 [("Values" .=) <$> _pofValues,
+                  ("Key" .=) <$> _pofKey])
+
+-- | Defines an approval rule for a patch baseline.
+--
+--
+--
+-- /See:/ 'patchRule' smart constructor.
+data PatchRule = PatchRule'
+  { _prComplianceLevel  :: !(Maybe PatchComplianceLevel)
+  , _prPatchFilterGroup :: !PatchFilterGroup
+  , _prApproveAfterDays :: !Nat
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prComplianceLevel' - A compliance severity level for all approved patches in a patch baseline. Valid compliance severity levels include the following: Unspecified, Critical, High, Medium, Low, and Informational.
+--
+-- * 'prPatchFilterGroup' - The patch filter group that defines the criteria for the rule.
+--
+-- * 'prApproveAfterDays' - The number of days after the release date of each patch matched by the rule the patch is marked as approved in the patch baseline.
+patchRule
+    :: PatchFilterGroup -- ^ 'prPatchFilterGroup'
+    -> Natural -- ^ 'prApproveAfterDays'
+    -> PatchRule
+patchRule pPatchFilterGroup_ pApproveAfterDays_ =
+  PatchRule'
+  { _prComplianceLevel = Nothing
+  , _prPatchFilterGroup = pPatchFilterGroup_
+  , _prApproveAfterDays = _Nat # pApproveAfterDays_
+  }
+
+
+-- | A compliance severity level for all approved patches in a patch baseline. Valid compliance severity levels include the following: Unspecified, Critical, High, Medium, Low, and Informational.
+prComplianceLevel :: Lens' PatchRule (Maybe PatchComplianceLevel)
+prComplianceLevel = lens _prComplianceLevel (\ s a -> s{_prComplianceLevel = a});
+
+-- | The patch filter group that defines the criteria for the rule.
+prPatchFilterGroup :: Lens' PatchRule PatchFilterGroup
+prPatchFilterGroup = lens _prPatchFilterGroup (\ s a -> s{_prPatchFilterGroup = a});
+
+-- | The number of days after the release date of each patch matched by the rule the patch is marked as approved in the patch baseline.
+prApproveAfterDays :: Lens' PatchRule Natural
+prApproveAfterDays = lens _prApproveAfterDays (\ s a -> s{_prApproveAfterDays = a}) . _Nat;
+
+instance FromJSON PatchRule where
+        parseJSON
+          = withObject "PatchRule"
+              (\ x ->
+                 PatchRule' <$>
+                   (x .:? "ComplianceLevel") <*>
+                     (x .: "PatchFilterGroup")
+                     <*> (x .: "ApproveAfterDays"))
+
+instance Hashable PatchRule where
+
+instance NFData PatchRule where
+
+instance ToJSON PatchRule where
+        toJSON PatchRule'{..}
+          = object
+              (catMaybes
+                 [("ComplianceLevel" .=) <$> _prComplianceLevel,
+                  Just ("PatchFilterGroup" .= _prPatchFilterGroup),
+                  Just ("ApproveAfterDays" .= _prApproveAfterDays)])
+
+-- | A set of rules defining the approval rules for a patch baseline.
+--
+--
+--
+-- /See:/ 'patchRuleGroup' smart constructor.
+newtype PatchRuleGroup = PatchRuleGroup'
+  { _prgPatchRules :: [PatchRule]
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchRuleGroup' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'prgPatchRules' - The rules that make up the rule group.
+patchRuleGroup
+    :: PatchRuleGroup
+patchRuleGroup = PatchRuleGroup' {_prgPatchRules = mempty}
+
+
+-- | The rules that make up the rule group.
+prgPatchRules :: Lens' PatchRuleGroup [PatchRule]
+prgPatchRules = lens _prgPatchRules (\ s a -> s{_prgPatchRules = a}) . _Coerce;
+
+instance FromJSON PatchRuleGroup where
+        parseJSON
+          = withObject "PatchRuleGroup"
+              (\ x ->
+                 PatchRuleGroup' <$> (x .:? "PatchRules" .!= mempty))
+
+instance Hashable PatchRuleGroup where
+
+instance NFData PatchRuleGroup where
+
+instance ToJSON PatchRuleGroup where
+        toJSON PatchRuleGroup'{..}
+          = object
+              (catMaybes [Just ("PatchRules" .= _prgPatchRules)])
+
+-- | Information about the approval status of a patch.
+--
+--
+--
+-- /See:/ 'patchStatus' smart constructor.
+data PatchStatus = PatchStatus'
+  { _psApprovalDate     :: !(Maybe POSIX)
+  , _psDeploymentStatus :: !(Maybe PatchDeploymentStatus)
+  , _psComplianceLevel  :: !(Maybe PatchComplianceLevel)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PatchStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'psApprovalDate' - The date the patch was approved (or will be approved if the status is PENDING_APPROVAL).
+--
+-- * 'psDeploymentStatus' - The approval status of a patch (APPROVED, PENDING_APPROVAL, EXPLICIT_APPROVED, EXPLICIT_REJECTED).
+--
+-- * 'psComplianceLevel' - The compliance severity level for a patch.
+patchStatus
+    :: PatchStatus
+patchStatus =
+  PatchStatus'
+  { _psApprovalDate = Nothing
+  , _psDeploymentStatus = Nothing
+  , _psComplianceLevel = Nothing
+  }
+
+
+-- | The date the patch was approved (or will be approved if the status is PENDING_APPROVAL).
+psApprovalDate :: Lens' PatchStatus (Maybe UTCTime)
+psApprovalDate = lens _psApprovalDate (\ s a -> s{_psApprovalDate = a}) . mapping _Time;
+
+-- | The approval status of a patch (APPROVED, PENDING_APPROVAL, EXPLICIT_APPROVED, EXPLICIT_REJECTED).
+psDeploymentStatus :: Lens' PatchStatus (Maybe PatchDeploymentStatus)
+psDeploymentStatus = lens _psDeploymentStatus (\ s a -> s{_psDeploymentStatus = a});
+
+-- | The compliance severity level for a patch.
+psComplianceLevel :: Lens' PatchStatus (Maybe PatchComplianceLevel)
+psComplianceLevel = lens _psComplianceLevel (\ s a -> s{_psComplianceLevel = a});
+
+instance FromJSON PatchStatus where
+        parseJSON
+          = withObject "PatchStatus"
+              (\ x ->
+                 PatchStatus' <$>
+                   (x .:? "ApprovalDate") <*> (x .:? "DeploymentStatus")
+                     <*> (x .:? "ComplianceLevel"))
+
+instance Hashable PatchStatus where
+
+instance NFData PatchStatus where
+
+-- | Compliance summary information for a specific resource.
+--
+--
+--
+-- /See:/ 'resourceComplianceSummaryItem' smart constructor.
+data ResourceComplianceSummaryItem = ResourceComplianceSummaryItem'
+  { _rcsiNonCompliantSummary :: !(Maybe NonCompliantSummary)
+  , _rcsiStatus              :: !(Maybe ComplianceStatus)
+  , _rcsiResourceId          :: !(Maybe Text)
+  , _rcsiResourceType        :: !(Maybe Text)
+  , _rcsiCompliantSummary    :: !(Maybe CompliantSummary)
+  , _rcsiExecutionSummary    :: !(Maybe ComplianceExecutionSummary)
+  , _rcsiOverallSeverity     :: !(Maybe ComplianceSeverity)
+  , _rcsiComplianceType      :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResourceComplianceSummaryItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcsiNonCompliantSummary' - A list of items that aren't compliant for the resource.
+--
+-- * 'rcsiStatus' - The compliance status for the resource.
+--
+-- * 'rcsiResourceId' - The resource ID.
+--
+-- * 'rcsiResourceType' - The resource type.
+--
+-- * 'rcsiCompliantSummary' - A list of items that are compliant for the resource.
+--
+-- * 'rcsiExecutionSummary' - Information about the execution.
+--
+-- * 'rcsiOverallSeverity' - The highest severity item found for the resource. The resource is compliant for this item.
+--
+-- * 'rcsiComplianceType' - The compliance type.
+resourceComplianceSummaryItem
+    :: ResourceComplianceSummaryItem
+resourceComplianceSummaryItem =
+  ResourceComplianceSummaryItem'
+  { _rcsiNonCompliantSummary = Nothing
+  , _rcsiStatus = Nothing
+  , _rcsiResourceId = Nothing
+  , _rcsiResourceType = Nothing
+  , _rcsiCompliantSummary = Nothing
+  , _rcsiExecutionSummary = Nothing
+  , _rcsiOverallSeverity = Nothing
+  , _rcsiComplianceType = Nothing
+  }
+
+
+-- | A list of items that aren't compliant for the resource.
+rcsiNonCompliantSummary :: Lens' ResourceComplianceSummaryItem (Maybe NonCompliantSummary)
+rcsiNonCompliantSummary = lens _rcsiNonCompliantSummary (\ s a -> s{_rcsiNonCompliantSummary = a});
+
+-- | The compliance status for the resource.
+rcsiStatus :: Lens' ResourceComplianceSummaryItem (Maybe ComplianceStatus)
+rcsiStatus = lens _rcsiStatus (\ s a -> s{_rcsiStatus = a});
+
+-- | The resource ID.
+rcsiResourceId :: Lens' ResourceComplianceSummaryItem (Maybe Text)
+rcsiResourceId = lens _rcsiResourceId (\ s a -> s{_rcsiResourceId = a});
+
+-- | The resource type.
+rcsiResourceType :: Lens' ResourceComplianceSummaryItem (Maybe Text)
+rcsiResourceType = lens _rcsiResourceType (\ s a -> s{_rcsiResourceType = a});
+
+-- | A list of items that are compliant for the resource.
+rcsiCompliantSummary :: Lens' ResourceComplianceSummaryItem (Maybe CompliantSummary)
+rcsiCompliantSummary = lens _rcsiCompliantSummary (\ s a -> s{_rcsiCompliantSummary = a});
+
+-- | Information about the execution.
+rcsiExecutionSummary :: Lens' ResourceComplianceSummaryItem (Maybe ComplianceExecutionSummary)
+rcsiExecutionSummary = lens _rcsiExecutionSummary (\ s a -> s{_rcsiExecutionSummary = a});
+
+-- | The highest severity item found for the resource. The resource is compliant for this item.
+rcsiOverallSeverity :: Lens' ResourceComplianceSummaryItem (Maybe ComplianceSeverity)
+rcsiOverallSeverity = lens _rcsiOverallSeverity (\ s a -> s{_rcsiOverallSeverity = a});
+
+-- | The compliance type.
+rcsiComplianceType :: Lens' ResourceComplianceSummaryItem (Maybe Text)
+rcsiComplianceType = lens _rcsiComplianceType (\ s a -> s{_rcsiComplianceType = a});
+
+instance FromJSON ResourceComplianceSummaryItem where
+        parseJSON
+          = withObject "ResourceComplianceSummaryItem"
+              (\ x ->
+                 ResourceComplianceSummaryItem' <$>
+                   (x .:? "NonCompliantSummary") <*> (x .:? "Status")
+                     <*> (x .:? "ResourceId")
+                     <*> (x .:? "ResourceType")
+                     <*> (x .:? "CompliantSummary")
+                     <*> (x .:? "ExecutionSummary")
+                     <*> (x .:? "OverallSeverity")
+                     <*> (x .:? "ComplianceType"))
+
+instance Hashable ResourceComplianceSummaryItem where
+
+instance NFData ResourceComplianceSummaryItem where
+
+-- | Information about a Resource Data Sync configuration, including its current status and last successful sync.
+--
+--
+--
+-- /See:/ 'resourceDataSyncItem' smart constructor.
+data ResourceDataSyncItem = ResourceDataSyncItem'
+  { _rdsiSyncCreatedTime        :: !(Maybe POSIX)
+  , _rdsiLastSyncTime           :: !(Maybe POSIX)
+  , _rdsiSyncName               :: !(Maybe Text)
+  , _rdsiLastStatus             :: !(Maybe LastResourceDataSyncStatus)
+  , _rdsiS3Destination          :: !(Maybe ResourceDataSyncS3Destination)
+  , _rdsiLastSuccessfulSyncTime :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResourceDataSyncItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdsiSyncCreatedTime' - The date and time the configuration was created (UTC).
+--
+-- * 'rdsiLastSyncTime' - The last time the configuration attempted to sync (UTC).
+--
+-- * 'rdsiSyncName' - The name of the Resource Data Sync.
+--
+-- * 'rdsiLastStatus' - The status reported by the last sync.
+--
+-- * 'rdsiS3Destination' - Configuration information for the target Amazon S3 bucket.
+--
+-- * 'rdsiLastSuccessfulSyncTime' - The last time the sync operations returned a status of @SUCCESSFUL@ (UTC).
+resourceDataSyncItem
+    :: ResourceDataSyncItem
+resourceDataSyncItem =
+  ResourceDataSyncItem'
+  { _rdsiSyncCreatedTime = Nothing
+  , _rdsiLastSyncTime = Nothing
+  , _rdsiSyncName = Nothing
+  , _rdsiLastStatus = Nothing
+  , _rdsiS3Destination = Nothing
+  , _rdsiLastSuccessfulSyncTime = Nothing
+  }
+
+
+-- | The date and time the configuration was created (UTC).
+rdsiSyncCreatedTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
+rdsiSyncCreatedTime = lens _rdsiSyncCreatedTime (\ s a -> s{_rdsiSyncCreatedTime = a}) . mapping _Time;
+
+-- | The last time the configuration attempted to sync (UTC).
+rdsiLastSyncTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
+rdsiLastSyncTime = lens _rdsiLastSyncTime (\ s a -> s{_rdsiLastSyncTime = a}) . mapping _Time;
+
+-- | The name of the Resource Data Sync.
+rdsiSyncName :: Lens' ResourceDataSyncItem (Maybe Text)
+rdsiSyncName = lens _rdsiSyncName (\ s a -> s{_rdsiSyncName = a});
+
+-- | The status reported by the last sync.
+rdsiLastStatus :: Lens' ResourceDataSyncItem (Maybe LastResourceDataSyncStatus)
+rdsiLastStatus = lens _rdsiLastStatus (\ s a -> s{_rdsiLastStatus = a});
+
+-- | Configuration information for the target Amazon S3 bucket.
+rdsiS3Destination :: Lens' ResourceDataSyncItem (Maybe ResourceDataSyncS3Destination)
+rdsiS3Destination = lens _rdsiS3Destination (\ s a -> s{_rdsiS3Destination = a});
+
+-- | The last time the sync operations returned a status of @SUCCESSFUL@ (UTC).
+rdsiLastSuccessfulSyncTime :: Lens' ResourceDataSyncItem (Maybe UTCTime)
+rdsiLastSuccessfulSyncTime = lens _rdsiLastSuccessfulSyncTime (\ s a -> s{_rdsiLastSuccessfulSyncTime = a}) . mapping _Time;
+
+instance FromJSON ResourceDataSyncItem where
+        parseJSON
+          = withObject "ResourceDataSyncItem"
+              (\ x ->
+                 ResourceDataSyncItem' <$>
+                   (x .:? "SyncCreatedTime") <*> (x .:? "LastSyncTime")
+                     <*> (x .:? "SyncName")
+                     <*> (x .:? "LastStatus")
+                     <*> (x .:? "S3Destination")
+                     <*> (x .:? "LastSuccessfulSyncTime"))
+
+instance Hashable ResourceDataSyncItem where
+
+instance NFData ResourceDataSyncItem where
+
+-- | Information about the target Amazon S3 bucket for the Resource Data Sync.
+--
+--
+--
+-- /See:/ 'resourceDataSyncS3Destination' smart constructor.
+data ResourceDataSyncS3Destination = ResourceDataSyncS3Destination'
+  { _rdssdPrefix       :: !(Maybe Text)
+  , _rdssdAWSKMSKeyARN :: !(Maybe Text)
+  , _rdssdBucketName   :: !Text
+  , _rdssdSyncFormat   :: !ResourceDataSyncS3Format
+  , _rdssdRegion       :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResourceDataSyncS3Destination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdssdPrefix' - An Amazon S3 prefix for the bucket.
+--
+-- * 'rdssdAWSKMSKeyARN' - The ARN of an encryption key for a destination in Amazon S3. Must belong to the same region as the destination Amazon S3 bucket.
+--
+-- * 'rdssdBucketName' - The name of the Amazon S3 bucket where the aggregated data is stored.
+--
+-- * 'rdssdSyncFormat' - A supported sync format. The following format is currently supported: JsonSerDe
+--
+-- * 'rdssdRegion' - The AWS Region with the Amazon S3 bucket targeted by the Resource Data Sync.
+resourceDataSyncS3Destination
+    :: Text -- ^ 'rdssdBucketName'
+    -> ResourceDataSyncS3Format -- ^ 'rdssdSyncFormat'
+    -> Text -- ^ 'rdssdRegion'
+    -> ResourceDataSyncS3Destination
+resourceDataSyncS3Destination pBucketName_ pSyncFormat_ pRegion_ =
+  ResourceDataSyncS3Destination'
+  { _rdssdPrefix = Nothing
+  , _rdssdAWSKMSKeyARN = Nothing
+  , _rdssdBucketName = pBucketName_
+  , _rdssdSyncFormat = pSyncFormat_
+  , _rdssdRegion = pRegion_
+  }
+
+
+-- | An Amazon S3 prefix for the bucket.
+rdssdPrefix :: Lens' ResourceDataSyncS3Destination (Maybe Text)
+rdssdPrefix = lens _rdssdPrefix (\ s a -> s{_rdssdPrefix = a});
+
+-- | The ARN of an encryption key for a destination in Amazon S3. Must belong to the same region as the destination Amazon S3 bucket.
+rdssdAWSKMSKeyARN :: Lens' ResourceDataSyncS3Destination (Maybe Text)
+rdssdAWSKMSKeyARN = lens _rdssdAWSKMSKeyARN (\ s a -> s{_rdssdAWSKMSKeyARN = a});
+
+-- | The name of the Amazon S3 bucket where the aggregated data is stored.
+rdssdBucketName :: Lens' ResourceDataSyncS3Destination Text
+rdssdBucketName = lens _rdssdBucketName (\ s a -> s{_rdssdBucketName = a});
+
+-- | A supported sync format. The following format is currently supported: JsonSerDe
+rdssdSyncFormat :: Lens' ResourceDataSyncS3Destination ResourceDataSyncS3Format
+rdssdSyncFormat = lens _rdssdSyncFormat (\ s a -> s{_rdssdSyncFormat = a});
+
+-- | The AWS Region with the Amazon S3 bucket targeted by the Resource Data Sync.
+rdssdRegion :: Lens' ResourceDataSyncS3Destination Text
+rdssdRegion = lens _rdssdRegion (\ s a -> s{_rdssdRegion = a});
+
+instance FromJSON ResourceDataSyncS3Destination where
+        parseJSON
+          = withObject "ResourceDataSyncS3Destination"
+              (\ x ->
+                 ResourceDataSyncS3Destination' <$>
+                   (x .:? "Prefix") <*> (x .:? "AWSKMSKeyARN") <*>
+                     (x .: "BucketName")
+                     <*> (x .: "SyncFormat")
+                     <*> (x .: "Region"))
+
+instance Hashable ResourceDataSyncS3Destination where
+
+instance NFData ResourceDataSyncS3Destination where
+
+instance ToJSON ResourceDataSyncS3Destination where
+        toJSON ResourceDataSyncS3Destination'{..}
+          = object
+              (catMaybes
+                 [("Prefix" .=) <$> _rdssdPrefix,
+                  ("AWSKMSKeyARN" .=) <$> _rdssdAWSKMSKeyARN,
+                  Just ("BucketName" .= _rdssdBucketName),
+                  Just ("SyncFormat" .= _rdssdSyncFormat),
+                  Just ("Region" .= _rdssdRegion)])
+
+-- | The inventory item result attribute.
+--
+--
+--
+-- /See:/ 'resultAttribute' smart constructor.
+newtype ResultAttribute = ResultAttribute'
+  { _raTypeName :: Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ResultAttribute' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raTypeName' - Name of the inventory item type. Valid value: AWS:InstanceInformation. Default Value: AWS:InstanceInformation.
+resultAttribute
+    :: Text -- ^ 'raTypeName'
+    -> ResultAttribute
+resultAttribute pTypeName_ = ResultAttribute' {_raTypeName = pTypeName_}
+
+
+-- | Name of the inventory item type. Valid value: AWS:InstanceInformation. Default Value: AWS:InstanceInformation.
+raTypeName :: Lens' ResultAttribute Text
+raTypeName = lens _raTypeName (\ s a -> s{_raTypeName = a});
+
+instance Hashable ResultAttribute where
+
+instance NFData ResultAttribute where
+
+instance ToJSON ResultAttribute where
+        toJSON ResultAttribute'{..}
+          = object
+              (catMaybes [Just ("TypeName" .= _raTypeName)])
+
+-- | An Amazon S3 bucket where you want to store the results of this request.
+--
+--
+--
+-- /See:/ 's3OutputLocation' smart constructor.
+data S3OutputLocation = S3OutputLocation'
+  { _solOutputS3KeyPrefix  :: !(Maybe Text)
+  , _solOutputS3Region     :: !(Maybe Text)
+  , _solOutputS3BucketName :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'S3OutputLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'solOutputS3KeyPrefix' - The Amazon S3 bucket subfolder.
+--
+-- * 'solOutputS3Region' - (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+--
+-- * 'solOutputS3BucketName' - The name of the Amazon S3 bucket.
+s3OutputLocation
+    :: S3OutputLocation
+s3OutputLocation =
+  S3OutputLocation'
+  { _solOutputS3KeyPrefix = Nothing
+  , _solOutputS3Region = Nothing
+  , _solOutputS3BucketName = Nothing
+  }
+
+
+-- | The Amazon S3 bucket subfolder.
+solOutputS3KeyPrefix :: Lens' S3OutputLocation (Maybe Text)
+solOutputS3KeyPrefix = lens _solOutputS3KeyPrefix (\ s a -> s{_solOutputS3KeyPrefix = a});
+
+-- | (Deprecated) You can no longer specify this parameter. The system ignores it. Instead, Systems Manager automatically determines the Amazon S3 bucket region.
+solOutputS3Region :: Lens' S3OutputLocation (Maybe Text)
+solOutputS3Region = lens _solOutputS3Region (\ s a -> s{_solOutputS3Region = a});
+
+-- | The name of the Amazon S3 bucket.
+solOutputS3BucketName :: Lens' S3OutputLocation (Maybe Text)
+solOutputS3BucketName = lens _solOutputS3BucketName (\ s a -> s{_solOutputS3BucketName = a});
+
+instance FromJSON S3OutputLocation where
+        parseJSON
+          = withObject "S3OutputLocation"
+              (\ x ->
+                 S3OutputLocation' <$>
+                   (x .:? "OutputS3KeyPrefix") <*>
+                     (x .:? "OutputS3Region")
+                     <*> (x .:? "OutputS3BucketName"))
+
+instance Hashable S3OutputLocation where
+
+instance NFData S3OutputLocation where
+
+instance ToJSON S3OutputLocation where
+        toJSON S3OutputLocation'{..}
+          = object
+              (catMaybes
+                 [("OutputS3KeyPrefix" .=) <$> _solOutputS3KeyPrefix,
+                  ("OutputS3Region" .=) <$> _solOutputS3Region,
+                  ("OutputS3BucketName" .=) <$>
+                    _solOutputS3BucketName])
+
+-- | A URL for the Amazon S3 bucket where you want to store the results of this request.
+--
+--
+--
+-- /See:/ 's3OutputURL' smart constructor.
+newtype S3OutputURL = S3OutputURL'
+  { _souOutputURL :: Maybe Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'S3OutputURL' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'souOutputURL' - A URL for an Amazon S3 bucket where you want to store the results of this request.
+s3OutputURL
+    :: S3OutputURL
+s3OutputURL = S3OutputURL' {_souOutputURL = Nothing}
+
+
+-- | A URL for an Amazon S3 bucket where you want to store the results of this request.
+souOutputURL :: Lens' S3OutputURL (Maybe Text)
+souOutputURL = lens _souOutputURL (\ s a -> s{_souOutputURL = a});
+
+instance FromJSON S3OutputURL where
+        parseJSON
+          = withObject "S3OutputURL"
+              (\ x -> S3OutputURL' <$> (x .:? "OutputUrl"))
+
+instance Hashable S3OutputURL where
+
+instance NFData S3OutputURL where
+
+-- | The number of managed instances found for each patch severity level defined in the request filter.
+--
+--
+--
+-- /See:/ 'severitySummary' smart constructor.
+data SeveritySummary = SeveritySummary'
+  { _ssLowCount           :: !(Maybe Int)
+  , _ssUnspecifiedCount   :: !(Maybe Int)
+  , _ssHighCount          :: !(Maybe Int)
+  , _ssMediumCount        :: !(Maybe Int)
+  , _ssInformationalCount :: !(Maybe Int)
+  , _ssCriticalCount      :: !(Maybe Int)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'SeveritySummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssLowCount' - The total number of resources or compliance items that have a severity level of low. Low severity is determined by the organization that published the compliance items.
+--
+-- * 'ssUnspecifiedCount' - The total number of resources or compliance items that have a severity level of unspecified. Unspecified severity is determined by the organization that published the compliance items.
+--
+-- * 'ssHighCount' - The total number of resources or compliance items that have a severity level of high. High severity is determined by the organization that published the compliance items.
+--
+-- * 'ssMediumCount' - The total number of resources or compliance items that have a severity level of medium. Medium severity is determined by the organization that published the compliance items.
+--
+-- * 'ssInformationalCount' - The total number of resources or compliance items that have a severity level of informational. Informational severity is determined by the organization that published the compliance items.
+--
+-- * 'ssCriticalCount' - The total number of resources or compliance items that have a severity level of critical. Critical severity is determined by the organization that published the compliance items.
+severitySummary
+    :: SeveritySummary
+severitySummary =
+  SeveritySummary'
+  { _ssLowCount = Nothing
+  , _ssUnspecifiedCount = Nothing
+  , _ssHighCount = Nothing
+  , _ssMediumCount = Nothing
+  , _ssInformationalCount = Nothing
+  , _ssCriticalCount = Nothing
+  }
+
+
+-- | The total number of resources or compliance items that have a severity level of low. Low severity is determined by the organization that published the compliance items.
+ssLowCount :: Lens' SeveritySummary (Maybe Int)
+ssLowCount = lens _ssLowCount (\ s a -> s{_ssLowCount = a});
+
+-- | The total number of resources or compliance items that have a severity level of unspecified. Unspecified severity is determined by the organization that published the compliance items.
+ssUnspecifiedCount :: Lens' SeveritySummary (Maybe Int)
+ssUnspecifiedCount = lens _ssUnspecifiedCount (\ s a -> s{_ssUnspecifiedCount = a});
+
+-- | The total number of resources or compliance items that have a severity level of high. High severity is determined by the organization that published the compliance items.
+ssHighCount :: Lens' SeveritySummary (Maybe Int)
+ssHighCount = lens _ssHighCount (\ s a -> s{_ssHighCount = a});
+
+-- | The total number of resources or compliance items that have a severity level of medium. Medium severity is determined by the organization that published the compliance items.
+ssMediumCount :: Lens' SeveritySummary (Maybe Int)
+ssMediumCount = lens _ssMediumCount (\ s a -> s{_ssMediumCount = a});
+
+-- | The total number of resources or compliance items that have a severity level of informational. Informational severity is determined by the organization that published the compliance items.
+ssInformationalCount :: Lens' SeveritySummary (Maybe Int)
+ssInformationalCount = lens _ssInformationalCount (\ s a -> s{_ssInformationalCount = a});
+
+-- | The total number of resources or compliance items that have a severity level of critical. Critical severity is determined by the organization that published the compliance items.
+ssCriticalCount :: Lens' SeveritySummary (Maybe Int)
+ssCriticalCount = lens _ssCriticalCount (\ s a -> s{_ssCriticalCount = a});
+
+instance FromJSON SeveritySummary where
+        parseJSON
+          = withObject "SeveritySummary"
+              (\ x ->
+                 SeveritySummary' <$>
+                   (x .:? "LowCount") <*> (x .:? "UnspecifiedCount") <*>
+                     (x .:? "HighCount")
+                     <*> (x .:? "MediumCount")
+                     <*> (x .:? "InformationalCount")
+                     <*> (x .:? "CriticalCount"))
+
+instance Hashable SeveritySummary where
+
+instance NFData SeveritySummary where
+
+-- | Detailed information about an the execution state of an Automation step.
+--
+--
+--
+-- /See:/ 'stepExecution' smart constructor.
+data StepExecution = StepExecution'
+  { _seFailureDetails     :: !(Maybe FailureDetails)
+  , _seInputs             :: !(Maybe (Map Text Text))
+  , _seStepName           :: !(Maybe Text)
+  , _seExecutionEndTime   :: !(Maybe POSIX)
+  , _seFailureMessage     :: !(Maybe Text)
+  , _seResponse           :: !(Maybe Text)
+  , _seAction             :: !(Maybe Text)
+  , _seResponseCode       :: !(Maybe Text)
+  , _seStepStatus         :: !(Maybe AutomationExecutionStatus)
+  , _seOutputs            :: !(Maybe (Map Text [Text]))
+  , _seExecutionStartTime :: !(Maybe POSIX)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StepExecution' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'seFailureDetails' - Information about the Automation failure.
+--
+-- * 'seInputs' - Fully-resolved values passed into the step before execution.
+--
+-- * 'seStepName' - The name of this execution step.
+--
+-- * 'seExecutionEndTime' - If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated.
+--
+-- * 'seFailureMessage' - If a step failed, this message explains why the execution failed.
+--
+-- * 'seResponse' - A message associated with the response code for an execution.
+--
+-- * 'seAction' - The action this step performs. The action determines the behavior of the step.
+--
+-- * 'seResponseCode' - The response code returned by the execution of the step.
+--
+-- * 'seStepStatus' - The execution status for this step. Valid values include: Pending, InProgress, Success, Cancelled, Failed, and TimedOut.
+--
+-- * 'seOutputs' - Returned values from the execution of the step.
+--
+-- * 'seExecutionStartTime' - If a step has begun execution, this contains the time the step started. If the step is in Pending status, this field is not populated.
+stepExecution
+    :: StepExecution
+stepExecution =
+  StepExecution'
+  { _seFailureDetails = Nothing
+  , _seInputs = Nothing
+  , _seStepName = Nothing
+  , _seExecutionEndTime = Nothing
+  , _seFailureMessage = Nothing
+  , _seResponse = Nothing
+  , _seAction = Nothing
+  , _seResponseCode = Nothing
+  , _seStepStatus = Nothing
+  , _seOutputs = Nothing
+  , _seExecutionStartTime = Nothing
+  }
+
+
+-- | Information about the Automation failure.
+seFailureDetails :: Lens' StepExecution (Maybe FailureDetails)
+seFailureDetails = lens _seFailureDetails (\ s a -> s{_seFailureDetails = a});
+
+-- | Fully-resolved values passed into the step before execution.
+seInputs :: Lens' StepExecution (HashMap Text Text)
+seInputs = lens _seInputs (\ s a -> s{_seInputs = a}) . _Default . _Map;
+
+-- | The name of this execution step.
+seStepName :: Lens' StepExecution (Maybe Text)
+seStepName = lens _seStepName (\ s a -> s{_seStepName = a});
+
+-- | If a step has finished execution, this contains the time the execution ended. If the step has not yet concluded, this field is not populated.
+seExecutionEndTime :: Lens' StepExecution (Maybe UTCTime)
+seExecutionEndTime = lens _seExecutionEndTime (\ s a -> s{_seExecutionEndTime = a}) . mapping _Time;
+
+-- | If a step failed, this message explains why the execution failed.
+seFailureMessage :: Lens' StepExecution (Maybe Text)
+seFailureMessage = lens _seFailureMessage (\ s a -> s{_seFailureMessage = a});
+
+-- | A message associated with the response code for an execution.
+seResponse :: Lens' StepExecution (Maybe Text)
+seResponse = lens _seResponse (\ s a -> s{_seResponse = a});
+
+-- | The action this step performs. The action determines the behavior of the step.
+seAction :: Lens' StepExecution (Maybe Text)
+seAction = lens _seAction (\ s a -> s{_seAction = a});
+
+-- | The response code returned by the execution of the step.
+seResponseCode :: Lens' StepExecution (Maybe Text)
+seResponseCode = lens _seResponseCode (\ s a -> s{_seResponseCode = a});
+
+-- | The execution status for this step. Valid values include: Pending, InProgress, Success, Cancelled, Failed, and TimedOut.
+seStepStatus :: Lens' StepExecution (Maybe AutomationExecutionStatus)
+seStepStatus = lens _seStepStatus (\ s a -> s{_seStepStatus = a});
+
+-- | Returned values from the execution of the step.
+seOutputs :: Lens' StepExecution (HashMap Text [Text])
+seOutputs = lens _seOutputs (\ s a -> s{_seOutputs = a}) . _Default . _Map;
+
+-- | If a step has begun execution, this contains the time the step started. If the step is in Pending status, this field is not populated.
+seExecutionStartTime :: Lens' StepExecution (Maybe UTCTime)
+seExecutionStartTime = lens _seExecutionStartTime (\ s a -> s{_seExecutionStartTime = a}) . mapping _Time;
+
+instance FromJSON StepExecution where
+        parseJSON
+          = withObject "StepExecution"
+              (\ x ->
+                 StepExecution' <$>
+                   (x .:? "FailureDetails") <*>
+                     (x .:? "Inputs" .!= mempty)
+                     <*> (x .:? "StepName")
+                     <*> (x .:? "ExecutionEndTime")
+                     <*> (x .:? "FailureMessage")
+                     <*> (x .:? "Response")
+                     <*> (x .:? "Action")
+                     <*> (x .:? "ResponseCode")
+                     <*> (x .:? "StepStatus")
+                     <*> (x .:? "Outputs" .!= mempty)
+                     <*> (x .:? "ExecutionStartTime"))
+
+instance Hashable StepExecution where
+
+instance NFData StepExecution where
+
+-- | Metadata that you assign to your AWS resources. Tags enable you to categorize your resources in different ways, for example, by purpose, owner, or environment. In Systems Manager, you can apply tags to documents, managed instances, Maintenance Windows, Parameter Store parameters, and patch baselines.
+--
+--
+--
+-- /See:/ 'tag' smart constructor.
+data Tag = Tag'
+  { _tagKey   :: !Text
+  , _tagValue :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Tag' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tagKey' - The name of the tag.
+--
+-- * 'tagValue' - The value of the tag.
+tag
+    :: Text -- ^ 'tagKey'
+    -> Text -- ^ 'tagValue'
+    -> Tag
+tag pKey_ pValue_ = Tag' {_tagKey = pKey_, _tagValue = pValue_}
+
+
+-- | The name of the tag.
+tagKey :: Lens' Tag Text
+tagKey = lens _tagKey (\ s a -> s{_tagKey = a});
+
+-- | The value of the tag.
+tagValue :: Lens' Tag Text
+tagValue = lens _tagValue (\ s a -> s{_tagValue = a});
+
+instance FromJSON Tag where
+        parseJSON
+          = withObject "Tag"
+              (\ x -> Tag' <$> (x .: "Key") <*> (x .: "Value"))
+
+instance Hashable Tag where
+
+instance NFData Tag where
+
+instance ToJSON Tag where
+        toJSON Tag'{..}
+          = object
+              (catMaybes
+                 [Just ("Key" .= _tagKey),
+                  Just ("Value" .= _tagValue)])
+
+-- | An array of search criteria that targets instances using a Key,Value combination that you specify. @Targets@ is required if you don't provide one or more instance IDs in the call.
+--
+--
+--
+--
+--
+-- /See:/ 'target' smart constructor.
+data Target = Target'
+  { _tValues :: !(Maybe [Text])
+  , _tKey    :: !(Maybe Text)
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Target' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tValues' - User-defined criteria that maps to Key. For example, if you specified tag:ServerRole, you could specify value:WebServer to execute a command on instances that include Amazon EC2 tags of ServerRole,WebServer. For more information about how to send commands that target instances using Key,Value parameters, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Executing a Command Using Systems Manager Run Command> .
+--
+-- * 'tKey' - User-defined criteria for sending commands that target instances that meet the criteria. Key can be tag:<Amazon EC2 tag> or InstanceIds. For more information about how to send commands that target instances using Key,Value parameters, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Executing a Command Using Systems Manager Run Command> .
+target
+    :: Target
+target = Target' {_tValues = Nothing, _tKey = Nothing}
+
+
+-- | User-defined criteria that maps to Key. For example, if you specified tag:ServerRole, you could specify value:WebServer to execute a command on instances that include Amazon EC2 tags of ServerRole,WebServer. For more information about how to send commands that target instances using Key,Value parameters, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Executing a Command Using Systems Manager Run Command> .
+tValues :: Lens' Target [Text]
+tValues = lens _tValues (\ s a -> s{_tValues = a}) . _Default . _Coerce;
+
+-- | User-defined criteria for sending commands that target instances that meet the criteria. Key can be tag:<Amazon EC2 tag> or InstanceIds. For more information about how to send commands that target instances using Key,Value parameters, see <http://docs.aws.amazon.com/systems-manager/latest/userguide/send-commands-multiple.html Executing a Command Using Systems Manager Run Command> .
+tKey :: Lens' Target (Maybe Text)
+tKey = lens _tKey (\ s a -> s{_tKey = a});
+
+instance FromJSON Target where
+        parseJSON
+          = withObject "Target"
+              (\ x ->
+                 Target' <$>
+                   (x .:? "Values" .!= mempty) <*> (x .:? "Key"))
+
+instance Hashable Target where
+
+instance NFData Target where
 
 instance ToJSON Target where
         toJSON Target'{..}
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
@@ -9,39 +9,43 @@
 
 -- |
 -- Module      : Network.AWS.SSM.Types.Sum
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.SSM.Types.Sum where
 
-import           Network.AWS.Prelude
+import Network.AWS.Prelude
 
 data AssociationFilterKey
-    = AFKAssociationId
-    | AFKAssociationStatusName
-    | AFKInstanceId
-    | AFKLastExecutedAfter
-    | AFKLastExecutedBefore
-    | AFKName
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AFKAssociationId
+  | AFKAssociationName
+  | AFKAssociationStatusName
+  | AFKInstanceId
+  | AFKLastExecutedAfter
+  | AFKLastExecutedBefore
+  | AFKName
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AssociationFilterKey where
     parser = takeLowerText >>= \case
         "associationid" -> pure AFKAssociationId
+        "associationname" -> pure AFKAssociationName
         "associationstatusname" -> pure AFKAssociationStatusName
         "instanceid" -> pure AFKInstanceId
         "lastexecutedafter" -> pure AFKLastExecutedAfter
         "lastexecutedbefore" -> pure AFKLastExecutedBefore
         "name" -> pure AFKName
         e -> fromTextError $ "Failure parsing AssociationFilterKey from value: '" <> e
-           <> "'. Accepted values: associationid, associationstatusname, instanceid, lastexecutedafter, lastexecutedbefore, name"
+           <> "'. Accepted values: associationid, associationname, associationstatusname, instanceid, lastexecutedafter, lastexecutedbefore, name"
 
 instance ToText AssociationFilterKey where
     toText = \case
         AFKAssociationId -> "AssociationId"
+        AFKAssociationName -> "AssociationName"
         AFKAssociationStatusName -> "AssociationStatusName"
         AFKInstanceId -> "InstanceId"
         AFKLastExecutedAfter -> "LastExecutedAfter"
@@ -58,11 +62,12 @@
     toJSON = toJSONText
 
 data AssociationStatusName
-    = ASNFailed
-    | ASNPending
-    | ASNSuccess
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ASNFailed
+  | ASNPending
+  | ASNSuccess
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AssociationStatusName where
     parser = takeLowerText >>= \case
         "failed" -> pure ASNFailed
@@ -90,10 +95,11 @@
     parseJSON = parseJSONText "AssociationStatusName"
 
 data AutomationExecutionFilterKey
-    = DocumentNamePrefix
-    | ExecutionStatus
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DocumentNamePrefix
+  | ExecutionStatus
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AutomationExecutionFilterKey where
     parser = takeLowerText >>= \case
         "documentnameprefix" -> pure DocumentNamePrefix
@@ -116,14 +122,16 @@
     toJSON = toJSONText
 
 data AutomationExecutionStatus
-    = AESCancelled
-    | AESFailed
-    | AESInProgress
-    | AESPending
-    | AESSuccess
-    | AESTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = AESCancelled
+  | AESFailed
+  | AESInProgress
+  | AESPending
+  | AESSuccess
+  | AESTimedOut
+  | AESWaiting
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText AutomationExecutionStatus where
     parser = takeLowerText >>= \case
         "cancelled" -> pure AESCancelled
@@ -132,8 +140,9 @@
         "pending" -> pure AESPending
         "success" -> pure AESSuccess
         "timedout" -> pure AESTimedOut
+        "waiting" -> pure AESWaiting
         e -> fromTextError $ "Failure parsing AutomationExecutionStatus from value: '" <> e
-           <> "'. Accepted values: cancelled, failed, inprogress, pending, success, timedout"
+           <> "'. Accepted values: cancelled, failed, inprogress, pending, success, timedout, waiting"
 
 instance ToText AutomationExecutionStatus where
     toText = \case
@@ -143,6 +152,7 @@
         AESPending -> "Pending"
         AESSuccess -> "Success"
         AESTimedOut -> "TimedOut"
+        AESWaiting -> "Waiting"
 
 instance Hashable     AutomationExecutionStatus
 instance NFData       AutomationExecutionStatus
@@ -154,11 +164,12 @@
     parseJSON = parseJSONText "AutomationExecutionStatus"
 
 data CommandFilterKey
-    = CommandInvokedAfter
-    | CommandInvokedBefore
-    | CommandStatus
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = CommandInvokedAfter
+  | CommandInvokedBefore
+  | CommandStatus
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText CommandFilterKey where
     parser = takeLowerText >>= \case
         "invokedafter" -> pure CommandInvokedAfter
@@ -183,16 +194,17 @@
     toJSON = toJSONText
 
 data CommandInvocationStatus
-    = CISCancelled
-    | CISCancelling
-    | CISDelayed
-    | CISFailed
-    | CISInProgress
-    | CISPending
-    | CISSuccess
-    | CISTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = CISCancelled
+  | CISCancelling
+  | CISDelayed
+  | CISFailed
+  | CISInProgress
+  | CISPending
+  | CISSuccess
+  | CISTimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText CommandInvocationStatus where
     parser = takeLowerText >>= \case
         "cancelled" -> pure CISCancelled
@@ -227,14 +239,15 @@
     parseJSON = parseJSONText "CommandInvocationStatus"
 
 data CommandPluginStatus
-    = CPSCancelled
-    | CPSFailed
-    | CPSInProgress
-    | CPSPending
-    | CPSSuccess
-    | CPSTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = CPSCancelled
+  | CPSFailed
+  | CPSInProgress
+  | CPSPending
+  | CPSSuccess
+  | CPSTimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText CommandPluginStatus where
     parser = takeLowerText >>= \case
         "cancelled" -> pure CPSCancelled
@@ -265,36 +278,37 @@
     parseJSON = parseJSONText "CommandPluginStatus"
 
 data CommandStatus
-    = Cancelled
-    | Cancelling
-    | Failed
-    | InProgress
-    | Pending
-    | Success
-    | TimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = CSCancelled
+  | CSCancelling
+  | CSFailed
+  | CSInProgress
+  | CSPending
+  | CSSuccess
+  | CSTimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText CommandStatus where
     parser = takeLowerText >>= \case
-        "cancelled" -> pure Cancelled
-        "cancelling" -> pure Cancelling
-        "failed" -> pure Failed
-        "inprogress" -> pure InProgress
-        "pending" -> pure Pending
-        "success" -> pure Success
-        "timedout" -> pure TimedOut
+        "cancelled" -> pure CSCancelled
+        "cancelling" -> pure CSCancelling
+        "failed" -> pure CSFailed
+        "inprogress" -> pure CSInProgress
+        "pending" -> pure CSPending
+        "success" -> pure CSSuccess
+        "timedout" -> pure CSTimedOut
         e -> fromTextError $ "Failure parsing CommandStatus from value: '" <> e
            <> "'. Accepted values: cancelled, cancelling, failed, inprogress, pending, success, timedout"
 
 instance ToText CommandStatus where
     toText = \case
-        Cancelled -> "Cancelled"
-        Cancelling -> "Cancelling"
-        Failed -> "Failed"
-        InProgress -> "InProgress"
-        Pending -> "Pending"
-        Success -> "Success"
-        TimedOut -> "TimedOut"
+        CSCancelled -> "Cancelled"
+        CSCancelling -> "Cancelling"
+        CSFailed -> "Failed"
+        CSInProgress -> "InProgress"
+        CSPending -> "Pending"
+        CSSuccess -> "Success"
+        CSTimedOut -> "TimedOut"
 
 instance Hashable     CommandStatus
 instance NFData       CommandStatus
@@ -305,12 +319,121 @@
 instance FromJSON CommandStatus where
     parseJSON = parseJSONText "CommandStatus"
 
+data ComplianceQueryOperatorType
+  = CQOTBeginWith
+  | CQOTEqual
+  | CQOTGreaterThan
+  | CQOTLessThan
+  | CQOTNotEqual
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ComplianceQueryOperatorType where
+    parser = takeLowerText >>= \case
+        "begin_with" -> pure CQOTBeginWith
+        "equal" -> pure CQOTEqual
+        "greater_than" -> pure CQOTGreaterThan
+        "less_than" -> pure CQOTLessThan
+        "not_equal" -> pure CQOTNotEqual
+        e -> fromTextError $ "Failure parsing ComplianceQueryOperatorType from value: '" <> e
+           <> "'. Accepted values: begin_with, equal, greater_than, less_than, not_equal"
+
+instance ToText ComplianceQueryOperatorType where
+    toText = \case
+        CQOTBeginWith -> "BEGIN_WITH"
+        CQOTEqual -> "EQUAL"
+        CQOTGreaterThan -> "GREATER_THAN"
+        CQOTLessThan -> "LESS_THAN"
+        CQOTNotEqual -> "NOT_EQUAL"
+
+instance Hashable     ComplianceQueryOperatorType
+instance NFData       ComplianceQueryOperatorType
+instance ToByteString ComplianceQueryOperatorType
+instance ToQuery      ComplianceQueryOperatorType
+instance ToHeader     ComplianceQueryOperatorType
+
+instance ToJSON ComplianceQueryOperatorType where
+    toJSON = toJSONText
+
+data ComplianceSeverity
+  = CSCritical
+  | CSHigh
+  | CSInformational
+  | CSLow
+  | CSMedium
+  | CSUnspecified
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ComplianceSeverity where
+    parser = takeLowerText >>= \case
+        "critical" -> pure CSCritical
+        "high" -> pure CSHigh
+        "informational" -> pure CSInformational
+        "low" -> pure CSLow
+        "medium" -> pure CSMedium
+        "unspecified" -> pure CSUnspecified
+        e -> fromTextError $ "Failure parsing ComplianceSeverity from value: '" <> e
+           <> "'. Accepted values: critical, high, informational, low, medium, unspecified"
+
+instance ToText ComplianceSeverity where
+    toText = \case
+        CSCritical -> "CRITICAL"
+        CSHigh -> "HIGH"
+        CSInformational -> "INFORMATIONAL"
+        CSLow -> "LOW"
+        CSMedium -> "MEDIUM"
+        CSUnspecified -> "UNSPECIFIED"
+
+instance Hashable     ComplianceSeverity
+instance NFData       ComplianceSeverity
+instance ToByteString ComplianceSeverity
+instance ToQuery      ComplianceSeverity
+instance ToHeader     ComplianceSeverity
+
+instance ToJSON ComplianceSeverity where
+    toJSON = toJSONText
+
+instance FromJSON ComplianceSeverity where
+    parseJSON = parseJSONText "ComplianceSeverity"
+
+data ComplianceStatus
+  = Compliant
+  | NonCompliant
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ComplianceStatus where
+    parser = takeLowerText >>= \case
+        "compliant" -> pure Compliant
+        "non_compliant" -> pure NonCompliant
+        e -> fromTextError $ "Failure parsing ComplianceStatus from value: '" <> e
+           <> "'. Accepted values: compliant, non_compliant"
+
+instance ToText ComplianceStatus where
+    toText = \case
+        Compliant -> "COMPLIANT"
+        NonCompliant -> "NON_COMPLIANT"
+
+instance Hashable     ComplianceStatus
+instance NFData       ComplianceStatus
+instance ToByteString ComplianceStatus
+instance ToQuery      ComplianceStatus
+instance ToHeader     ComplianceStatus
+
+instance ToJSON ComplianceStatus where
+    toJSON = toJSONText
+
+instance FromJSON ComplianceStatus where
+    parseJSON = parseJSONText "ComplianceStatus"
+
 data DescribeActivationsFilterKeys
-    = ActivationIds
-    | DefaultInstanceName
-    | IAMRole
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ActivationIds
+  | DefaultInstanceName
+  | IAMRole
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DescribeActivationsFilterKeys where
     parser = takeLowerText >>= \case
         "activationids" -> pure ActivationIds
@@ -335,12 +458,13 @@
     toJSON = toJSONText
 
 data DocumentFilterKey
-    = DocumentType
-    | Name
-    | Owner
-    | PlatformTypes
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DocumentType
+  | Name
+  | Owner
+  | PlatformTypes
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentFilterKey where
     parser = takeLowerText >>= \case
         "documenttype" -> pure DocumentType
@@ -367,10 +491,11 @@
     toJSON = toJSONText
 
 data DocumentHashType
-    = HashSHA1
-    | HashSHA256
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = HashSHA1
+  | HashSHA256
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentHashType where
     parser = takeLowerText >>= \case
         "sha1" -> pure HashSHA1
@@ -396,10 +521,11 @@
     parseJSON = parseJSONText "DocumentHashType"
 
 data DocumentParameterType
-    = DPTString
-    | DPTStringList
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DPTString
+  | DPTStringList
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentParameterType where
     parser = takeLowerText >>= \case
         "string" -> pure DPTString
@@ -422,9 +548,10 @@
     parseJSON = parseJSONText "DocumentParameterType"
 
 data DocumentPermissionType =
-    Share
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  Share
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentPermissionType where
     parser = takeLowerText >>= \case
         "share" -> pure Share
@@ -445,12 +572,13 @@
     toJSON = toJSONText
 
 data DocumentStatus
-    = Active
-    | Creating
-    | Deleting
-    | Updating
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Active
+  | Creating
+  | Deleting
+  | Updating
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentStatus where
     parser = takeLowerText >>= \case
         "active" -> pure Active
@@ -477,11 +605,12 @@
     parseJSON = parseJSONText "DocumentStatus"
 
 data DocumentType
-    = DTAutomation
-    | DTCommand
-    | DTPolicy
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = DTAutomation
+  | DTCommand
+  | DTPolicy
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText DocumentType where
     parser = takeLowerText >>= \case
         "automation" -> pure DTAutomation
@@ -509,11 +638,12 @@
     parseJSON = parseJSONText "DocumentType"
 
 data Fault
-    = Client
-    | Server
-    | Unknown
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Client
+  | Server
+  | Unknown
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText Fault where
     parser = takeLowerText >>= \case
         "client" -> pure Client
@@ -538,16 +668,17 @@
     parseJSON = parseJSONText "Fault"
 
 data InstanceInformationFilterKey
-    = IIFKActivationIds
-    | IIFKAgentVersion
-    | IIFKAssociationStatus
-    | IIFKIAMRole
-    | IIFKInstanceIds
-    | IIFKPingStatus
-    | IIFKPlatformTypes
-    | IIFKResourceType
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = IIFKActivationIds
+  | IIFKAgentVersion
+  | IIFKAssociationStatus
+  | IIFKIAMRole
+  | IIFKInstanceIds
+  | IIFKPingStatus
+  | IIFKPlatformTypes
+  | IIFKResourceType
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText InstanceInformationFilterKey where
     parser = takeLowerText >>= \case
         "activationids" -> pure IIFKActivationIds
@@ -581,11 +712,45 @@
 instance ToJSON InstanceInformationFilterKey where
     toJSON = toJSONText
 
+data InstancePatchStateOperatorType
+  = IPSOTEqual
+  | IPSOTGreaterThan
+  | IPSOTLessThan
+  | IPSOTNotEqual
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText InstancePatchStateOperatorType where
+    parser = takeLowerText >>= \case
+        "equal" -> pure IPSOTEqual
+        "greaterthan" -> pure IPSOTGreaterThan
+        "lessthan" -> pure IPSOTLessThan
+        "notequal" -> pure IPSOTNotEqual
+        e -> fromTextError $ "Failure parsing InstancePatchStateOperatorType from value: '" <> e
+           <> "'. Accepted values: equal, greaterthan, lessthan, notequal"
+
+instance ToText InstancePatchStateOperatorType where
+    toText = \case
+        IPSOTEqual -> "Equal"
+        IPSOTGreaterThan -> "GreaterThan"
+        IPSOTLessThan -> "LessThan"
+        IPSOTNotEqual -> "NotEqual"
+
+instance Hashable     InstancePatchStateOperatorType
+instance NFData       InstancePatchStateOperatorType
+instance ToByteString InstancePatchStateOperatorType
+instance ToQuery      InstancePatchStateOperatorType
+instance ToHeader     InstancePatchStateOperatorType
+
+instance ToJSON InstancePatchStateOperatorType where
+    toJSON = toJSONText
+
 data InventoryAttributeDataType
-    = IADTNumber
-    | IADTString
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = IADTNumber
+  | IADTString
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText InventoryAttributeDataType where
     parser = takeLowerText >>= \case
         "number" -> pure IADTNumber
@@ -608,13 +773,14 @@
     parseJSON = parseJSONText "InventoryAttributeDataType"
 
 data InventoryQueryOperatorType
-    = BeginWith
-    | Equal
-    | GreaterThan
-    | LessThan
-    | NotEqual
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = BeginWith
+  | Equal
+  | GreaterThan
+  | LessThan
+  | NotEqual
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText InventoryQueryOperatorType where
     parser = takeLowerText >>= \case
         "beginwith" -> pure BeginWith
@@ -642,17 +808,48 @@
 instance ToJSON InventoryQueryOperatorType where
     toJSON = toJSONText
 
+data LastResourceDataSyncStatus
+  = LRDSSFailed
+  | LRDSSInProgress
+  | LRDSSSuccessful
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText LastResourceDataSyncStatus where
+    parser = takeLowerText >>= \case
+        "failed" -> pure LRDSSFailed
+        "inprogress" -> pure LRDSSInProgress
+        "successful" -> pure LRDSSSuccessful
+        e -> fromTextError $ "Failure parsing LastResourceDataSyncStatus from value: '" <> e
+           <> "'. Accepted values: failed, inprogress, successful"
+
+instance ToText LastResourceDataSyncStatus where
+    toText = \case
+        LRDSSFailed -> "Failed"
+        LRDSSInProgress -> "InProgress"
+        LRDSSSuccessful -> "Successful"
+
+instance Hashable     LastResourceDataSyncStatus
+instance NFData       LastResourceDataSyncStatus
+instance ToByteString LastResourceDataSyncStatus
+instance ToQuery      LastResourceDataSyncStatus
+instance ToHeader     LastResourceDataSyncStatus
+
+instance FromJSON LastResourceDataSyncStatus where
+    parseJSON = parseJSONText "LastResourceDataSyncStatus"
+
 data MaintenanceWindowExecutionStatus
-    = MWESCancelled
-    | MWESCancelling
-    | MWESFailed
-    | MWESInProgress
-    | MWESPending
-    | MWESSkippedOverlapping
-    | MWESSuccess
-    | MWESTimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = MWESCancelled
+  | MWESCancelling
+  | MWESFailed
+  | MWESInProgress
+  | MWESPending
+  | MWESSkippedOverlapping
+  | MWESSuccess
+  | MWESTimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText MaintenanceWindowExecutionStatus where
     parser = takeLowerText >>= \case
         "cancelled" -> pure MWESCancelled
@@ -687,9 +884,10 @@
     parseJSON = parseJSONText "MaintenanceWindowExecutionStatus"
 
 data MaintenanceWindowResourceType =
-    Instance
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  Instance
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText MaintenanceWindowResourceType where
     parser = takeLowerText >>= \case
         "instance" -> pure Instance
@@ -712,19 +910,29 @@
 instance FromJSON MaintenanceWindowResourceType where
     parseJSON = parseJSONText "MaintenanceWindowResourceType"
 
-data MaintenanceWindowTaskType =
-    RunCommand
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+data MaintenanceWindowTaskType
+  = Automation
+  | Lambda
+  | RunCommand
+  | StepFunctions
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText MaintenanceWindowTaskType where
     parser = takeLowerText >>= \case
+        "automation" -> pure Automation
+        "lambda" -> pure Lambda
         "run_command" -> pure RunCommand
+        "step_functions" -> pure StepFunctions
         e -> fromTextError $ "Failure parsing MaintenanceWindowTaskType from value: '" <> e
-           <> "'. Accepted values: run_command"
+           <> "'. Accepted values: automation, lambda, run_command, step_functions"
 
 instance ToText MaintenanceWindowTaskType where
     toText = \case
+        Automation -> "AUTOMATION"
+        Lambda -> "LAMBDA"
         RunCommand -> "RUN_COMMAND"
+        StepFunctions -> "STEP_FUNCTIONS"
 
 instance Hashable     MaintenanceWindowTaskType
 instance NFData       MaintenanceWindowTaskType
@@ -739,14 +947,15 @@
     parseJSON = parseJSONText "MaintenanceWindowTaskType"
 
 data NotificationEvent
-    = NEAll
-    | NECancelled
-    | NEFailed
-    | NEInProgress
-    | NESuccess
-    | NETimedOut
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = NEAll
+  | NECancelled
+  | NEFailed
+  | NEInProgress
+  | NESuccess
+  | NETimedOut
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText NotificationEvent where
     parser = takeLowerText >>= \case
         "all" -> pure NEAll
@@ -780,10 +989,11 @@
     parseJSON = parseJSONText "NotificationEvent"
 
 data NotificationType
-    = Command
-    | Invocation
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Command
+  | Invocation
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText NotificationType where
     parser = takeLowerText >>= \case
         "command" -> pure Command
@@ -808,12 +1018,49 @@
 instance FromJSON NotificationType where
     parseJSON = parseJSONText "NotificationType"
 
+data OperatingSystem
+  = AmazonLinux
+  | RedhatEnterpriseLinux
+  | Ubuntu
+  | Windows
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText OperatingSystem where
+    parser = takeLowerText >>= \case
+        "amazon_linux" -> pure AmazonLinux
+        "redhat_enterprise_linux" -> pure RedhatEnterpriseLinux
+        "ubuntu" -> pure Ubuntu
+        "windows" -> pure Windows
+        e -> fromTextError $ "Failure parsing OperatingSystem from value: '" <> e
+           <> "'. Accepted values: amazon_linux, redhat_enterprise_linux, ubuntu, windows"
+
+instance ToText OperatingSystem where
+    toText = \case
+        AmazonLinux -> "AMAZON_LINUX"
+        RedhatEnterpriseLinux -> "REDHAT_ENTERPRISE_LINUX"
+        Ubuntu -> "UBUNTU"
+        Windows -> "WINDOWS"
+
+instance Hashable     OperatingSystem
+instance NFData       OperatingSystem
+instance ToByteString OperatingSystem
+instance ToQuery      OperatingSystem
+instance ToHeader     OperatingSystem
+
+instance ToJSON OperatingSystem where
+    toJSON = toJSONText
+
+instance FromJSON OperatingSystem where
+    parseJSON = parseJSONText "OperatingSystem"
+
 data ParameterType
-    = SecureString
-    | String
-    | StringList
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = SecureString
+  | String
+  | StringList
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ParameterType where
     parser = takeLowerText >>= \case
         "securestring" -> pure SecureString
@@ -841,11 +1088,12 @@
     parseJSON = parseJSONText "ParameterType"
 
 data ParametersFilterKey
-    = PFKKeyId
-    | PFKName
-    | PFKType
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = PFKKeyId
+  | PFKName
+  | PFKType
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ParametersFilterKey where
     parser = takeLowerText >>= \case
         "keyid" -> pure PFKKeyId
@@ -869,12 +1117,196 @@
 instance ToJSON ParametersFilterKey where
     toJSON = toJSONText
 
+data PatchComplianceDataState
+  = Failed
+  | Installed
+  | InstalledOther
+  | Missing
+  | NotApplicable
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText PatchComplianceDataState where
+    parser = takeLowerText >>= \case
+        "failed" -> pure Failed
+        "installed" -> pure Installed
+        "installed_other" -> pure InstalledOther
+        "missing" -> pure Missing
+        "not_applicable" -> pure NotApplicable
+        e -> fromTextError $ "Failure parsing PatchComplianceDataState from value: '" <> e
+           <> "'. Accepted values: failed, installed, installed_other, missing, not_applicable"
+
+instance ToText PatchComplianceDataState where
+    toText = \case
+        Failed -> "FAILED"
+        Installed -> "INSTALLED"
+        InstalledOther -> "INSTALLED_OTHER"
+        Missing -> "MISSING"
+        NotApplicable -> "NOT_APPLICABLE"
+
+instance Hashable     PatchComplianceDataState
+instance NFData       PatchComplianceDataState
+instance ToByteString PatchComplianceDataState
+instance ToQuery      PatchComplianceDataState
+instance ToHeader     PatchComplianceDataState
+
+instance FromJSON PatchComplianceDataState where
+    parseJSON = parseJSONText "PatchComplianceDataState"
+
+data PatchComplianceLevel
+  = Critical
+  | High
+  | Informational
+  | Low
+  | Medium
+  | Unspecified
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText PatchComplianceLevel where
+    parser = takeLowerText >>= \case
+        "critical" -> pure Critical
+        "high" -> pure High
+        "informational" -> pure Informational
+        "low" -> pure Low
+        "medium" -> pure Medium
+        "unspecified" -> pure Unspecified
+        e -> fromTextError $ "Failure parsing PatchComplianceLevel from value: '" <> e
+           <> "'. Accepted values: critical, high, informational, low, medium, unspecified"
+
+instance ToText PatchComplianceLevel where
+    toText = \case
+        Critical -> "CRITICAL"
+        High -> "HIGH"
+        Informational -> "INFORMATIONAL"
+        Low -> "LOW"
+        Medium -> "MEDIUM"
+        Unspecified -> "UNSPECIFIED"
+
+instance Hashable     PatchComplianceLevel
+instance NFData       PatchComplianceLevel
+instance ToByteString PatchComplianceLevel
+instance ToQuery      PatchComplianceLevel
+instance ToHeader     PatchComplianceLevel
+
+instance ToJSON PatchComplianceLevel where
+    toJSON = toJSONText
+
+instance FromJSON PatchComplianceLevel where
+    parseJSON = parseJSONText "PatchComplianceLevel"
+
+data PatchDeploymentStatus
+  = Approved
+  | ExplicitApproved
+  | ExplicitRejected
+  | PendingApproval
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText PatchDeploymentStatus where
+    parser = takeLowerText >>= \case
+        "approved" -> pure Approved
+        "explicit_approved" -> pure ExplicitApproved
+        "explicit_rejected" -> pure ExplicitRejected
+        "pending_approval" -> pure PendingApproval
+        e -> fromTextError $ "Failure parsing PatchDeploymentStatus from value: '" <> e
+           <> "'. Accepted values: approved, explicit_approved, explicit_rejected, pending_approval"
+
+instance ToText PatchDeploymentStatus where
+    toText = \case
+        Approved -> "APPROVED"
+        ExplicitApproved -> "EXPLICIT_APPROVED"
+        ExplicitRejected -> "EXPLICIT_REJECTED"
+        PendingApproval -> "PENDING_APPROVAL"
+
+instance Hashable     PatchDeploymentStatus
+instance NFData       PatchDeploymentStatus
+instance ToByteString PatchDeploymentStatus
+instance ToQuery      PatchDeploymentStatus
+instance ToHeader     PatchDeploymentStatus
+
+instance FromJSON PatchDeploymentStatus where
+    parseJSON = parseJSONText "PatchDeploymentStatus"
+
+data PatchFilterKey
+  = Classification
+  | MsrcSeverity
+  | PatchId
+  | Priority
+  | Product
+  | Section
+  | Severity
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText PatchFilterKey where
+    parser = takeLowerText >>= \case
+        "classification" -> pure Classification
+        "msrc_severity" -> pure MsrcSeverity
+        "patch_id" -> pure PatchId
+        "priority" -> pure Priority
+        "product" -> pure Product
+        "section" -> pure Section
+        "severity" -> pure Severity
+        e -> fromTextError $ "Failure parsing PatchFilterKey from value: '" <> e
+           <> "'. Accepted values: classification, msrc_severity, patch_id, priority, product, section, severity"
+
+instance ToText PatchFilterKey where
+    toText = \case
+        Classification -> "CLASSIFICATION"
+        MsrcSeverity -> "MSRC_SEVERITY"
+        PatchId -> "PATCH_ID"
+        Priority -> "PRIORITY"
+        Product -> "PRODUCT"
+        Section -> "SECTION"
+        Severity -> "SEVERITY"
+
+instance Hashable     PatchFilterKey
+instance NFData       PatchFilterKey
+instance ToByteString PatchFilterKey
+instance ToQuery      PatchFilterKey
+instance ToHeader     PatchFilterKey
+
+instance ToJSON PatchFilterKey where
+    toJSON = toJSONText
+
+instance FromJSON PatchFilterKey where
+    parseJSON = parseJSONText "PatchFilterKey"
+
+data PatchOperationType
+  = Install
+  | Scan
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText PatchOperationType where
+    parser = takeLowerText >>= \case
+        "install" -> pure Install
+        "scan" -> pure Scan
+        e -> fromTextError $ "Failure parsing PatchOperationType from value: '" <> e
+           <> "'. Accepted values: install, scan"
+
+instance ToText PatchOperationType where
+    toText = \case
+        Install -> "Install"
+        Scan -> "Scan"
+
+instance Hashable     PatchOperationType
+instance NFData       PatchOperationType
+instance ToByteString PatchOperationType
+instance ToQuery      PatchOperationType
+instance ToHeader     PatchOperationType
+
+instance FromJSON PatchOperationType where
+    parseJSON = parseJSONText "PatchOperationType"
+
 data PingStatus
-    = ConnectionLost
-    | Inactive
-    | Online
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = ConnectionLost
+  | Inactive
+  | Online
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText PingStatus where
     parser = takeLowerText >>= \case
         "connectionlost" -> pure ConnectionLost
@@ -899,21 +1331,22 @@
     parseJSON = parseJSONText "PingStatus"
 
 data PlatformType
-    = Linux
-    | Windows
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = PTLinux
+  | PTWindows
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText PlatformType where
     parser = takeLowerText >>= \case
-        "linux" -> pure Linux
-        "windows" -> pure Windows
+        "linux" -> pure PTLinux
+        "windows" -> pure PTWindows
         e -> fromTextError $ "Failure parsing PlatformType from value: '" <> e
            <> "'. Accepted values: linux, windows"
 
 instance ToText PlatformType where
     toText = \case
-        Linux -> "Linux"
-        Windows -> "Windows"
+        PTLinux -> "Linux"
+        PTWindows -> "Windows"
 
 instance Hashable     PlatformType
 instance NFData       PlatformType
@@ -924,12 +1357,40 @@
 instance FromJSON PlatformType where
     parseJSON = parseJSONText "PlatformType"
 
+data ResourceDataSyncS3Format =
+  JSONSerDe
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText ResourceDataSyncS3Format where
+    parser = takeLowerText >>= \case
+        "jsonserde" -> pure JSONSerDe
+        e -> fromTextError $ "Failure parsing ResourceDataSyncS3Format from value: '" <> e
+           <> "'. Accepted values: jsonserde"
+
+instance ToText ResourceDataSyncS3Format where
+    toText = \case
+        JSONSerDe -> "JsonSerDe"
+
+instance Hashable     ResourceDataSyncS3Format
+instance NFData       ResourceDataSyncS3Format
+instance ToByteString ResourceDataSyncS3Format
+instance ToQuery      ResourceDataSyncS3Format
+instance ToHeader     ResourceDataSyncS3Format
+
+instance ToJSON ResourceDataSyncS3Format where
+    toJSON = toJSONText
+
+instance FromJSON ResourceDataSyncS3Format where
+    parseJSON = parseJSONText "ResourceDataSyncS3Format"
+
 data ResourceType
-    = Document
-    | EC2Instance
-    | ManagedInstance
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = Document
+  | EC2Instance
+  | ManagedInstance
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ResourceType where
     parser = takeLowerText >>= \case
         "document" -> pure Document
@@ -954,24 +1415,31 @@
     parseJSON = parseJSONText "ResourceType"
 
 data ResourceTypeForTagging
-    = RTFTMaintenanceWindow
-    | RTFTManagedInstance
-    | RTFTParameter
-    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)
+  = RTFTDocument
+  | RTFTMaintenanceWindow
+  | RTFTManagedInstance
+  | RTFTParameter
+  | RTFTPatchBaseline
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
 
+
 instance FromText ResourceTypeForTagging where
     parser = takeLowerText >>= \case
+        "document" -> pure RTFTDocument
         "maintenancewindow" -> pure RTFTMaintenanceWindow
         "managedinstance" -> pure RTFTManagedInstance
         "parameter" -> pure RTFTParameter
+        "patchbaseline" -> pure RTFTPatchBaseline
         e -> fromTextError $ "Failure parsing ResourceTypeForTagging from value: '" <> e
-           <> "'. Accepted values: maintenancewindow, managedinstance, parameter"
+           <> "'. Accepted values: document, maintenancewindow, managedinstance, parameter, patchbaseline"
 
 instance ToText ResourceTypeForTagging where
     toText = \case
+        RTFTDocument -> "Document"
         RTFTMaintenanceWindow -> "MaintenanceWindow"
         RTFTManagedInstance -> "ManagedInstance"
         RTFTParameter -> "Parameter"
+        RTFTPatchBaseline -> "PatchBaseline"
 
 instance Hashable     ResourceTypeForTagging
 instance NFData       ResourceTypeForTagging
@@ -980,4 +1448,31 @@
 instance ToHeader     ResourceTypeForTagging
 
 instance ToJSON ResourceTypeForTagging where
+    toJSON = toJSONText
+
+data SignalType
+  = Approve
+  | Reject
+  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
+
+
+instance FromText SignalType where
+    parser = takeLowerText >>= \case
+        "approve" -> pure Approve
+        "reject" -> pure Reject
+        e -> fromTextError $ "Failure parsing SignalType from value: '" <> e
+           <> "'. Accepted values: approve, reject"
+
+instance ToText SignalType where
+    toText = \case
+        Approve -> "Approve"
+        Reject -> "Reject"
+
+instance Hashable     SignalType
+instance NFData       SignalType
+instance ToByteString SignalType
+instance ToQuery      SignalType
+instance ToHeader     SignalType
+
+instance ToJSON SignalType where
     toJSON = toJSONText
diff --git a/gen/Network/AWS/SSM/UpdateAssociation.hs b/gen/Network/AWS/SSM/UpdateAssociation.hs
--- a/gen/Network/AWS/SSM/UpdateAssociation.hs
+++ b/gen/Network/AWS/SSM/UpdateAssociation.hs
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateAssociation
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates an association. You can only update the document version, schedule, parameters, and Amazon S3 output of an association.
+-- Updates an association. You can update the association name and version, the document version, schedule, parameters, and Amazon S3 output.
 --
 --
 module Network.AWS.SSM.UpdateAssociation
@@ -28,9 +28,13 @@
     , UpdateAssociation
     -- * Request Lenses
     , uaScheduleExpression
+    , uaName
     , uaOutputLocation
+    , uaTargets
     , uaParameters
     , uaDocumentVersion
+    , uaAssociationVersion
+    , uaAssociationName
     , uaAssociationId
 
     -- * Destructuring the Response
@@ -41,55 +45,81 @@
     , uarsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateAssociation' smart constructor.
 data UpdateAssociation = UpdateAssociation'
-    { _uaScheduleExpression :: !(Maybe Text)
-    , _uaOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
-    , _uaParameters         :: !(Maybe (Map Text [Text]))
-    , _uaDocumentVersion    :: !(Maybe Text)
-    , _uaAssociationId      :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uaScheduleExpression :: !(Maybe Text)
+  , _uaName               :: !(Maybe Text)
+  , _uaOutputLocation     :: !(Maybe InstanceAssociationOutputLocation)
+  , _uaTargets            :: !(Maybe [Target])
+  , _uaParameters         :: !(Maybe (Map Text [Text]))
+  , _uaDocumentVersion    :: !(Maybe Text)
+  , _uaAssociationVersion :: !(Maybe Text)
+  , _uaAssociationName    :: !(Maybe Text)
+  , _uaAssociationId      :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAssociation' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uaScheduleExpression' - The cron expression used to schedule the association that you want to update. Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0 0 10 ? * SUN *) to run every Sunday at 10 a.m.
+-- * 'uaScheduleExpression' - The cron expression used to schedule the association that you want to update.
 --
--- * 'uaOutputLocation' - An Amazon S3 bucket where you want to store the results of this request. @"{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\": \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"@
+-- * 'uaName' - The name of the association document.
 --
+-- * 'uaOutputLocation' - An Amazon S3 bucket where you want to store the results of this request.
+--
+-- * 'uaTargets' - The targets of the association.
+--
 -- * 'uaParameters' - The parameters you want to update for the association. If you create a parameter using Parameter Store, you can reference the parameter using {{ssm:parameter-name}}
 --
 -- * 'uaDocumentVersion' - The document version you want update for the association.
 --
+-- * 'uaAssociationVersion' - This parameter is provided for concurrency control purposes. You must specify the latest association version in the service. If you want to ensure that this request succeeds, either specify @> LATEST@ , or omit this parameter.
+--
+-- * 'uaAssociationName' - The name of the association that you want to update.
+--
 -- * 'uaAssociationId' - The ID of the association you want to update.
 updateAssociation
     :: Text -- ^ 'uaAssociationId'
     -> UpdateAssociation
 updateAssociation pAssociationId_ =
-    UpdateAssociation'
-    { _uaScheduleExpression = Nothing
-    , _uaOutputLocation = Nothing
-    , _uaParameters = Nothing
-    , _uaDocumentVersion = Nothing
-    , _uaAssociationId = pAssociationId_
-    }
+  UpdateAssociation'
+  { _uaScheduleExpression = Nothing
+  , _uaName = Nothing
+  , _uaOutputLocation = Nothing
+  , _uaTargets = Nothing
+  , _uaParameters = Nothing
+  , _uaDocumentVersion = Nothing
+  , _uaAssociationVersion = Nothing
+  , _uaAssociationName = Nothing
+  , _uaAssociationId = pAssociationId_
+  }
 
--- | The cron expression used to schedule the association that you want to update. Supported expressions are every half, 1, 2, 4, 8 or 12 hour(s); every specified day and time of the week. For example: cron(0 0/30 * 1/1 * ? *) to run every thirty minutes; cron(0 0 0/4 1/1 * ? *) to run every four hours; and cron(0 0 10 ? * SUN *) to run every Sunday at 10 a.m.
+
+-- | The cron expression used to schedule the association that you want to update.
 uaScheduleExpression :: Lens' UpdateAssociation (Maybe Text)
 uaScheduleExpression = lens _uaScheduleExpression (\ s a -> s{_uaScheduleExpression = a});
 
--- | An Amazon S3 bucket where you want to store the results of this request. @"{ \"S3Location\": { \"OutputS3Region\": \"<region>\", \"OutputS3BucketName\": \"bucket name\", \"OutputS3KeyPrefix\": \"folder name\" } }"@
+-- | The name of the association document.
+uaName :: Lens' UpdateAssociation (Maybe Text)
+uaName = lens _uaName (\ s a -> s{_uaName = a});
+
+-- | An Amazon S3 bucket where you want to store the results of this request.
 uaOutputLocation :: Lens' UpdateAssociation (Maybe InstanceAssociationOutputLocation)
 uaOutputLocation = lens _uaOutputLocation (\ s a -> s{_uaOutputLocation = a});
 
+-- | The targets of the association.
+uaTargets :: Lens' UpdateAssociation [Target]
+uaTargets = lens _uaTargets (\ s a -> s{_uaTargets = a}) . _Default . _Coerce;
+
 -- | The parameters you want to update for the association. If you create a parameter using Parameter Store, you can reference the parameter using {{ssm:parameter-name}}
 uaParameters :: Lens' UpdateAssociation (HashMap Text [Text])
 uaParameters = lens _uaParameters (\ s a -> s{_uaParameters = a}) . _Default . _Map;
@@ -98,6 +128,14 @@
 uaDocumentVersion :: Lens' UpdateAssociation (Maybe Text)
 uaDocumentVersion = lens _uaDocumentVersion (\ s a -> s{_uaDocumentVersion = a});
 
+-- | This parameter is provided for concurrency control purposes. You must specify the latest association version in the service. If you want to ensure that this request succeeds, either specify @> LATEST@ , or omit this parameter.
+uaAssociationVersion :: Lens' UpdateAssociation (Maybe Text)
+uaAssociationVersion = lens _uaAssociationVersion (\ s a -> s{_uaAssociationVersion = a});
+
+-- | The name of the association that you want to update.
+uaAssociationName :: Lens' UpdateAssociation (Maybe Text)
+uaAssociationName = lens _uaAssociationName (\ s a -> s{_uaAssociationName = a});
+
 -- | The ID of the association you want to update.
 uaAssociationId :: Lens' UpdateAssociation Text
 uaAssociationId = lens _uaAssociationId (\ s a -> s{_uaAssociationId = a});
@@ -112,9 +150,9 @@
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable UpdateAssociation
+instance Hashable UpdateAssociation where
 
-instance NFData UpdateAssociation
+instance NFData UpdateAssociation where
 
 instance ToHeaders UpdateAssociation where
         toHeaders
@@ -130,9 +168,13 @@
           = object
               (catMaybes
                  [("ScheduleExpression" .=) <$> _uaScheduleExpression,
+                  ("Name" .=) <$> _uaName,
                   ("OutputLocation" .=) <$> _uaOutputLocation,
+                  ("Targets" .=) <$> _uaTargets,
                   ("Parameters" .=) <$> _uaParameters,
                   ("DocumentVersion" .=) <$> _uaDocumentVersion,
+                  ("AssociationVersion" .=) <$> _uaAssociationVersion,
+                  ("AssociationName" .=) <$> _uaAssociationName,
                   Just ("AssociationId" .= _uaAssociationId)])
 
 instance ToPath UpdateAssociation where
@@ -143,10 +185,11 @@
 
 -- | /See:/ 'updateAssociationResponse' smart constructor.
 data UpdateAssociationResponse = UpdateAssociationResponse'
-    { _uarsAssociationDescription :: !(Maybe AssociationDescription)
-    , _uarsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uarsAssociationDescription :: !(Maybe AssociationDescription)
+  , _uarsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAssociationResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -158,11 +201,12 @@
     :: Int -- ^ 'uarsResponseStatus'
     -> UpdateAssociationResponse
 updateAssociationResponse pResponseStatus_ =
-    UpdateAssociationResponse'
-    { _uarsAssociationDescription = Nothing
-    , _uarsResponseStatus = pResponseStatus_
-    }
+  UpdateAssociationResponse'
+  { _uarsAssociationDescription = Nothing
+  , _uarsResponseStatus = pResponseStatus_
+  }
 
+
 -- | The description of the association that was updated.
 uarsAssociationDescription :: Lens' UpdateAssociationResponse (Maybe AssociationDescription)
 uarsAssociationDescription = lens _uarsAssociationDescription (\ s a -> s{_uarsAssociationDescription = a});
@@ -171,4 +215,4 @@
 uarsResponseStatus :: Lens' UpdateAssociationResponse Int
 uarsResponseStatus = lens _uarsResponseStatus (\ s a -> s{_uarsResponseStatus = a});
 
-instance NFData UpdateAssociationResponse
+instance NFData UpdateAssociationResponse where
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
@@ -12,13 +12,13 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateAssociationStatus
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates the status of the SSM document associated with the specified instance.
+-- Updates the status of the Systems Manager document associated with the specified instance.
 --
 --
 module Network.AWS.SSM.UpdateAssociationStatus
@@ -39,25 +39,26 @@
     , uasrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateAssociationStatus' smart constructor.
 data UpdateAssociationStatus = UpdateAssociationStatus'
-    { _uasName              :: !Text
-    , _uasInstanceId        :: !Text
-    , _uasAssociationStatus :: !AssociationStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uasName              :: !Text
+  , _uasInstanceId        :: !Text
+  , _uasAssociationStatus :: !AssociationStatus
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAssociationStatus' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uasName' - The name of the SSM document.
+-- * 'uasName' - The name of the Systems Manager document.
 --
 -- * 'uasInstanceId' - The ID of the instance.
 --
@@ -68,13 +69,14 @@
     -> AssociationStatus -- ^ 'uasAssociationStatus'
     -> UpdateAssociationStatus
 updateAssociationStatus pName_ pInstanceId_ pAssociationStatus_ =
-    UpdateAssociationStatus'
-    { _uasName = pName_
-    , _uasInstanceId = pInstanceId_
-    , _uasAssociationStatus = pAssociationStatus_
-    }
+  UpdateAssociationStatus'
+  { _uasName = pName_
+  , _uasInstanceId = pInstanceId_
+  , _uasAssociationStatus = pAssociationStatus_
+  }
 
--- | The name of the SSM document.
+
+-- | The name of the Systems Manager document.
 uasName :: Lens' UpdateAssociationStatus Text
 uasName = lens _uasName (\ s a -> s{_uasName = a});
 
@@ -97,9 +99,9 @@
                    (x .?> "AssociationDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable UpdateAssociationStatus
+instance Hashable UpdateAssociationStatus where
 
-instance NFData UpdateAssociationStatus
+instance NFData UpdateAssociationStatus where
 
 instance ToHeaders UpdateAssociationStatus where
         toHeaders
@@ -126,10 +128,11 @@
 
 -- | /See:/ 'updateAssociationStatusResponse' smart constructor.
 data UpdateAssociationStatusResponse = UpdateAssociationStatusResponse'
-    { _uasrsAssociationDescription :: !(Maybe AssociationDescription)
-    , _uasrsResponseStatus         :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uasrsAssociationDescription :: !(Maybe AssociationDescription)
+  , _uasrsResponseStatus         :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateAssociationStatusResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -141,11 +144,12 @@
     :: Int -- ^ 'uasrsResponseStatus'
     -> UpdateAssociationStatusResponse
 updateAssociationStatusResponse pResponseStatus_ =
-    UpdateAssociationStatusResponse'
-    { _uasrsAssociationDescription = Nothing
-    , _uasrsResponseStatus = pResponseStatus_
-    }
+  UpdateAssociationStatusResponse'
+  { _uasrsAssociationDescription = Nothing
+  , _uasrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Information about the association.
 uasrsAssociationDescription :: Lens' UpdateAssociationStatusResponse (Maybe AssociationDescription)
 uasrsAssociationDescription = lens _uasrsAssociationDescription (\ s a -> s{_uasrsAssociationDescription = a});
@@ -154,4 +158,4 @@
 uasrsResponseStatus :: Lens' UpdateAssociationStatusResponse Int
 uasrsResponseStatus = lens _uasrsResponseStatus (\ s a -> s{_uasrsResponseStatus = a});
 
-instance NFData UpdateAssociationStatusResponse
+instance NFData UpdateAssociationStatusResponse where
diff --git a/gen/Network/AWS/SSM/UpdateDocument.hs b/gen/Network/AWS/SSM/UpdateDocument.hs
--- a/gen/Network/AWS/SSM/UpdateDocument.hs
+++ b/gen/Network/AWS/SSM/UpdateDocument.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateDocument
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -39,20 +39,21 @@
     , udrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateDocument' smart constructor.
 data UpdateDocument = UpdateDocument'
-    { _udDocumentVersion :: !(Maybe Text)
-    , _udContent         :: !Text
-    , _udName            :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _udDocumentVersion :: !(Maybe Text)
+  , _udContent         :: !Text
+  , _udName            :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateDocument' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -67,12 +68,10 @@
     -> Text -- ^ 'udName'
     -> UpdateDocument
 updateDocument pContent_ pName_ =
-    UpdateDocument'
-    { _udDocumentVersion = Nothing
-    , _udContent = pContent_
-    , _udName = pName_
-    }
+  UpdateDocument'
+  {_udDocumentVersion = Nothing, _udContent = pContent_, _udName = pName_}
 
+
 -- | The version of the document that you want to update.
 udDocumentVersion :: Lens' UpdateDocument (Maybe Text)
 udDocumentVersion = lens _udDocumentVersion (\ s a -> s{_udDocumentVersion = a});
@@ -95,9 +94,9 @@
                    (x .?> "DocumentDescription") <*>
                      (pure (fromEnum s)))
 
-instance Hashable UpdateDocument
+instance Hashable UpdateDocument where
 
-instance NFData UpdateDocument
+instance NFData UpdateDocument where
 
 instance ToHeaders UpdateDocument where
         toHeaders
@@ -124,10 +123,11 @@
 
 -- | /See:/ 'updateDocumentResponse' smart constructor.
 data UpdateDocumentResponse = UpdateDocumentResponse'
-    { _udrsDocumentDescription :: !(Maybe DocumentDescription)
-    , _udrsResponseStatus      :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _udrsDocumentDescription :: !(Maybe DocumentDescription)
+  , _udrsResponseStatus      :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateDocumentResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -139,11 +139,10 @@
     :: Int -- ^ 'udrsResponseStatus'
     -> UpdateDocumentResponse
 updateDocumentResponse pResponseStatus_ =
-    UpdateDocumentResponse'
-    { _udrsDocumentDescription = Nothing
-    , _udrsResponseStatus = pResponseStatus_
-    }
+  UpdateDocumentResponse'
+  {_udrsDocumentDescription = Nothing, _udrsResponseStatus = pResponseStatus_}
 
+
 -- | A description of the document that was updated.
 udrsDocumentDescription :: Lens' UpdateDocumentResponse (Maybe DocumentDescription)
 udrsDocumentDescription = lens _udrsDocumentDescription (\ s a -> s{_udrsDocumentDescription = a});
@@ -152,4 +151,4 @@
 udrsResponseStatus :: Lens' UpdateDocumentResponse Int
 udrsResponseStatus = lens _udrsResponseStatus (\ s a -> s{_udrsResponseStatus = a});
 
-instance NFData UpdateDocumentResponse
+instance NFData UpdateDocumentResponse where
diff --git a/gen/Network/AWS/SSM/UpdateDocumentDefaultVersion.hs b/gen/Network/AWS/SSM/UpdateDocumentDefaultVersion.hs
--- a/gen/Network/AWS/SSM/UpdateDocumentDefaultVersion.hs
+++ b/gen/Network/AWS/SSM/UpdateDocumentDefaultVersion.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateDocumentDefaultVersion
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -38,19 +38,20 @@
     , uddvrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateDocumentDefaultVersion' smart constructor.
 data UpdateDocumentDefaultVersion = UpdateDocumentDefaultVersion'
-    { _uddvName            :: !Text
-    , _uddvDocumentVersion :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uddvName            :: !Text
+  , _uddvDocumentVersion :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateDocumentDefaultVersion' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -63,11 +64,10 @@
     -> Text -- ^ 'uddvDocumentVersion'
     -> UpdateDocumentDefaultVersion
 updateDocumentDefaultVersion pName_ pDocumentVersion_ =
-    UpdateDocumentDefaultVersion'
-    { _uddvName = pName_
-    , _uddvDocumentVersion = pDocumentVersion_
-    }
+  UpdateDocumentDefaultVersion'
+  {_uddvName = pName_, _uddvDocumentVersion = pDocumentVersion_}
 
+
 -- | The name of a custom document that you want to set as the default version.
 uddvName :: Lens' UpdateDocumentDefaultVersion Text
 uddvName = lens _uddvName (\ s a -> s{_uddvName = a});
@@ -87,9 +87,9 @@
                  UpdateDocumentDefaultVersionResponse' <$>
                    (x .?> "Description") <*> (pure (fromEnum s)))
 
-instance Hashable UpdateDocumentDefaultVersion
+instance Hashable UpdateDocumentDefaultVersion where
 
-instance NFData UpdateDocumentDefaultVersion
+instance NFData UpdateDocumentDefaultVersion where
 
 instance ToHeaders UpdateDocumentDefaultVersion where
         toHeaders
@@ -116,10 +116,11 @@
 
 -- | /See:/ 'updateDocumentDefaultVersionResponse' smart constructor.
 data UpdateDocumentDefaultVersionResponse = UpdateDocumentDefaultVersionResponse'
-    { _uddvrsDescription    :: !(Maybe DocumentDefaultVersionDescription)
-    , _uddvrsResponseStatus :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _uddvrsDescription    :: !(Maybe DocumentDefaultVersionDescription)
+  , _uddvrsResponseStatus :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateDocumentDefaultVersionResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -131,11 +132,10 @@
     :: Int -- ^ 'uddvrsResponseStatus'
     -> UpdateDocumentDefaultVersionResponse
 updateDocumentDefaultVersionResponse pResponseStatus_ =
-    UpdateDocumentDefaultVersionResponse'
-    { _uddvrsDescription = Nothing
-    , _uddvrsResponseStatus = pResponseStatus_
-    }
+  UpdateDocumentDefaultVersionResponse'
+  {_uddvrsDescription = Nothing, _uddvrsResponseStatus = pResponseStatus_}
 
+
 -- | The description of a custom document that you want to set as the default version.
 uddvrsDescription :: Lens' UpdateDocumentDefaultVersionResponse (Maybe DocumentDefaultVersionDescription)
 uddvrsDescription = lens _uddvrsDescription (\ s a -> s{_uddvrsDescription = a});
@@ -145,3 +145,4 @@
 uddvrsResponseStatus = lens _uddvrsResponseStatus (\ s a -> s{_uddvrsResponseStatus = a});
 
 instance NFData UpdateDocumentDefaultVersionResponse
+         where
diff --git a/gen/Network/AWS/SSM/UpdateMaintenanceWindow.hs b/gen/Network/AWS/SSM/UpdateMaintenanceWindow.hs
--- a/gen/Network/AWS/SSM/UpdateMaintenanceWindow.hs
+++ b/gen/Network/AWS/SSM/UpdateMaintenanceWindow.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateMaintenanceWindow
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -27,11 +27,13 @@
       updateMaintenanceWindow
     , UpdateMaintenanceWindow
     -- * Request Lenses
+    , umwReplace
     , umwEnabled
     , umwSchedule
     , umwName
     , umwCutoff
     , umwAllowUnassociatedTargets
+    , umwDescription
     , umwDuration
     , umwWindowId
 
@@ -44,33 +46,39 @@
     , umwrsName
     , umwrsCutoff
     , umwrsAllowUnassociatedTargets
+    , umwrsDescription
     , umwrsDuration
     , umwrsWindowId
     , umwrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateMaintenanceWindow' smart constructor.
 data UpdateMaintenanceWindow = UpdateMaintenanceWindow'
-    { _umwEnabled                  :: !(Maybe Bool)
-    , _umwSchedule                 :: !(Maybe Text)
-    , _umwName                     :: !(Maybe Text)
-    , _umwCutoff                   :: !(Maybe Nat)
-    , _umwAllowUnassociatedTargets :: !(Maybe Bool)
-    , _umwDuration                 :: !(Maybe Nat)
-    , _umwWindowId                 :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _umwReplace                  :: !(Maybe Bool)
+  , _umwEnabled                  :: !(Maybe Bool)
+  , _umwSchedule                 :: !(Maybe Text)
+  , _umwName                     :: !(Maybe Text)
+  , _umwCutoff                   :: !(Maybe Nat)
+  , _umwAllowUnassociatedTargets :: !(Maybe Bool)
+  , _umwDescription              :: !(Maybe (Sensitive Text))
+  , _umwDuration                 :: !(Maybe Nat)
+  , _umwWindowId                 :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateMaintenanceWindow' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'umwReplace' - If True, then all fields that are required by the CreateMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.
+--
 -- * 'umwEnabled' - Whether the Maintenance Window is enabled.
 --
 -- * 'umwSchedule' - The schedule of the Maintenance Window in the form of a cron or rate expression.
@@ -81,6 +89,8 @@
 --
 -- * 'umwAllowUnassociatedTargets' - Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.
 --
+-- * 'umwDescription' - An optional description for the update request.
+--
 -- * 'umwDuration' - The duration of the Maintenance Window in hours.
 --
 -- * 'umwWindowId' - The ID of the Maintenance Window to update.
@@ -88,16 +98,23 @@
     :: Text -- ^ 'umwWindowId'
     -> UpdateMaintenanceWindow
 updateMaintenanceWindow pWindowId_ =
-    UpdateMaintenanceWindow'
-    { _umwEnabled = Nothing
-    , _umwSchedule = Nothing
-    , _umwName = Nothing
-    , _umwCutoff = Nothing
-    , _umwAllowUnassociatedTargets = Nothing
-    , _umwDuration = Nothing
-    , _umwWindowId = pWindowId_
-    }
+  UpdateMaintenanceWindow'
+  { _umwReplace = Nothing
+  , _umwEnabled = Nothing
+  , _umwSchedule = Nothing
+  , _umwName = Nothing
+  , _umwCutoff = Nothing
+  , _umwAllowUnassociatedTargets = Nothing
+  , _umwDescription = Nothing
+  , _umwDuration = Nothing
+  , _umwWindowId = pWindowId_
+  }
 
+
+-- | If True, then all fields that are required by the CreateMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.
+umwReplace :: Lens' UpdateMaintenanceWindow (Maybe Bool)
+umwReplace = lens _umwReplace (\ s a -> s{_umwReplace = a});
+
 -- | Whether the Maintenance Window is enabled.
 umwEnabled :: Lens' UpdateMaintenanceWindow (Maybe Bool)
 umwEnabled = lens _umwEnabled (\ s a -> s{_umwEnabled = a});
@@ -118,6 +135,10 @@
 umwAllowUnassociatedTargets :: Lens' UpdateMaintenanceWindow (Maybe Bool)
 umwAllowUnassociatedTargets = lens _umwAllowUnassociatedTargets (\ s a -> s{_umwAllowUnassociatedTargets = a});
 
+-- | An optional description for the update request.
+umwDescription :: Lens' UpdateMaintenanceWindow (Maybe Text)
+umwDescription = lens _umwDescription (\ s a -> s{_umwDescription = a}) . mapping _Sensitive;
+
 -- | The duration of the Maintenance Window in hours.
 umwDuration :: Lens' UpdateMaintenanceWindow (Maybe Natural)
 umwDuration = lens _umwDuration (\ s a -> s{_umwDuration = a}) . mapping _Nat;
@@ -138,13 +159,14 @@
                      (x .?> "Name")
                      <*> (x .?> "Cutoff")
                      <*> (x .?> "AllowUnassociatedTargets")
+                     <*> (x .?> "Description")
                      <*> (x .?> "Duration")
                      <*> (x .?> "WindowId")
                      <*> (pure (fromEnum s)))
 
-instance Hashable UpdateMaintenanceWindow
+instance Hashable UpdateMaintenanceWindow where
 
-instance NFData UpdateMaintenanceWindow
+instance NFData UpdateMaintenanceWindow where
 
 instance ToHeaders UpdateMaintenanceWindow where
         toHeaders
@@ -159,12 +181,14 @@
         toJSON UpdateMaintenanceWindow'{..}
           = object
               (catMaybes
-                 [("Enabled" .=) <$> _umwEnabled,
+                 [("Replace" .=) <$> _umwReplace,
+                  ("Enabled" .=) <$> _umwEnabled,
                   ("Schedule" .=) <$> _umwSchedule,
                   ("Name" .=) <$> _umwName,
                   ("Cutoff" .=) <$> _umwCutoff,
                   ("AllowUnassociatedTargets" .=) <$>
                     _umwAllowUnassociatedTargets,
+                  ("Description" .=) <$> _umwDescription,
                   ("Duration" .=) <$> _umwDuration,
                   Just ("WindowId" .= _umwWindowId)])
 
@@ -176,16 +200,18 @@
 
 -- | /See:/ 'updateMaintenanceWindowResponse' smart constructor.
 data UpdateMaintenanceWindowResponse = UpdateMaintenanceWindowResponse'
-    { _umwrsEnabled                  :: !(Maybe Bool)
-    , _umwrsSchedule                 :: !(Maybe Text)
-    , _umwrsName                     :: !(Maybe Text)
-    , _umwrsCutoff                   :: !(Maybe Nat)
-    , _umwrsAllowUnassociatedTargets :: !(Maybe Bool)
-    , _umwrsDuration                 :: !(Maybe Nat)
-    , _umwrsWindowId                 :: !(Maybe Text)
-    , _umwrsResponseStatus           :: !Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _umwrsEnabled                  :: !(Maybe Bool)
+  , _umwrsSchedule                 :: !(Maybe Text)
+  , _umwrsName                     :: !(Maybe Text)
+  , _umwrsCutoff                   :: !(Maybe Nat)
+  , _umwrsAllowUnassociatedTargets :: !(Maybe Bool)
+  , _umwrsDescription              :: !(Maybe (Sensitive Text))
+  , _umwrsDuration                 :: !(Maybe Nat)
+  , _umwrsWindowId                 :: !(Maybe Text)
+  , _umwrsResponseStatus           :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateMaintenanceWindowResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -200,6 +226,8 @@
 --
 -- * 'umwrsAllowUnassociatedTargets' - Whether targets must be registered with the Maintenance Window before tasks can be defined for those targets.
 --
+-- * 'umwrsDescription' - An optional description of the update.
+--
 -- * 'umwrsDuration' - The duration of the Maintenance Window in hours.
 --
 -- * 'umwrsWindowId' - The ID of the created Maintenance Window.
@@ -209,17 +237,19 @@
     :: Int -- ^ 'umwrsResponseStatus'
     -> UpdateMaintenanceWindowResponse
 updateMaintenanceWindowResponse pResponseStatus_ =
-    UpdateMaintenanceWindowResponse'
-    { _umwrsEnabled = Nothing
-    , _umwrsSchedule = Nothing
-    , _umwrsName = Nothing
-    , _umwrsCutoff = Nothing
-    , _umwrsAllowUnassociatedTargets = Nothing
-    , _umwrsDuration = Nothing
-    , _umwrsWindowId = Nothing
-    , _umwrsResponseStatus = pResponseStatus_
-    }
+  UpdateMaintenanceWindowResponse'
+  { _umwrsEnabled = Nothing
+  , _umwrsSchedule = Nothing
+  , _umwrsName = Nothing
+  , _umwrsCutoff = Nothing
+  , _umwrsAllowUnassociatedTargets = Nothing
+  , _umwrsDescription = Nothing
+  , _umwrsDuration = Nothing
+  , _umwrsWindowId = Nothing
+  , _umwrsResponseStatus = pResponseStatus_
+  }
 
+
 -- | Whether the Maintenance Window is enabled.
 umwrsEnabled :: Lens' UpdateMaintenanceWindowResponse (Maybe Bool)
 umwrsEnabled = lens _umwrsEnabled (\ s a -> s{_umwrsEnabled = a});
@@ -240,6 +270,10 @@
 umwrsAllowUnassociatedTargets :: Lens' UpdateMaintenanceWindowResponse (Maybe Bool)
 umwrsAllowUnassociatedTargets = lens _umwrsAllowUnassociatedTargets (\ s a -> s{_umwrsAllowUnassociatedTargets = a});
 
+-- | An optional description of the update.
+umwrsDescription :: Lens' UpdateMaintenanceWindowResponse (Maybe Text)
+umwrsDescription = lens _umwrsDescription (\ s a -> s{_umwrsDescription = a}) . mapping _Sensitive;
+
 -- | The duration of the Maintenance Window in hours.
 umwrsDuration :: Lens' UpdateMaintenanceWindowResponse (Maybe Natural)
 umwrsDuration = lens _umwrsDuration (\ s a -> s{_umwrsDuration = a}) . mapping _Nat;
@@ -252,4 +286,4 @@
 umwrsResponseStatus :: Lens' UpdateMaintenanceWindowResponse Int
 umwrsResponseStatus = lens _umwrsResponseStatus (\ s a -> s{_umwrsResponseStatus = a});
 
-instance NFData UpdateMaintenanceWindowResponse
+instance NFData UpdateMaintenanceWindowResponse where
diff --git a/gen/Network/AWS/SSM/UpdateMaintenanceWindowTarget.hs b/gen/Network/AWS/SSM/UpdateMaintenanceWindowTarget.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/UpdateMaintenanceWindowTarget.hs
@@ -0,0 +1,267 @@
+{-# 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.SSM.UpdateMaintenanceWindowTarget
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies the target of an existing Maintenance Window. You can't change the target type, but you can change the following:
+--
+--
+-- The target from being an ID target to a Tag target, or a Tag target to an ID target.
+--
+-- IDs for an ID target.
+--
+-- Tags for a Tag target.
+--
+-- Owner.
+--
+-- Name.
+--
+-- Description.
+--
+-- If a parameter is null, then the corresponding field is not modified.
+--
+module Network.AWS.SSM.UpdateMaintenanceWindowTarget
+    (
+    -- * Creating a Request
+      updateMaintenanceWindowTarget
+    , UpdateMaintenanceWindowTarget
+    -- * Request Lenses
+    , uReplace
+    , uOwnerInformation
+    , uName
+    , uTargets
+    , uDescription
+    , uWindowId
+    , uWindowTargetId
+
+    -- * Destructuring the Response
+    , updateMaintenanceWindowTargetResponse
+    , UpdateMaintenanceWindowTargetResponse
+    -- * Response Lenses
+    , ursOwnerInformation
+    , ursWindowTargetId
+    , ursName
+    , ursTargets
+    , ursDescription
+    , ursWindowId
+    , ursResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'updateMaintenanceWindowTarget' smart constructor.
+data UpdateMaintenanceWindowTarget = UpdateMaintenanceWindowTarget'
+  { _uReplace          :: !(Maybe Bool)
+  , _uOwnerInformation :: !(Maybe (Sensitive Text))
+  , _uName             :: !(Maybe Text)
+  , _uTargets          :: !(Maybe [Target])
+  , _uDescription      :: !(Maybe (Sensitive Text))
+  , _uWindowId         :: !Text
+  , _uWindowTargetId   :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateMaintenanceWindowTarget' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uReplace' - If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.
+--
+-- * 'uOwnerInformation' - User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+--
+-- * 'uName' - A name for the update.
+--
+-- * 'uTargets' - The targets to add or replace.
+--
+-- * 'uDescription' - An optional description for the update.
+--
+-- * 'uWindowId' - The Maintenance Window ID with which to modify the target.
+--
+-- * 'uWindowTargetId' - The target ID to modify.
+updateMaintenanceWindowTarget
+    :: Text -- ^ 'uWindowId'
+    -> Text -- ^ 'uWindowTargetId'
+    -> UpdateMaintenanceWindowTarget
+updateMaintenanceWindowTarget pWindowId_ pWindowTargetId_ =
+  UpdateMaintenanceWindowTarget'
+  { _uReplace = Nothing
+  , _uOwnerInformation = Nothing
+  , _uName = Nothing
+  , _uTargets = Nothing
+  , _uDescription = Nothing
+  , _uWindowId = pWindowId_
+  , _uWindowTargetId = pWindowTargetId_
+  }
+
+
+-- | If True, then all fields that are required by the RegisterTargetWithMaintenanceWindow action are also required for this API request. Optional fields that are not specified are set to null.
+uReplace :: Lens' UpdateMaintenanceWindowTarget (Maybe Bool)
+uReplace = lens _uReplace (\ s a -> s{_uReplace = a});
+
+-- | User-provided value that will be included in any CloudWatch events raised while running tasks for these targets in this Maintenance Window.
+uOwnerInformation :: Lens' UpdateMaintenanceWindowTarget (Maybe Text)
+uOwnerInformation = lens _uOwnerInformation (\ s a -> s{_uOwnerInformation = a}) . mapping _Sensitive;
+
+-- | A name for the update.
+uName :: Lens' UpdateMaintenanceWindowTarget (Maybe Text)
+uName = lens _uName (\ s a -> s{_uName = a});
+
+-- | The targets to add or replace.
+uTargets :: Lens' UpdateMaintenanceWindowTarget [Target]
+uTargets = lens _uTargets (\ s a -> s{_uTargets = a}) . _Default . _Coerce;
+
+-- | An optional description for the update.
+uDescription :: Lens' UpdateMaintenanceWindowTarget (Maybe Text)
+uDescription = lens _uDescription (\ s a -> s{_uDescription = a}) . mapping _Sensitive;
+
+-- | The Maintenance Window ID with which to modify the target.
+uWindowId :: Lens' UpdateMaintenanceWindowTarget Text
+uWindowId = lens _uWindowId (\ s a -> s{_uWindowId = a});
+
+-- | The target ID to modify.
+uWindowTargetId :: Lens' UpdateMaintenanceWindowTarget Text
+uWindowTargetId = lens _uWindowTargetId (\ s a -> s{_uWindowTargetId = a});
+
+instance AWSRequest UpdateMaintenanceWindowTarget
+         where
+        type Rs UpdateMaintenanceWindowTarget =
+             UpdateMaintenanceWindowTargetResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateMaintenanceWindowTargetResponse' <$>
+                   (x .?> "OwnerInformation") <*>
+                     (x .?> "WindowTargetId")
+                     <*> (x .?> "Name")
+                     <*> (x .?> "Targets" .!@ mempty)
+                     <*> (x .?> "Description")
+                     <*> (x .?> "WindowId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable UpdateMaintenanceWindowTarget where
+
+instance NFData UpdateMaintenanceWindowTarget where
+
+instance ToHeaders UpdateMaintenanceWindowTarget
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.UpdateMaintenanceWindowTarget" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateMaintenanceWindowTarget where
+        toJSON UpdateMaintenanceWindowTarget'{..}
+          = object
+              (catMaybes
+                 [("Replace" .=) <$> _uReplace,
+                  ("OwnerInformation" .=) <$> _uOwnerInformation,
+                  ("Name" .=) <$> _uName, ("Targets" .=) <$> _uTargets,
+                  ("Description" .=) <$> _uDescription,
+                  Just ("WindowId" .= _uWindowId),
+                  Just ("WindowTargetId" .= _uWindowTargetId)])
+
+instance ToPath UpdateMaintenanceWindowTarget where
+        toPath = const "/"
+
+instance ToQuery UpdateMaintenanceWindowTarget where
+        toQuery = const mempty
+
+-- | /See:/ 'updateMaintenanceWindowTargetResponse' smart constructor.
+data UpdateMaintenanceWindowTargetResponse = UpdateMaintenanceWindowTargetResponse'
+  { _ursOwnerInformation :: !(Maybe (Sensitive Text))
+  , _ursWindowTargetId   :: !(Maybe Text)
+  , _ursName             :: !(Maybe Text)
+  , _ursTargets          :: !(Maybe [Target])
+  , _ursDescription      :: !(Maybe (Sensitive Text))
+  , _ursWindowId         :: !(Maybe Text)
+  , _ursResponseStatus   :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateMaintenanceWindowTargetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ursOwnerInformation' - The updated owner.
+--
+-- * 'ursWindowTargetId' - The target ID specified in the update request.
+--
+-- * 'ursName' - The updated name.
+--
+-- * 'ursTargets' - The updated targets.
+--
+-- * 'ursDescription' - The updated description.
+--
+-- * 'ursWindowId' - The Maintenance Window ID specified in the update request.
+--
+-- * 'ursResponseStatus' - -- | The response status code.
+updateMaintenanceWindowTargetResponse
+    :: Int -- ^ 'ursResponseStatus'
+    -> UpdateMaintenanceWindowTargetResponse
+updateMaintenanceWindowTargetResponse pResponseStatus_ =
+  UpdateMaintenanceWindowTargetResponse'
+  { _ursOwnerInformation = Nothing
+  , _ursWindowTargetId = Nothing
+  , _ursName = Nothing
+  , _ursTargets = Nothing
+  , _ursDescription = Nothing
+  , _ursWindowId = Nothing
+  , _ursResponseStatus = pResponseStatus_
+  }
+
+
+-- | The updated owner.
+ursOwnerInformation :: Lens' UpdateMaintenanceWindowTargetResponse (Maybe Text)
+ursOwnerInformation = lens _ursOwnerInformation (\ s a -> s{_ursOwnerInformation = a}) . mapping _Sensitive;
+
+-- | The target ID specified in the update request.
+ursWindowTargetId :: Lens' UpdateMaintenanceWindowTargetResponse (Maybe Text)
+ursWindowTargetId = lens _ursWindowTargetId (\ s a -> s{_ursWindowTargetId = a});
+
+-- | The updated name.
+ursName :: Lens' UpdateMaintenanceWindowTargetResponse (Maybe Text)
+ursName = lens _ursName (\ s a -> s{_ursName = a});
+
+-- | The updated targets.
+ursTargets :: Lens' UpdateMaintenanceWindowTargetResponse [Target]
+ursTargets = lens _ursTargets (\ s a -> s{_ursTargets = a}) . _Default . _Coerce;
+
+-- | The updated description.
+ursDescription :: Lens' UpdateMaintenanceWindowTargetResponse (Maybe Text)
+ursDescription = lens _ursDescription (\ s a -> s{_ursDescription = a}) . mapping _Sensitive;
+
+-- | The Maintenance Window ID specified in the update request.
+ursWindowId :: Lens' UpdateMaintenanceWindowTargetResponse (Maybe Text)
+ursWindowId = lens _ursWindowId (\ s a -> s{_ursWindowId = a});
+
+-- | -- | The response status code.
+ursResponseStatus :: Lens' UpdateMaintenanceWindowTargetResponse Int
+ursResponseStatus = lens _ursResponseStatus (\ s a -> s{_ursResponseStatus = a});
+
+instance NFData UpdateMaintenanceWindowTargetResponse
+         where
diff --git a/gen/Network/AWS/SSM/UpdateMaintenanceWindowTask.hs b/gen/Network/AWS/SSM/UpdateMaintenanceWindowTask.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/UpdateMaintenanceWindowTask.hs
@@ -0,0 +1,406 @@
+{-# 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.SSM.UpdateMaintenanceWindowTask
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies a task assigned to a Maintenance Window. You can't change the task type, but you can change the following values:
+--
+--
+-- Task ARN. For example, you can change a RUN_COMMAND task from AWS-RunPowerShellScript to AWS-RunShellScript.
+--
+-- Service role ARN.
+--
+-- Task parameters.
+--
+-- Task priority.
+--
+-- Task MaxConcurrency and MaxErrors.
+--
+-- Log location.
+--
+-- If a parameter is null, then the corresponding field is not modified. Also, if you set Replace to true, then all fields required by the RegisterTaskWithMaintenanceWindow action are required for this request. Optional fields that aren't specified are set to null.
+--
+module Network.AWS.SSM.UpdateMaintenanceWindowTask
+    (
+    -- * Creating a Request
+      updateMaintenanceWindowTask
+    , UpdateMaintenanceWindowTask
+    -- * Request Lenses
+    , umwtServiceRoleARN
+    , umwtReplace
+    , umwtTaskParameters
+    , umwtPriority
+    , umwtTaskARN
+    , umwtMaxErrors
+    , umwtTaskInvocationParameters
+    , umwtName
+    , umwtTargets
+    , umwtLoggingInfo
+    , umwtDescription
+    , umwtMaxConcurrency
+    , umwtWindowId
+    , umwtWindowTaskId
+
+    -- * Destructuring the Response
+    , updateMaintenanceWindowTaskResponse
+    , UpdateMaintenanceWindowTaskResponse
+    -- * Response Lenses
+    , umwtrsServiceRoleARN
+    , umwtrsWindowTaskId
+    , umwtrsTaskParameters
+    , umwtrsPriority
+    , umwtrsTaskARN
+    , umwtrsMaxErrors
+    , umwtrsTaskInvocationParameters
+    , umwtrsName
+    , umwtrsTargets
+    , umwtrsLoggingInfo
+    , umwtrsDescription
+    , umwtrsMaxConcurrency
+    , umwtrsWindowId
+    , umwtrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'updateMaintenanceWindowTask' smart constructor.
+data UpdateMaintenanceWindowTask = UpdateMaintenanceWindowTask'
+  { _umwtServiceRoleARN :: !(Maybe Text)
+  , _umwtReplace :: !(Maybe Bool)
+  , _umwtTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
+  , _umwtPriority :: !(Maybe Nat)
+  , _umwtTaskARN :: !(Maybe Text)
+  , _umwtMaxErrors :: !(Maybe Text)
+  , _umwtTaskInvocationParameters :: !(Maybe MaintenanceWindowTaskInvocationParameters)
+  , _umwtName :: !(Maybe Text)
+  , _umwtTargets :: !(Maybe [Target])
+  , _umwtLoggingInfo :: !(Maybe LoggingInfo)
+  , _umwtDescription :: !(Maybe (Sensitive Text))
+  , _umwtMaxConcurrency :: !(Maybe Text)
+  , _umwtWindowId :: !Text
+  , _umwtWindowTaskId :: !Text
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateMaintenanceWindowTask' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umwtServiceRoleARN' - The IAM service role ARN to modify. The system assumes this role during task execution.
+--
+-- * 'umwtReplace' - If True, then all fields that are required by the RegisterTaskWithMaintenanceWndow action are also required for this API request. Optional fields that are not specified are set to null.
+--
+-- * 'umwtTaskParameters' - The parameters to modify. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters
+--
+-- * 'umwtPriority' - The new task priority to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+--
+-- * 'umwtTaskARN' - The task ARN to modify.
+--
+-- * 'umwtMaxErrors' - The new @MaxErrors@ value to specify. @MaxErrors@ is the maximum number of errors that are allowed before the task stops being scheduled.
+--
+-- * 'umwtTaskInvocationParameters' - The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.
+--
+-- * 'umwtName' - The new task name to specify.
+--
+-- * 'umwtTargets' - The targets (either instances or tags) to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value.
+--
+-- * 'umwtLoggingInfo' - The new logging location in Amazon S3 to specify.
+--
+-- * 'umwtDescription' - The new task description to specify.
+--
+-- * 'umwtMaxConcurrency' - The new @MaxConcurrency@ value you want to specify. @MaxConcurrency@ is the number of targets that are allowed to run this task in parallel.
+--
+-- * 'umwtWindowId' - The Maintenance Window ID that contains the task to modify.
+--
+-- * 'umwtWindowTaskId' - The task ID to modify.
+updateMaintenanceWindowTask
+    :: Text -- ^ 'umwtWindowId'
+    -> Text -- ^ 'umwtWindowTaskId'
+    -> UpdateMaintenanceWindowTask
+updateMaintenanceWindowTask pWindowId_ pWindowTaskId_ =
+  UpdateMaintenanceWindowTask'
+  { _umwtServiceRoleARN = Nothing
+  , _umwtReplace = Nothing
+  , _umwtTaskParameters = Nothing
+  , _umwtPriority = Nothing
+  , _umwtTaskARN = Nothing
+  , _umwtMaxErrors = Nothing
+  , _umwtTaskInvocationParameters = Nothing
+  , _umwtName = Nothing
+  , _umwtTargets = Nothing
+  , _umwtLoggingInfo = Nothing
+  , _umwtDescription = Nothing
+  , _umwtMaxConcurrency = Nothing
+  , _umwtWindowId = pWindowId_
+  , _umwtWindowTaskId = pWindowTaskId_
+  }
+
+
+-- | The IAM service role ARN to modify. The system assumes this role during task execution.
+umwtServiceRoleARN :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtServiceRoleARN = lens _umwtServiceRoleARN (\ s a -> s{_umwtServiceRoleARN = a});
+
+-- | If True, then all fields that are required by the RegisterTaskWithMaintenanceWndow action are also required for this API request. Optional fields that are not specified are set to null.
+umwtReplace :: Lens' UpdateMaintenanceWindowTask (Maybe Bool)
+umwtReplace = lens _umwtReplace (\ s a -> s{_umwtReplace = a});
+
+-- | The parameters to modify. The map has the following format: Key: string, between 1 and 255 characters Value: an array of strings, each string is between 1 and 255 characters
+umwtTaskParameters :: Lens' UpdateMaintenanceWindowTask (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
+umwtTaskParameters = lens _umwtTaskParameters (\ s a -> s{_umwtTaskParameters = a}) . mapping (_Sensitive . _Map);
+
+-- | The new task priority to specify. The lower the number, the higher the priority. Tasks that have the same priority are scheduled in parallel.
+umwtPriority :: Lens' UpdateMaintenanceWindowTask (Maybe Natural)
+umwtPriority = lens _umwtPriority (\ s a -> s{_umwtPriority = a}) . mapping _Nat;
+
+-- | The task ARN to modify.
+umwtTaskARN :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtTaskARN = lens _umwtTaskARN (\ s a -> s{_umwtTaskARN = a});
+
+-- | The new @MaxErrors@ value to specify. @MaxErrors@ is the maximum number of errors that are allowed before the task stops being scheduled.
+umwtMaxErrors :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtMaxErrors = lens _umwtMaxErrors (\ s a -> s{_umwtMaxErrors = a});
+
+-- | The parameters that the task should use during execution. Populate only the fields that match the task type. All other fields should be empty.
+umwtTaskInvocationParameters :: Lens' UpdateMaintenanceWindowTask (Maybe MaintenanceWindowTaskInvocationParameters)
+umwtTaskInvocationParameters = lens _umwtTaskInvocationParameters (\ s a -> s{_umwtTaskInvocationParameters = a});
+
+-- | The new task name to specify.
+umwtName :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtName = lens _umwtName (\ s a -> s{_umwtName = a});
+
+-- | The targets (either instances or tags) to modify. Instances are specified using Key=instanceids,Values=instanceID_1,instanceID_2. Tags are specified using Key=tag_name,Values=tag_value.
+umwtTargets :: Lens' UpdateMaintenanceWindowTask [Target]
+umwtTargets = lens _umwtTargets (\ s a -> s{_umwtTargets = a}) . _Default . _Coerce;
+
+-- | The new logging location in Amazon S3 to specify.
+umwtLoggingInfo :: Lens' UpdateMaintenanceWindowTask (Maybe LoggingInfo)
+umwtLoggingInfo = lens _umwtLoggingInfo (\ s a -> s{_umwtLoggingInfo = a});
+
+-- | The new task description to specify.
+umwtDescription :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtDescription = lens _umwtDescription (\ s a -> s{_umwtDescription = a}) . mapping _Sensitive;
+
+-- | The new @MaxConcurrency@ value you want to specify. @MaxConcurrency@ is the number of targets that are allowed to run this task in parallel.
+umwtMaxConcurrency :: Lens' UpdateMaintenanceWindowTask (Maybe Text)
+umwtMaxConcurrency = lens _umwtMaxConcurrency (\ s a -> s{_umwtMaxConcurrency = a});
+
+-- | The Maintenance Window ID that contains the task to modify.
+umwtWindowId :: Lens' UpdateMaintenanceWindowTask Text
+umwtWindowId = lens _umwtWindowId (\ s a -> s{_umwtWindowId = a});
+
+-- | The task ID to modify.
+umwtWindowTaskId :: Lens' UpdateMaintenanceWindowTask Text
+umwtWindowTaskId = lens _umwtWindowTaskId (\ s a -> s{_umwtWindowTaskId = a});
+
+instance AWSRequest UpdateMaintenanceWindowTask where
+        type Rs UpdateMaintenanceWindowTask =
+             UpdateMaintenanceWindowTaskResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateMaintenanceWindowTaskResponse' <$>
+                   (x .?> "ServiceRoleArn") <*> (x .?> "WindowTaskId")
+                     <*> (x .?> "TaskParameters" .!@ mempty)
+                     <*> (x .?> "Priority")
+                     <*> (x .?> "TaskArn")
+                     <*> (x .?> "MaxErrors")
+                     <*> (x .?> "TaskInvocationParameters")
+                     <*> (x .?> "Name")
+                     <*> (x .?> "Targets" .!@ mempty)
+                     <*> (x .?> "LoggingInfo")
+                     <*> (x .?> "Description")
+                     <*> (x .?> "MaxConcurrency")
+                     <*> (x .?> "WindowId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable UpdateMaintenanceWindowTask where
+
+instance NFData UpdateMaintenanceWindowTask where
+
+instance ToHeaders UpdateMaintenanceWindowTask where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.UpdateMaintenanceWindowTask" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateMaintenanceWindowTask where
+        toJSON UpdateMaintenanceWindowTask'{..}
+          = object
+              (catMaybes
+                 [("ServiceRoleArn" .=) <$> _umwtServiceRoleARN,
+                  ("Replace" .=) <$> _umwtReplace,
+                  ("TaskParameters" .=) <$> _umwtTaskParameters,
+                  ("Priority" .=) <$> _umwtPriority,
+                  ("TaskArn" .=) <$> _umwtTaskARN,
+                  ("MaxErrors" .=) <$> _umwtMaxErrors,
+                  ("TaskInvocationParameters" .=) <$>
+                    _umwtTaskInvocationParameters,
+                  ("Name" .=) <$> _umwtName,
+                  ("Targets" .=) <$> _umwtTargets,
+                  ("LoggingInfo" .=) <$> _umwtLoggingInfo,
+                  ("Description" .=) <$> _umwtDescription,
+                  ("MaxConcurrency" .=) <$> _umwtMaxConcurrency,
+                  Just ("WindowId" .= _umwtWindowId),
+                  Just ("WindowTaskId" .= _umwtWindowTaskId)])
+
+instance ToPath UpdateMaintenanceWindowTask where
+        toPath = const "/"
+
+instance ToQuery UpdateMaintenanceWindowTask where
+        toQuery = const mempty
+
+-- | /See:/ 'updateMaintenanceWindowTaskResponse' smart constructor.
+data UpdateMaintenanceWindowTaskResponse = UpdateMaintenanceWindowTaskResponse'
+  { _umwtrsServiceRoleARN :: !(Maybe Text)
+  , _umwtrsWindowTaskId :: !(Maybe Text)
+  , _umwtrsTaskParameters :: !(Maybe (Sensitive (Map Text (Sensitive MaintenanceWindowTaskParameterValueExpression))))
+  , _umwtrsPriority :: !(Maybe Nat)
+  , _umwtrsTaskARN :: !(Maybe Text)
+  , _umwtrsMaxErrors :: !(Maybe Text)
+  , _umwtrsTaskInvocationParameters :: !(Maybe MaintenanceWindowTaskInvocationParameters)
+  , _umwtrsName :: !(Maybe Text)
+  , _umwtrsTargets :: !(Maybe [Target])
+  , _umwtrsLoggingInfo :: !(Maybe LoggingInfo)
+  , _umwtrsDescription :: !(Maybe (Sensitive Text))
+  , _umwtrsMaxConcurrency :: !(Maybe Text)
+  , _umwtrsWindowId :: !(Maybe Text)
+  , _umwtrsResponseStatus :: !Int
+  } deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdateMaintenanceWindowTaskResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umwtrsServiceRoleARN' - The updated service role ARN value.
+--
+-- * 'umwtrsWindowTaskId' - The task ID of the Maintenance Window that was updated.
+--
+-- * 'umwtrsTaskParameters' - The updated parameter values.
+--
+-- * 'umwtrsPriority' - The updated priority value.
+--
+-- * 'umwtrsTaskARN' - The updated task ARN value.
+--
+-- * 'umwtrsMaxErrors' - The updated MaxErrors value.
+--
+-- * 'umwtrsTaskInvocationParameters' - The updated parameter values.
+--
+-- * 'umwtrsName' - The updated task name.
+--
+-- * 'umwtrsTargets' - The updated target values.
+--
+-- * 'umwtrsLoggingInfo' - The updated logging information in Amazon S3.
+--
+-- * 'umwtrsDescription' - The updated task description.
+--
+-- * 'umwtrsMaxConcurrency' - The updated MaxConcurrency value.
+--
+-- * 'umwtrsWindowId' - The ID of the Maintenance Window that was updated.
+--
+-- * 'umwtrsResponseStatus' - -- | The response status code.
+updateMaintenanceWindowTaskResponse
+    :: Int -- ^ 'umwtrsResponseStatus'
+    -> UpdateMaintenanceWindowTaskResponse
+updateMaintenanceWindowTaskResponse pResponseStatus_ =
+  UpdateMaintenanceWindowTaskResponse'
+  { _umwtrsServiceRoleARN = Nothing
+  , _umwtrsWindowTaskId = Nothing
+  , _umwtrsTaskParameters = Nothing
+  , _umwtrsPriority = Nothing
+  , _umwtrsTaskARN = Nothing
+  , _umwtrsMaxErrors = Nothing
+  , _umwtrsTaskInvocationParameters = Nothing
+  , _umwtrsName = Nothing
+  , _umwtrsTargets = Nothing
+  , _umwtrsLoggingInfo = Nothing
+  , _umwtrsDescription = Nothing
+  , _umwtrsMaxConcurrency = Nothing
+  , _umwtrsWindowId = Nothing
+  , _umwtrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | The updated service role ARN value.
+umwtrsServiceRoleARN :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsServiceRoleARN = lens _umwtrsServiceRoleARN (\ s a -> s{_umwtrsServiceRoleARN = a});
+
+-- | The task ID of the Maintenance Window that was updated.
+umwtrsWindowTaskId :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsWindowTaskId = lens _umwtrsWindowTaskId (\ s a -> s{_umwtrsWindowTaskId = a});
+
+-- | The updated parameter values.
+umwtrsTaskParameters :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe (HashMap Text MaintenanceWindowTaskParameterValueExpression))
+umwtrsTaskParameters = lens _umwtrsTaskParameters (\ s a -> s{_umwtrsTaskParameters = a}) . mapping (_Sensitive . _Map);
+
+-- | The updated priority value.
+umwtrsPriority :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Natural)
+umwtrsPriority = lens _umwtrsPriority (\ s a -> s{_umwtrsPriority = a}) . mapping _Nat;
+
+-- | The updated task ARN value.
+umwtrsTaskARN :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsTaskARN = lens _umwtrsTaskARN (\ s a -> s{_umwtrsTaskARN = a});
+
+-- | The updated MaxErrors value.
+umwtrsMaxErrors :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsMaxErrors = lens _umwtrsMaxErrors (\ s a -> s{_umwtrsMaxErrors = a});
+
+-- | The updated parameter values.
+umwtrsTaskInvocationParameters :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe MaintenanceWindowTaskInvocationParameters)
+umwtrsTaskInvocationParameters = lens _umwtrsTaskInvocationParameters (\ s a -> s{_umwtrsTaskInvocationParameters = a});
+
+-- | The updated task name.
+umwtrsName :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsName = lens _umwtrsName (\ s a -> s{_umwtrsName = a});
+
+-- | The updated target values.
+umwtrsTargets :: Lens' UpdateMaintenanceWindowTaskResponse [Target]
+umwtrsTargets = lens _umwtrsTargets (\ s a -> s{_umwtrsTargets = a}) . _Default . _Coerce;
+
+-- | The updated logging information in Amazon S3.
+umwtrsLoggingInfo :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe LoggingInfo)
+umwtrsLoggingInfo = lens _umwtrsLoggingInfo (\ s a -> s{_umwtrsLoggingInfo = a});
+
+-- | The updated task description.
+umwtrsDescription :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsDescription = lens _umwtrsDescription (\ s a -> s{_umwtrsDescription = a}) . mapping _Sensitive;
+
+-- | The updated MaxConcurrency value.
+umwtrsMaxConcurrency :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsMaxConcurrency = lens _umwtrsMaxConcurrency (\ s a -> s{_umwtrsMaxConcurrency = a});
+
+-- | The ID of the Maintenance Window that was updated.
+umwtrsWindowId :: Lens' UpdateMaintenanceWindowTaskResponse (Maybe Text)
+umwtrsWindowId = lens _umwtrsWindowId (\ s a -> s{_umwtrsWindowId = a});
+
+-- | -- | The response status code.
+umwtrsResponseStatus :: Lens' UpdateMaintenanceWindowTaskResponse Int
+umwtrsResponseStatus = lens _umwtrsResponseStatus (\ s a -> s{_umwtrsResponseStatus = a});
+
+instance NFData UpdateMaintenanceWindowTaskResponse
+         where
diff --git a/gen/Network/AWS/SSM/UpdateManagedInstanceRole.hs b/gen/Network/AWS/SSM/UpdateManagedInstanceRole.hs
--- a/gen/Network/AWS/SSM/UpdateManagedInstanceRole.hs
+++ b/gen/Network/AWS/SSM/UpdateManagedInstanceRole.hs
@@ -12,9 +12,9 @@
 
 -- |
 -- Module      : Network.AWS.SSM.UpdateManagedInstanceRole
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
@@ -37,19 +37,20 @@
     , umirrsResponseStatus
     ) where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.Request
-import           Network.AWS.Response
-import           Network.AWS.SSM.Types
-import           Network.AWS.SSM.Types.Product
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
 
 -- | /See:/ 'updateManagedInstanceRole' smart constructor.
 data UpdateManagedInstanceRole = UpdateManagedInstanceRole'
-    { _umirInstanceId :: !Text
-    , _umirIAMRole    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _umirInstanceId :: !Text
+  , _umirIAMRole    :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateManagedInstanceRole' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -62,11 +63,10 @@
     -> Text -- ^ 'umirIAMRole'
     -> UpdateManagedInstanceRole
 updateManagedInstanceRole pInstanceId_ pIAMRole_ =
-    UpdateManagedInstanceRole'
-    { _umirInstanceId = pInstanceId_
-    , _umirIAMRole = pIAMRole_
-    }
+  UpdateManagedInstanceRole'
+  {_umirInstanceId = pInstanceId_, _umirIAMRole = pIAMRole_}
 
+
 -- | The ID of the managed instance where you want to update the role.
 umirInstanceId :: Lens' UpdateManagedInstanceRole Text
 umirInstanceId = lens _umirInstanceId (\ s a -> s{_umirInstanceId = a});
@@ -85,9 +85,9 @@
                  UpdateManagedInstanceRoleResponse' <$>
                    (pure (fromEnum s)))
 
-instance Hashable UpdateManagedInstanceRole
+instance Hashable UpdateManagedInstanceRole where
 
-instance NFData UpdateManagedInstanceRole
+instance NFData UpdateManagedInstanceRole where
 
 instance ToHeaders UpdateManagedInstanceRole where
         toHeaders
@@ -114,9 +114,10 @@
 
 -- | /See:/ 'updateManagedInstanceRoleResponse' smart constructor.
 newtype UpdateManagedInstanceRoleResponse = UpdateManagedInstanceRoleResponse'
-    { _umirrsResponseStatus :: Int
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+  { _umirrsResponseStatus :: Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'UpdateManagedInstanceRoleResponse' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -126,12 +127,12 @@
     :: Int -- ^ 'umirrsResponseStatus'
     -> UpdateManagedInstanceRoleResponse
 updateManagedInstanceRoleResponse pResponseStatus_ =
-    UpdateManagedInstanceRoleResponse'
-    { _umirrsResponseStatus = pResponseStatus_
-    }
+  UpdateManagedInstanceRoleResponse' {_umirrsResponseStatus = pResponseStatus_}
 
+
 -- | -- | The response status code.
 umirrsResponseStatus :: Lens' UpdateManagedInstanceRoleResponse Int
 umirrsResponseStatus = lens _umirrsResponseStatus (\ s a -> s{_umirrsResponseStatus = a});
 
 instance NFData UpdateManagedInstanceRoleResponse
+         where
diff --git a/gen/Network/AWS/SSM/UpdatePatchBaseline.hs b/gen/Network/AWS/SSM/UpdatePatchBaseline.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SSM/UpdatePatchBaseline.hs
@@ -0,0 +1,309 @@
+{-# 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.SSM.UpdatePatchBaseline
+-- Copyright   : (c) 2013-2017 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an existing patch baseline. Fields not specified in the request are left unchanged.
+--
+--
+module Network.AWS.SSM.UpdatePatchBaseline
+    (
+    -- * Creating a Request
+      updatePatchBaseline
+    , UpdatePatchBaseline
+    -- * Request Lenses
+    , upbApprovalRules
+    , upbGlobalFilters
+    , upbApprovedPatchesComplianceLevel
+    , upbApprovedPatches
+    , upbRejectedPatches
+    , upbName
+    , upbDescription
+    , upbBaselineId
+
+    -- * Destructuring the Response
+    , updatePatchBaselineResponse
+    , UpdatePatchBaselineResponse
+    -- * Response Lenses
+    , upbrsApprovalRules
+    , upbrsOperatingSystem
+    , upbrsGlobalFilters
+    , upbrsApprovedPatchesComplianceLevel
+    , upbrsApprovedPatches
+    , upbrsRejectedPatches
+    , upbrsCreatedDate
+    , upbrsName
+    , upbrsModifiedDate
+    , upbrsDescription
+    , upbrsBaselineId
+    , upbrsResponseStatus
+    ) where
+
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.Request
+import Network.AWS.Response
+import Network.AWS.SSM.Types
+import Network.AWS.SSM.Types.Product
+
+-- | /See:/ 'updatePatchBaseline' smart constructor.
+data UpdatePatchBaseline = UpdatePatchBaseline'
+  { _upbApprovalRules                  :: !(Maybe PatchRuleGroup)
+  , _upbGlobalFilters                  :: !(Maybe PatchFilterGroup)
+  , _upbApprovedPatchesComplianceLevel :: !(Maybe PatchComplianceLevel)
+  , _upbApprovedPatches                :: !(Maybe [Text])
+  , _upbRejectedPatches                :: !(Maybe [Text])
+  , _upbName                           :: !(Maybe Text)
+  , _upbDescription                    :: !(Maybe Text)
+  , _upbBaselineId                     :: !Text
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdatePatchBaseline' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upbApprovalRules' - A set of rules used to include patches in the baseline.
+--
+-- * 'upbGlobalFilters' - A set of global filters used to exclude patches from the baseline.
+--
+-- * 'upbApprovedPatchesComplianceLevel' - Assigns a new compliance severity level to an existing patch baseline.
+--
+-- * 'upbApprovedPatches' - A list of explicitly approved patches for the baseline.
+--
+-- * 'upbRejectedPatches' - A list of explicitly rejected patches for the baseline.
+--
+-- * 'upbName' - The name of the patch baseline.
+--
+-- * 'upbDescription' - A description of the patch baseline.
+--
+-- * 'upbBaselineId' - The ID of the patch baseline to update.
+updatePatchBaseline
+    :: Text -- ^ 'upbBaselineId'
+    -> UpdatePatchBaseline
+updatePatchBaseline pBaselineId_ =
+  UpdatePatchBaseline'
+  { _upbApprovalRules = Nothing
+  , _upbGlobalFilters = Nothing
+  , _upbApprovedPatchesComplianceLevel = Nothing
+  , _upbApprovedPatches = Nothing
+  , _upbRejectedPatches = Nothing
+  , _upbName = Nothing
+  , _upbDescription = Nothing
+  , _upbBaselineId = pBaselineId_
+  }
+
+
+-- | A set of rules used to include patches in the baseline.
+upbApprovalRules :: Lens' UpdatePatchBaseline (Maybe PatchRuleGroup)
+upbApprovalRules = lens _upbApprovalRules (\ s a -> s{_upbApprovalRules = a});
+
+-- | A set of global filters used to exclude patches from the baseline.
+upbGlobalFilters :: Lens' UpdatePatchBaseline (Maybe PatchFilterGroup)
+upbGlobalFilters = lens _upbGlobalFilters (\ s a -> s{_upbGlobalFilters = a});
+
+-- | Assigns a new compliance severity level to an existing patch baseline.
+upbApprovedPatchesComplianceLevel :: Lens' UpdatePatchBaseline (Maybe PatchComplianceLevel)
+upbApprovedPatchesComplianceLevel = lens _upbApprovedPatchesComplianceLevel (\ s a -> s{_upbApprovedPatchesComplianceLevel = a});
+
+-- | A list of explicitly approved patches for the baseline.
+upbApprovedPatches :: Lens' UpdatePatchBaseline [Text]
+upbApprovedPatches = lens _upbApprovedPatches (\ s a -> s{_upbApprovedPatches = a}) . _Default . _Coerce;
+
+-- | A list of explicitly rejected patches for the baseline.
+upbRejectedPatches :: Lens' UpdatePatchBaseline [Text]
+upbRejectedPatches = lens _upbRejectedPatches (\ s a -> s{_upbRejectedPatches = a}) . _Default . _Coerce;
+
+-- | The name of the patch baseline.
+upbName :: Lens' UpdatePatchBaseline (Maybe Text)
+upbName = lens _upbName (\ s a -> s{_upbName = a});
+
+-- | A description of the patch baseline.
+upbDescription :: Lens' UpdatePatchBaseline (Maybe Text)
+upbDescription = lens _upbDescription (\ s a -> s{_upbDescription = a});
+
+-- | The ID of the patch baseline to update.
+upbBaselineId :: Lens' UpdatePatchBaseline Text
+upbBaselineId = lens _upbBaselineId (\ s a -> s{_upbBaselineId = a});
+
+instance AWSRequest UpdatePatchBaseline where
+        type Rs UpdatePatchBaseline =
+             UpdatePatchBaselineResponse
+        request = postJSON ssm
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdatePatchBaselineResponse' <$>
+                   (x .?> "ApprovalRules") <*> (x .?> "OperatingSystem")
+                     <*> (x .?> "GlobalFilters")
+                     <*> (x .?> "ApprovedPatchesComplianceLevel")
+                     <*> (x .?> "ApprovedPatches" .!@ mempty)
+                     <*> (x .?> "RejectedPatches" .!@ mempty)
+                     <*> (x .?> "CreatedDate")
+                     <*> (x .?> "Name")
+                     <*> (x .?> "ModifiedDate")
+                     <*> (x .?> "Description")
+                     <*> (x .?> "BaselineId")
+                     <*> (pure (fromEnum s)))
+
+instance Hashable UpdatePatchBaseline where
+
+instance NFData UpdatePatchBaseline where
+
+instance ToHeaders UpdatePatchBaseline where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AmazonSSM.UpdatePatchBaseline" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdatePatchBaseline where
+        toJSON UpdatePatchBaseline'{..}
+          = object
+              (catMaybes
+                 [("ApprovalRules" .=) <$> _upbApprovalRules,
+                  ("GlobalFilters" .=) <$> _upbGlobalFilters,
+                  ("ApprovedPatchesComplianceLevel" .=) <$>
+                    _upbApprovedPatchesComplianceLevel,
+                  ("ApprovedPatches" .=) <$> _upbApprovedPatches,
+                  ("RejectedPatches" .=) <$> _upbRejectedPatches,
+                  ("Name" .=) <$> _upbName,
+                  ("Description" .=) <$> _upbDescription,
+                  Just ("BaselineId" .= _upbBaselineId)])
+
+instance ToPath UpdatePatchBaseline where
+        toPath = const "/"
+
+instance ToQuery UpdatePatchBaseline where
+        toQuery = const mempty
+
+-- | /See:/ 'updatePatchBaselineResponse' smart constructor.
+data UpdatePatchBaselineResponse = UpdatePatchBaselineResponse'
+  { _upbrsApprovalRules                  :: !(Maybe PatchRuleGroup)
+  , _upbrsOperatingSystem                :: !(Maybe OperatingSystem)
+  , _upbrsGlobalFilters                  :: !(Maybe PatchFilterGroup)
+  , _upbrsApprovedPatchesComplianceLevel :: !(Maybe PatchComplianceLevel)
+  , _upbrsApprovedPatches                :: !(Maybe [Text])
+  , _upbrsRejectedPatches                :: !(Maybe [Text])
+  , _upbrsCreatedDate                    :: !(Maybe POSIX)
+  , _upbrsName                           :: !(Maybe Text)
+  , _upbrsModifiedDate                   :: !(Maybe POSIX)
+  , _upbrsDescription                    :: !(Maybe Text)
+  , _upbrsBaselineId                     :: !(Maybe Text)
+  , _upbrsResponseStatus                 :: !Int
+  } deriving (Eq, Read, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'UpdatePatchBaselineResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upbrsApprovalRules' - A set of rules used to include patches in the baseline.
+--
+-- * 'upbrsOperatingSystem' - The operating system rule used by the updated patch baseline.
+--
+-- * 'upbrsGlobalFilters' - A set of global filters used to exclude patches from the baseline.
+--
+-- * 'upbrsApprovedPatchesComplianceLevel' - The compliance severity level assigned to the patch baseline after the update completed.
+--
+-- * 'upbrsApprovedPatches' - A list of explicitly approved patches for the baseline.
+--
+-- * 'upbrsRejectedPatches' - A list of explicitly rejected patches for the baseline.
+--
+-- * 'upbrsCreatedDate' - The date when the patch baseline was created.
+--
+-- * 'upbrsName' - The name of the patch baseline.
+--
+-- * 'upbrsModifiedDate' - The date when the patch baseline was last modified.
+--
+-- * 'upbrsDescription' - A description of the Patch Baseline.
+--
+-- * 'upbrsBaselineId' - The ID of the deleted patch baseline.
+--
+-- * 'upbrsResponseStatus' - -- | The response status code.
+updatePatchBaselineResponse
+    :: Int -- ^ 'upbrsResponseStatus'
+    -> UpdatePatchBaselineResponse
+updatePatchBaselineResponse pResponseStatus_ =
+  UpdatePatchBaselineResponse'
+  { _upbrsApprovalRules = Nothing
+  , _upbrsOperatingSystem = Nothing
+  , _upbrsGlobalFilters = Nothing
+  , _upbrsApprovedPatchesComplianceLevel = Nothing
+  , _upbrsApprovedPatches = Nothing
+  , _upbrsRejectedPatches = Nothing
+  , _upbrsCreatedDate = Nothing
+  , _upbrsName = Nothing
+  , _upbrsModifiedDate = Nothing
+  , _upbrsDescription = Nothing
+  , _upbrsBaselineId = Nothing
+  , _upbrsResponseStatus = pResponseStatus_
+  }
+
+
+-- | A set of rules used to include patches in the baseline.
+upbrsApprovalRules :: Lens' UpdatePatchBaselineResponse (Maybe PatchRuleGroup)
+upbrsApprovalRules = lens _upbrsApprovalRules (\ s a -> s{_upbrsApprovalRules = a});
+
+-- | The operating system rule used by the updated patch baseline.
+upbrsOperatingSystem :: Lens' UpdatePatchBaselineResponse (Maybe OperatingSystem)
+upbrsOperatingSystem = lens _upbrsOperatingSystem (\ s a -> s{_upbrsOperatingSystem = a});
+
+-- | A set of global filters used to exclude patches from the baseline.
+upbrsGlobalFilters :: Lens' UpdatePatchBaselineResponse (Maybe PatchFilterGroup)
+upbrsGlobalFilters = lens _upbrsGlobalFilters (\ s a -> s{_upbrsGlobalFilters = a});
+
+-- | The compliance severity level assigned to the patch baseline after the update completed.
+upbrsApprovedPatchesComplianceLevel :: Lens' UpdatePatchBaselineResponse (Maybe PatchComplianceLevel)
+upbrsApprovedPatchesComplianceLevel = lens _upbrsApprovedPatchesComplianceLevel (\ s a -> s{_upbrsApprovedPatchesComplianceLevel = a});
+
+-- | A list of explicitly approved patches for the baseline.
+upbrsApprovedPatches :: Lens' UpdatePatchBaselineResponse [Text]
+upbrsApprovedPatches = lens _upbrsApprovedPatches (\ s a -> s{_upbrsApprovedPatches = a}) . _Default . _Coerce;
+
+-- | A list of explicitly rejected patches for the baseline.
+upbrsRejectedPatches :: Lens' UpdatePatchBaselineResponse [Text]
+upbrsRejectedPatches = lens _upbrsRejectedPatches (\ s a -> s{_upbrsRejectedPatches = a}) . _Default . _Coerce;
+
+-- | The date when the patch baseline was created.
+upbrsCreatedDate :: Lens' UpdatePatchBaselineResponse (Maybe UTCTime)
+upbrsCreatedDate = lens _upbrsCreatedDate (\ s a -> s{_upbrsCreatedDate = a}) . mapping _Time;
+
+-- | The name of the patch baseline.
+upbrsName :: Lens' UpdatePatchBaselineResponse (Maybe Text)
+upbrsName = lens _upbrsName (\ s a -> s{_upbrsName = a});
+
+-- | The date when the patch baseline was last modified.
+upbrsModifiedDate :: Lens' UpdatePatchBaselineResponse (Maybe UTCTime)
+upbrsModifiedDate = lens _upbrsModifiedDate (\ s a -> s{_upbrsModifiedDate = a}) . mapping _Time;
+
+-- | A description of the Patch Baseline.
+upbrsDescription :: Lens' UpdatePatchBaselineResponse (Maybe Text)
+upbrsDescription = lens _upbrsDescription (\ s a -> s{_upbrsDescription = a});
+
+-- | The ID of the deleted patch baseline.
+upbrsBaselineId :: Lens' UpdatePatchBaselineResponse (Maybe Text)
+upbrsBaselineId = lens _upbrsBaselineId (\ s a -> s{_upbrsBaselineId = a});
+
+-- | -- | The response status code.
+upbrsResponseStatus :: Lens' UpdatePatchBaselineResponse Int
+upbrsResponseStatus = lens _upbrsResponseStatus (\ s a -> s{_upbrsResponseStatus = a});
+
+instance NFData UpdatePatchBaselineResponse where
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
@@ -7,15 +7,15 @@
 
 -- |
 -- Module      : Network.AWS.SSM.Waiters
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Network.AWS.SSM.Waiters where
 
-import           Network.AWS.Lens
-import           Network.AWS.Prelude
-import           Network.AWS.SSM.Types
-import           Network.AWS.Waiter
+import Network.AWS.Lens
+import Network.AWS.Prelude
+import Network.AWS.SSM.Types
+import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,9 +2,9 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
diff --git a/test/Test/AWS/Gen/SSM.hs b/test/Test/AWS/Gen/SSM.hs
--- a/test/Test/AWS/Gen/SSM.hs
+++ b/test/Test/AWS/Gen/SSM.hs
@@ -5,20 +5,20 @@
 
 -- |
 -- Module      : Test.AWS.Gen.SSM
--- Copyright   : (c) 2013-2016 Brendan Hay
+-- Copyright   : (c) 2013-2017 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
 module Test.AWS.Gen.SSM where
 
 import Data.Proxy
+import Network.AWS.SSM
 import Test.AWS.Fixture
 import Test.AWS.Prelude
-import Test.Tasty
-import Network.AWS.SSM
 import Test.AWS.SSM.Internal
+import Test.Tasty
 
 -- Auto-generated: the actual test selection needs to be manually placed into
 -- the top-level so that real test data can be incrementally added.
@@ -28,21 +28,48 @@
 -- fixtures :: TestTree
 -- fixtures =
 --     [ testGroup "request"
---         [ requestGetInventory $
+--         [ requestDescribeInstancePatches $
+--             describeInstancePatches
+--
+--         , requestGetInventory $
 --             getInventory
 --
 --         , requestGetParameters $
 --             getParameters
 --
+--         , requestDeletePatchBaseline $
+--             deletePatchBaseline
+--
+--         , requestUpdatePatchBaseline $
+--             updatePatchBaseline
+--
+--         , requestGetParameter $
+--             getParameter
+--
 --         , requestUpdateDocumentDefaultVersion $
 --             updateDocumentDefaultVersion
 --
+--         , requestListResourceDataSync $
+--             listResourceDataSync
+--
+--         , requestGetDeployablePatchSnapshotForInstance $
+--             getDeployablePatchSnapshotForInstance
+--
 --         , requestDescribeParameters $
 --             describeParameters
 --
+--         , requestGetParametersByPath $
+--             getParametersByPath
+--
+--         , requestPutComplianceItems $
+--             putComplianceItems
+--
 --         , requestDescribeActivations $
 --             describeActivations
 --
+--         , requestGetMaintenanceWindowTask $
+--             getMaintenanceWindowTask
+--
 --         , requestListTagsForResource $
 --             listTagsForResource
 --
@@ -61,6 +88,9 @@
 --         , requestGetInventorySchema $
 --             getInventorySchema
 --
+--         , requestListComplianceSummaries $
+--             listComplianceSummaries
+--
 --         , requestStartAutomationExecution $
 --             startAutomationExecution
 --
@@ -76,6 +106,9 @@
 --         , requestDescribeMaintenanceWindowExecutionTasks $
 --             describeMaintenanceWindowExecutionTasks
 --
+--         , requestGetDefaultPatchBaseline $
+--             getDefaultPatchBaseline
+--
 --         , requestGetMaintenanceWindowExecutionTask $
 --             getMaintenanceWindowExecutionTask
 --
@@ -85,21 +118,42 @@
 --         , requestRemoveTagsFromResource $
 --             removeTagsFromResource
 --
+--         , requestDeleteParameters $
+--             deleteParameters
+--
+--         , requestDescribePatchGroupState $
+--             describePatchGroupState
+--
 --         , requestListCommandInvocations $
 --             listCommandInvocations
 --
 --         , requestDeregisterTargetFromMaintenanceWindow $
 --             deregisterTargetFromMaintenanceWindow
 --
+--         , requestDescribeEffectivePatchesForPatchBaseline $
+--             describeEffectivePatchesForPatchBaseline
+--
 --         , requestDescribeMaintenanceWindowTargets $
 --             describeMaintenanceWindowTargets
 --
+--         , requestRegisterPatchBaselineForPatchGroup $
+--             registerPatchBaselineForPatchGroup
+--
 --         , requestListDocuments $
 --             listDocuments
 --
+--         , requestDescribeInstancePatchStates $
+--             describeInstancePatchStates
+--
+--         , requestGetPatchBaselineForPatchGroup $
+--             getPatchBaselineForPatchGroup
+--
 --         , requestUpdateManagedInstanceRole $
 --             updateManagedInstanceRole
 --
+--         , requestListComplianceItems $
+--             listComplianceItems
+--
 --         , requestGetDocument $
 --             getDocument
 --
@@ -112,6 +166,9 @@
 --         , requestGetCommandInvocation $
 --             getCommandInvocation
 --
+--         , requestDescribeInstancePatchStatesForPatchGroup $
+--             describeInstancePatchStatesForPatchGroup
+--
 --         , requestDeregisterManagedInstance $
 --             deregisterManagedInstance
 --
@@ -121,12 +178,24 @@
 --         , requestModifyDocumentPermission $
 --             modifyDocumentPermission
 --
+--         , requestDeleteResourceDataSync $
+--             deleteResourceDataSync
+--
 --         , requestUpdateAssociationStatus $
 --             updateAssociationStatus
 --
+--         , requestDescribeAvailablePatches $
+--             describeAvailablePatches
+--
 --         , requestListDocumentVersions $
 --             listDocumentVersions
 --
+--         , requestDeregisterPatchBaselineForPatchGroup $
+--             deregisterPatchBaselineForPatchGroup
+--
+--         , requestDescribePatchGroups $
+--             describePatchGroups
+--
 --         , requestGetMaintenanceWindow $
 --             getMaintenanceWindow
 --
@@ -136,6 +205,15 @@
 --         , requestRegisterTaskWithMaintenanceWindow $
 --             registerTaskWithMaintenanceWindow
 --
+--         , requestRegisterDefaultPatchBaseline $
+--             registerDefaultPatchBaseline
+--
+--         , requestListResourceComplianceSummaries $
+--             listResourceComplianceSummaries
+--
+--         , requestListAssociationVersions $
+--             listAssociationVersions
+--
 --         , requestDescribeMaintenanceWindowTasks $
 --             describeMaintenanceWindowTasks
 --
@@ -148,6 +226,9 @@
 --         , requestListInventoryEntries $
 --             listInventoryEntries
 --
+--         , requestUpdateMaintenanceWindowTask $
+--             updateMaintenanceWindowTask
+--
 --         , requestGetParameterHistory $
 --             getParameterHistory
 --
@@ -160,12 +241,18 @@
 --         , requestGetMaintenanceWindowExecution $
 --             getMaintenanceWindowExecution
 --
+--         , requestSendAutomationSignal $
+--             sendAutomationSignal
+--
 --         , requestPutParameter $
 --             putParameter
 --
 --         , requestDescribeMaintenanceWindowExecutionTaskInvocations $
 --             describeMaintenanceWindowExecutionTaskInvocations
 --
+--         , requestGetMaintenanceWindowExecutionTaskInvocation $
+--             getMaintenanceWindowExecutionTaskInvocation
+--
 --         , requestDeleteParameter $
 --             deleteParameter
 --
@@ -196,6 +283,12 @@
 --         , requestSendCommand $
 --             sendCommand
 --
+--         , requestDescribePatchBaselines $
+--             describePatchBaselines
+--
+--         , requestGetPatchBaseline $
+--             getPatchBaseline
+--
 --         , requestRegisterTargetWithMaintenanceWindow $
 --             registerTargetWithMaintenanceWindow
 --
@@ -214,24 +307,60 @@
 --         , requestCreateAssociationBatch $
 --             createAssociationBatch
 --
+--         , requestUpdateMaintenanceWindowTarget $
+--             updateMaintenanceWindowTarget
+--
+--         , requestCreateResourceDataSync $
+--             createResourceDataSync
+--
+--         , requestCreatePatchBaseline $
+--             createPatchBaseline
+--
 --           ]
 
 --     , testGroup "response"
---         [ responseGetInventory $
+--         [ responseDescribeInstancePatches $
+--             describeInstancePatchesResponse
+--
+--         , responseGetInventory $
 --             getInventoryResponse
 --
 --         , responseGetParameters $
 --             getParametersResponse
 --
+--         , responseDeletePatchBaseline $
+--             deletePatchBaselineResponse
+--
+--         , responseUpdatePatchBaseline $
+--             updatePatchBaselineResponse
+--
+--         , responseGetParameter $
+--             getParameterResponse
+--
 --         , responseUpdateDocumentDefaultVersion $
 --             updateDocumentDefaultVersionResponse
 --
+--         , responseListResourceDataSync $
+--             listResourceDataSyncResponse
+--
+--         , responseGetDeployablePatchSnapshotForInstance $
+--             getDeployablePatchSnapshotForInstanceResponse
+--
 --         , responseDescribeParameters $
 --             describeParametersResponse
 --
+--         , responseGetParametersByPath $
+--             getParametersByPathResponse
+--
+--         , responsePutComplianceItems $
+--             putComplianceItemsResponse
+--
 --         , responseDescribeActivations $
 --             describeActivationsResponse
 --
+--         , responseGetMaintenanceWindowTask $
+--             getMaintenanceWindowTaskResponse
+--
 --         , responseListTagsForResource $
 --             listTagsForResourceResponse
 --
@@ -250,6 +379,9 @@
 --         , responseGetInventorySchema $
 --             getInventorySchemaResponse
 --
+--         , responseListComplianceSummaries $
+--             listComplianceSummariesResponse
+--
 --         , responseStartAutomationExecution $
 --             startAutomationExecutionResponse
 --
@@ -265,6 +397,9 @@
 --         , responseDescribeMaintenanceWindowExecutionTasks $
 --             describeMaintenanceWindowExecutionTasksResponse
 --
+--         , responseGetDefaultPatchBaseline $
+--             getDefaultPatchBaselineResponse
+--
 --         , responseGetMaintenanceWindowExecutionTask $
 --             getMaintenanceWindowExecutionTaskResponse
 --
@@ -274,21 +409,42 @@
 --         , responseRemoveTagsFromResource $
 --             removeTagsFromResourceResponse
 --
+--         , responseDeleteParameters $
+--             deleteParametersResponse
+--
+--         , responseDescribePatchGroupState $
+--             describePatchGroupStateResponse
+--
 --         , responseListCommandInvocations $
 --             listCommandInvocationsResponse
 --
 --         , responseDeregisterTargetFromMaintenanceWindow $
 --             deregisterTargetFromMaintenanceWindowResponse
 --
+--         , responseDescribeEffectivePatchesForPatchBaseline $
+--             describeEffectivePatchesForPatchBaselineResponse
+--
 --         , responseDescribeMaintenanceWindowTargets $
 --             describeMaintenanceWindowTargetsResponse
 --
+--         , responseRegisterPatchBaselineForPatchGroup $
+--             registerPatchBaselineForPatchGroupResponse
+--
 --         , responseListDocuments $
 --             listDocumentsResponse
 --
+--         , responseDescribeInstancePatchStates $
+--             describeInstancePatchStatesResponse
+--
+--         , responseGetPatchBaselineForPatchGroup $
+--             getPatchBaselineForPatchGroupResponse
+--
 --         , responseUpdateManagedInstanceRole $
 --             updateManagedInstanceRoleResponse
 --
+--         , responseListComplianceItems $
+--             listComplianceItemsResponse
+--
 --         , responseGetDocument $
 --             getDocumentResponse
 --
@@ -301,6 +457,9 @@
 --         , responseGetCommandInvocation $
 --             getCommandInvocationResponse
 --
+--         , responseDescribeInstancePatchStatesForPatchGroup $
+--             describeInstancePatchStatesForPatchGroupResponse
+--
 --         , responseDeregisterManagedInstance $
 --             deregisterManagedInstanceResponse
 --
@@ -310,12 +469,24 @@
 --         , responseModifyDocumentPermission $
 --             modifyDocumentPermissionResponse
 --
+--         , responseDeleteResourceDataSync $
+--             deleteResourceDataSyncResponse
+--
 --         , responseUpdateAssociationStatus $
 --             updateAssociationStatusResponse
 --
+--         , responseDescribeAvailablePatches $
+--             describeAvailablePatchesResponse
+--
 --         , responseListDocumentVersions $
 --             listDocumentVersionsResponse
 --
+--         , responseDeregisterPatchBaselineForPatchGroup $
+--             deregisterPatchBaselineForPatchGroupResponse
+--
+--         , responseDescribePatchGroups $
+--             describePatchGroupsResponse
+--
 --         , responseGetMaintenanceWindow $
 --             getMaintenanceWindowResponse
 --
@@ -325,6 +496,15 @@
 --         , responseRegisterTaskWithMaintenanceWindow $
 --             registerTaskWithMaintenanceWindowResponse
 --
+--         , responseRegisterDefaultPatchBaseline $
+--             registerDefaultPatchBaselineResponse
+--
+--         , responseListResourceComplianceSummaries $
+--             listResourceComplianceSummariesResponse
+--
+--         , responseListAssociationVersions $
+--             listAssociationVersionsResponse
+--
 --         , responseDescribeMaintenanceWindowTasks $
 --             describeMaintenanceWindowTasksResponse
 --
@@ -337,6 +517,9 @@
 --         , responseListInventoryEntries $
 --             listInventoryEntriesResponse
 --
+--         , responseUpdateMaintenanceWindowTask $
+--             updateMaintenanceWindowTaskResponse
+--
 --         , responseGetParameterHistory $
 --             getParameterHistoryResponse
 --
@@ -349,12 +532,18 @@
 --         , responseGetMaintenanceWindowExecution $
 --             getMaintenanceWindowExecutionResponse
 --
+--         , responseSendAutomationSignal $
+--             sendAutomationSignalResponse
+--
 --         , responsePutParameter $
 --             putParameterResponse
 --
 --         , responseDescribeMaintenanceWindowExecutionTaskInvocations $
 --             describeMaintenanceWindowExecutionTaskInvocationsResponse
 --
+--         , responseGetMaintenanceWindowExecutionTaskInvocation $
+--             getMaintenanceWindowExecutionTaskInvocationResponse
+--
 --         , responseDeleteParameter $
 --             deleteParameterResponse
 --
@@ -385,6 +574,12 @@
 --         , responseSendCommand $
 --             sendCommandResponse
 --
+--         , responseDescribePatchBaselines $
+--             describePatchBaselinesResponse
+--
+--         , responseGetPatchBaseline $
+--             getPatchBaselineResponse
+--
 --         , responseRegisterTargetWithMaintenanceWindow $
 --             registerTargetWithMaintenanceWindowResponse
 --
@@ -403,11 +598,25 @@
 --         , responseCreateAssociationBatch $
 --             createAssociationBatchResponse
 --
+--         , responseUpdateMaintenanceWindowTarget $
+--             updateMaintenanceWindowTargetResponse
+--
+--         , responseCreateResourceDataSync $
+--             createResourceDataSyncResponse
+--
+--         , responseCreatePatchBaseline $
+--             createPatchBaselineResponse
+--
 --           ]
 --     ]
 
 -- Requests
 
+requestDescribeInstancePatches :: DescribeInstancePatches -> TestTree
+requestDescribeInstancePatches = req
+    "DescribeInstancePatches"
+    "fixture/DescribeInstancePatches.yaml"
+
 requestGetInventory :: GetInventory -> TestTree
 requestGetInventory = req
     "GetInventory"
@@ -418,21 +627,61 @@
     "GetParameters"
     "fixture/GetParameters.yaml"
 
+requestDeletePatchBaseline :: DeletePatchBaseline -> TestTree
+requestDeletePatchBaseline = req
+    "DeletePatchBaseline"
+    "fixture/DeletePatchBaseline.yaml"
+
+requestUpdatePatchBaseline :: UpdatePatchBaseline -> TestTree
+requestUpdatePatchBaseline = req
+    "UpdatePatchBaseline"
+    "fixture/UpdatePatchBaseline.yaml"
+
+requestGetParameter :: GetParameter -> TestTree
+requestGetParameter = req
+    "GetParameter"
+    "fixture/GetParameter.yaml"
+
 requestUpdateDocumentDefaultVersion :: UpdateDocumentDefaultVersion -> TestTree
 requestUpdateDocumentDefaultVersion = req
     "UpdateDocumentDefaultVersion"
     "fixture/UpdateDocumentDefaultVersion.yaml"
 
+requestListResourceDataSync :: ListResourceDataSync -> TestTree
+requestListResourceDataSync = req
+    "ListResourceDataSync"
+    "fixture/ListResourceDataSync.yaml"
+
+requestGetDeployablePatchSnapshotForInstance :: GetDeployablePatchSnapshotForInstance -> TestTree
+requestGetDeployablePatchSnapshotForInstance = req
+    "GetDeployablePatchSnapshotForInstance"
+    "fixture/GetDeployablePatchSnapshotForInstance.yaml"
+
 requestDescribeParameters :: DescribeParameters -> TestTree
 requestDescribeParameters = req
     "DescribeParameters"
     "fixture/DescribeParameters.yaml"
 
+requestGetParametersByPath :: GetParametersByPath -> TestTree
+requestGetParametersByPath = req
+    "GetParametersByPath"
+    "fixture/GetParametersByPath.yaml"
+
+requestPutComplianceItems :: PutComplianceItems -> TestTree
+requestPutComplianceItems = req
+    "PutComplianceItems"
+    "fixture/PutComplianceItems.yaml"
+
 requestDescribeActivations :: DescribeActivations -> TestTree
 requestDescribeActivations = req
     "DescribeActivations"
     "fixture/DescribeActivations.yaml"
 
+requestGetMaintenanceWindowTask :: GetMaintenanceWindowTask -> TestTree
+requestGetMaintenanceWindowTask = req
+    "GetMaintenanceWindowTask"
+    "fixture/GetMaintenanceWindowTask.yaml"
+
 requestListTagsForResource :: ListTagsForResource -> TestTree
 requestListTagsForResource = req
     "ListTagsForResource"
@@ -463,6 +712,11 @@
     "GetInventorySchema"
     "fixture/GetInventorySchema.yaml"
 
+requestListComplianceSummaries :: ListComplianceSummaries -> TestTree
+requestListComplianceSummaries = req
+    "ListComplianceSummaries"
+    "fixture/ListComplianceSummaries.yaml"
+
 requestStartAutomationExecution :: StartAutomationExecution -> TestTree
 requestStartAutomationExecution = req
     "StartAutomationExecution"
@@ -488,6 +742,11 @@
     "DescribeMaintenanceWindowExecutionTasks"
     "fixture/DescribeMaintenanceWindowExecutionTasks.yaml"
 
+requestGetDefaultPatchBaseline :: GetDefaultPatchBaseline -> TestTree
+requestGetDefaultPatchBaseline = req
+    "GetDefaultPatchBaseline"
+    "fixture/GetDefaultPatchBaseline.yaml"
+
 requestGetMaintenanceWindowExecutionTask :: GetMaintenanceWindowExecutionTask -> TestTree
 requestGetMaintenanceWindowExecutionTask = req
     "GetMaintenanceWindowExecutionTask"
@@ -503,6 +762,16 @@
     "RemoveTagsFromResource"
     "fixture/RemoveTagsFromResource.yaml"
 
+requestDeleteParameters :: DeleteParameters -> TestTree
+requestDeleteParameters = req
+    "DeleteParameters"
+    "fixture/DeleteParameters.yaml"
+
+requestDescribePatchGroupState :: DescribePatchGroupState -> TestTree
+requestDescribePatchGroupState = req
+    "DescribePatchGroupState"
+    "fixture/DescribePatchGroupState.yaml"
+
 requestListCommandInvocations :: ListCommandInvocations -> TestTree
 requestListCommandInvocations = req
     "ListCommandInvocations"
@@ -513,21 +782,46 @@
     "DeregisterTargetFromMaintenanceWindow"
     "fixture/DeregisterTargetFromMaintenanceWindow.yaml"
 
+requestDescribeEffectivePatchesForPatchBaseline :: DescribeEffectivePatchesForPatchBaseline -> TestTree
+requestDescribeEffectivePatchesForPatchBaseline = req
+    "DescribeEffectivePatchesForPatchBaseline"
+    "fixture/DescribeEffectivePatchesForPatchBaseline.yaml"
+
 requestDescribeMaintenanceWindowTargets :: DescribeMaintenanceWindowTargets -> TestTree
 requestDescribeMaintenanceWindowTargets = req
     "DescribeMaintenanceWindowTargets"
     "fixture/DescribeMaintenanceWindowTargets.yaml"
 
+requestRegisterPatchBaselineForPatchGroup :: RegisterPatchBaselineForPatchGroup -> TestTree
+requestRegisterPatchBaselineForPatchGroup = req
+    "RegisterPatchBaselineForPatchGroup"
+    "fixture/RegisterPatchBaselineForPatchGroup.yaml"
+
 requestListDocuments :: ListDocuments -> TestTree
 requestListDocuments = req
     "ListDocuments"
     "fixture/ListDocuments.yaml"
 
+requestDescribeInstancePatchStates :: DescribeInstancePatchStates -> TestTree
+requestDescribeInstancePatchStates = req
+    "DescribeInstancePatchStates"
+    "fixture/DescribeInstancePatchStates.yaml"
+
+requestGetPatchBaselineForPatchGroup :: GetPatchBaselineForPatchGroup -> TestTree
+requestGetPatchBaselineForPatchGroup = req
+    "GetPatchBaselineForPatchGroup"
+    "fixture/GetPatchBaselineForPatchGroup.yaml"
+
 requestUpdateManagedInstanceRole :: UpdateManagedInstanceRole -> TestTree
 requestUpdateManagedInstanceRole = req
     "UpdateManagedInstanceRole"
     "fixture/UpdateManagedInstanceRole.yaml"
 
+requestListComplianceItems :: ListComplianceItems -> TestTree
+requestListComplianceItems = req
+    "ListComplianceItems"
+    "fixture/ListComplianceItems.yaml"
+
 requestGetDocument :: GetDocument -> TestTree
 requestGetDocument = req
     "GetDocument"
@@ -548,6 +842,11 @@
     "GetCommandInvocation"
     "fixture/GetCommandInvocation.yaml"
 
+requestDescribeInstancePatchStatesForPatchGroup :: DescribeInstancePatchStatesForPatchGroup -> TestTree
+requestDescribeInstancePatchStatesForPatchGroup = req
+    "DescribeInstancePatchStatesForPatchGroup"
+    "fixture/DescribeInstancePatchStatesForPatchGroup.yaml"
+
 requestDeregisterManagedInstance :: DeregisterManagedInstance -> TestTree
 requestDeregisterManagedInstance = req
     "DeregisterManagedInstance"
@@ -563,16 +862,36 @@
     "ModifyDocumentPermission"
     "fixture/ModifyDocumentPermission.yaml"
 
+requestDeleteResourceDataSync :: DeleteResourceDataSync -> TestTree
+requestDeleteResourceDataSync = req
+    "DeleteResourceDataSync"
+    "fixture/DeleteResourceDataSync.yaml"
+
 requestUpdateAssociationStatus :: UpdateAssociationStatus -> TestTree
 requestUpdateAssociationStatus = req
     "UpdateAssociationStatus"
     "fixture/UpdateAssociationStatus.yaml"
 
+requestDescribeAvailablePatches :: DescribeAvailablePatches -> TestTree
+requestDescribeAvailablePatches = req
+    "DescribeAvailablePatches"
+    "fixture/DescribeAvailablePatches.yaml"
+
 requestListDocumentVersions :: ListDocumentVersions -> TestTree
 requestListDocumentVersions = req
     "ListDocumentVersions"
     "fixture/ListDocumentVersions.yaml"
 
+requestDeregisterPatchBaselineForPatchGroup :: DeregisterPatchBaselineForPatchGroup -> TestTree
+requestDeregisterPatchBaselineForPatchGroup = req
+    "DeregisterPatchBaselineForPatchGroup"
+    "fixture/DeregisterPatchBaselineForPatchGroup.yaml"
+
+requestDescribePatchGroups :: DescribePatchGroups -> TestTree
+requestDescribePatchGroups = req
+    "DescribePatchGroups"
+    "fixture/DescribePatchGroups.yaml"
+
 requestGetMaintenanceWindow :: GetMaintenanceWindow -> TestTree
 requestGetMaintenanceWindow = req
     "GetMaintenanceWindow"
@@ -588,6 +907,21 @@
     "RegisterTaskWithMaintenanceWindow"
     "fixture/RegisterTaskWithMaintenanceWindow.yaml"
 
+requestRegisterDefaultPatchBaseline :: RegisterDefaultPatchBaseline -> TestTree
+requestRegisterDefaultPatchBaseline = req
+    "RegisterDefaultPatchBaseline"
+    "fixture/RegisterDefaultPatchBaseline.yaml"
+
+requestListResourceComplianceSummaries :: ListResourceComplianceSummaries -> TestTree
+requestListResourceComplianceSummaries = req
+    "ListResourceComplianceSummaries"
+    "fixture/ListResourceComplianceSummaries.yaml"
+
+requestListAssociationVersions :: ListAssociationVersions -> TestTree
+requestListAssociationVersions = req
+    "ListAssociationVersions"
+    "fixture/ListAssociationVersions.yaml"
+
 requestDescribeMaintenanceWindowTasks :: DescribeMaintenanceWindowTasks -> TestTree
 requestDescribeMaintenanceWindowTasks = req
     "DescribeMaintenanceWindowTasks"
@@ -608,6 +942,11 @@
     "ListInventoryEntries"
     "fixture/ListInventoryEntries.yaml"
 
+requestUpdateMaintenanceWindowTask :: UpdateMaintenanceWindowTask -> TestTree
+requestUpdateMaintenanceWindowTask = req
+    "UpdateMaintenanceWindowTask"
+    "fixture/UpdateMaintenanceWindowTask.yaml"
+
 requestGetParameterHistory :: GetParameterHistory -> TestTree
 requestGetParameterHistory = req
     "GetParameterHistory"
@@ -628,6 +967,11 @@
     "GetMaintenanceWindowExecution"
     "fixture/GetMaintenanceWindowExecution.yaml"
 
+requestSendAutomationSignal :: SendAutomationSignal -> TestTree
+requestSendAutomationSignal = req
+    "SendAutomationSignal"
+    "fixture/SendAutomationSignal.yaml"
+
 requestPutParameter :: PutParameter -> TestTree
 requestPutParameter = req
     "PutParameter"
@@ -638,6 +982,11 @@
     "DescribeMaintenanceWindowExecutionTaskInvocations"
     "fixture/DescribeMaintenanceWindowExecutionTaskInvocations.yaml"
 
+requestGetMaintenanceWindowExecutionTaskInvocation :: GetMaintenanceWindowExecutionTaskInvocation -> TestTree
+requestGetMaintenanceWindowExecutionTaskInvocation = req
+    "GetMaintenanceWindowExecutionTaskInvocation"
+    "fixture/GetMaintenanceWindowExecutionTaskInvocation.yaml"
+
 requestDeleteParameter :: DeleteParameter -> TestTree
 requestDeleteParameter = req
     "DeleteParameter"
@@ -688,6 +1037,16 @@
     "SendCommand"
     "fixture/SendCommand.yaml"
 
+requestDescribePatchBaselines :: DescribePatchBaselines -> TestTree
+requestDescribePatchBaselines = req
+    "DescribePatchBaselines"
+    "fixture/DescribePatchBaselines.yaml"
+
+requestGetPatchBaseline :: GetPatchBaseline -> TestTree
+requestGetPatchBaseline = req
+    "GetPatchBaseline"
+    "fixture/GetPatchBaseline.yaml"
+
 requestRegisterTargetWithMaintenanceWindow :: RegisterTargetWithMaintenanceWindow -> TestTree
 requestRegisterTargetWithMaintenanceWindow = req
     "RegisterTargetWithMaintenanceWindow"
@@ -718,8 +1077,30 @@
     "CreateAssociationBatch"
     "fixture/CreateAssociationBatch.yaml"
 
+requestUpdateMaintenanceWindowTarget :: UpdateMaintenanceWindowTarget -> TestTree
+requestUpdateMaintenanceWindowTarget = req
+    "UpdateMaintenanceWindowTarget"
+    "fixture/UpdateMaintenanceWindowTarget.yaml"
+
+requestCreateResourceDataSync :: CreateResourceDataSync -> TestTree
+requestCreateResourceDataSync = req
+    "CreateResourceDataSync"
+    "fixture/CreateResourceDataSync.yaml"
+
+requestCreatePatchBaseline :: CreatePatchBaseline -> TestTree
+requestCreatePatchBaseline = req
+    "CreatePatchBaseline"
+    "fixture/CreatePatchBaseline.yaml"
+
 -- Responses
 
+responseDescribeInstancePatches :: DescribeInstancePatchesResponse -> TestTree
+responseDescribeInstancePatches = res
+    "DescribeInstancePatchesResponse"
+    "fixture/DescribeInstancePatchesResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribeInstancePatches)
+
 responseGetInventory :: GetInventoryResponse -> TestTree
 responseGetInventory = res
     "GetInventoryResponse"
@@ -734,6 +1115,27 @@
     ssm
     (Proxy :: Proxy GetParameters)
 
+responseDeletePatchBaseline :: DeletePatchBaselineResponse -> TestTree
+responseDeletePatchBaseline = res
+    "DeletePatchBaselineResponse"
+    "fixture/DeletePatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy DeletePatchBaseline)
+
+responseUpdatePatchBaseline :: UpdatePatchBaselineResponse -> TestTree
+responseUpdatePatchBaseline = res
+    "UpdatePatchBaselineResponse"
+    "fixture/UpdatePatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy UpdatePatchBaseline)
+
+responseGetParameter :: GetParameterResponse -> TestTree
+responseGetParameter = res
+    "GetParameterResponse"
+    "fixture/GetParameterResponse.proto"
+    ssm
+    (Proxy :: Proxy GetParameter)
+
 responseUpdateDocumentDefaultVersion :: UpdateDocumentDefaultVersionResponse -> TestTree
 responseUpdateDocumentDefaultVersion = res
     "UpdateDocumentDefaultVersionResponse"
@@ -741,6 +1143,20 @@
     ssm
     (Proxy :: Proxy UpdateDocumentDefaultVersion)
 
+responseListResourceDataSync :: ListResourceDataSyncResponse -> TestTree
+responseListResourceDataSync = res
+    "ListResourceDataSyncResponse"
+    "fixture/ListResourceDataSyncResponse.proto"
+    ssm
+    (Proxy :: Proxy ListResourceDataSync)
+
+responseGetDeployablePatchSnapshotForInstance :: GetDeployablePatchSnapshotForInstanceResponse -> TestTree
+responseGetDeployablePatchSnapshotForInstance = res
+    "GetDeployablePatchSnapshotForInstanceResponse"
+    "fixture/GetDeployablePatchSnapshotForInstanceResponse.proto"
+    ssm
+    (Proxy :: Proxy GetDeployablePatchSnapshotForInstance)
+
 responseDescribeParameters :: DescribeParametersResponse -> TestTree
 responseDescribeParameters = res
     "DescribeParametersResponse"
@@ -748,6 +1164,20 @@
     ssm
     (Proxy :: Proxy DescribeParameters)
 
+responseGetParametersByPath :: GetParametersByPathResponse -> TestTree
+responseGetParametersByPath = res
+    "GetParametersByPathResponse"
+    "fixture/GetParametersByPathResponse.proto"
+    ssm
+    (Proxy :: Proxy GetParametersByPath)
+
+responsePutComplianceItems :: PutComplianceItemsResponse -> TestTree
+responsePutComplianceItems = res
+    "PutComplianceItemsResponse"
+    "fixture/PutComplianceItemsResponse.proto"
+    ssm
+    (Proxy :: Proxy PutComplianceItems)
+
 responseDescribeActivations :: DescribeActivationsResponse -> TestTree
 responseDescribeActivations = res
     "DescribeActivationsResponse"
@@ -755,6 +1185,13 @@
     ssm
     (Proxy :: Proxy DescribeActivations)
 
+responseGetMaintenanceWindowTask :: GetMaintenanceWindowTaskResponse -> TestTree
+responseGetMaintenanceWindowTask = res
+    "GetMaintenanceWindowTaskResponse"
+    "fixture/GetMaintenanceWindowTaskResponse.proto"
+    ssm
+    (Proxy :: Proxy GetMaintenanceWindowTask)
+
 responseListTagsForResource :: ListTagsForResourceResponse -> TestTree
 responseListTagsForResource = res
     "ListTagsForResourceResponse"
@@ -797,6 +1234,13 @@
     ssm
     (Proxy :: Proxy GetInventorySchema)
 
+responseListComplianceSummaries :: ListComplianceSummariesResponse -> TestTree
+responseListComplianceSummaries = res
+    "ListComplianceSummariesResponse"
+    "fixture/ListComplianceSummariesResponse.proto"
+    ssm
+    (Proxy :: Proxy ListComplianceSummaries)
+
 responseStartAutomationExecution :: StartAutomationExecutionResponse -> TestTree
 responseStartAutomationExecution = res
     "StartAutomationExecutionResponse"
@@ -832,6 +1276,13 @@
     ssm
     (Proxy :: Proxy DescribeMaintenanceWindowExecutionTasks)
 
+responseGetDefaultPatchBaseline :: GetDefaultPatchBaselineResponse -> TestTree
+responseGetDefaultPatchBaseline = res
+    "GetDefaultPatchBaselineResponse"
+    "fixture/GetDefaultPatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy GetDefaultPatchBaseline)
+
 responseGetMaintenanceWindowExecutionTask :: GetMaintenanceWindowExecutionTaskResponse -> TestTree
 responseGetMaintenanceWindowExecutionTask = res
     "GetMaintenanceWindowExecutionTaskResponse"
@@ -853,6 +1304,20 @@
     ssm
     (Proxy :: Proxy RemoveTagsFromResource)
 
+responseDeleteParameters :: DeleteParametersResponse -> TestTree
+responseDeleteParameters = res
+    "DeleteParametersResponse"
+    "fixture/DeleteParametersResponse.proto"
+    ssm
+    (Proxy :: Proxy DeleteParameters)
+
+responseDescribePatchGroupState :: DescribePatchGroupStateResponse -> TestTree
+responseDescribePatchGroupState = res
+    "DescribePatchGroupStateResponse"
+    "fixture/DescribePatchGroupStateResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribePatchGroupState)
+
 responseListCommandInvocations :: ListCommandInvocationsResponse -> TestTree
 responseListCommandInvocations = res
     "ListCommandInvocationsResponse"
@@ -867,6 +1332,13 @@
     ssm
     (Proxy :: Proxy DeregisterTargetFromMaintenanceWindow)
 
+responseDescribeEffectivePatchesForPatchBaseline :: DescribeEffectivePatchesForPatchBaselineResponse -> TestTree
+responseDescribeEffectivePatchesForPatchBaseline = res
+    "DescribeEffectivePatchesForPatchBaselineResponse"
+    "fixture/DescribeEffectivePatchesForPatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribeEffectivePatchesForPatchBaseline)
+
 responseDescribeMaintenanceWindowTargets :: DescribeMaintenanceWindowTargetsResponse -> TestTree
 responseDescribeMaintenanceWindowTargets = res
     "DescribeMaintenanceWindowTargetsResponse"
@@ -874,6 +1346,13 @@
     ssm
     (Proxy :: Proxy DescribeMaintenanceWindowTargets)
 
+responseRegisterPatchBaselineForPatchGroup :: RegisterPatchBaselineForPatchGroupResponse -> TestTree
+responseRegisterPatchBaselineForPatchGroup = res
+    "RegisterPatchBaselineForPatchGroupResponse"
+    "fixture/RegisterPatchBaselineForPatchGroupResponse.proto"
+    ssm
+    (Proxy :: Proxy RegisterPatchBaselineForPatchGroup)
+
 responseListDocuments :: ListDocumentsResponse -> TestTree
 responseListDocuments = res
     "ListDocumentsResponse"
@@ -881,6 +1360,20 @@
     ssm
     (Proxy :: Proxy ListDocuments)
 
+responseDescribeInstancePatchStates :: DescribeInstancePatchStatesResponse -> TestTree
+responseDescribeInstancePatchStates = res
+    "DescribeInstancePatchStatesResponse"
+    "fixture/DescribeInstancePatchStatesResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribeInstancePatchStates)
+
+responseGetPatchBaselineForPatchGroup :: GetPatchBaselineForPatchGroupResponse -> TestTree
+responseGetPatchBaselineForPatchGroup = res
+    "GetPatchBaselineForPatchGroupResponse"
+    "fixture/GetPatchBaselineForPatchGroupResponse.proto"
+    ssm
+    (Proxy :: Proxy GetPatchBaselineForPatchGroup)
+
 responseUpdateManagedInstanceRole :: UpdateManagedInstanceRoleResponse -> TestTree
 responseUpdateManagedInstanceRole = res
     "UpdateManagedInstanceRoleResponse"
@@ -888,6 +1381,13 @@
     ssm
     (Proxy :: Proxy UpdateManagedInstanceRole)
 
+responseListComplianceItems :: ListComplianceItemsResponse -> TestTree
+responseListComplianceItems = res
+    "ListComplianceItemsResponse"
+    "fixture/ListComplianceItemsResponse.proto"
+    ssm
+    (Proxy :: Proxy ListComplianceItems)
+
 responseGetDocument :: GetDocumentResponse -> TestTree
 responseGetDocument = res
     "GetDocumentResponse"
@@ -916,6 +1416,13 @@
     ssm
     (Proxy :: Proxy GetCommandInvocation)
 
+responseDescribeInstancePatchStatesForPatchGroup :: DescribeInstancePatchStatesForPatchGroupResponse -> TestTree
+responseDescribeInstancePatchStatesForPatchGroup = res
+    "DescribeInstancePatchStatesForPatchGroupResponse"
+    "fixture/DescribeInstancePatchStatesForPatchGroupResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribeInstancePatchStatesForPatchGroup)
+
 responseDeregisterManagedInstance :: DeregisterManagedInstanceResponse -> TestTree
 responseDeregisterManagedInstance = res
     "DeregisterManagedInstanceResponse"
@@ -937,6 +1444,13 @@
     ssm
     (Proxy :: Proxy ModifyDocumentPermission)
 
+responseDeleteResourceDataSync :: DeleteResourceDataSyncResponse -> TestTree
+responseDeleteResourceDataSync = res
+    "DeleteResourceDataSyncResponse"
+    "fixture/DeleteResourceDataSyncResponse.proto"
+    ssm
+    (Proxy :: Proxy DeleteResourceDataSync)
+
 responseUpdateAssociationStatus :: UpdateAssociationStatusResponse -> TestTree
 responseUpdateAssociationStatus = res
     "UpdateAssociationStatusResponse"
@@ -944,6 +1458,13 @@
     ssm
     (Proxy :: Proxy UpdateAssociationStatus)
 
+responseDescribeAvailablePatches :: DescribeAvailablePatchesResponse -> TestTree
+responseDescribeAvailablePatches = res
+    "DescribeAvailablePatchesResponse"
+    "fixture/DescribeAvailablePatchesResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribeAvailablePatches)
+
 responseListDocumentVersions :: ListDocumentVersionsResponse -> TestTree
 responseListDocumentVersions = res
     "ListDocumentVersionsResponse"
@@ -951,6 +1472,20 @@
     ssm
     (Proxy :: Proxy ListDocumentVersions)
 
+responseDeregisterPatchBaselineForPatchGroup :: DeregisterPatchBaselineForPatchGroupResponse -> TestTree
+responseDeregisterPatchBaselineForPatchGroup = res
+    "DeregisterPatchBaselineForPatchGroupResponse"
+    "fixture/DeregisterPatchBaselineForPatchGroupResponse.proto"
+    ssm
+    (Proxy :: Proxy DeregisterPatchBaselineForPatchGroup)
+
+responseDescribePatchGroups :: DescribePatchGroupsResponse -> TestTree
+responseDescribePatchGroups = res
+    "DescribePatchGroupsResponse"
+    "fixture/DescribePatchGroupsResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribePatchGroups)
+
 responseGetMaintenanceWindow :: GetMaintenanceWindowResponse -> TestTree
 responseGetMaintenanceWindow = res
     "GetMaintenanceWindowResponse"
@@ -972,6 +1507,27 @@
     ssm
     (Proxy :: Proxy RegisterTaskWithMaintenanceWindow)
 
+responseRegisterDefaultPatchBaseline :: RegisterDefaultPatchBaselineResponse -> TestTree
+responseRegisterDefaultPatchBaseline = res
+    "RegisterDefaultPatchBaselineResponse"
+    "fixture/RegisterDefaultPatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy RegisterDefaultPatchBaseline)
+
+responseListResourceComplianceSummaries :: ListResourceComplianceSummariesResponse -> TestTree
+responseListResourceComplianceSummaries = res
+    "ListResourceComplianceSummariesResponse"
+    "fixture/ListResourceComplianceSummariesResponse.proto"
+    ssm
+    (Proxy :: Proxy ListResourceComplianceSummaries)
+
+responseListAssociationVersions :: ListAssociationVersionsResponse -> TestTree
+responseListAssociationVersions = res
+    "ListAssociationVersionsResponse"
+    "fixture/ListAssociationVersionsResponse.proto"
+    ssm
+    (Proxy :: Proxy ListAssociationVersions)
+
 responseDescribeMaintenanceWindowTasks :: DescribeMaintenanceWindowTasksResponse -> TestTree
 responseDescribeMaintenanceWindowTasks = res
     "DescribeMaintenanceWindowTasksResponse"
@@ -1000,6 +1556,13 @@
     ssm
     (Proxy :: Proxy ListInventoryEntries)
 
+responseUpdateMaintenanceWindowTask :: UpdateMaintenanceWindowTaskResponse -> TestTree
+responseUpdateMaintenanceWindowTask = res
+    "UpdateMaintenanceWindowTaskResponse"
+    "fixture/UpdateMaintenanceWindowTaskResponse.proto"
+    ssm
+    (Proxy :: Proxy UpdateMaintenanceWindowTask)
+
 responseGetParameterHistory :: GetParameterHistoryResponse -> TestTree
 responseGetParameterHistory = res
     "GetParameterHistoryResponse"
@@ -1028,6 +1591,13 @@
     ssm
     (Proxy :: Proxy GetMaintenanceWindowExecution)
 
+responseSendAutomationSignal :: SendAutomationSignalResponse -> TestTree
+responseSendAutomationSignal = res
+    "SendAutomationSignalResponse"
+    "fixture/SendAutomationSignalResponse.proto"
+    ssm
+    (Proxy :: Proxy SendAutomationSignal)
+
 responsePutParameter :: PutParameterResponse -> TestTree
 responsePutParameter = res
     "PutParameterResponse"
@@ -1042,6 +1612,13 @@
     ssm
     (Proxy :: Proxy DescribeMaintenanceWindowExecutionTaskInvocations)
 
+responseGetMaintenanceWindowExecutionTaskInvocation :: GetMaintenanceWindowExecutionTaskInvocationResponse -> TestTree
+responseGetMaintenanceWindowExecutionTaskInvocation = res
+    "GetMaintenanceWindowExecutionTaskInvocationResponse"
+    "fixture/GetMaintenanceWindowExecutionTaskInvocationResponse.proto"
+    ssm
+    (Proxy :: Proxy GetMaintenanceWindowExecutionTaskInvocation)
+
 responseDeleteParameter :: DeleteParameterResponse -> TestTree
 responseDeleteParameter = res
     "DeleteParameterResponse"
@@ -1112,6 +1689,20 @@
     ssm
     (Proxy :: Proxy SendCommand)
 
+responseDescribePatchBaselines :: DescribePatchBaselinesResponse -> TestTree
+responseDescribePatchBaselines = res
+    "DescribePatchBaselinesResponse"
+    "fixture/DescribePatchBaselinesResponse.proto"
+    ssm
+    (Proxy :: Proxy DescribePatchBaselines)
+
+responseGetPatchBaseline :: GetPatchBaselineResponse -> TestTree
+responseGetPatchBaseline = res
+    "GetPatchBaselineResponse"
+    "fixture/GetPatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy GetPatchBaseline)
+
 responseRegisterTargetWithMaintenanceWindow :: RegisterTargetWithMaintenanceWindowResponse -> TestTree
 responseRegisterTargetWithMaintenanceWindow = res
     "RegisterTargetWithMaintenanceWindowResponse"
@@ -1153,3 +1744,24 @@
     "fixture/CreateAssociationBatchResponse.proto"
     ssm
     (Proxy :: Proxy CreateAssociationBatch)
+
+responseUpdateMaintenanceWindowTarget :: UpdateMaintenanceWindowTargetResponse -> TestTree
+responseUpdateMaintenanceWindowTarget = res
+    "UpdateMaintenanceWindowTargetResponse"
+    "fixture/UpdateMaintenanceWindowTargetResponse.proto"
+    ssm
+    (Proxy :: Proxy UpdateMaintenanceWindowTarget)
+
+responseCreateResourceDataSync :: CreateResourceDataSyncResponse -> TestTree
+responseCreateResourceDataSync = res
+    "CreateResourceDataSyncResponse"
+    "fixture/CreateResourceDataSyncResponse.proto"
+    ssm
+    (Proxy :: Proxy CreateResourceDataSync)
+
+responseCreatePatchBaseline :: CreatePatchBaselineResponse -> TestTree
+responseCreatePatchBaseline = res
+    "CreatePatchBaselineResponse"
+    "fixture/CreatePatchBaselineResponse.proto"
+    ssm
+    (Proxy :: Proxy CreatePatchBaseline)
