diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,21 +1,76 @@
 # Amazon OpsWorks SDK
 
-> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!
-
+* [Version](#version)
 * [Description](#description)
 * [Contribute](#contribute)
 * [Licence](#licence)
 
+
+## Version
+
+`1.0.0`
+
+
 ## Description
 
-AWS OpsWorks provides a simple and flexible way to create and manage stacks
-and applications. With AWS OpsWorks, you can provision AWS resources, manage
-their configuration, deploy applications to those resources, and monitor
-their health.
+AWS OpsWorks
 
+Welcome to the /AWS OpsWorks API Reference/. This guide provides
+descriptions, syntax, and usage examples about AWS OpsWorks actions and
+data types, including common parameters and error codes.
+
+AWS OpsWorks is an application management service that provides an
+integrated experience for overseeing the complete application lifecycle.
+For information about this product, go to the
+<http://aws.amazon.com/opsworks/ AWS OpsWorks> details page.
+
+__SDKs and CLI__
+
+The most common way to use the AWS OpsWorks API is by using the AWS
+Command Line Interface (CLI) or by using one of the AWS SDKs to
+implement applications in your preferred language. For more information,
+see:
+
+-   <http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html AWS CLI>
+-   <http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/opsworks/AWSOpsWorksClient.html AWS SDK for Java>
+-   <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/html/N_Amazon_OpsWorks.htm AWS SDK for .NET>
+-   <http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.OpsWorks.OpsWorksClient.html AWS SDK for PHP 2>
+-   <http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/OpsWorks/Client.html AWS SDK for Ruby>
+-   <http://aws.amazon.com/documentation/sdkforjavascript/ AWS SDK for Node.js>
+-   <http://docs.pythonboto.org/en/latest/ref/opsworks.html AWS SDK for Python(Boto)>
+
+__Endpoints__
+
+AWS OpsWorks supports only one endpoint,
+opsworks.us-east-1.amazonaws.com (HTTPS), so you must connect to that
+endpoint. You can then use the API to direct AWS OpsWorks to create
+stacks in any AWS Region.
+
+__Chef Versions__
+
+When you call CreateStack, CloneStack, or UpdateStack we recommend you
+use the @ConfigurationManager@ parameter to specify the Chef version.
+The recommended value for Linux stacks, which is also the default value,
+is currently 11.10. Windows stacks use Chef 12.2. For more information,
+see
+<http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-chef11.html Chef Versions>.
+
+You can also specify Chef 11.4 or Chef 0.9 for your Linux stack.
+However, Chef 0.9 has been deprecated. We do not recommend using Chef
+0.9 for new stacks, and we recommend migrating your existing Chef 0.9
+stacks to Chef 11.10 as soon as possible.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-opsworks)
 and the [AWS API Reference](http://docs.aws.amazon.com/opsworks/latest/APIReference/Welcome.html).
 
+The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),
+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.
+
+Use of lenses is required for constructing and manipulating types.
+This is due to the amount of nesting of AWS types and transparency regarding
+de/serialisation into more palatable Haskell values.
+The provided lenses should be compatible with any of the major lens libraries
+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
 ## Contribute
 
diff --git a/amazonka-opsworks.cabal b/amazonka-opsworks.cabal
--- a/amazonka-opsworks.cabal
+++ b/amazonka-opsworks.cabal
@@ -1,28 +1,78 @@
 name:                  amazonka-opsworks
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon OpsWorks SDK.
 homepage:              https://github.com/brendanhay/amazonka
 license:               OtherLicense
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2013-2014 Brendan Hay
+copyright:             Copyright (c) 2013-2015 Brendan Hay
 category:              Network, AWS, Cloud, Distributed Computing
 build-type:            Simple
 extra-source-files:    README.md
 cabal-version:         >= 1.10
 
 description:
-    AWS OpsWorks provides a simple and flexible way to create and manage stacks
-    and applications. With AWS OpsWorks, you can provision AWS resources, manage
-    their configuration, deploy applications to those resources, and monitor
-    their health.
+    AWS OpsWorks
 
+    Welcome to the /AWS OpsWorks API Reference/. This guide provides
+    descriptions, syntax, and usage examples about AWS OpsWorks actions and
+    data types, including common parameters and error codes.
+
+    AWS OpsWorks is an application management service that provides an
+    integrated experience for overseeing the complete application lifecycle.
+    For information about this product, go to the
+    <http://aws.amazon.com/opsworks/ AWS OpsWorks> details page.
+
+    __SDKs and CLI__
+
+    The most common way to use the AWS OpsWorks API is by using the AWS
+    Command Line Interface (CLI) or by using one of the AWS SDKs to
+    implement applications in your preferred language. For more information,
+    see:
+
+    -   <http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html AWS CLI>
+    -   <http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/opsworks/AWSOpsWorksClient.html AWS SDK for Java>
+    -   <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/html/N_Amazon_OpsWorks.htm AWS SDK for .NET>
+    -   <http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.OpsWorks.OpsWorksClient.html AWS SDK for PHP 2>
+    -   <http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/OpsWorks/Client.html AWS SDK for Ruby>
+    -   <http://aws.amazon.com/documentation/sdkforjavascript/ AWS SDK for Node.js>
+    -   <http://docs.pythonboto.org/en/latest/ref/opsworks.html AWS SDK for Python(Boto)>
+
+    __Endpoints__
+
+    AWS OpsWorks supports only one endpoint,
+    opsworks.us-east-1.amazonaws.com (HTTPS), so you must connect to that
+    endpoint. You can then use the API to direct AWS OpsWorks to create
+    stacks in any AWS Region.
+
+    __Chef Versions__
+
+    When you call CreateStack, CloneStack, or UpdateStack we recommend you
+    use the @ConfigurationManager@ parameter to specify the Chef version.
+    The recommended value for Linux stacks, which is also the default value,
+    is currently 11.10. Windows stacks use Chef 12.2. For more information,
+    see
+    <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-chef11.html Chef Versions>.
+
+    You can also specify Chef 11.4 or Chef 0.9 for your Linux stack.
+    However, Chef 0.9 has been deprecated. We do not recommend using Chef
+    0.9 for new stacks, and we recommend migrating your existing Chef 0.9
+    stacks to Chef 11.10 as soon as possible.
     .
-    /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/Welcome.html AWS API Reference>
+    The types from this library are intended to be used with
+    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
+    mechanisms for specifying AuthN/AuthZ information and sending requests.
     .
-    /Warning:/ This is an experimental preview release which is still under
-    heavy development and not intended for public consumption, caveat emptor!
+    Use of lenses is required for constructing and manipulating types.
+    This is due to the amount of nesting of AWS types and transparency regarding
+    de/serialisation into more palatable Haskell values.
+    The provided lenses should be compatible with any of the major lens libraries
+    such as <http://hackage.haskell.org/package/lens lens> or
+    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+    .
+    See "Network.AWS.OpsWorks" and the <http://docs.aws.amazon.com/opsworks/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -38,7 +88,7 @@
           Network.AWS.OpsWorks
         , Network.AWS.OpsWorks.AssignInstance
         , Network.AWS.OpsWorks.AssignVolume
-        , Network.AWS.OpsWorks.AssociateElasticIp
+        , Network.AWS.OpsWorks.AssociateElasticIP
         , Network.AWS.OpsWorks.AttachElasticLoadBalancer
         , Network.AWS.OpsWorks.CloneStack
         , Network.AWS.OpsWorks.CreateApp
@@ -52,22 +102,25 @@
         , Network.AWS.OpsWorks.DeleteLayer
         , Network.AWS.OpsWorks.DeleteStack
         , Network.AWS.OpsWorks.DeleteUserProfile
-        , Network.AWS.OpsWorks.DeregisterElasticIp
+        , Network.AWS.OpsWorks.DeregisterEcsCluster
+        , Network.AWS.OpsWorks.DeregisterElasticIP
         , Network.AWS.OpsWorks.DeregisterInstance
-        , Network.AWS.OpsWorks.DeregisterRdsDbInstance
+        , Network.AWS.OpsWorks.DeregisterRDSDBInstance
         , Network.AWS.OpsWorks.DeregisterVolume
+        , Network.AWS.OpsWorks.DescribeAgentVersions
         , Network.AWS.OpsWorks.DescribeApps
         , Network.AWS.OpsWorks.DescribeCommands
         , Network.AWS.OpsWorks.DescribeDeployments
-        , Network.AWS.OpsWorks.DescribeElasticIps
+        , Network.AWS.OpsWorks.DescribeEcsClusters
+        , Network.AWS.OpsWorks.DescribeElasticIPs
         , Network.AWS.OpsWorks.DescribeElasticLoadBalancers
         , Network.AWS.OpsWorks.DescribeInstances
         , Network.AWS.OpsWorks.DescribeLayers
         , Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
         , Network.AWS.OpsWorks.DescribeMyUserProfile
         , Network.AWS.OpsWorks.DescribePermissions
-        , Network.AWS.OpsWorks.DescribeRaidArrays
-        , Network.AWS.OpsWorks.DescribeRdsDbInstances
+        , Network.AWS.OpsWorks.DescribeRAIdArrays
+        , Network.AWS.OpsWorks.DescribeRDSDBInstances
         , Network.AWS.OpsWorks.DescribeServiceErrors
         , Network.AWS.OpsWorks.DescribeStackProvisioningParameters
         , Network.AWS.OpsWorks.DescribeStackSummary
@@ -76,13 +129,14 @@
         , Network.AWS.OpsWorks.DescribeUserProfiles
         , Network.AWS.OpsWorks.DescribeVolumes
         , Network.AWS.OpsWorks.DetachElasticLoadBalancer
-        , Network.AWS.OpsWorks.DisassociateElasticIp
+        , Network.AWS.OpsWorks.DisassociateElasticIP
         , Network.AWS.OpsWorks.GetHostnameSuggestion
         , Network.AWS.OpsWorks.GrantAccess
         , Network.AWS.OpsWorks.RebootInstance
-        , Network.AWS.OpsWorks.RegisterElasticIp
+        , Network.AWS.OpsWorks.RegisterEcsCluster
+        , Network.AWS.OpsWorks.RegisterElasticIP
         , Network.AWS.OpsWorks.RegisterInstance
-        , Network.AWS.OpsWorks.RegisterRdsDbInstance
+        , Network.AWS.OpsWorks.RegisterRDSDBInstance
         , Network.AWS.OpsWorks.RegisterVolume
         , Network.AWS.OpsWorks.SetLoadBasedAutoScaling
         , Network.AWS.OpsWorks.SetPermission
@@ -95,17 +149,48 @@
         , Network.AWS.OpsWorks.UnassignInstance
         , Network.AWS.OpsWorks.UnassignVolume
         , Network.AWS.OpsWorks.UpdateApp
-        , Network.AWS.OpsWorks.UpdateElasticIp
+        , Network.AWS.OpsWorks.UpdateElasticIP
         , Network.AWS.OpsWorks.UpdateInstance
         , Network.AWS.OpsWorks.UpdateLayer
         , Network.AWS.OpsWorks.UpdateMyUserProfile
-        , Network.AWS.OpsWorks.UpdateRdsDbInstance
+        , Network.AWS.OpsWorks.UpdateRDSDBInstance
         , Network.AWS.OpsWorks.UpdateStack
         , Network.AWS.OpsWorks.UpdateUserProfile
         , Network.AWS.OpsWorks.UpdateVolume
+        , Network.AWS.OpsWorks.Waiters
 
     other-modules:
+          Network.AWS.OpsWorks.Types.Product
+        , Network.AWS.OpsWorks.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-opsworks-test
+    type:              exitcode-stdio-1.0
+    default-language:  Haskell2010
+    hs-source-dirs:    test
+    main-is:           Main.hs
+
+    ghc-options:       -Wall -threaded
+
+    -- This is not comprehensive if modules have manually been added.
+    -- It exists to ensure cabal 'somewhat' detects test module changes.
+    other-modules:
+          Test.AWS.OpsWorks
+        , Test.AWS.Gen.OpsWorks
+        , Test.AWS.OpsWorks.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-opsworks == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/OpsWorks.hs b/gen/Network/AWS/OpsWorks.hs
--- a/gen/Network/AWS/OpsWorks.hs
+++ b/gen/Network/AWS/OpsWorks.hs
@@ -1,153 +1,879 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.OpsWorks
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | AWS OpsWorks provides a simple and flexible way to create and manage stacks
--- and applications. With AWS OpsWorks, you can provision AWS resources, manage
--- their configuration, deploy applications to those resources, and monitor
--- their health.
+-- AWS OpsWorks
+--
+-- Welcome to the /AWS OpsWorks API Reference/. This guide provides
+-- descriptions, syntax, and usage examples about AWS OpsWorks actions and
+-- data types, including common parameters and error codes.
+--
+-- AWS OpsWorks is an application management service that provides an
+-- integrated experience for overseeing the complete application lifecycle.
+-- For information about this product, go to the
+-- <http://aws.amazon.com/opsworks/ AWS OpsWorks> details page.
+--
+-- __SDKs and CLI__
+--
+-- The most common way to use the AWS OpsWorks API is by using the AWS
+-- Command Line Interface (CLI) or by using one of the AWS SDKs to
+-- implement applications in your preferred language. For more information,
+-- see:
+--
+-- -   <http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html AWS CLI>
+-- -   <http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/opsworks/AWSOpsWorksClient.html AWS SDK for Java>
+-- -   <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/html/N_Amazon_OpsWorks.htm AWS SDK for .NET>
+-- -   <http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.OpsWorks.OpsWorksClient.html AWS SDK for PHP 2>
+-- -   <http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/OpsWorks/Client.html AWS SDK for Ruby>
+-- -   <http://aws.amazon.com/documentation/sdkforjavascript/ AWS SDK for Node.js>
+-- -   <http://docs.pythonboto.org/en/latest/ref/opsworks.html AWS SDK for Python(Boto)>
+--
+-- __Endpoints__
+--
+-- AWS OpsWorks supports only one endpoint,
+-- opsworks.us-east-1.amazonaws.com (HTTPS), so you must connect to that
+-- endpoint. You can then use the API to direct AWS OpsWorks to create
+-- stacks in any AWS Region.
+--
+-- __Chef Versions__
+--
+-- When you call CreateStack, CloneStack, or UpdateStack we recommend you
+-- use the 'ConfigurationManager' parameter to specify the Chef version.
+-- The recommended value for Linux stacks, which is also the default value,
+-- is currently 11.10. Windows stacks use Chef 12.2. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-chef11.html Chef Versions>.
+--
+-- You can also specify Chef 11.4 or Chef 0.9 for your Linux stack.
+-- However, Chef 0.9 has been deprecated. We do not recommend using Chef
+-- 0.9 for new stacks, and we recommend migrating your existing Chef 0.9
+-- stacks to Chef 11.10 as soon as possible.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.OpsWorks
-    ( module Network.AWS.OpsWorks.AssignInstance
-    , module Network.AWS.OpsWorks.AssignVolume
-    , module Network.AWS.OpsWorks.AssociateElasticIp
-    , module Network.AWS.OpsWorks.AttachElasticLoadBalancer
-    , module Network.AWS.OpsWorks.CloneStack
-    , module Network.AWS.OpsWorks.CreateApp
-    , module Network.AWS.OpsWorks.CreateDeployment
-    , module Network.AWS.OpsWorks.CreateInstance
+    (
+    -- * Service
+      OpsWorks
+
+    -- * Errors
+    -- $errors
+
+    -- ** ValidationException
+    , _ValidationException
+
+    -- ** ResourceNotFoundException
+    , _ResourceNotFoundException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** DescribeRDSDBInstances
+    , module Network.AWS.OpsWorks.DescribeRDSDBInstances
+
+    -- ** DeleteStack
+    , module Network.AWS.OpsWorks.DeleteStack
+
+    -- ** UpdateStack
+    , module Network.AWS.OpsWorks.UpdateStack
+
+    -- ** CreateLayer
     , module Network.AWS.OpsWorks.CreateLayer
-    , module Network.AWS.OpsWorks.CreateStack
-    , module Network.AWS.OpsWorks.CreateUserProfile
+
+    -- ** SetLoadBasedAutoScaling
+    , module Network.AWS.OpsWorks.SetLoadBasedAutoScaling
+
+    -- ** UnassignVolume
+    , module Network.AWS.OpsWorks.UnassignVolume
+
+    -- ** DeregisterRDSDBInstance
+    , module Network.AWS.OpsWorks.DeregisterRDSDBInstance
+
+    -- ** CreateInstance
+    , module Network.AWS.OpsWorks.CreateInstance
+
+    -- ** RegisterElasticIP
+    , module Network.AWS.OpsWorks.RegisterElasticIP
+
+    -- ** DescribeAgentVersions
+    , module Network.AWS.OpsWorks.DescribeAgentVersions
+
+    -- ** DescribeLayers
+    , module Network.AWS.OpsWorks.DescribeLayers
+
+    -- ** CreateDeployment
+    , module Network.AWS.OpsWorks.CreateDeployment
+
+    -- ** DeleteApp
     , module Network.AWS.OpsWorks.DeleteApp
+
+    -- ** UpdateApp
+    , module Network.AWS.OpsWorks.UpdateApp
+
+    -- ** DeleteInstance
     , module Network.AWS.OpsWorks.DeleteInstance
-    , module Network.AWS.OpsWorks.DeleteLayer
-    , module Network.AWS.OpsWorks.DeleteStack
-    , module Network.AWS.OpsWorks.DeleteUserProfile
-    , module Network.AWS.OpsWorks.DeregisterElasticIp
-    , module Network.AWS.OpsWorks.DeregisterInstance
-    , module Network.AWS.OpsWorks.DeregisterRdsDbInstance
-    , module Network.AWS.OpsWorks.DeregisterVolume
-    , module Network.AWS.OpsWorks.DescribeApps
-    , module Network.AWS.OpsWorks.DescribeCommands
-    , module Network.AWS.OpsWorks.DescribeDeployments
-    , module Network.AWS.OpsWorks.DescribeElasticIps
-    , module Network.AWS.OpsWorks.DescribeElasticLoadBalancers
-    , module Network.AWS.OpsWorks.DescribeInstances
-    , module Network.AWS.OpsWorks.DescribeLayers
-    , module Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
-    , module Network.AWS.OpsWorks.DescribeMyUserProfile
-    , module Network.AWS.OpsWorks.DescribePermissions
-    , module Network.AWS.OpsWorks.DescribeRaidArrays
-    , module Network.AWS.OpsWorks.DescribeRdsDbInstances
-    , module Network.AWS.OpsWorks.DescribeServiceErrors
-    , module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
-    , module Network.AWS.OpsWorks.DescribeStackSummary
+
+    -- ** UpdateInstance
+    , module Network.AWS.OpsWorks.UpdateInstance
+
+    -- ** DescribeStacks
     , module Network.AWS.OpsWorks.DescribeStacks
+
+    -- ** DeregisterVolume
+    , module Network.AWS.OpsWorks.DeregisterVolume
+
+    -- ** AssignInstance
+    , module Network.AWS.OpsWorks.AssignInstance
+
+    -- ** RebootInstance
+    , module Network.AWS.OpsWorks.RebootInstance
+
+    -- ** DescribeTimeBasedAutoScaling
     , module Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
-    , module Network.AWS.OpsWorks.DescribeUserProfiles
+
+    -- ** UpdateRDSDBInstance
+    , module Network.AWS.OpsWorks.UpdateRDSDBInstance
+
+    -- ** StopStack
+    , module Network.AWS.OpsWorks.StopStack
+
+    -- ** DescribeVolumes
     , module Network.AWS.OpsWorks.DescribeVolumes
-    , module Network.AWS.OpsWorks.DetachElasticLoadBalancer
-    , module Network.AWS.OpsWorks.DisassociateElasticIp
-    , module Network.AWS.OpsWorks.GetHostnameSuggestion
-    , module Network.AWS.OpsWorks.GrantAccess
-    , module Network.AWS.OpsWorks.RebootInstance
-    , module Network.AWS.OpsWorks.RegisterElasticIp
-    , module Network.AWS.OpsWorks.RegisterInstance
-    , module Network.AWS.OpsWorks.RegisterRdsDbInstance
+
+    -- ** DisassociateElasticIP
+    , module Network.AWS.OpsWorks.DisassociateElasticIP
+
+    -- ** RegisterEcsCluster
+    , module Network.AWS.OpsWorks.RegisterEcsCluster
+
+    -- ** StopInstance
+    , module Network.AWS.OpsWorks.StopInstance
+
+    -- ** RegisterVolume
     , module Network.AWS.OpsWorks.RegisterVolume
-    , module Network.AWS.OpsWorks.SetLoadBasedAutoScaling
-    , module Network.AWS.OpsWorks.SetPermission
+
+    -- ** SetTimeBasedAutoScaling
     , module Network.AWS.OpsWorks.SetTimeBasedAutoScaling
-    , module Network.AWS.OpsWorks.StartInstance
-    , module Network.AWS.OpsWorks.StartStack
-    , module Network.AWS.OpsWorks.StopInstance
-    , module Network.AWS.OpsWorks.StopStack
-    , module Network.AWS.OpsWorks.Types
-    , module Network.AWS.OpsWorks.UnassignInstance
-    , module Network.AWS.OpsWorks.UnassignVolume
-    , module Network.AWS.OpsWorks.UpdateApp
-    , module Network.AWS.OpsWorks.UpdateElasticIp
-    , module Network.AWS.OpsWorks.UpdateInstance
-    , module Network.AWS.OpsWorks.UpdateLayer
+
+    -- ** DeregisterElasticIP
+    , module Network.AWS.OpsWorks.DeregisterElasticIP
+
+    -- ** AttachElasticLoadBalancer
+    , module Network.AWS.OpsWorks.AttachElasticLoadBalancer
+
+    -- ** DescribeUserProfiles
+    , module Network.AWS.OpsWorks.DescribeUserProfiles
+
+    -- ** DescribeStackSummary
+    , module Network.AWS.OpsWorks.DescribeStackSummary
+
+    -- ** DeregisterEcsCluster
+    , module Network.AWS.OpsWorks.DeregisterEcsCluster
+
+    -- ** DescribeApps
+    , module Network.AWS.OpsWorks.DescribeApps
+
+    -- ** UpdateMyUserProfile
     , module Network.AWS.OpsWorks.UpdateMyUserProfile
-    , module Network.AWS.OpsWorks.UpdateRdsDbInstance
-    , module Network.AWS.OpsWorks.UpdateStack
+
+    -- ** DescribeInstances
+    , module Network.AWS.OpsWorks.DescribeInstances
+
+    -- ** DescribeDeployments
+    , module Network.AWS.OpsWorks.DescribeDeployments
+
+    -- ** CreateStack
+    , module Network.AWS.OpsWorks.CreateStack
+
+    -- ** GrantAccess
+    , module Network.AWS.OpsWorks.GrantAccess
+
+    -- ** DescribeElasticIPs
+    , module Network.AWS.OpsWorks.DescribeElasticIPs
+
+    -- ** DeleteLayer
+    , module Network.AWS.OpsWorks.DeleteLayer
+
+    -- ** UpdateLayer
+    , module Network.AWS.OpsWorks.UpdateLayer
+
+    -- ** CloneStack
+    , module Network.AWS.OpsWorks.CloneStack
+
+    -- ** GetHostnameSuggestion
+    , module Network.AWS.OpsWorks.GetHostnameSuggestion
+
+    -- ** CreateApp
+    , module Network.AWS.OpsWorks.CreateApp
+
+    -- ** DescribePermissions
+    , module Network.AWS.OpsWorks.DescribePermissions
+
+    -- ** UpdateElasticIP
+    , module Network.AWS.OpsWorks.UpdateElasticIP
+
+    -- ** DescribeLoadBasedAutoScaling
+    , module Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
+
+    -- ** RegisterInstance
+    , module Network.AWS.OpsWorks.RegisterInstance
+
+    -- ** AssociateElasticIP
+    , module Network.AWS.OpsWorks.AssociateElasticIP
+
+    -- ** DetachElasticLoadBalancer
+    , module Network.AWS.OpsWorks.DetachElasticLoadBalancer
+
+    -- ** DescribeStackProvisioningParameters
+    , module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
+
+    -- ** DescribeMyUserProfile
+    , module Network.AWS.OpsWorks.DescribeMyUserProfile
+
+    -- ** UnassignInstance
+    , module Network.AWS.OpsWorks.UnassignInstance
+
+    -- ** RegisterRDSDBInstance
+    , module Network.AWS.OpsWorks.RegisterRDSDBInstance
+
+    -- ** DeleteUserProfile
+    , module Network.AWS.OpsWorks.DeleteUserProfile
+
+    -- ** UpdateUserProfile
     , module Network.AWS.OpsWorks.UpdateUserProfile
+
+    -- ** DescribeServiceErrors
+    , module Network.AWS.OpsWorks.DescribeServiceErrors
+
+    -- ** StartStack
+    , module Network.AWS.OpsWorks.StartStack
+
+    -- ** CreateUserProfile
+    , module Network.AWS.OpsWorks.CreateUserProfile
+
+    -- ** DescribeCommands
+    , module Network.AWS.OpsWorks.DescribeCommands
+
+    -- ** DescribeEcsClusters
+    , module Network.AWS.OpsWorks.DescribeEcsClusters
+
+    -- ** DescribeElasticLoadBalancers
+    , module Network.AWS.OpsWorks.DescribeElasticLoadBalancers
+
+    -- ** DeregisterInstance
+    , module Network.AWS.OpsWorks.DeregisterInstance
+
+    -- ** DescribeRAIdArrays
+    , module Network.AWS.OpsWorks.DescribeRAIdArrays
+
+    -- ** SetPermission
+    , module Network.AWS.OpsWorks.SetPermission
+
+    -- ** UpdateVolume
     , module Network.AWS.OpsWorks.UpdateVolume
+
+    -- ** AssignVolume
+    , module Network.AWS.OpsWorks.AssignVolume
+
+    -- ** StartInstance
+    , module Network.AWS.OpsWorks.StartInstance
+
+    -- * Types
+
+    -- ** AppAttributesKeys
+    , AppAttributesKeys (..)
+
+    -- ** AppType
+    , AppType (..)
+
+    -- ** Architecture
+    , Architecture (..)
+
+    -- ** AutoScalingType
+    , AutoScalingType (..)
+
+    -- ** DeploymentCommandName
+    , DeploymentCommandName (..)
+
+    -- ** LayerAttributesKeys
+    , LayerAttributesKeys (..)
+
+    -- ** LayerType
+    , LayerType (..)
+
+    -- ** RootDeviceType
+    , RootDeviceType (..)
+
+    -- ** SourceType
+    , SourceType (..)
+
+    -- ** StackAttributesKeys
+    , StackAttributesKeys (..)
+
+    -- ** VirtualizationType
+    , VirtualizationType (..)
+
+    -- ** VolumeType
+    , VolumeType (..)
+
+    -- ** AgentVersion
+    , AgentVersion
+    , agentVersion
+    , avVersion
+    , avConfigurationManager
+
+    -- ** App
+    , App
+    , app
+    , appSSLConfiguration
+    , appShortname
+    , appEnableSSL
+    , appCreatedAt
+    , appEnvironment
+    , appDataSources
+    , appAppId
+    , appAppSource
+    , appName
+    , appAttributes
+    , appType
+    , appDomains
+    , appStackId
+    , appDescription
+
+    -- ** AutoScalingThresholds
+    , AutoScalingThresholds
+    , autoScalingThresholds
+    , astInstanceCount
+    , astIgnoreMetricsTime
+    , astLoadThreshold
+    , astThresholdsWaitTime
+    , astAlarms
+    , astMemoryThreshold
+    , astCPUThreshold
+
+    -- ** BlockDeviceMapping
+    , BlockDeviceMapping
+    , blockDeviceMapping
+    , bdmVirtualName
+    , bdmNoDevice
+    , bdmEBS
+    , bdmDeviceName
+
+    -- ** ChefConfiguration
+    , ChefConfiguration
+    , chefConfiguration
+    , ccBerkshelfVersion
+    , ccManageBerkshelf
+
+    -- ** Command
+    , Command
+    , command
+    , cInstanceId
+    , cDeploymentId
+    , cStatus
+    , cLogURL
+    , cCreatedAt
+    , cCommandId
+    , cExitCode
+    , cType
+    , cCompletedAt
+    , cAcknowledgedAt
+
+    -- ** DataSource
+    , DataSource
+    , dataSource
+    , dsARN
+    , dsDatabaseName
+    , dsType
+
+    -- ** Deployment
+    , Deployment
+    , deployment
+    , dDeploymentId
+    , dStatus
+    , dCommand
+    , dCreatedAt
+    , dCustomJSON
+    , dIAMUserARN
+    , dAppId
+    , dInstanceIds
+    , dCompletedAt
+    , dStackId
+    , dComment
+    , dDuration
+
+    -- ** DeploymentCommand
+    , DeploymentCommand
+    , deploymentCommand
+    , dcArgs
+    , dcName
+
+    -- ** EBSBlockDevice
+    , EBSBlockDevice
+    , ebsBlockDevice
+    , ebdDeleteOnTermination
+    , ebdVolumeSize
+    , ebdIOPS
+    , ebdVolumeType
+    , ebdSnapshotId
+
+    -- ** EcsCluster
+    , EcsCluster
+    , ecsCluster
+    , ecEcsClusterARN
+    , ecEcsClusterName
+    , ecRegisteredAt
+    , ecStackId
+
+    -- ** ElasticIP
+    , ElasticIP
+    , elasticIP
+    , eiInstanceId
+    , eiDomain
+    , eiIP
+    , eiName
+    , eiRegion
+
+    -- ** ElasticLoadBalancer
+    , ElasticLoadBalancer
+    , elasticLoadBalancer
+    , elbSubnetIds
+    , elbVPCId
+    , elbAvailabilityZones
+    , elbRegion
+    , elbElasticLoadBalancerName
+    , elbEC2InstanceIds
+    , elbStackId
+    , elbLayerId
+    , elbDNSName
+
+    -- ** EnvironmentVariable
+    , EnvironmentVariable
+    , environmentVariable
+    , evSecure
+    , evKey
+    , evValue
+
+    -- ** Instance
+    , Instance
+    , instance'
+    , iInstanceId
+    , iPrivateIP
+    , iInstallUpdatesOnBoot
+    , iReportedAgentVersion
+    , iStatus
+    , iPrivateDNS
+    , iVirtualizationType
+    , iSecurityGroupIds
+    , iSSHHostRsaKeyFingerprint
+    , iInstanceProfileARN
+    , iPlatform
+    , iHostname
+    , iEcsClusterARN
+    , iCreatedAt
+    , iSSHKeyName
+    , iEC2InstanceId
+    , iAgentVersion
+    , iRootDeviceVolumeId
+    , iSubnetId
+    , iInstanceType
+    , iInfrastructureClass
+    , iEBSOptimized
+    , iSSHHostDsaKeyFingerprint
+    , iElasticIP
+    , iOS
+    , iAvailabilityZone
+    , iLastServiceErrorId
+    , iAutoScalingType
+    , iLayerIds
+    , iArchitecture
+    , iPublicDNS
+    , iPublicIP
+    , iAMIId
+    , iReportedOS
+    , iStackId
+    , iRegisteredBy
+    , iBlockDeviceMappings
+    , iEcsContainerInstanceARN
+    , iRootDeviceType
+
+    -- ** InstanceIdentity
+    , InstanceIdentity
+    , instanceIdentity
+    , iiSignature
+    , iiDocument
+
+    -- ** InstancesCount
+    , InstancesCount
+    , instancesCount
+    , icTerminating
+    , icPending
+    , icOnline
+    , icUnassigning
+    , icRequested
+    , icRunningSetup
+    , icDeregistering
+    , icBooting
+    , icStopped
+    , icRebooting
+    , icAssigning
+    , icShuttingDown
+    , icSetupFailed
+    , icConnectionLost
+    , icTerminated
+    , icStopping
+    , icRegistered
+    , icStartFailed
+    , icRegistering
+
+    -- ** Layer
+    , Layer
+    , layer
+    , lCustomInstanceProfileARN
+    , lInstallUpdatesOnBoot
+    , lCustomSecurityGroupIds
+    , lLifecycleEventConfiguration
+    , lShortname
+    , lCreatedAt
+    , lDefaultRecipes
+    , lCustomRecipes
+    , lVolumeConfigurations
+    , lCustomJSON
+    , lEnableAutoHealing
+    , lPackages
+    , lName
+    , lAttributes
+    , lAutoAssignPublicIPs
+    , lUseEBSOptimizedInstances
+    , lType
+    , lStackId
+    , lLayerId
+    , lDefaultSecurityGroupNames
+    , lAutoAssignElasticIPs
+
+    -- ** LifecycleEventConfiguration
+    , LifecycleEventConfiguration
+    , lifecycleEventConfiguration
+    , lecShutdown
+
+    -- ** LoadBasedAutoScalingConfiguration
+    , LoadBasedAutoScalingConfiguration
+    , loadBasedAutoScalingConfiguration
+    , lbascUpScaling
+    , lbascEnable
+    , lbascDownScaling
+    , lbascLayerId
+
+    -- ** Permission
+    , Permission
+    , permission
+    , pIAMUserARN
+    , pAllowSudo
+    , pStackId
+    , pLevel
+    , pAllowSSH
+
+    -- ** RAIdArray
+    , RAIdArray
+    , rAIdArray
+    , raiaInstanceId
+    , raiaSize
+    , raiaCreatedAt
+    , raiaIOPS
+    , raiaRAIdLevel
+    , raiaDevice
+    , raiaNumberOfDisks
+    , raiaName
+    , raiaAvailabilityZone
+    , raiaRAIdArrayId
+    , raiaVolumeType
+    , raiaStackId
+    , raiaMountPoint
+
+    -- ** RDSDBInstance
+    , RDSDBInstance
+    , rdsDBInstance
+    , rdiDBUser
+    , rdiRDSDBInstanceARN
+    , rdiMissingOnRDS
+    , rdiEngine
+    , rdiAddress
+    , rdiDBInstanceIdentifier
+    , rdiRegion
+    , rdiStackId
+    , rdiDBPassword
+
+    -- ** Recipes
+    , Recipes
+    , recipes
+    , rSetup
+    , rUndeploy
+    , rShutdown
+    , rConfigure
+    , rDeploy
+
+    -- ** ReportedOS
+    , ReportedOS
+    , reportedOS
+    , roFamily
+    , roName
+    , roVersion
+
+    -- ** SSLConfiguration
+    , SSLConfiguration
+    , sslConfiguration
+    , scChain
+    , scCertificate
+    , scPrivateKey
+
+    -- ** SelfUserProfile
+    , SelfUserProfile
+    , selfUserProfile
+    , supSSHUsername
+    , supSSHPublicKey
+    , supIAMUserARN
+    , supName
+
+    -- ** ServiceError'
+    , ServiceError'
+    , serviceError'
+    , seInstanceId
+    , seCreatedAt
+    , seServiceErrorId
+    , seType
+    , seMessage
+    , seStackId
+
+    -- ** ShutdownEventConfiguration
+    , ShutdownEventConfiguration
+    , shutdownEventConfiguration
+    , secExecutionTimeout
+    , secDelayUntilElbConnectionsDrained
+
+    -- ** Source
+    , Source
+    , source
+    , sURL
+    , sUsername
+    , sSSHKey
+    , sPassword
+    , sType
+    , sRevision
+
+    -- ** Stack
+    , Stack
+    , stack
+    , sDefaultInstanceProfileARN
+    , sServiceRoleARN
+    , sARN
+    , sDefaultRootDeviceType
+    , sCreatedAt
+    , sChefConfiguration
+    , sVPCId
+    , sAgentVersion
+    , sDefaultSSHKeyName
+    , sCustomJSON
+    , sCustomCookbooksSource
+    , sDefaultAvailabilityZone
+    , sName
+    , sUseOpsworksSecurityGroups
+    , sDefaultOS
+    , sAttributes
+    , sUseCustomCookbooks
+    , sDefaultSubnetId
+    , sRegion
+    , sConfigurationManager
+    , sStackId
+    , sHostnameTheme
+
+    -- ** StackConfigurationManager
+    , StackConfigurationManager
+    , stackConfigurationManager
+    , scmName
+    , scmVersion
+
+    -- ** StackSummary
+    , StackSummary
+    , stackSummary
+    , ssARN
+    , ssAppsCount
+    , ssName
+    , ssStackId
+    , ssLayersCount
+    , ssInstancesCount
+
+    -- ** TemporaryCredential
+    , TemporaryCredential
+    , temporaryCredential
+    , tcInstanceId
+    , tcUsername
+    , tcPassword
+    , tcValidForInMinutes
+
+    -- ** TimeBasedAutoScalingConfiguration
+    , TimeBasedAutoScalingConfiguration
+    , timeBasedAutoScalingConfiguration
+    , tbascInstanceId
+    , tbascAutoScalingSchedule
+
+    -- ** UserProfile
+    , UserProfile
+    , userProfile
+    , upSSHUsername
+    , upSSHPublicKey
+    , upAllowSelfManagement
+    , upIAMUserARN
+    , upName
+
+    -- ** Volume
+    , Volume
+    , volume
+    , vInstanceId
+    , vStatus
+    , vSize
+    , vIOPS
+    , vDevice
+    , vName
+    , vAvailabilityZone
+    , vRAIdArrayId
+    , vVolumeId
+    , vRegion
+    , vVolumeType
+    , vEC2VolumeId
+    , vMountPoint
+
+    -- ** VolumeConfiguration
+    , VolumeConfiguration
+    , volumeConfiguration
+    , vcIOPS
+    , vcRAIdLevel
+    , vcVolumeType
+    , vcMountPoint
+    , vcNumberOfDisks
+    , vcSize
+
+    -- ** WeeklyAutoScalingSchedule
+    , WeeklyAutoScalingSchedule
+    , weeklyAutoScalingSchedule
+    , wassThursday
+    , wassWednesday
+    , wassSaturday
+    , wassMonday
+    , wassFriday
+    , wassSunday
+    , wassTuesday
     ) where
 
-import Network.AWS.OpsWorks.AssignInstance
-import Network.AWS.OpsWorks.AssignVolume
-import Network.AWS.OpsWorks.AssociateElasticIp
-import Network.AWS.OpsWorks.AttachElasticLoadBalancer
-import Network.AWS.OpsWorks.CloneStack
-import Network.AWS.OpsWorks.CreateApp
-import Network.AWS.OpsWorks.CreateDeployment
-import Network.AWS.OpsWorks.CreateInstance
-import Network.AWS.OpsWorks.CreateLayer
-import Network.AWS.OpsWorks.CreateStack
-import Network.AWS.OpsWorks.CreateUserProfile
-import Network.AWS.OpsWorks.DeleteApp
-import Network.AWS.OpsWorks.DeleteInstance
-import Network.AWS.OpsWorks.DeleteLayer
-import Network.AWS.OpsWorks.DeleteStack
-import Network.AWS.OpsWorks.DeleteUserProfile
-import Network.AWS.OpsWorks.DeregisterElasticIp
-import Network.AWS.OpsWorks.DeregisterInstance
-import Network.AWS.OpsWorks.DeregisterRdsDbInstance
-import Network.AWS.OpsWorks.DeregisterVolume
-import Network.AWS.OpsWorks.DescribeApps
-import Network.AWS.OpsWorks.DescribeCommands
-import Network.AWS.OpsWorks.DescribeDeployments
-import Network.AWS.OpsWorks.DescribeElasticIps
-import Network.AWS.OpsWorks.DescribeElasticLoadBalancers
-import Network.AWS.OpsWorks.DescribeInstances
-import Network.AWS.OpsWorks.DescribeLayers
-import Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
-import Network.AWS.OpsWorks.DescribeMyUserProfile
-import Network.AWS.OpsWorks.DescribePermissions
-import Network.AWS.OpsWorks.DescribeRaidArrays
-import Network.AWS.OpsWorks.DescribeRdsDbInstances
-import Network.AWS.OpsWorks.DescribeServiceErrors
-import Network.AWS.OpsWorks.DescribeStackProvisioningParameters
-import Network.AWS.OpsWorks.DescribeStackSummary
-import Network.AWS.OpsWorks.DescribeStacks
-import Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
-import Network.AWS.OpsWorks.DescribeUserProfiles
-import Network.AWS.OpsWorks.DescribeVolumes
-import Network.AWS.OpsWorks.DetachElasticLoadBalancer
-import Network.AWS.OpsWorks.DisassociateElasticIp
-import Network.AWS.OpsWorks.GetHostnameSuggestion
-import Network.AWS.OpsWorks.GrantAccess
-import Network.AWS.OpsWorks.RebootInstance
-import Network.AWS.OpsWorks.RegisterElasticIp
-import Network.AWS.OpsWorks.RegisterInstance
-import Network.AWS.OpsWorks.RegisterRdsDbInstance
-import Network.AWS.OpsWorks.RegisterVolume
-import Network.AWS.OpsWorks.SetLoadBasedAutoScaling
-import Network.AWS.OpsWorks.SetPermission
-import Network.AWS.OpsWorks.SetTimeBasedAutoScaling
-import Network.AWS.OpsWorks.StartInstance
-import Network.AWS.OpsWorks.StartStack
-import Network.AWS.OpsWorks.StopInstance
-import Network.AWS.OpsWorks.StopStack
-import Network.AWS.OpsWorks.Types
-import Network.AWS.OpsWorks.UnassignInstance
-import Network.AWS.OpsWorks.UnassignVolume
-import Network.AWS.OpsWorks.UpdateApp
-import Network.AWS.OpsWorks.UpdateElasticIp
-import Network.AWS.OpsWorks.UpdateInstance
-import Network.AWS.OpsWorks.UpdateLayer
-import Network.AWS.OpsWorks.UpdateMyUserProfile
-import Network.AWS.OpsWorks.UpdateRdsDbInstance
-import Network.AWS.OpsWorks.UpdateStack
-import Network.AWS.OpsWorks.UpdateUserProfile
-import Network.AWS.OpsWorks.UpdateVolume
+import           Network.AWS.OpsWorks.AssignInstance
+import           Network.AWS.OpsWorks.AssignVolume
+import           Network.AWS.OpsWorks.AssociateElasticIP
+import           Network.AWS.OpsWorks.AttachElasticLoadBalancer
+import           Network.AWS.OpsWorks.CloneStack
+import           Network.AWS.OpsWorks.CreateApp
+import           Network.AWS.OpsWorks.CreateDeployment
+import           Network.AWS.OpsWorks.CreateInstance
+import           Network.AWS.OpsWorks.CreateLayer
+import           Network.AWS.OpsWorks.CreateStack
+import           Network.AWS.OpsWorks.CreateUserProfile
+import           Network.AWS.OpsWorks.DeleteApp
+import           Network.AWS.OpsWorks.DeleteInstance
+import           Network.AWS.OpsWorks.DeleteLayer
+import           Network.AWS.OpsWorks.DeleteStack
+import           Network.AWS.OpsWorks.DeleteUserProfile
+import           Network.AWS.OpsWorks.DeregisterEcsCluster
+import           Network.AWS.OpsWorks.DeregisterElasticIP
+import           Network.AWS.OpsWorks.DeregisterInstance
+import           Network.AWS.OpsWorks.DeregisterRDSDBInstance
+import           Network.AWS.OpsWorks.DeregisterVolume
+import           Network.AWS.OpsWorks.DescribeAgentVersions
+import           Network.AWS.OpsWorks.DescribeApps
+import           Network.AWS.OpsWorks.DescribeCommands
+import           Network.AWS.OpsWorks.DescribeDeployments
+import           Network.AWS.OpsWorks.DescribeEcsClusters
+import           Network.AWS.OpsWorks.DescribeElasticIPs
+import           Network.AWS.OpsWorks.DescribeElasticLoadBalancers
+import           Network.AWS.OpsWorks.DescribeInstances
+import           Network.AWS.OpsWorks.DescribeLayers
+import           Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
+import           Network.AWS.OpsWorks.DescribeMyUserProfile
+import           Network.AWS.OpsWorks.DescribePermissions
+import           Network.AWS.OpsWorks.DescribeRAIdArrays
+import           Network.AWS.OpsWorks.DescribeRDSDBInstances
+import           Network.AWS.OpsWorks.DescribeServiceErrors
+import           Network.AWS.OpsWorks.DescribeStackProvisioningParameters
+import           Network.AWS.OpsWorks.DescribeStacks
+import           Network.AWS.OpsWorks.DescribeStackSummary
+import           Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
+import           Network.AWS.OpsWorks.DescribeUserProfiles
+import           Network.AWS.OpsWorks.DescribeVolumes
+import           Network.AWS.OpsWorks.DetachElasticLoadBalancer
+import           Network.AWS.OpsWorks.DisassociateElasticIP
+import           Network.AWS.OpsWorks.GetHostnameSuggestion
+import           Network.AWS.OpsWorks.GrantAccess
+import           Network.AWS.OpsWorks.RebootInstance
+import           Network.AWS.OpsWorks.RegisterEcsCluster
+import           Network.AWS.OpsWorks.RegisterElasticIP
+import           Network.AWS.OpsWorks.RegisterInstance
+import           Network.AWS.OpsWorks.RegisterRDSDBInstance
+import           Network.AWS.OpsWorks.RegisterVolume
+import           Network.AWS.OpsWorks.SetLoadBasedAutoScaling
+import           Network.AWS.OpsWorks.SetPermission
+import           Network.AWS.OpsWorks.SetTimeBasedAutoScaling
+import           Network.AWS.OpsWorks.StartInstance
+import           Network.AWS.OpsWorks.StartStack
+import           Network.AWS.OpsWorks.StopInstance
+import           Network.AWS.OpsWorks.StopStack
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.UnassignInstance
+import           Network.AWS.OpsWorks.UnassignVolume
+import           Network.AWS.OpsWorks.UpdateApp
+import           Network.AWS.OpsWorks.UpdateElasticIP
+import           Network.AWS.OpsWorks.UpdateInstance
+import           Network.AWS.OpsWorks.UpdateLayer
+import           Network.AWS.OpsWorks.UpdateMyUserProfile
+import           Network.AWS.OpsWorks.UpdateRDSDBInstance
+import           Network.AWS.OpsWorks.UpdateStack
+import           Network.AWS.OpsWorks.UpdateUserProfile
+import           Network.AWS.OpsWorks.UpdateVolume
+import           Network.AWS.OpsWorks.Waiters
+
+{- $errors
+Error matchers are designed for use with the functions provided by
+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+This allows catching (and rethrowing) service specific errors returned
+by 'OpsWorks'.
+-}
+
+{- $operations
+Some AWS operations return results that are incomplete and require subsequent
+requests in order to obtain the entire result set. The process of sending
+subsequent requests to continue where a previous request left off is called
+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+1000 objects at a time, and you must send subsequent requests with the
+appropriate Marker in order to retrieve the next page of results.
+
+Operations that have an 'AWSPager' instance can transparently perform subsequent
+requests, correctly setting Markers and other request facets to iterate through
+the entire result set of a truncated API operation. Operations which support
+this have an additional note in the documentation.
+
+Many operations have the ability to filter results on the server side. See the
+individual operation parameters for details.
+-}
+
+{- $waiters
+Waiters poll by repeatedly sending a request until some remote success condition
+configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+determines how many attempts should be made, in addition to delay and retry strategies.
+-}
diff --git a/gen/Network/AWS/OpsWorks/AssignInstance.hs b/gen/Network/AWS/OpsWorks/AssignInstance.hs
--- a/gen/Network/AWS/OpsWorks/AssignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/AssignInstance.hs
@@ -1,112 +1,123 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.AssignInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Assign a registered instance to a layer.
+-- Assign a registered instance to a layer.
 --
--- You can assign registered on-premises instances to any layer type. You can
--- assign registered Amazon EC2 instances only to custom layers. You cannot use
--- this action with instances that were created with AWS OpsWorks.  Required
--- Permissions: To use this action, an IAM user must have a Manage permissions
--- level for the stack or an attached policy that explicitly grants permissions.
--- For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- -   You can assign registered on-premises instances to any layer type.
+-- -   You can assign registered Amazon EC2 instances only to custom
+--     layers.
+-- -   You cannot use this action with instances that were created with AWS
+--     OpsWorks.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssignInstance.html>
+-- __Required Permissions__: To use this action, an AWS Identity and Access
+-- Management (IAM) user must have a Manage permissions level for the stack
+-- or an attached policy that explicitly grants permissions. For more
+-- information on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssignInstance.html AWS API Reference> for AssignInstance.
 module Network.AWS.OpsWorks.AssignInstance
     (
-    -- * Request
-      AssignInstance
-    -- ** Request constructor
-    , assignInstance
-    -- ** Request lenses
+    -- * Creating a Request
+      assignInstance
+    , AssignInstance
+    -- * Request Lenses
     , aiInstanceId
     , aiLayerIds
 
-    -- * Response
-    , AssignInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , assignInstanceResponse
+    , AssignInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AssignInstance = AssignInstance
-    { _aiInstanceId :: Text
-    , _aiLayerIds   :: List "LayerIds" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'assignInstance' smart constructor.
+data AssignInstance = AssignInstance'
+    { _aiInstanceId :: !Text
+    , _aiLayerIds   :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AssignInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AssignInstance' with the minimum fields required to make a request.
 --
--- * 'aiInstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'aiLayerIds' @::@ ['Text']
+-- * 'aiInstanceId'
 --
-assignInstance :: Text -- ^ 'aiInstanceId'
-               -> AssignInstance
-assignInstance p1 = AssignInstance
-    { _aiInstanceId = p1
-    , _aiLayerIds   = mempty
+-- * 'aiLayerIds'
+assignInstance
+    :: Text -- ^ 'aiInstanceId'
+    -> AssignInstance
+assignInstance pInstanceId_ =
+    AssignInstance'
+    { _aiInstanceId = pInstanceId_
+    , _aiLayerIds = mempty
     }
 
 -- | The instance ID.
 aiInstanceId :: Lens' AssignInstance Text
-aiInstanceId = lens _aiInstanceId (\s a -> s { _aiInstanceId = a })
+aiInstanceId = lens _aiInstanceId (\ s a -> s{_aiInstanceId = a});
 
--- | The layer ID, which must correspond to a custom layer. You cannot assign a
--- registered instance to a built-in layer.
+-- | The layer ID, which must correspond to a custom layer. You cannot assign
+-- a registered instance to a built-in layer.
 aiLayerIds :: Lens' AssignInstance [Text]
-aiLayerIds = lens _aiLayerIds (\s a -> s { _aiLayerIds = a }) . _List
+aiLayerIds = lens _aiLayerIds (\ s a -> s{_aiLayerIds = a}) . _Coerce;
 
-data AssignInstanceResponse = AssignInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AssignInstance where
+        type Sv AssignInstance = OpsWorks
+        type Rs AssignInstance = AssignInstanceResponse
+        request = postJSON
+        response = receiveNull AssignInstanceResponse'
 
--- | 'AssignInstanceResponse' constructor.
-assignInstanceResponse :: AssignInstanceResponse
-assignInstanceResponse = AssignInstanceResponse
+instance ToHeaders AssignInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.AssignInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AssignInstance where
+        toJSON AssignInstance'{..}
+          = object
+              ["InstanceId" .= _aiInstanceId,
+               "LayerIds" .= _aiLayerIds]
+
 instance ToPath AssignInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AssignInstance where
-    toQuery = const mempty
-
-instance ToHeaders AssignInstance
-
-instance ToJSON AssignInstance where
-    toJSON AssignInstance{..} = object
-        [ "InstanceId" .= _aiInstanceId
-        , "LayerIds"   .= _aiLayerIds
-        ]
+        toQuery = const mempty
 
-instance AWSRequest AssignInstance where
-    type Sv AssignInstance = OpsWorks
-    type Rs AssignInstance = AssignInstanceResponse
+-- | /See:/ 'assignInstanceResponse' smart constructor.
+data AssignInstanceResponse =
+    AssignInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "AssignInstance"
-    response = nullResponse AssignInstanceResponse
+-- | Creates a value of 'AssignInstanceResponse' with the minimum fields required to make a request.
+--
+assignInstanceResponse
+    :: AssignInstanceResponse
+assignInstanceResponse = AssignInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/AssignVolume.hs b/gen/Network/AWS/OpsWorks/AssignVolume.hs
--- a/gen/Network/AWS/OpsWorks/AssignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/AssignVolume.hs
@@ -1,110 +1,121 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.AssignVolume
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Assigns one of the stack's registered Amazon EBS volumes to a specified
--- instance. The volume must first be registered with the stack by calling 'RegisterVolume'. After you register the volume, you must call 'UpdateVolume' to specify a
--- mount point before calling 'AssignVolume'. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html ResourceManagement>.
+-- Assigns one of the stack\'s registered Amazon EBS volumes to a specified
+-- instance. The volume must first be registered with the stack by calling
+-- RegisterVolume. After you register the volume, you must call
+-- UpdateVolume to specify a mount point before calling 'AssignVolume'. For
+-- more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssignVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssignVolume.html AWS API Reference> for AssignVolume.
 module Network.AWS.OpsWorks.AssignVolume
     (
-    -- * Request
-      AssignVolume
-    -- ** Request constructor
-    , assignVolume
-    -- ** Request lenses
+    -- * Creating a Request
+      assignVolume
+    , AssignVolume
+    -- * Request Lenses
     , avInstanceId
     , avVolumeId
 
-    -- * Response
-    , AssignVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , assignVolumeResponse
+    , AssignVolumeResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AssignVolume = AssignVolume
-    { _avInstanceId :: Maybe Text
-    , _avVolumeId   :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'assignVolume' smart constructor.
+data AssignVolume = AssignVolume'
+    { _avInstanceId :: !(Maybe Text)
+    , _avVolumeId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AssignVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AssignVolume' with the minimum fields required to make a request.
 --
--- * 'avInstanceId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'avVolumeId' @::@ 'Text'
+-- * 'avInstanceId'
 --
-assignVolume :: Text -- ^ 'avVolumeId'
-             -> AssignVolume
-assignVolume p1 = AssignVolume
-    { _avVolumeId   = p1
-    , _avInstanceId = Nothing
+-- * 'avVolumeId'
+assignVolume
+    :: Text -- ^ 'avVolumeId'
+    -> AssignVolume
+assignVolume pVolumeId_ =
+    AssignVolume'
+    { _avInstanceId = Nothing
+    , _avVolumeId = pVolumeId_
     }
 
 -- | The instance ID.
 avInstanceId :: Lens' AssignVolume (Maybe Text)
-avInstanceId = lens _avInstanceId (\s a -> s { _avInstanceId = a })
+avInstanceId = lens _avInstanceId (\ s a -> s{_avInstanceId = a});
 
 -- | The volume ID.
 avVolumeId :: Lens' AssignVolume Text
-avVolumeId = lens _avVolumeId (\s a -> s { _avVolumeId = a })
+avVolumeId = lens _avVolumeId (\ s a -> s{_avVolumeId = a});
 
-data AssignVolumeResponse = AssignVolumeResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AssignVolume where
+        type Sv AssignVolume = OpsWorks
+        type Rs AssignVolume = AssignVolumeResponse
+        request = postJSON
+        response = receiveNull AssignVolumeResponse'
 
--- | 'AssignVolumeResponse' constructor.
-assignVolumeResponse :: AssignVolumeResponse
-assignVolumeResponse = AssignVolumeResponse
+instance ToHeaders AssignVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.AssignVolume" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AssignVolume where
+        toJSON AssignVolume'{..}
+          = object
+              ["InstanceId" .= _avInstanceId,
+               "VolumeId" .= _avVolumeId]
+
 instance ToPath AssignVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AssignVolume where
-    toQuery = const mempty
-
-instance ToHeaders AssignVolume
-
-instance ToJSON AssignVolume where
-    toJSON AssignVolume{..} = object
-        [ "VolumeId"   .= _avVolumeId
-        , "InstanceId" .= _avInstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest AssignVolume where
-    type Sv AssignVolume = OpsWorks
-    type Rs AssignVolume = AssignVolumeResponse
+-- | /See:/ 'assignVolumeResponse' smart constructor.
+data AssignVolumeResponse =
+    AssignVolumeResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "AssignVolume"
-    response = nullResponse AssignVolumeResponse
+-- | Creates a value of 'AssignVolumeResponse' with the minimum fields required to make a request.
+--
+assignVolumeResponse
+    :: AssignVolumeResponse
+assignVolumeResponse = AssignVolumeResponse'
diff --git a/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs b/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/AssociateElasticIP.hs
@@ -0,0 +1,121 @@
+{-# 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.OpsWorks.AssociateElasticIP
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Associates one of the stack\'s registered Elastic IP addresses with a
+-- specified instance. The address must first be registered with the stack
+-- by calling RegisterElasticIp. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssociateElasticIP.html AWS API Reference> for AssociateElasticIP.
+module Network.AWS.OpsWorks.AssociateElasticIP
+    (
+    -- * Creating a Request
+      associateElasticIP
+    , AssociateElasticIP
+    -- * Request Lenses
+    , aeiInstanceId
+    , aeiElasticIP
+
+    -- * Destructuring the Response
+    , associateElasticIPResponse
+    , AssociateElasticIPResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'associateElasticIP' smart constructor.
+data AssociateElasticIP = AssociateElasticIP'
+    { _aeiInstanceId :: !(Maybe Text)
+    , _aeiElasticIP  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssociateElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aeiInstanceId'
+--
+-- * 'aeiElasticIP'
+associateElasticIP
+    :: Text -- ^ 'aeiElasticIP'
+    -> AssociateElasticIP
+associateElasticIP pElasticIP_ =
+    AssociateElasticIP'
+    { _aeiInstanceId = Nothing
+    , _aeiElasticIP = pElasticIP_
+    }
+
+-- | The instance ID.
+aeiInstanceId :: Lens' AssociateElasticIP (Maybe Text)
+aeiInstanceId = lens _aeiInstanceId (\ s a -> s{_aeiInstanceId = a});
+
+-- | The Elastic IP address.
+aeiElasticIP :: Lens' AssociateElasticIP Text
+aeiElasticIP = lens _aeiElasticIP (\ s a -> s{_aeiElasticIP = a});
+
+instance AWSRequest AssociateElasticIP where
+        type Sv AssociateElasticIP = OpsWorks
+        type Rs AssociateElasticIP =
+             AssociateElasticIPResponse
+        request = postJSON
+        response = receiveNull AssociateElasticIPResponse'
+
+instance ToHeaders AssociateElasticIP where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.AssociateElasticIp" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON AssociateElasticIP where
+        toJSON AssociateElasticIP'{..}
+          = object
+              ["InstanceId" .= _aeiInstanceId,
+               "ElasticIp" .= _aeiElasticIP]
+
+instance ToPath AssociateElasticIP where
+        toPath = const "/"
+
+instance ToQuery AssociateElasticIP where
+        toQuery = const mempty
+
+-- | /See:/ 'associateElasticIPResponse' smart constructor.
+data AssociateElasticIPResponse =
+    AssociateElasticIPResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AssociateElasticIPResponse' with the minimum fields required to make a request.
+--
+associateElasticIPResponse
+    :: AssociateElasticIPResponse
+associateElasticIPResponse = AssociateElasticIPResponse'
diff --git a/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs b/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/AssociateElasticIp.hs
+++ /dev/null
@@ -1,110 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.AssociateElasticIp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Associates one of the stack's registered Elastic IP addresses with a
--- specified instance. The address must first be registered with the stack by
--- calling 'RegisterElasticIp'. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AssociateElasticIp.html>
-module Network.AWS.OpsWorks.AssociateElasticIp
-    (
-    -- * Request
-      AssociateElasticIp
-    -- ** Request constructor
-    , associateElasticIp
-    -- ** Request lenses
-    , aeiElasticIp
-    , aeiInstanceId
-
-    -- * Response
-    , AssociateElasticIpResponse
-    -- ** Response constructor
-    , associateElasticIpResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data AssociateElasticIp = AssociateElasticIp
-    { _aeiElasticIp  :: Text
-    , _aeiInstanceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AssociateElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aeiElasticIp' @::@ 'Text'
---
--- * 'aeiInstanceId' @::@ 'Maybe' 'Text'
---
-associateElasticIp :: Text -- ^ 'aeiElasticIp'
-                   -> AssociateElasticIp
-associateElasticIp p1 = AssociateElasticIp
-    { _aeiElasticIp  = p1
-    , _aeiInstanceId = Nothing
-    }
-
--- | The Elastic IP address.
-aeiElasticIp :: Lens' AssociateElasticIp Text
-aeiElasticIp = lens _aeiElasticIp (\s a -> s { _aeiElasticIp = a })
-
--- | The instance ID.
-aeiInstanceId :: Lens' AssociateElasticIp (Maybe Text)
-aeiInstanceId = lens _aeiInstanceId (\s a -> s { _aeiInstanceId = a })
-
-data AssociateElasticIpResponse = AssociateElasticIpResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'AssociateElasticIpResponse' constructor.
-associateElasticIpResponse :: AssociateElasticIpResponse
-associateElasticIpResponse = AssociateElasticIpResponse
-
-instance ToPath AssociateElasticIp where
-    toPath = const "/"
-
-instance ToQuery AssociateElasticIp where
-    toQuery = const mempty
-
-instance ToHeaders AssociateElasticIp
-
-instance ToJSON AssociateElasticIp where
-    toJSON AssociateElasticIp{..} = object
-        [ "ElasticIp"  .= _aeiElasticIp
-        , "InstanceId" .= _aeiInstanceId
-        ]
-
-instance AWSRequest AssociateElasticIp where
-    type Sv AssociateElasticIp = OpsWorks
-    type Rs AssociateElasticIp = AssociateElasticIpResponse
-
-    request  = post "AssociateElasticIp"
-    response = nullResponse AssociateElasticIpResponse
diff --git a/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs b/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
--- a/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
+++ b/gen/Network/AWS/OpsWorks/AttachElasticLoadBalancer.hs
@@ -1,116 +1,129 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.AttachElasticLoadBalancer
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Attaches an Elastic Load Balancing load balancer to a specified layer. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/load-balancer-elb.html Elastic Load Balancing>.
+-- Attaches an Elastic Load Balancing load balancer to a specified layer.
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/load-balancer-elb.html Elastic Load Balancing>.
 --
 -- You must create the Elastic Load Balancing instance separately, by using
--- the Elastic Load Balancing console, API, or CLI. For more information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html Elastic Load Balancing Developer Guide>.
+-- the Elastic Load Balancing console, API, or CLI. For more information,
+-- see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/Welcome.html Elastic Load Balancing Developer Guide>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AttachElasticLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_AttachElasticLoadBalancer.html AWS API Reference> for AttachElasticLoadBalancer.
 module Network.AWS.OpsWorks.AttachElasticLoadBalancer
     (
-    -- * Request
-      AttachElasticLoadBalancer
-    -- ** Request constructor
-    , attachElasticLoadBalancer
-    -- ** Request lenses
+    -- * Creating a Request
+      attachElasticLoadBalancer
+    , AttachElasticLoadBalancer
+    -- * Request Lenses
     , aelbElasticLoadBalancerName
     , aelbLayerId
 
-    -- * Response
-    , AttachElasticLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , attachElasticLoadBalancerResponse
+    , AttachElasticLoadBalancerResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data AttachElasticLoadBalancer = AttachElasticLoadBalancer
-    { _aelbElasticLoadBalancerName :: Text
-    , _aelbLayerId                 :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'attachElasticLoadBalancer' smart constructor.
+data AttachElasticLoadBalancer = AttachElasticLoadBalancer'
+    { _aelbElasticLoadBalancerName :: !Text
+    , _aelbLayerId                 :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AttachElasticLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AttachElasticLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'aelbElasticLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'aelbLayerId' @::@ 'Text'
+-- * 'aelbElasticLoadBalancerName'
 --
-attachElasticLoadBalancer :: Text -- ^ 'aelbElasticLoadBalancerName'
-                          -> Text -- ^ 'aelbLayerId'
-                          -> AttachElasticLoadBalancer
-attachElasticLoadBalancer p1 p2 = AttachElasticLoadBalancer
-    { _aelbElasticLoadBalancerName = p1
-    , _aelbLayerId                 = p2
+-- * 'aelbLayerId'
+attachElasticLoadBalancer
+    :: Text -- ^ 'aelbElasticLoadBalancerName'
+    -> Text -- ^ 'aelbLayerId'
+    -> AttachElasticLoadBalancer
+attachElasticLoadBalancer pElasticLoadBalancerName_ pLayerId_ =
+    AttachElasticLoadBalancer'
+    { _aelbElasticLoadBalancerName = pElasticLoadBalancerName_
+    , _aelbLayerId = pLayerId_
     }
 
--- | The Elastic Load Balancing instance's name.
+-- | The Elastic Load Balancing instance\'s name.
 aelbElasticLoadBalancerName :: Lens' AttachElasticLoadBalancer Text
-aelbElasticLoadBalancerName =
-    lens _aelbElasticLoadBalancerName
-        (\s a -> s { _aelbElasticLoadBalancerName = a })
+aelbElasticLoadBalancerName = lens _aelbElasticLoadBalancerName (\ s a -> s{_aelbElasticLoadBalancerName = a});
 
 -- | The ID of the layer that the Elastic Load Balancing instance is to be
 -- attached to.
 aelbLayerId :: Lens' AttachElasticLoadBalancer Text
-aelbLayerId = lens _aelbLayerId (\s a -> s { _aelbLayerId = a })
+aelbLayerId = lens _aelbLayerId (\ s a -> s{_aelbLayerId = a});
 
-data AttachElasticLoadBalancerResponse = AttachElasticLoadBalancerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest AttachElasticLoadBalancer where
+        type Sv AttachElasticLoadBalancer = OpsWorks
+        type Rs AttachElasticLoadBalancer =
+             AttachElasticLoadBalancerResponse
+        request = postJSON
+        response
+          = receiveNull AttachElasticLoadBalancerResponse'
 
--- | 'AttachElasticLoadBalancerResponse' constructor.
-attachElasticLoadBalancerResponse :: AttachElasticLoadBalancerResponse
-attachElasticLoadBalancerResponse = AttachElasticLoadBalancerResponse
+instance ToHeaders AttachElasticLoadBalancer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.AttachElasticLoadBalancer" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AttachElasticLoadBalancer where
+        toJSON AttachElasticLoadBalancer'{..}
+          = object
+              ["ElasticLoadBalancerName" .=
+                 _aelbElasticLoadBalancerName,
+               "LayerId" .= _aelbLayerId]
+
 instance ToPath AttachElasticLoadBalancer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AttachElasticLoadBalancer where
-    toQuery = const mempty
-
-instance ToHeaders AttachElasticLoadBalancer
-
-instance ToJSON AttachElasticLoadBalancer where
-    toJSON AttachElasticLoadBalancer{..} = object
-        [ "ElasticLoadBalancerName" .= _aelbElasticLoadBalancerName
-        , "LayerId"                 .= _aelbLayerId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest AttachElasticLoadBalancer where
-    type Sv AttachElasticLoadBalancer = OpsWorks
-    type Rs AttachElasticLoadBalancer = AttachElasticLoadBalancerResponse
+-- | /See:/ 'attachElasticLoadBalancerResponse' smart constructor.
+data AttachElasticLoadBalancerResponse =
+    AttachElasticLoadBalancerResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "AttachElasticLoadBalancer"
-    response = nullResponse AttachElasticLoadBalancerResponse
+-- | Creates a value of 'AttachElasticLoadBalancerResponse' with the minimum fields required to make a request.
+--
+attachElasticLoadBalancerResponse
+    :: AttachElasticLoadBalancerResponse
+attachElasticLoadBalancerResponse = AttachElasticLoadBalancerResponse'
diff --git a/gen/Network/AWS/OpsWorks/CloneStack.hs b/gen/Network/AWS/OpsWorks/CloneStack.hs
--- a/gen/Network/AWS/OpsWorks/CloneStack.hs
+++ b/gen/Network/AWS/OpsWorks/CloneStack.hs
@@ -1,409 +1,498 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CloneStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a clone of a specified stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-cloning.html Clone a Stack>.
+-- Creates a clone of a specified stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-cloning.html Clone a Stack>.
+-- By default, all parameters are set to the values used by the parent
+-- stack.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CloneStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CloneStack.html AWS API Reference> for CloneStack.
 module Network.AWS.OpsWorks.CloneStack
     (
-    -- * Request
-      CloneStack
-    -- ** Request constructor
-    , cloneStack
-    -- ** Request lenses
-    , cs1Attributes
-    , cs1ChefConfiguration
-    , cs1CloneAppIds
-    , cs1ClonePermissions
-    , cs1ConfigurationManager
-    , cs1CustomCookbooksSource
-    , cs1CustomJson
-    , cs1DefaultAvailabilityZone
-    , cs1DefaultInstanceProfileArn
-    , cs1DefaultOs
-    , cs1DefaultRootDeviceType
-    , cs1DefaultSshKeyName
-    , cs1DefaultSubnetId
-    , cs1HostnameTheme
-    , cs1Name
-    , cs1Region
-    , cs1ServiceRoleArn
-    , cs1SourceStackId
-    , cs1UseCustomCookbooks
-    , cs1UseOpsworksSecurityGroups
-    , cs1VpcId
+    -- * Creating a Request
+      cloneStack
+    , CloneStack
+    -- * Request Lenses
+    , cCloneAppIds
+    , cDefaultInstanceProfileARN
+    , cDefaultRootDeviceType
+    , cChefConfiguration
+    , cVPCId
+    , cAgentVersion
+    , cDefaultSSHKeyName
+    , cCustomJSON
+    , cClonePermissions
+    , cCustomCookbooksSource
+    , cDefaultAvailabilityZone
+    , cName
+    , cUseOpsworksSecurityGroups
+    , cDefaultOS
+    , cAttributes
+    , cUseCustomCookbooks
+    , cDefaultSubnetId
+    , cRegion
+    , cConfigurationManager
+    , cHostnameTheme
+    , cSourceStackId
+    , cServiceRoleARN
 
-    -- * Response
-    , CloneStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , cloneStackResponse
-    -- ** Response lenses
-    , csrStackId
+    , CloneStackResponse
+    -- * Response Lenses
+    , csrsStackId
+    , csrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CloneStack = CloneStack
-    { _cs1Attributes                :: Map StackAttributesKeys Text
-    , _cs1ChefConfiguration         :: Maybe ChefConfiguration
-    , _cs1CloneAppIds               :: List "CloneAppIds" Text
-    , _cs1ClonePermissions          :: Maybe Bool
-    , _cs1ConfigurationManager      :: Maybe StackConfigurationManager
-    , _cs1CustomCookbooksSource     :: Maybe Source
-    , _cs1CustomJson                :: Maybe Text
-    , _cs1DefaultAvailabilityZone   :: Maybe Text
-    , _cs1DefaultInstanceProfileArn :: Maybe Text
-    , _cs1DefaultOs                 :: Maybe Text
-    , _cs1DefaultRootDeviceType     :: Maybe RootDeviceType
-    , _cs1DefaultSshKeyName         :: Maybe Text
-    , _cs1DefaultSubnetId           :: Maybe Text
-    , _cs1HostnameTheme             :: Maybe Text
-    , _cs1Name                      :: Maybe Text
-    , _cs1Region                    :: Maybe Text
-    , _cs1ServiceRoleArn            :: Text
-    , _cs1SourceStackId             :: Text
-    , _cs1UseCustomCookbooks        :: Maybe Bool
-    , _cs1UseOpsworksSecurityGroups :: Maybe Bool
-    , _cs1VpcId                     :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'cloneStack' smart constructor.
+data CloneStack = CloneStack'
+    { _cCloneAppIds               :: !(Maybe [Text])
+    , _cDefaultInstanceProfileARN :: !(Maybe Text)
+    , _cDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+    , _cChefConfiguration         :: !(Maybe ChefConfiguration)
+    , _cVPCId                     :: !(Maybe Text)
+    , _cAgentVersion              :: !(Maybe Text)
+    , _cDefaultSSHKeyName         :: !(Maybe Text)
+    , _cCustomJSON                :: !(Maybe Text)
+    , _cClonePermissions          :: !(Maybe Bool)
+    , _cCustomCookbooksSource     :: !(Maybe Source)
+    , _cDefaultAvailabilityZone   :: !(Maybe Text)
+    , _cName                      :: !(Maybe Text)
+    , _cUseOpsworksSecurityGroups :: !(Maybe Bool)
+    , _cDefaultOS                 :: !(Maybe Text)
+    , _cAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+    , _cUseCustomCookbooks        :: !(Maybe Bool)
+    , _cDefaultSubnetId           :: !(Maybe Text)
+    , _cRegion                    :: !(Maybe Text)
+    , _cConfigurationManager      :: !(Maybe StackConfigurationManager)
+    , _cHostnameTheme             :: !(Maybe Text)
+    , _cSourceStackId             :: !Text
+    , _cServiceRoleARN            :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CloneStack' constructor.
+-- | Creates a value of 'CloneStack' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cs1Attributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
+-- * 'cCloneAppIds'
 --
--- * 'cs1ChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
+-- * 'cDefaultInstanceProfileARN'
 --
--- * 'cs1CloneAppIds' @::@ ['Text']
+-- * 'cDefaultRootDeviceType'
 --
--- * 'cs1ClonePermissions' @::@ 'Maybe' 'Bool'
+-- * 'cChefConfiguration'
 --
--- * 'cs1ConfigurationManager' @::@ 'Maybe' 'StackConfigurationManager'
+-- * 'cVPCId'
 --
--- * 'cs1CustomCookbooksSource' @::@ 'Maybe' 'Source'
+-- * 'cAgentVersion'
 --
--- * 'cs1CustomJson' @::@ 'Maybe' 'Text'
+-- * 'cDefaultSSHKeyName'
 --
--- * 'cs1DefaultAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'cCustomJSON'
 --
--- * 'cs1DefaultInstanceProfileArn' @::@ 'Maybe' 'Text'
+-- * 'cClonePermissions'
 --
--- * 'cs1DefaultOs' @::@ 'Maybe' 'Text'
+-- * 'cCustomCookbooksSource'
 --
--- * 'cs1DefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
+-- * 'cDefaultAvailabilityZone'
 --
--- * 'cs1DefaultSshKeyName' @::@ 'Maybe' 'Text'
+-- * 'cName'
 --
--- * 'cs1DefaultSubnetId' @::@ 'Maybe' 'Text'
+-- * 'cUseOpsworksSecurityGroups'
 --
--- * 'cs1HostnameTheme' @::@ 'Maybe' 'Text'
+-- * 'cDefaultOS'
 --
--- * 'cs1Name' @::@ 'Maybe' 'Text'
+-- * 'cAttributes'
 --
--- * 'cs1Region' @::@ 'Maybe' 'Text'
+-- * 'cUseCustomCookbooks'
 --
--- * 'cs1ServiceRoleArn' @::@ 'Text'
+-- * 'cDefaultSubnetId'
 --
--- * 'cs1SourceStackId' @::@ 'Text'
+-- * 'cRegion'
 --
--- * 'cs1UseCustomCookbooks' @::@ 'Maybe' 'Bool'
+-- * 'cConfigurationManager'
 --
--- * 'cs1UseOpsworksSecurityGroups' @::@ 'Maybe' 'Bool'
+-- * 'cHostnameTheme'
 --
--- * 'cs1VpcId' @::@ 'Maybe' 'Text'
+-- * 'cSourceStackId'
 --
-cloneStack :: Text -- ^ 'cs1SourceStackId'
-           -> Text -- ^ 'cs1ServiceRoleArn'
-           -> CloneStack
-cloneStack p1 p2 = CloneStack
-    { _cs1SourceStackId             = p1
-    , _cs1ServiceRoleArn            = p2
-    , _cs1Name                      = Nothing
-    , _cs1Region                    = Nothing
-    , _cs1VpcId                     = Nothing
-    , _cs1Attributes                = mempty
-    , _cs1DefaultInstanceProfileArn = Nothing
-    , _cs1DefaultOs                 = Nothing
-    , _cs1HostnameTheme             = Nothing
-    , _cs1DefaultAvailabilityZone   = Nothing
-    , _cs1DefaultSubnetId           = Nothing
-    , _cs1CustomJson                = Nothing
-    , _cs1ConfigurationManager      = Nothing
-    , _cs1ChefConfiguration         = Nothing
-    , _cs1UseCustomCookbooks        = Nothing
-    , _cs1UseOpsworksSecurityGroups = Nothing
-    , _cs1CustomCookbooksSource     = Nothing
-    , _cs1DefaultSshKeyName         = Nothing
-    , _cs1ClonePermissions          = Nothing
-    , _cs1CloneAppIds               = mempty
-    , _cs1DefaultRootDeviceType     = Nothing
+-- * 'cServiceRoleARN'
+cloneStack
+    :: Text -- ^ 'cSourceStackId'
+    -> Text -- ^ 'cServiceRoleARN'
+    -> CloneStack
+cloneStack pSourceStackId_ pServiceRoleARN_ =
+    CloneStack'
+    { _cCloneAppIds = Nothing
+    , _cDefaultInstanceProfileARN = Nothing
+    , _cDefaultRootDeviceType = Nothing
+    , _cChefConfiguration = Nothing
+    , _cVPCId = Nothing
+    , _cAgentVersion = Nothing
+    , _cDefaultSSHKeyName = Nothing
+    , _cCustomJSON = Nothing
+    , _cClonePermissions = Nothing
+    , _cCustomCookbooksSource = Nothing
+    , _cDefaultAvailabilityZone = Nothing
+    , _cName = Nothing
+    , _cUseOpsworksSecurityGroups = Nothing
+    , _cDefaultOS = Nothing
+    , _cAttributes = Nothing
+    , _cUseCustomCookbooks = Nothing
+    , _cDefaultSubnetId = Nothing
+    , _cRegion = Nothing
+    , _cConfigurationManager = Nothing
+    , _cHostnameTheme = Nothing
+    , _cSourceStackId = pSourceStackId_
+    , _cServiceRoleARN = pServiceRoleARN_
     }
 
--- | A list of stack attributes and values as key/value pairs to be added to the
--- cloned stack.
-cs1Attributes :: Lens' CloneStack (HashMap StackAttributesKeys Text)
-cs1Attributes = lens _cs1Attributes (\s a -> s { _cs1Attributes = a }) . _Map
-
--- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf and the
--- Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create aNew Stack>.
-cs1ChefConfiguration :: Lens' CloneStack (Maybe ChefConfiguration)
-cs1ChefConfiguration =
-    lens _cs1ChefConfiguration (\s a -> s { _cs1ChefConfiguration = a })
-
 -- | A list of source stack app IDs to be included in the cloned stack.
-cs1CloneAppIds :: Lens' CloneStack [Text]
-cs1CloneAppIds = lens _cs1CloneAppIds (\s a -> s { _cs1CloneAppIds = a }) . _List
+cCloneAppIds :: Lens' CloneStack [Text]
+cCloneAppIds = lens _cCloneAppIds (\ s a -> s{_cCloneAppIds = a}) . _Default . _Coerce;
 
--- | Whether to clone the source stack's permissions.
-cs1ClonePermissions :: Lens' CloneStack (Maybe Bool)
-cs1ClonePermissions =
-    lens _cs1ClonePermissions (\s a -> s { _cs1ClonePermissions = a })
+-- | The Amazon Resource Name (ARN) of an IAM profile that is the default
+-- profile for all of the stack\'s EC2 instances. For more information
+-- about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+cDefaultInstanceProfileARN :: Lens' CloneStack (Maybe Text)
+cDefaultInstanceProfileARN = lens _cDefaultInstanceProfileARN (\ s a -> s{_cDefaultInstanceProfileARN = a});
 
--- | The configuration manager. When you clone a stack we recommend that you use
--- the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10.
--- The default value is currently 11.4.
-cs1ConfigurationManager :: Lens' CloneStack (Maybe StackConfigurationManager)
-cs1ConfigurationManager =
-    lens _cs1ConfigurationManager (\s a -> s { _cs1ConfigurationManager = a })
+-- | The default root device type. This value is used by default for all
+-- instances in the cloned stack, but you can override it when you create
+-- an instance. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+cDefaultRootDeviceType :: Lens' CloneStack (Maybe RootDeviceType)
+cDefaultRootDeviceType = lens _cDefaultRootDeviceType (\ s a -> s{_cDefaultRootDeviceType = a});
 
-cs1CustomCookbooksSource :: Lens' CloneStack (Maybe Source)
-cs1CustomCookbooksSource =
-    lens _cs1CustomCookbooksSource
-        (\s a -> s { _cs1CustomCookbooksSource = a })
+-- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf
+-- and the Berkshelf version on Chef 11.10 stacks. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+cChefConfiguration :: Lens' CloneStack (Maybe ChefConfiguration)
+cChefConfiguration = lens _cChefConfiguration (\ s a -> s{_cChefConfiguration = a});
 
--- | A string that contains user-defined, custom JSON. It is used to override the
--- corresponding default stack configuration JSON values. The string should be
--- in the following format and must escape characters such as '"'.:
+-- | The ID of the VPC that the cloned stack is to be launched into. It must
+-- be in the specified region. All instances are launched into this VPC,
+-- and you cannot change the ID later.
 --
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
+-- -   If your account supports EC2 Classic, the default value is no VPC.
+-- -   If your account does not support EC2 Classic, the default value is
+--     the default VPC for the specified region.
 --
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>
-cs1CustomJson :: Lens' CloneStack (Maybe Text)
-cs1CustomJson = lens _cs1CustomJson (\s a -> s { _cs1CustomJson = a })
+-- If the VPC ID corresponds to a default VPC and you have specified either
+-- the 'DefaultAvailabilityZone' or the 'DefaultSubnetId' parameter only,
+-- AWS OpsWorks infers the value of the other parameter. If you specify
+-- neither parameter, AWS OpsWorks sets these parameters to the first valid
+-- Availability Zone for the specified region and the corresponding default
+-- VPC subnet ID, respectively.
+--
+-- If you specify a nondefault VPC ID, note the following:
+--
+-- -   It must belong to a VPC in your account that is in the specified
+--     region.
+-- -   You must specify a value for 'DefaultSubnetId'.
+--
+-- For more information on how to use AWS OpsWorks with a VPC, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC>.
+-- For more information on default VPC and EC2 Classic, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms>.
+cVPCId :: Lens' CloneStack (Maybe Text)
+cVPCId = lens _cVPCId (\ s a -> s{_cVPCId = a});
 
--- | The cloned stack's default Availability Zone, which must be in the specified
--- region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>. If you also specify
--- a value for 'DefaultSubnetId', the subnet must be in the same zone. For more
--- information, see the 'VpcId' parameter description.
-cs1DefaultAvailabilityZone :: Lens' CloneStack (Maybe Text)
-cs1DefaultAvailabilityZone =
-    lens _cs1DefaultAvailabilityZone
-        (\s a -> s { _cs1DefaultAvailabilityZone = a })
+-- | The default AWS OpsWorks agent version. You have the following options:
+--
+-- -   Auto-update - Set this parameter to 'LATEST'. AWS OpsWorks
+--     automatically installs new agent versions on the stack\'s instances
+--     as soon as they are available.
+-- -   Fixed version - Set this parameter to your preferred agent version.
+--     To update the agent version, you must edit the stack configuration
+--     and specify a new version. AWS OpsWorks then automatically installs
+--     that version on the stack\'s instances.
+--
+-- The default setting is 'LATEST'. To specify an agent version, you must
+-- use the complete version number, not the abbreviated number shown on the
+-- console. For a list of available agent version numbers, call
+-- DescribeAgentVersions.
+--
+-- You can also specify an agent version when you create or update an
+-- instance, which overrides the stack\'s default setting.
+cAgentVersion :: Lens' CloneStack (Maybe Text)
+cAgentVersion = lens _cAgentVersion (\ s a -> s{_cAgentVersion = a});
 
--- | The ARN of an IAM profile that is the default profile for all of the stack's
--- EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-cs1DefaultInstanceProfileArn :: Lens' CloneStack (Maybe Text)
-cs1DefaultInstanceProfileArn =
-    lens _cs1DefaultInstanceProfileArn
-        (\s a -> s { _cs1DefaultInstanceProfileArn = a })
+-- | A default Amazon EC2 key pair name. The default value is none. If you
+-- specify a key pair name, AWS OpsWorks installs the public key on the
+-- instance and you can use the private key with an SSH client to log in to
+-- the instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance>
+-- and
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>.
+-- You can override this setting by specifying a different key pair, or no
+-- key pair, when you
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance>.
+cDefaultSSHKeyName :: Lens' CloneStack (Maybe Text)
+cDefaultSSHKeyName = lens _cDefaultSSHKeyName (\ s a -> s{_cDefaultSSHKeyName = a});
 
--- | The stack's operating system, which must be set to one of the following.
+-- | A string that contains user-defined, custom JSON. It is used to override
+-- the corresponding default stack configuration JSON values. The string
+-- should be in the following format and must escape characters such as
+-- \'\"\':
 --
--- Standard Linux operating systems: an Amazon Linux version such as 'AmazonLinux 2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom Linux AMIs: 'Custom'. You specify the custom AMI you want to use when you create instances. Microsoft Windows Server 2012 R2.
--- The default option is the current Amazon Linux version.
-cs1DefaultOs :: Lens' CloneStack (Maybe Text)
-cs1DefaultOs = lens _cs1DefaultOs (\s a -> s { _cs1DefaultOs = a })
-
--- | The default root device type. This value is used by default for all instances
--- in the cloned stack, but you can override it when you create an instance. For
--- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
-cs1DefaultRootDeviceType :: Lens' CloneStack (Maybe RootDeviceType)
-cs1DefaultRootDeviceType =
-    lens _cs1DefaultRootDeviceType
-        (\s a -> s { _cs1DefaultRootDeviceType = a })
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
+--
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>
+cCustomJSON :: Lens' CloneStack (Maybe Text)
+cCustomJSON = lens _cCustomJSON (\ s a -> s{_cCustomJSON = a});
 
--- | A default Amazon EC2 key pair name. The default value is none. If you specify
--- a key pair name, AWS OpsWorks installs the public key on the instance and you
--- can use the private key with an SSH client to log in to the instance. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
--- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
-cs1DefaultSshKeyName :: Lens' CloneStack (Maybe Text)
-cs1DefaultSshKeyName =
-    lens _cs1DefaultSshKeyName (\s a -> s { _cs1DefaultSshKeyName = a })
+-- | Whether to clone the source stack\'s permissions.
+cClonePermissions :: Lens' CloneStack (Maybe Bool)
+cClonePermissions = lens _cClonePermissions (\ s a -> s{_cClonePermissions = a});
 
--- | The stack's default VPC subnet ID. This parameter is required if you specify
--- a value for the 'VpcId' parameter. All instances are launched into this subnet
--- unless you specify otherwise when you create the instance. If you also
--- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
--- For information on default values and when this parameter is required, see
--- the 'VpcId' parameter description.
-cs1DefaultSubnetId :: Lens' CloneStack (Maybe Text)
-cs1DefaultSubnetId =
-    lens _cs1DefaultSubnetId (\s a -> s { _cs1DefaultSubnetId = a })
+-- | Undocumented member.
+cCustomCookbooksSource :: Lens' CloneStack (Maybe Source)
+cCustomCookbooksSource = lens _cCustomCookbooksSource (\ s a -> s{_cCustomCookbooksSource = a});
 
--- | The stack's host name theme, with spaces are replaced by underscores. The
--- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
--- the layer's short name. The other themes are:
---
--- 'Baked_Goods'   'Clouds'   'Europe_Cities'   'Fruits'   'Greek_Deities'   'Legendary_creatures_from_Japan'   'Planets_and_Moons'   'Roman_Deities'   'Scottish_Islands'   'US_Cities'   'Wild_Cats'   To obtain a generated host name, call 'GetHostNameSuggestion', which returns
--- a host name based on the current theme.
-cs1HostnameTheme :: Lens' CloneStack (Maybe Text)
-cs1HostnameTheme = lens _cs1HostnameTheme (\s a -> s { _cs1HostnameTheme = a })
+-- | The cloned stack\'s default Availability Zone, which must be in the
+-- specified region. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+-- If you also specify a value for 'DefaultSubnetId', the subnet must be in
+-- the same zone. For more information, see the 'VpcId' parameter
+-- description.
+cDefaultAvailabilityZone :: Lens' CloneStack (Maybe Text)
+cDefaultAvailabilityZone = lens _cDefaultAvailabilityZone (\ s a -> s{_cDefaultAvailabilityZone = a});
 
 -- | The cloned stack name.
-cs1Name :: Lens' CloneStack (Maybe Text)
-cs1Name = lens _cs1Name (\s a -> s { _cs1Name = a })
+cName :: Lens' CloneStack (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a});
 
--- | The cloned stack AWS region, such as "us-east-1". For more information about
--- AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
-cs1Region :: Lens' CloneStack (Maybe Text)
-cs1Region = lens _cs1Region (\s a -> s { _cs1Region = a })
+-- | Whether to associate the AWS OpsWorks built-in security groups with the
+-- stack\'s layers.
+--
+-- AWS OpsWorks provides a standard set of built-in security groups, one
+-- for each layer, which are associated with layers by default. With
+-- 'UseOpsworksSecurityGroups' you can instead provide your own custom
+-- security groups. 'UseOpsworksSecurityGroups' has the following settings:
+--
+-- -   True - AWS OpsWorks automatically associates the appropriate
+--     built-in security group with each layer (default setting). You can
+--     associate additional security groups with a layer after you create
+--     it but you cannot delete the built-in security group.
+-- -   False - AWS OpsWorks does not associate built-in security groups
+--     with layers. You must create appropriate Amazon Elastic Compute
+--     Cloud (Amazon EC2) security groups and associate a security group
+--     with each layer that you create. However, you can still manually
+--     associate a built-in security group with a layer on creation; custom
+--     security groups are required only for those layers that need custom
+--     settings.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+cUseOpsworksSecurityGroups :: Lens' CloneStack (Maybe Bool)
+cUseOpsworksSecurityGroups = lens _cUseOpsworksSecurityGroups (\ s a -> s{_cUseOpsworksSecurityGroups = a});
 
--- | The stack AWS Identity and Access Management (IAM) role, which allows AWS
--- OpsWorks to work with AWS resources on your behalf. You must set this
--- parameter to the Amazon Resource Name (ARN) for an existing IAM role. If you
--- create a stack by using the AWS OpsWorks console, it creates the role for
--- you. You can obtain an existing stack's IAM ARN programmatically by calling 'DescribePermissions'. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+-- | The stack\'s operating system, which must be set to one of the
+-- following.
 --
--- You must set this parameter to a valid service role ARN or the action will
--- fail; there is no default value. You can specify the source stack's service
--- role ARN, if you prefer, but you must do so explicitly.
+-- -   A supported Linux operating system: An Amazon Linux version, such as
+--     'Amazon Linux 2015.03', 'Red Hat Enterprise Linux 7',
+--     'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'.
+-- -   'Microsoft Windows Server 2012 R2 Base'.
+-- -   A custom AMI: 'Custom'. You specify the custom AMI you want to use
+--     when you create instances. For more information on how to use custom
+--     AMIs with OpsWorks, see
+--     <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
 --
+-- The default option is the parent stack\'s operating system. For more
+-- information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems>.
 --
-cs1ServiceRoleArn :: Lens' CloneStack Text
-cs1ServiceRoleArn =
-    lens _cs1ServiceRoleArn (\s a -> s { _cs1ServiceRoleArn = a })
+-- You can specify a different Linux operating system for the cloned stack,
+-- but you cannot change from Linux to Windows or Windows to Linux.
+cDefaultOS :: Lens' CloneStack (Maybe Text)
+cDefaultOS = lens _cDefaultOS (\ s a -> s{_cDefaultOS = a});
 
--- | The source stack ID.
-cs1SourceStackId :: Lens' CloneStack Text
-cs1SourceStackId = lens _cs1SourceStackId (\s a -> s { _cs1SourceStackId = a })
+-- | A list of stack attributes and values as key\/value pairs to be added to
+-- the cloned stack.
+cAttributes :: Lens' CloneStack (HashMap StackAttributesKeys Text)
+cAttributes = lens _cAttributes (\ s a -> s{_cAttributes = a}) . _Default . _Map;
 
 -- | Whether to use custom cookbooks.
-cs1UseCustomCookbooks :: Lens' CloneStack (Maybe Bool)
-cs1UseCustomCookbooks =
-    lens _cs1UseCustomCookbooks (\s a -> s { _cs1UseCustomCookbooks = a })
+cUseCustomCookbooks :: Lens' CloneStack (Maybe Bool)
+cUseCustomCookbooks = lens _cUseCustomCookbooks (\ s a -> s{_cUseCustomCookbooks = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the
--- stack's layers.
---
--- AWS OpsWorks provides a standard set of built-in security groups, one for
--- each layer, which are associated with layers by default. With 'UseOpsworksSecurityGroups' you can instead provide your own custom security groups. 'UseOpsworksSecurityGroups' has the following settings:
---
--- True - AWS OpsWorks automatically associates the appropriate built-in
--- security group with each layer (default setting). You can associate
--- additional security groups with a layer after you create it but you cannot
--- delete the built-in security group.  False - AWS OpsWorks does not associate
--- built-in security groups with layers. You must create appropriate EC2
--- security groups and associate a security group with each layer that you
--- create. However, you can still manually associate a built-in security group
--- with a layer on creation; custom security groups are required only for those
--- layers that need custom settings.   For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a NewStack>.
-cs1UseOpsworksSecurityGroups :: Lens' CloneStack (Maybe Bool)
-cs1UseOpsworksSecurityGroups =
-    lens _cs1UseOpsworksSecurityGroups
-        (\s a -> s { _cs1UseOpsworksSecurityGroups = a })
+-- | The stack\'s default VPC subnet ID. This parameter is required if you
+-- specify a value for the 'VpcId' parameter. All instances are launched
+-- into this subnet unless you specify otherwise when you create the
+-- instance. If you also specify a value for 'DefaultAvailabilityZone', the
+-- subnet must be in that zone. For information on default values and when
+-- this parameter is required, see the 'VpcId' parameter description.
+cDefaultSubnetId :: Lens' CloneStack (Maybe Text)
+cDefaultSubnetId = lens _cDefaultSubnetId (\ s a -> s{_cDefaultSubnetId = a});
 
--- | The ID of the VPC that the cloned stack is to be launched into. It must be in
--- the specified region. All instances are launched into this VPC, and you
--- cannot change the ID later.
---
--- If your account supports EC2 Classic, the default value is no VPC. If your
--- account does not support EC2 Classic, the default value is the default VPC
--- for the specified region.  If the VPC ID corresponds to a default VPC and you
--- have specified either the 'DefaultAvailabilityZone' or the 'DefaultSubnetId'
--- parameter only, AWS OpsWorks infers the value of the other parameter. If you
--- specify neither parameter, AWS OpsWorks sets these parameters to the first
--- valid Availability Zone for the specified region and the corresponding
--- default VPC subnet ID, respectively.
---
--- If you specify a nondefault VPC ID, note the following:
---
--- It must belong to a VPC in your account that is in the specified region. You must specify a value for
--- 'DefaultSubnetId'.  For more information on how to use AWS OpsWorks with a VPC,
--- see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC>. For more information on default VPC and EC2
--- Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms>.
-cs1VpcId :: Lens' CloneStack (Maybe Text)
-cs1VpcId = lens _cs1VpcId (\s a -> s { _cs1VpcId = a })
+-- | The cloned stack AWS region, such as \"us-east-1\". For more information
+-- about AWS regions, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+cRegion :: Lens' CloneStack (Maybe Text)
+cRegion = lens _cRegion (\ s a -> s{_cRegion = a});
 
-newtype CloneStackResponse = CloneStackResponse
-    { _csrStackId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | The configuration manager. When you clone a Linux stack we recommend
+-- that you use the configuration manager to specify the Chef version: 0.9,
+-- 11.4, or 11.10. The default value is currently 11.10.
+cConfigurationManager :: Lens' CloneStack (Maybe StackConfigurationManager)
+cConfigurationManager = lens _cConfigurationManager (\ s a -> s{_cConfigurationManager = a});
 
--- | 'CloneStackResponse' constructor.
+-- | The stack\'s host name theme, with spaces are replaced by underscores.
+-- The theme is used to generate host names for the stack\'s instances. By
+-- default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host
+-- names by appending integers to the layer\'s short name. The other themes
+-- are:
 --
--- The fields accessible through corresponding lenses are:
+-- -   'Baked_Goods'
+-- -   'Clouds'
+-- -   'Europe_Cities'
+-- -   'Fruits'
+-- -   'Greek_Deities'
+-- -   'Legendary_creatures_from_Japan'
+-- -   'Planets_and_Moons'
+-- -   'Roman_Deities'
+-- -   'Scottish_Islands'
+-- -   'US_Cities'
+-- -   'Wild_Cats'
 --
--- * 'csrStackId' @::@ 'Maybe' 'Text'
+-- To obtain a generated host name, call 'GetHostNameSuggestion', which
+-- returns a host name based on the current theme.
+cHostnameTheme :: Lens' CloneStack (Maybe Text)
+cHostnameTheme = lens _cHostnameTheme (\ s a -> s{_cHostnameTheme = a});
+
+-- | The source stack ID.
+cSourceStackId :: Lens' CloneStack Text
+cSourceStackId = lens _cSourceStackId (\ s a -> s{_cSourceStackId = a});
+
+-- | The stack AWS Identity and Access Management (IAM) role, which allows
+-- AWS OpsWorks to work with AWS resources on your behalf. You must set
+-- this parameter to the Amazon Resource Name (ARN) for an existing IAM
+-- role. If you create a stack by using the AWS OpsWorks console, it
+-- creates the role for you. You can obtain an existing stack\'s IAM ARN
+-- programmatically by calling DescribePermissions. For more information
+-- about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
 --
-cloneStackResponse :: CloneStackResponse
-cloneStackResponse = CloneStackResponse
-    { _csrStackId = Nothing
-    }
+-- You must set this parameter to a valid service role ARN or the action
+-- will fail; there is no default value. You can specify the source
+-- stack\'s service role ARN, if you prefer, but you must do so explicitly.
+cServiceRoleARN :: Lens' CloneStack Text
+cServiceRoleARN = lens _cServiceRoleARN (\ s a -> s{_cServiceRoleARN = a});
 
--- | The cloned stack ID.
-csrStackId :: Lens' CloneStackResponse (Maybe Text)
-csrStackId = lens _csrStackId (\s a -> s { _csrStackId = a })
+instance AWSRequest CloneStack where
+        type Sv CloneStack = OpsWorks
+        type Rs CloneStack = CloneStackResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CloneStackResponse' <$>
+                   (x .?> "StackId") <*> (pure (fromEnum s)))
 
+instance ToHeaders CloneStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CloneStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON CloneStack where
+        toJSON CloneStack'{..}
+          = object
+              ["CloneAppIds" .= _cCloneAppIds,
+               "DefaultInstanceProfileArn" .=
+                 _cDefaultInstanceProfileARN,
+               "DefaultRootDeviceType" .= _cDefaultRootDeviceType,
+               "ChefConfiguration" .= _cChefConfiguration,
+               "VpcId" .= _cVPCId, "AgentVersion" .= _cAgentVersion,
+               "DefaultSshKeyName" .= _cDefaultSSHKeyName,
+               "CustomJson" .= _cCustomJSON,
+               "ClonePermissions" .= _cClonePermissions,
+               "CustomCookbooksSource" .= _cCustomCookbooksSource,
+               "DefaultAvailabilityZone" .=
+                 _cDefaultAvailabilityZone,
+               "Name" .= _cName,
+               "UseOpsworksSecurityGroups" .=
+                 _cUseOpsworksSecurityGroups,
+               "DefaultOs" .= _cDefaultOS,
+               "Attributes" .= _cAttributes,
+               "UseCustomCookbooks" .= _cUseCustomCookbooks,
+               "DefaultSubnetId" .= _cDefaultSubnetId,
+               "Region" .= _cRegion,
+               "ConfigurationManager" .= _cConfigurationManager,
+               "HostnameTheme" .= _cHostnameTheme,
+               "SourceStackId" .= _cSourceStackId,
+               "ServiceRoleArn" .= _cServiceRoleARN]
+
 instance ToPath CloneStack where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CloneStack where
-    toQuery = const mempty
-
-instance ToHeaders CloneStack
+        toQuery = const mempty
 
-instance ToJSON CloneStack where
-    toJSON CloneStack{..} = object
-        [ "SourceStackId"             .= _cs1SourceStackId
-        , "Name"                      .= _cs1Name
-        , "Region"                    .= _cs1Region
-        , "VpcId"                     .= _cs1VpcId
-        , "Attributes"                .= _cs1Attributes
-        , "ServiceRoleArn"            .= _cs1ServiceRoleArn
-        , "DefaultInstanceProfileArn" .= _cs1DefaultInstanceProfileArn
-        , "DefaultOs"                 .= _cs1DefaultOs
-        , "HostnameTheme"             .= _cs1HostnameTheme
-        , "DefaultAvailabilityZone"   .= _cs1DefaultAvailabilityZone
-        , "DefaultSubnetId"           .= _cs1DefaultSubnetId
-        , "CustomJson"                .= _cs1CustomJson
-        , "ConfigurationManager"      .= _cs1ConfigurationManager
-        , "ChefConfiguration"         .= _cs1ChefConfiguration
-        , "UseCustomCookbooks"        .= _cs1UseCustomCookbooks
-        , "UseOpsworksSecurityGroups" .= _cs1UseOpsworksSecurityGroups
-        , "CustomCookbooksSource"     .= _cs1CustomCookbooksSource
-        , "DefaultSshKeyName"         .= _cs1DefaultSshKeyName
-        , "ClonePermissions"          .= _cs1ClonePermissions
-        , "CloneAppIds"               .= _cs1CloneAppIds
-        , "DefaultRootDeviceType"     .= _cs1DefaultRootDeviceType
-        ]
+-- | Contains the response to a 'CloneStack' request.
+--
+-- /See:/ 'cloneStackResponse' smart constructor.
+data CloneStackResponse = CloneStackResponse'
+    { _csrsStackId :: !(Maybe Text)
+    , _csrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CloneStack where
-    type Sv CloneStack = OpsWorks
-    type Rs CloneStack = CloneStackResponse
+-- | Creates a value of 'CloneStackResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csrsStackId'
+--
+-- * 'csrsStatus'
+cloneStackResponse
+    :: Int -- ^ 'csrsStatus'
+    -> CloneStackResponse
+cloneStackResponse pStatus_ =
+    CloneStackResponse'
+    { _csrsStackId = Nothing
+    , _csrsStatus = pStatus_
+    }
 
-    request  = post "CloneStack"
-    response = jsonResponse
+-- | The cloned stack ID.
+csrsStackId :: Lens' CloneStackResponse (Maybe Text)
+csrsStackId = lens _csrsStackId (\ s a -> s{_csrsStackId = a});
 
-instance FromJSON CloneStackResponse where
-    parseJSON = withObject "CloneStackResponse" $ \o -> CloneStackResponse
-        <$> o .:? "StackId"
+-- | The response status code.
+csrsStatus :: Lens' CloneStackResponse Int
+csrsStatus = lens _csrsStatus (\ s a -> s{_csrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateApp.hs b/gen/Network/AWS/OpsWorks/CreateApp.hs
--- a/gen/Network/AWS/OpsWorks/CreateApp.hs
+++ b/gen/Network/AWS/OpsWorks/CreateApp.hs
@@ -1,246 +1,267 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateApp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates an app for a specified stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Creating Apps>.
+-- Creates an app for a specified stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Creating Apps>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateApp.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateApp.html AWS API Reference> for CreateApp.
 module Network.AWS.OpsWorks.CreateApp
     (
-    -- * Request
-      CreateApp
-    -- ** Request constructor
-    , createApp
-    -- ** Request lenses
+    -- * Creating a Request
+      createApp
+    , CreateApp
+    -- * Request Lenses
+    , caSSLConfiguration
+    , caShortname
+    , caEnableSSL
+    , caEnvironment
+    , caDataSources
     , caAppSource
     , caAttributes
-    , caDataSources
-    , caDescription
     , caDomains
-    , caEnableSsl
-    , caEnvironment
-    , caName
-    , caShortname
-    , caSslConfiguration
+    , caDescription
     , caStackId
+    , caName
     , caType
 
-    -- * Response
-    , CreateAppResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createAppResponse
-    -- ** Response lenses
-    , carAppId
+    , CreateAppResponse
+    -- * Response Lenses
+    , carsAppId
+    , carsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateApp = CreateApp
-    { _caAppSource        :: Maybe Source
-    , _caAttributes       :: Map AppAttributesKeys Text
-    , _caDataSources      :: List "DataSources" DataSource
-    , _caDescription      :: Maybe Text
-    , _caDomains          :: List "Domains" Text
-    , _caEnableSsl        :: Maybe Bool
-    , _caEnvironment      :: List "Environment" EnvironmentVariable
-    , _caName             :: Text
-    , _caShortname        :: Maybe Text
-    , _caSslConfiguration :: Maybe SslConfiguration
-    , _caStackId          :: Text
-    , _caType             :: AppType
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createApp' smart constructor.
+data CreateApp = CreateApp'
+    { _caSSLConfiguration :: !(Maybe SSLConfiguration)
+    , _caShortname        :: !(Maybe Text)
+    , _caEnableSSL        :: !(Maybe Bool)
+    , _caEnvironment      :: !(Maybe [EnvironmentVariable])
+    , _caDataSources      :: !(Maybe [DataSource])
+    , _caAppSource        :: !(Maybe Source)
+    , _caAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+    , _caDomains          :: !(Maybe [Text])
+    , _caDescription      :: !(Maybe Text)
+    , _caStackId          :: !Text
+    , _caName             :: !Text
+    , _caType             :: !AppType
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateApp' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateApp' with the minimum fields required to make a request.
 --
--- * 'caAppSource' @::@ 'Maybe' 'Source'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'caAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
+-- * 'caSSLConfiguration'
 --
--- * 'caDataSources' @::@ ['DataSource']
+-- * 'caShortname'
 --
--- * 'caDescription' @::@ 'Maybe' 'Text'
+-- * 'caEnableSSL'
 --
--- * 'caDomains' @::@ ['Text']
+-- * 'caEnvironment'
 --
--- * 'caEnableSsl' @::@ 'Maybe' 'Bool'
+-- * 'caDataSources'
 --
--- * 'caEnvironment' @::@ ['EnvironmentVariable']
+-- * 'caAppSource'
 --
--- * 'caName' @::@ 'Text'
+-- * 'caAttributes'
 --
--- * 'caShortname' @::@ 'Maybe' 'Text'
+-- * 'caDomains'
 --
--- * 'caSslConfiguration' @::@ 'Maybe' 'SslConfiguration'
+-- * 'caDescription'
 --
--- * 'caStackId' @::@ 'Text'
+-- * 'caStackId'
 --
--- * 'caType' @::@ 'AppType'
+-- * 'caName'
 --
-createApp :: Text -- ^ 'caStackId'
-          -> Text -- ^ 'caName'
-          -> AppType -- ^ 'caType'
-          -> CreateApp
-createApp p1 p2 p3 = CreateApp
-    { _caStackId          = p1
-    , _caName             = p2
-    , _caType             = p3
-    , _caShortname        = Nothing
-    , _caDescription      = Nothing
-    , _caDataSources      = mempty
-    , _caAppSource        = Nothing
-    , _caDomains          = mempty
-    , _caEnableSsl        = Nothing
-    , _caSslConfiguration = Nothing
-    , _caAttributes       = mempty
-    , _caEnvironment      = mempty
+-- * 'caType'
+createApp
+    :: Text -- ^ 'caStackId'
+    -> Text -- ^ 'caName'
+    -> AppType -- ^ 'caType'
+    -> CreateApp
+createApp pStackId_ pName_ pType_ =
+    CreateApp'
+    { _caSSLConfiguration = Nothing
+    , _caShortname = Nothing
+    , _caEnableSSL = Nothing
+    , _caEnvironment = Nothing
+    , _caDataSources = Nothing
+    , _caAppSource = Nothing
+    , _caAttributes = Nothing
+    , _caDomains = Nothing
+    , _caDescription = Nothing
+    , _caStackId = pStackId_
+    , _caName = pName_
+    , _caType = pType_
     }
 
--- | A 'Source' object that specifies the app repository.
-caAppSource :: Lens' CreateApp (Maybe Source)
-caAppSource = lens _caAppSource (\s a -> s { _caAppSource = a })
-
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-caAttributes :: Lens' CreateApp (HashMap AppAttributesKeys Text)
-caAttributes = lens _caAttributes (\s a -> s { _caAttributes = a }) . _Map
-
--- | The app's data source.
-caDataSources :: Lens' CreateApp [DataSource]
-caDataSources = lens _caDataSources (\s a -> s { _caDataSources = a }) . _List
-
--- | A description of the app.
-caDescription :: Lens' CreateApp (Maybe Text)
-caDescription = lens _caDescription (\s a -> s { _caDescription = a })
+-- | An 'SslConfiguration' object with the SSL configuration.
+caSSLConfiguration :: Lens' CreateApp (Maybe SSLConfiguration)
+caSSLConfiguration = lens _caSSLConfiguration (\ s a -> s{_caSSLConfiguration = a});
 
--- | The app virtual host settings, with multiple domains separated by commas. For
--- example: ''www.example.com, example.com''
-caDomains :: Lens' CreateApp [Text]
-caDomains = lens _caDomains (\s a -> s { _caDomains = a }) . _List
+-- | The app\'s short name.
+caShortname :: Lens' CreateApp (Maybe Text)
+caShortname = lens _caShortname (\ s a -> s{_caShortname = a});
 
 -- | Whether to enable SSL for the app.
-caEnableSsl :: Lens' CreateApp (Maybe Bool)
-caEnableSsl = lens _caEnableSsl (\s a -> s { _caEnableSsl = a })
+caEnableSSL :: Lens' CreateApp (Maybe Bool)
+caEnableSSL = lens _caEnableSSL (\ s a -> s{_caEnableSSL = a});
 
--- | An array of 'EnvironmentVariable' objects that specify environment variables to
--- be associated with the app. After you deploy the app, these variables are
--- defined on the associated app server instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
+-- | An array of 'EnvironmentVariable' objects that specify environment
+-- variables to be associated with the app. After you deploy the app, these
+-- variables are defined on the associated app server instance. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
 --
--- There is no specific limit on the number of environment variables. However,
--- the size of the associated data structure - which includes the variables'
--- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
--- This limit should accommodate most if not all use cases. Exceeding it will
--- cause an exception with the message, "Environment: is too large (maximum is
--- 10KB)."
+-- There is no specific limit on the number of environment variables.
+-- However, the size of the associated data structure - which includes the
+-- variables\' names, values, and protected flag values - cannot exceed 10
+-- KB (10240 Bytes). This limit should accommodate most if not all use
+-- cases. Exceeding it will cause an exception with the message,
+-- \"Environment: is too large (maximum is 10KB).\"
 --
--- This parameter is supported only by Chef 11.10 stacks. If you have specified
--- one or more environment variables, you cannot modify the stack's Chef version.
+-- This parameter is supported only by Chef 11.10 stacks. If you have
+-- specified one or more environment variables, you cannot modify the
+-- stack\'s Chef version.
 caEnvironment :: Lens' CreateApp [EnvironmentVariable]
-caEnvironment = lens _caEnvironment (\s a -> s { _caEnvironment = a }) . _List
+caEnvironment = lens _caEnvironment (\ s a -> s{_caEnvironment = a}) . _Default . _Coerce;
 
--- | The app name.
-caName :: Lens' CreateApp Text
-caName = lens _caName (\s a -> s { _caName = a })
+-- | The app\'s data source.
+caDataSources :: Lens' CreateApp [DataSource]
+caDataSources = lens _caDataSources (\ s a -> s{_caDataSources = a}) . _Default . _Coerce;
 
--- | The app's short name.
-caShortname :: Lens' CreateApp (Maybe Text)
-caShortname = lens _caShortname (\s a -> s { _caShortname = a })
+-- | A 'Source' object that specifies the app repository.
+caAppSource :: Lens' CreateApp (Maybe Source)
+caAppSource = lens _caAppSource (\ s a -> s{_caAppSource = a});
 
--- | An 'SslConfiguration' object with the SSL configuration.
-caSslConfiguration :: Lens' CreateApp (Maybe SslConfiguration)
-caSslConfiguration =
-    lens _caSslConfiguration (\s a -> s { _caSslConfiguration = a })
+-- | One or more user-defined key\/value pairs to be added to the stack
+-- attributes.
+caAttributes :: Lens' CreateApp (HashMap AppAttributesKeys Text)
+caAttributes = lens _caAttributes (\ s a -> s{_caAttributes = a}) . _Default . _Map;
 
+-- | The app virtual host settings, with multiple domains separated by
+-- commas. For example: '\'www.example.com, example.com\''
+caDomains :: Lens' CreateApp [Text]
+caDomains = lens _caDomains (\ s a -> s{_caDomains = a}) . _Default . _Coerce;
+
+-- | A description of the app.
+caDescription :: Lens' CreateApp (Maybe Text)
+caDescription = lens _caDescription (\ s a -> s{_caDescription = a});
+
 -- | The stack ID.
 caStackId :: Lens' CreateApp Text
-caStackId = lens _caStackId (\s a -> s { _caStackId = a })
+caStackId = lens _caStackId (\ s a -> s{_caStackId = a});
 
--- | The app type. Each supported type is associated with a particular layer. For
--- example, PHP applications are associated with a PHP layer. AWS OpsWorks
--- deploys an application to those instances that are members of the
--- corresponding layer. If your app isn't one of the standard types, or you
--- prefer to implement your own Deploy recipes, specify 'other'.
+-- | The app name.
+caName :: Lens' CreateApp Text
+caName = lens _caName (\ s a -> s{_caName = a});
+
+-- | The app type. Each supported type is associated with a particular layer.
+-- For example, PHP applications are associated with a PHP layer. AWS
+-- OpsWorks deploys an application to those instances that are members of
+-- the corresponding layer. If your app isn\'t one of the standard types,
+-- or you prefer to implement your own Deploy recipes, specify 'other'.
 caType :: Lens' CreateApp AppType
-caType = lens _caType (\s a -> s { _caType = a })
+caType = lens _caType (\ s a -> s{_caType = a});
 
-newtype CreateAppResponse = CreateAppResponse
-    { _carAppId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CreateApp where
+        type Sv CreateApp = OpsWorks
+        type Rs CreateApp = CreateAppResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateAppResponse' <$>
+                   (x .?> "AppId") <*> (pure (fromEnum s)))
 
--- | 'CreateAppResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'carAppId' @::@ 'Maybe' 'Text'
---
-createAppResponse :: CreateAppResponse
-createAppResponse = CreateAppResponse
-    { _carAppId = Nothing
-    }
+instance ToHeaders CreateApp where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateApp" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The app ID.
-carAppId :: Lens' CreateAppResponse (Maybe Text)
-carAppId = lens _carAppId (\s a -> s { _carAppId = a })
+instance ToJSON CreateApp where
+        toJSON CreateApp'{..}
+          = object
+              ["SslConfiguration" .= _caSSLConfiguration,
+               "Shortname" .= _caShortname,
+               "EnableSsl" .= _caEnableSSL,
+               "Environment" .= _caEnvironment,
+               "DataSources" .= _caDataSources,
+               "AppSource" .= _caAppSource,
+               "Attributes" .= _caAttributes,
+               "Domains" .= _caDomains,
+               "Description" .= _caDescription,
+               "StackId" .= _caStackId, "Name" .= _caName,
+               "Type" .= _caType]
 
 instance ToPath CreateApp where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateApp where
-    toQuery = const mempty
-
-instance ToHeaders CreateApp
+        toQuery = const mempty
 
-instance ToJSON CreateApp where
-    toJSON CreateApp{..} = object
-        [ "StackId"          .= _caStackId
-        , "Shortname"        .= _caShortname
-        , "Name"             .= _caName
-        , "Description"      .= _caDescription
-        , "DataSources"      .= _caDataSources
-        , "Type"             .= _caType
-        , "AppSource"        .= _caAppSource
-        , "Domains"          .= _caDomains
-        , "EnableSsl"        .= _caEnableSsl
-        , "SslConfiguration" .= _caSslConfiguration
-        , "Attributes"       .= _caAttributes
-        , "Environment"      .= _caEnvironment
-        ]
+-- | Contains the response to a 'CreateApp' request.
+--
+-- /See:/ 'createAppResponse' smart constructor.
+data CreateAppResponse = CreateAppResponse'
+    { _carsAppId  :: !(Maybe Text)
+    , _carsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateApp where
-    type Sv CreateApp = OpsWorks
-    type Rs CreateApp = CreateAppResponse
+-- | Creates a value of 'CreateAppResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'carsAppId'
+--
+-- * 'carsStatus'
+createAppResponse
+    :: Int -- ^ 'carsStatus'
+    -> CreateAppResponse
+createAppResponse pStatus_ =
+    CreateAppResponse'
+    { _carsAppId = Nothing
+    , _carsStatus = pStatus_
+    }
 
-    request  = post "CreateApp"
-    response = jsonResponse
+-- | The app ID.
+carsAppId :: Lens' CreateAppResponse (Maybe Text)
+carsAppId = lens _carsAppId (\ s a -> s{_carsAppId = a});
 
-instance FromJSON CreateAppResponse where
-    parseJSON = withObject "CreateAppResponse" $ \o -> CreateAppResponse
-        <$> o .:? "AppId"
+-- | The response status code.
+carsStatus :: Lens' CreateAppResponse Int
+carsStatus = lens _carsStatus (\ s a -> s{_carsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateDeployment.hs b/gen/Network/AWS/OpsWorks/CreateDeployment.hs
--- a/gen/Network/AWS/OpsWorks/CreateDeployment.hs
+++ b/gen/Network/AWS/OpsWorks/CreateDeployment.hs
@@ -1,177 +1,197 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateDeployment
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Runs deployment or stack commands. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-deploying.html Deploying Apps>
--- and <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-commands.html Run Stack Commands>.
+-- Runs deployment or stack commands. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-deploying.html Deploying Apps>
+-- and
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-commands.html Run Stack Commands>.
 --
--- Required Permissions: To use this action, an IAM user must have a Deploy or
--- Manage permissions level for the stack, or an attached policy that explicitly
--- grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html ManagingUser Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Deploy or Manage permissions level for the stack, or an attached policy
+-- that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateDeployment.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateDeployment.html AWS API Reference> for CreateDeployment.
 module Network.AWS.OpsWorks.CreateDeployment
     (
-    -- * Request
-      CreateDeployment
-    -- ** Request constructor
-    , createDeployment
-    -- ** Request lenses
+    -- * Creating a Request
+      createDeployment
+    , CreateDeployment
+    -- * Request Lenses
+    , cdCustomJSON
     , cdAppId
-    , cdCommand
-    , cdComment
-    , cdCustomJson
     , cdInstanceIds
+    , cdComment
     , cdStackId
+    , cdCommand
 
-    -- * Response
-    , CreateDeploymentResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createDeploymentResponse
-    -- ** Response lenses
-    , cdrDeploymentId
+    , CreateDeploymentResponse
+    -- * Response Lenses
+    , cdrsDeploymentId
+    , cdrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateDeployment = CreateDeployment
-    { _cdAppId       :: Maybe Text
-    , _cdCommand     :: DeploymentCommand
-    , _cdComment     :: Maybe Text
-    , _cdCustomJson  :: Maybe Text
-    , _cdInstanceIds :: List "InstanceIds" Text
-    , _cdStackId     :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createDeployment' smart constructor.
+data CreateDeployment = CreateDeployment'
+    { _cdCustomJSON  :: !(Maybe Text)
+    , _cdAppId       :: !(Maybe Text)
+    , _cdInstanceIds :: !(Maybe [Text])
+    , _cdComment     :: !(Maybe Text)
+    , _cdStackId     :: !Text
+    , _cdCommand     :: !DeploymentCommand
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateDeployment' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateDeployment' with the minimum fields required to make a request.
 --
--- * 'cdAppId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cdCommand' @::@ 'DeploymentCommand'
+-- * 'cdCustomJSON'
 --
--- * 'cdComment' @::@ 'Maybe' 'Text'
+-- * 'cdAppId'
 --
--- * 'cdCustomJson' @::@ 'Maybe' 'Text'
+-- * 'cdInstanceIds'
 --
--- * 'cdInstanceIds' @::@ ['Text']
+-- * 'cdComment'
 --
--- * 'cdStackId' @::@ 'Text'
+-- * 'cdStackId'
 --
-createDeployment :: Text -- ^ 'cdStackId'
-                 -> DeploymentCommand -- ^ 'cdCommand'
-                 -> CreateDeployment
-createDeployment p1 p2 = CreateDeployment
-    { _cdStackId     = p1
-    , _cdCommand     = p2
-    , _cdAppId       = Nothing
-    , _cdInstanceIds = mempty
-    , _cdComment     = Nothing
-    , _cdCustomJson  = Nothing
+-- * 'cdCommand'
+createDeployment
+    :: Text -- ^ 'cdStackId'
+    -> DeploymentCommand -- ^ 'cdCommand'
+    -> CreateDeployment
+createDeployment pStackId_ pCommand_ =
+    CreateDeployment'
+    { _cdCustomJSON = Nothing
+    , _cdAppId = Nothing
+    , _cdInstanceIds = Nothing
+    , _cdComment = Nothing
+    , _cdStackId = pStackId_
+    , _cdCommand = pCommand_
     }
 
--- | The app ID. This parameter is required for app deployments, but not for other
--- deployment commands.
-cdAppId :: Lens' CreateDeployment (Maybe Text)
-cdAppId = lens _cdAppId (\s a -> s { _cdAppId = a })
-
--- | A 'DeploymentCommand' object that specifies the deployment command and any
--- associated arguments.
-cdCommand :: Lens' CreateDeployment DeploymentCommand
-cdCommand = lens _cdCommand (\s a -> s { _cdCommand = a })
-
--- | A user-defined comment.
-cdComment :: Lens' CreateDeployment (Maybe Text)
-cdComment = lens _cdComment (\s a -> s { _cdComment = a })
-
--- | A string that contains user-defined, custom JSON. It is used to override the
--- corresponding default stack configuration JSON values. The string should be
--- in the following format and must escape characters such as '"'.:
+-- | A string that contains user-defined, custom JSON. It is used to override
+-- the corresponding default stack configuration JSON values. The string
+-- should be in the following format and must escape characters such as
+-- \'\"\':
 --
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
 --
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>.
-cdCustomJson :: Lens' CreateDeployment (Maybe Text)
-cdCustomJson = lens _cdCustomJson (\s a -> s { _cdCustomJson = a })
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
+cdCustomJSON :: Lens' CreateDeployment (Maybe Text)
+cdCustomJSON = lens _cdCustomJSON (\ s a -> s{_cdCustomJSON = a});
 
+-- | The app ID. This parameter is required for app deployments, but not for
+-- other deployment commands.
+cdAppId :: Lens' CreateDeployment (Maybe Text)
+cdAppId = lens _cdAppId (\ s a -> s{_cdAppId = a});
+
 -- | The instance IDs for the deployment targets.
 cdInstanceIds :: Lens' CreateDeployment [Text]
-cdInstanceIds = lens _cdInstanceIds (\s a -> s { _cdInstanceIds = a }) . _List
+cdInstanceIds = lens _cdInstanceIds (\ s a -> s{_cdInstanceIds = a}) . _Default . _Coerce;
 
+-- | A user-defined comment.
+cdComment :: Lens' CreateDeployment (Maybe Text)
+cdComment = lens _cdComment (\ s a -> s{_cdComment = a});
+
 -- | The stack ID.
 cdStackId :: Lens' CreateDeployment Text
-cdStackId = lens _cdStackId (\s a -> s { _cdStackId = a })
+cdStackId = lens _cdStackId (\ s a -> s{_cdStackId = a});
 
-newtype CreateDeploymentResponse = CreateDeploymentResponse
-    { _cdrDeploymentId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | A 'DeploymentCommand' object that specifies the deployment command and
+-- any associated arguments.
+cdCommand :: Lens' CreateDeployment DeploymentCommand
+cdCommand = lens _cdCommand (\ s a -> s{_cdCommand = a});
 
--- | 'CreateDeploymentResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdrDeploymentId' @::@ 'Maybe' 'Text'
---
-createDeploymentResponse :: CreateDeploymentResponse
-createDeploymentResponse = CreateDeploymentResponse
-    { _cdrDeploymentId = Nothing
-    }
+instance AWSRequest CreateDeployment where
+        type Sv CreateDeployment = OpsWorks
+        type Rs CreateDeployment = CreateDeploymentResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateDeploymentResponse' <$>
+                   (x .?> "DeploymentId") <*> (pure (fromEnum s)))
 
--- | The deployment ID, which can be used with other requests to identify the
--- deployment.
-cdrDeploymentId :: Lens' CreateDeploymentResponse (Maybe Text)
-cdrDeploymentId = lens _cdrDeploymentId (\s a -> s { _cdrDeploymentId = a })
+instance ToHeaders CreateDeployment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateDeployment" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON CreateDeployment where
+        toJSON CreateDeployment'{..}
+          = object
+              ["CustomJson" .= _cdCustomJSON, "AppId" .= _cdAppId,
+               "InstanceIds" .= _cdInstanceIds,
+               "Comment" .= _cdComment, "StackId" .= _cdStackId,
+               "Command" .= _cdCommand]
+
 instance ToPath CreateDeployment where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateDeployment where
-    toQuery = const mempty
-
-instance ToHeaders CreateDeployment
+        toQuery = const mempty
 
-instance ToJSON CreateDeployment where
-    toJSON CreateDeployment{..} = object
-        [ "StackId"     .= _cdStackId
-        , "AppId"       .= _cdAppId
-        , "InstanceIds" .= _cdInstanceIds
-        , "Command"     .= _cdCommand
-        , "Comment"     .= _cdComment
-        , "CustomJson"  .= _cdCustomJson
-        ]
+-- | Contains the response to a 'CreateDeployment' request.
+--
+-- /See:/ 'createDeploymentResponse' smart constructor.
+data CreateDeploymentResponse = CreateDeploymentResponse'
+    { _cdrsDeploymentId :: !(Maybe Text)
+    , _cdrsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateDeployment where
-    type Sv CreateDeployment = OpsWorks
-    type Rs CreateDeployment = CreateDeploymentResponse
+-- | Creates a value of 'CreateDeploymentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdrsDeploymentId'
+--
+-- * 'cdrsStatus'
+createDeploymentResponse
+    :: Int -- ^ 'cdrsStatus'
+    -> CreateDeploymentResponse
+createDeploymentResponse pStatus_ =
+    CreateDeploymentResponse'
+    { _cdrsDeploymentId = Nothing
+    , _cdrsStatus = pStatus_
+    }
 
-    request  = post "CreateDeployment"
-    response = jsonResponse
+-- | The deployment ID, which can be used with other requests to identify the
+-- deployment.
+cdrsDeploymentId :: Lens' CreateDeploymentResponse (Maybe Text)
+cdrsDeploymentId = lens _cdrsDeploymentId (\ s a -> s{_cdrsDeploymentId = a});
 
-instance FromJSON CreateDeploymentResponse where
-    parseJSON = withObject "CreateDeploymentResponse" $ \o -> CreateDeploymentResponse
-        <$> o .:? "DeploymentId"
+-- | The response status code.
+cdrsStatus :: Lens' CreateDeploymentResponse Int
+cdrsStatus = lens _cdrsStatus (\ s a -> s{_cdrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateInstance.hs b/gen/Network/AWS/OpsWorks/CreateInstance.hs
--- a/gen/Network/AWS/OpsWorks/CreateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/CreateInstance.hs
@@ -1,304 +1,352 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates an instance in a specified stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html Adding anInstance to a Layer>.
+-- Creates an instance in a specified stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html Adding an Instance to a Layer>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateInstance.html AWS API Reference> for CreateInstance.
 module Network.AWS.OpsWorks.CreateInstance
     (
-    -- * Request
-      CreateInstance
-    -- ** Request constructor
-    , createInstance
-    -- ** Request lenses
-    , ciAmiId
-    , ciArchitecture
-    , ciAutoScalingType
+    -- * Creating a Request
+      createInstance
+    , CreateInstance
+    -- * Request Lenses
+    , ciInstallUpdatesOnBoot
+    , ciVirtualizationType
+    , ciHostname
+    , ciSSHKeyName
+    , ciAgentVersion
+    , ciSubnetId
+    , ciEBSOptimized
+    , ciOS
     , ciAvailabilityZone
+    , ciAutoScalingType
+    , ciArchitecture
+    , ciAMIId
     , ciBlockDeviceMappings
-    , ciEbsOptimized
-    , ciHostname
-    , ciInstallUpdatesOnBoot
-    , ciInstanceType
-    , ciLayerIds
-    , ciOs
     , ciRootDeviceType
-    , ciSshKeyName
     , ciStackId
-    , ciSubnetId
-    , ciVirtualizationType
+    , ciLayerIds
+    , ciInstanceType
 
-    -- * Response
-    , CreateInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createInstanceResponse
-    -- ** Response lenses
-    , cirInstanceId
+    , CreateInstanceResponse
+    -- * Response Lenses
+    , cirsInstanceId
+    , cirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateInstance = CreateInstance
-    { _ciAmiId                :: Maybe Text
-    , _ciArchitecture         :: Maybe Architecture
-    , _ciAutoScalingType      :: Maybe AutoScalingType
-    , _ciAvailabilityZone     :: Maybe Text
-    , _ciBlockDeviceMappings  :: List "BlockDeviceMappings" BlockDeviceMapping
-    , _ciEbsOptimized         :: Maybe Bool
-    , _ciHostname             :: Maybe Text
-    , _ciInstallUpdatesOnBoot :: Maybe Bool
-    , _ciInstanceType         :: Text
-    , _ciLayerIds             :: List "LayerIds" Text
-    , _ciOs                   :: Maybe Text
-    , _ciRootDeviceType       :: Maybe RootDeviceType
-    , _ciSshKeyName           :: Maybe Text
-    , _ciStackId              :: Text
-    , _ciSubnetId             :: Maybe Text
-    , _ciVirtualizationType   :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createInstance' smart constructor.
+data CreateInstance = CreateInstance'
+    { _ciInstallUpdatesOnBoot :: !(Maybe Bool)
+    , _ciVirtualizationType   :: !(Maybe Text)
+    , _ciHostname             :: !(Maybe Text)
+    , _ciSSHKeyName           :: !(Maybe Text)
+    , _ciAgentVersion         :: !(Maybe Text)
+    , _ciSubnetId             :: !(Maybe Text)
+    , _ciEBSOptimized         :: !(Maybe Bool)
+    , _ciOS                   :: !(Maybe Text)
+    , _ciAvailabilityZone     :: !(Maybe Text)
+    , _ciAutoScalingType      :: !(Maybe AutoScalingType)
+    , _ciArchitecture         :: !(Maybe Architecture)
+    , _ciAMIId                :: !(Maybe Text)
+    , _ciBlockDeviceMappings  :: !(Maybe [BlockDeviceMapping])
+    , _ciRootDeviceType       :: !(Maybe RootDeviceType)
+    , _ciStackId              :: !Text
+    , _ciLayerIds             :: ![Text]
+    , _ciInstanceType         :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateInstance' constructor.
+-- | Creates a value of 'CreateInstance' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ciAmiId' @::@ 'Maybe' 'Text'
+-- * 'ciInstallUpdatesOnBoot'
 --
--- * 'ciArchitecture' @::@ 'Maybe' 'Architecture'
+-- * 'ciVirtualizationType'
 --
--- * 'ciAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
+-- * 'ciHostname'
 --
--- * 'ciAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'ciSSHKeyName'
 --
--- * 'ciBlockDeviceMappings' @::@ ['BlockDeviceMapping']
+-- * 'ciAgentVersion'
 --
--- * 'ciEbsOptimized' @::@ 'Maybe' 'Bool'
+-- * 'ciSubnetId'
 --
--- * 'ciHostname' @::@ 'Maybe' 'Text'
+-- * 'ciEBSOptimized'
 --
--- * 'ciInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
+-- * 'ciOS'
 --
--- * 'ciInstanceType' @::@ 'Text'
+-- * 'ciAvailabilityZone'
 --
--- * 'ciLayerIds' @::@ ['Text']
+-- * 'ciAutoScalingType'
 --
--- * 'ciOs' @::@ 'Maybe' 'Text'
+-- * 'ciArchitecture'
 --
--- * 'ciRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
+-- * 'ciAMIId'
 --
--- * 'ciSshKeyName' @::@ 'Maybe' 'Text'
+-- * 'ciBlockDeviceMappings'
 --
--- * 'ciStackId' @::@ 'Text'
+-- * 'ciRootDeviceType'
 --
--- * 'ciSubnetId' @::@ 'Maybe' 'Text'
+-- * 'ciStackId'
 --
--- * 'ciVirtualizationType' @::@ 'Maybe' 'Text'
+-- * 'ciLayerIds'
 --
-createInstance :: Text -- ^ 'ciStackId'
-               -> Text -- ^ 'ciInstanceType'
-               -> CreateInstance
-createInstance p1 p2 = CreateInstance
-    { _ciStackId              = p1
-    , _ciInstanceType         = p2
-    , _ciLayerIds             = mempty
-    , _ciAutoScalingType      = Nothing
-    , _ciHostname             = Nothing
-    , _ciOs                   = Nothing
-    , _ciAmiId                = Nothing
-    , _ciSshKeyName           = Nothing
-    , _ciAvailabilityZone     = Nothing
-    , _ciVirtualizationType   = Nothing
-    , _ciSubnetId             = Nothing
-    , _ciArchitecture         = Nothing
-    , _ciRootDeviceType       = Nothing
-    , _ciBlockDeviceMappings  = mempty
-    , _ciInstallUpdatesOnBoot = Nothing
-    , _ciEbsOptimized         = Nothing
+-- * 'ciInstanceType'
+createInstance
+    :: Text -- ^ 'ciStackId'
+    -> Text -- ^ 'ciInstanceType'
+    -> CreateInstance
+createInstance pStackId_ pInstanceType_ =
+    CreateInstance'
+    { _ciInstallUpdatesOnBoot = Nothing
+    , _ciVirtualizationType = Nothing
+    , _ciHostname = Nothing
+    , _ciSSHKeyName = Nothing
+    , _ciAgentVersion = Nothing
+    , _ciSubnetId = Nothing
+    , _ciEBSOptimized = Nothing
+    , _ciOS = Nothing
+    , _ciAvailabilityZone = Nothing
+    , _ciAutoScalingType = Nothing
+    , _ciArchitecture = Nothing
+    , _ciAMIId = Nothing
+    , _ciBlockDeviceMappings = Nothing
+    , _ciRootDeviceType = Nothing
+    , _ciStackId = pStackId_
+    , _ciLayerIds = mempty
+    , _ciInstanceType = pInstanceType_
     }
 
--- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or
--- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>.
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. To control when updates are
+-- installed, set this value to 'false'. You must then update your
+-- instances manually by using CreateDeployment to run the
+-- 'update_dependencies' stack command or by manually running 'yum' (Amazon
+-- Linux) or 'apt-get' (Ubuntu) on the instances.
 --
--- If you specify a custom AMI, you must set 'Os' to 'Custom'.
-ciAmiId :: Lens' CreateInstance (Maybe Text)
-ciAmiId = lens _ciAmiId (\s a -> s { _ciAmiId = a })
+-- We strongly recommend using the default value of 'true' to ensure that
+-- your instances have the latest security updates.
+ciInstallUpdatesOnBoot :: Lens' CreateInstance (Maybe Bool)
+ciInstallUpdatesOnBoot = lens _ciInstallUpdatesOnBoot (\ s a -> s{_ciInstallUpdatesOnBoot = a});
 
--- | The instance architecture. The default option is 'x86_64'. Instance types do
--- not necessarily support both architectures. For a list of the architectures
--- that are supported by the different instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families andTypes>.
-ciArchitecture :: Lens' CreateInstance (Maybe Architecture)
-ciArchitecture = lens _ciArchitecture (\s a -> s { _ciArchitecture = a })
+-- | The instance\'s virtualization type, 'paravirtual' or 'hvm'.
+ciVirtualizationType :: Lens' CreateInstance (Maybe Text)
+ciVirtualizationType = lens _ciVirtualizationType (\ s a -> s{_ciVirtualizationType = a});
 
--- | For load-based or time-based instances, the type. Windows stacks can use only
--- time-based instances.
-ciAutoScalingType :: Lens' CreateInstance (Maybe AutoScalingType)
-ciAutoScalingType =
-    lens _ciAutoScalingType (\s a -> s { _ciAutoScalingType = a })
+-- | The instance host name.
+ciHostname :: Lens' CreateInstance (Maybe Text)
+ciHostname = lens _ciHostname (\ s a -> s{_ciHostname = a});
 
--- | The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions andEndpoints>.
-ciAvailabilityZone :: Lens' CreateInstance (Maybe Text)
-ciAvailabilityZone =
-    lens _ciAvailabilityZone (\s a -> s { _ciAvailabilityZone = a })
+-- | The instance\'s Amazon EC2 key-pair name.
+ciSSHKeyName :: Lens' CreateInstance (Maybe Text)
+ciSSHKeyName = lens _ciSSHKeyName (\ s a -> s{_ciSSHKeyName = a});
 
--- | An array of 'BlockDeviceMapping' objects that specify the instance's block
--- devices. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html Block Device Mapping>.
-ciBlockDeviceMappings :: Lens' CreateInstance [BlockDeviceMapping]
-ciBlockDeviceMappings =
-    lens _ciBlockDeviceMappings (\s a -> s { _ciBlockDeviceMappings = a })
-        . _List
+-- | The default AWS OpsWorks agent version. You have the following options:
+--
+-- -   'INHERIT' - Use the stack\'s default agent version setting.
+-- -   /version_number/ - Use the specified agent version. This value
+--     overrides the stack\'s default setting. To update the agent version,
+--     edit the instance configuration and specify a new version. AWS
+--     OpsWorks then automatically installs that version on the instance.
+--
+-- The default setting is 'INHERIT'. To specify an agent version, you must
+-- use the complete version number, not the abbreviated number shown on the
+-- console. For a list of available agent version numbers, call
+-- DescribeAgentVersions.
+ciAgentVersion :: Lens' CreateInstance (Maybe Text)
+ciAgentVersion = lens _ciAgentVersion (\ s a -> s{_ciAgentVersion = a});
 
--- | Whether to create an Amazon EBS-optimized instance.
-ciEbsOptimized :: Lens' CreateInstance (Maybe Bool)
-ciEbsOptimized = lens _ciEbsOptimized (\s a -> s { _ciEbsOptimized = a })
+-- | The ID of the instance\'s subnet. If the stack is running in a VPC, you
+-- can use this parameter to override the stack\'s default subnet ID value
+-- and direct AWS OpsWorks to launch the instance in a different subnet.
+ciSubnetId :: Lens' CreateInstance (Maybe Text)
+ciSubnetId = lens _ciSubnetId (\ s a -> s{_ciSubnetId = a});
 
--- | The instance host name.
-ciHostname :: Lens' CreateInstance (Maybe Text)
-ciHostname = lens _ciHostname (\s a -> s { _ciHostname = a })
+-- | Whether to create an Amazon EBS-optimized instance.
+ciEBSOptimized :: Lens' CreateInstance (Maybe Bool)
+ciEBSOptimized = lens _ciEBSOptimized (\ s a -> s{_ciEBSOptimized = a});
 
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. To control when updates are installed, set
--- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
--- Linux) or 'apt-get' (Ubuntu) on the instances.
+-- | The instance\'s operating system, which must be set to one of the
+-- following.
 --
--- We strongly recommend using the default value of 'true' to ensure that your
--- instances have the latest security updates.
+-- -   A supported Linux operating system: An Amazon Linux version, such as
+--     'Amazon Linux 2015.03', 'Red Hat Enterprise Linux 7',
+--     'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'.
+-- -   'Microsoft Windows Server 2012 R2 Base'.
+-- -   A custom AMI: 'Custom'.
 --
+-- For more information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems>.
 --
-ciInstallUpdatesOnBoot :: Lens' CreateInstance (Maybe Bool)
-ciInstallUpdatesOnBoot =
-    lens _ciInstallUpdatesOnBoot (\s a -> s { _ciInstallUpdatesOnBoot = a })
+-- The default option is the current Amazon Linux version. If you set this
+-- parameter to 'Custom', you must use the CreateInstance action\'s AmiId
+-- parameter to specify the custom AMI that you want to use. For more
+-- information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems>For
+-- more information on how to use custom AMIs with AWS OpsWorks, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
+ciOS :: Lens' CreateInstance (Maybe Text)
+ciOS = lens _ciOS (\ s a -> s{_ciOS = a});
 
--- | The instance type. AWS OpsWorks supports all instance types except Cluster
--- Compute, Cluster GPU, and High Memory Cluster. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>. The parameter values that you use to specify the various types are in the
--- API Name column of the Available Instance Types table.
-ciInstanceType :: Lens' CreateInstance Text
-ciInstanceType = lens _ciInstanceType (\s a -> s { _ciInstanceType = a })
+-- | The instance Availability Zone. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+ciAvailabilityZone :: Lens' CreateInstance (Maybe Text)
+ciAvailabilityZone = lens _ciAvailabilityZone (\ s a -> s{_ciAvailabilityZone = a});
 
--- | An array that contains the instance layer IDs.
-ciLayerIds :: Lens' CreateInstance [Text]
-ciLayerIds = lens _ciLayerIds (\s a -> s { _ciLayerIds = a }) . _List
+-- | For load-based or time-based instances, the type. Windows stacks can use
+-- only time-based instances.
+ciAutoScalingType :: Lens' CreateInstance (Maybe AutoScalingType)
+ciAutoScalingType = lens _ciAutoScalingType (\ s a -> s{_ciAutoScalingType = a});
 
--- | The instance's operating system, which must be set to one of the following.
---
--- For Windows stacks: Microsoft Windows Server 2012 R2.
---
--- For Linux stacks:
+-- | The instance architecture. The default option is 'x86_64'. Instance
+-- types do not necessarily support both architectures. For a list of the
+-- architectures that are supported by the different instance types, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>.
+ciArchitecture :: Lens' CreateInstance (Maybe Architecture)
+ciArchitecture = lens _ciArchitecture (\ s a -> s{_ciArchitecture = a});
+
+-- | A custom AMI ID to be used to create the instance. The AMI should be
+-- based on one of the supported operating systems. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
 --
--- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'   The
--- default option is the current Amazon Linux version. If you set this parameter
--- to 'Custom', you must use the 'CreateInstance' action's AmiId parameter to
--- specify the custom AMI that you want to use. For more information on the
--- standard operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems>For more information on how
--- to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
-ciOs :: Lens' CreateInstance (Maybe Text)
-ciOs = lens _ciOs (\s a -> s { _ciOs = a })
+-- If you specify a custom AMI, you must set 'Os' to 'Custom'.
+ciAMIId :: Lens' CreateInstance (Maybe Text)
+ciAMIId = lens _ciAMIId (\ s a -> s{_ciAMIId = a});
 
--- | The instance root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the RootDevice>.
-ciRootDeviceType :: Lens' CreateInstance (Maybe RootDeviceType)
-ciRootDeviceType = lens _ciRootDeviceType (\s a -> s { _ciRootDeviceType = a })
+-- | An array of 'BlockDeviceMapping' objects that specify the instance\'s
+-- block devices. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html Block Device Mapping>.
+ciBlockDeviceMappings :: Lens' CreateInstance [BlockDeviceMapping]
+ciBlockDeviceMappings = lens _ciBlockDeviceMappings (\ s a -> s{_ciBlockDeviceMappings = a}) . _Default . _Coerce;
 
--- | The instance's Amazon EC2 key pair name.
-ciSshKeyName :: Lens' CreateInstance (Maybe Text)
-ciSshKeyName = lens _ciSshKeyName (\s a -> s { _ciSshKeyName = a })
+-- | The instance root device type. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+ciRootDeviceType :: Lens' CreateInstance (Maybe RootDeviceType)
+ciRootDeviceType = lens _ciRootDeviceType (\ s a -> s{_ciRootDeviceType = a});
 
 -- | The stack ID.
 ciStackId :: Lens' CreateInstance Text
-ciStackId = lens _ciStackId (\s a -> s { _ciStackId = a })
+ciStackId = lens _ciStackId (\ s a -> s{_ciStackId = a});
 
--- | The ID of the instance's subnet. If the stack is running in a VPC, you can
--- use this parameter to override the stack's default subnet ID value and direct
--- AWS OpsWorks to launch the instance in a different subnet.
-ciSubnetId :: Lens' CreateInstance (Maybe Text)
-ciSubnetId = lens _ciSubnetId (\s a -> s { _ciSubnetId = a })
+-- | An array that contains the instance\'s layer IDs.
+ciLayerIds :: Lens' CreateInstance [Text]
+ciLayerIds = lens _ciLayerIds (\ s a -> s{_ciLayerIds = a}) . _Coerce;
 
--- | The instance's virtualization type, 'paravirtual' or 'hvm'.
-ciVirtualizationType :: Lens' CreateInstance (Maybe Text)
-ciVirtualizationType =
-    lens _ciVirtualizationType (\s a -> s { _ciVirtualizationType = a })
+-- | The instance type, such as 't2.micro'. For a list of supported instance
+-- types, open the stack in the console, choose __Instances__, and choose
+-- __+ Instance__. The __Size__ list contains the currently supported
+-- types. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>.
+-- The parameter values that you use to specify the various types are in
+-- the __API Name__ column of the __Available Instance Types__ table.
+ciInstanceType :: Lens' CreateInstance Text
+ciInstanceType = lens _ciInstanceType (\ s a -> s{_ciInstanceType = a});
 
-newtype CreateInstanceResponse = CreateInstanceResponse
-    { _cirInstanceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CreateInstance where
+        type Sv CreateInstance = OpsWorks
+        type Rs CreateInstance = CreateInstanceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateInstanceResponse' <$>
+                   (x .?> "InstanceId") <*> (pure (fromEnum s)))
 
--- | 'CreateInstanceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cirInstanceId' @::@ 'Maybe' 'Text'
---
-createInstanceResponse :: CreateInstanceResponse
-createInstanceResponse = CreateInstanceResponse
-    { _cirInstanceId = Nothing
-    }
+instance ToHeaders CreateInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The instance ID.
-cirInstanceId :: Lens' CreateInstanceResponse (Maybe Text)
-cirInstanceId = lens _cirInstanceId (\s a -> s { _cirInstanceId = a })
+instance ToJSON CreateInstance where
+        toJSON CreateInstance'{..}
+          = object
+              ["InstallUpdatesOnBoot" .= _ciInstallUpdatesOnBoot,
+               "VirtualizationType" .= _ciVirtualizationType,
+               "Hostname" .= _ciHostname,
+               "SshKeyName" .= _ciSSHKeyName,
+               "AgentVersion" .= _ciAgentVersion,
+               "SubnetId" .= _ciSubnetId,
+               "EbsOptimized" .= _ciEBSOptimized, "Os" .= _ciOS,
+               "AvailabilityZone" .= _ciAvailabilityZone,
+               "AutoScalingType" .= _ciAutoScalingType,
+               "Architecture" .= _ciArchitecture,
+               "AmiId" .= _ciAMIId,
+               "BlockDeviceMappings" .= _ciBlockDeviceMappings,
+               "RootDeviceType" .= _ciRootDeviceType,
+               "StackId" .= _ciStackId, "LayerIds" .= _ciLayerIds,
+               "InstanceType" .= _ciInstanceType]
 
 instance ToPath CreateInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateInstance where
-    toQuery = const mempty
-
-instance ToHeaders CreateInstance
+        toQuery = const mempty
 
-instance ToJSON CreateInstance where
-    toJSON CreateInstance{..} = object
-        [ "StackId"              .= _ciStackId
-        , "LayerIds"             .= _ciLayerIds
-        , "InstanceType"         .= _ciInstanceType
-        , "AutoScalingType"      .= _ciAutoScalingType
-        , "Hostname"             .= _ciHostname
-        , "Os"                   .= _ciOs
-        , "AmiId"                .= _ciAmiId
-        , "SshKeyName"           .= _ciSshKeyName
-        , "AvailabilityZone"     .= _ciAvailabilityZone
-        , "VirtualizationType"   .= _ciVirtualizationType
-        , "SubnetId"             .= _ciSubnetId
-        , "Architecture"         .= _ciArchitecture
-        , "RootDeviceType"       .= _ciRootDeviceType
-        , "BlockDeviceMappings"  .= _ciBlockDeviceMappings
-        , "InstallUpdatesOnBoot" .= _ciInstallUpdatesOnBoot
-        , "EbsOptimized"         .= _ciEbsOptimized
-        ]
+-- | Contains the response to a 'CreateInstance' request.
+--
+-- /See:/ 'createInstanceResponse' smart constructor.
+data CreateInstanceResponse = CreateInstanceResponse'
+    { _cirsInstanceId :: !(Maybe Text)
+    , _cirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateInstance where
-    type Sv CreateInstance = OpsWorks
-    type Rs CreateInstance = CreateInstanceResponse
+-- | Creates a value of 'CreateInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cirsInstanceId'
+--
+-- * 'cirsStatus'
+createInstanceResponse
+    :: Int -- ^ 'cirsStatus'
+    -> CreateInstanceResponse
+createInstanceResponse pStatus_ =
+    CreateInstanceResponse'
+    { _cirsInstanceId = Nothing
+    , _cirsStatus = pStatus_
+    }
 
-    request  = post "CreateInstance"
-    response = jsonResponse
+-- | The instance ID.
+cirsInstanceId :: Lens' CreateInstanceResponse (Maybe Text)
+cirsInstanceId = lens _cirsInstanceId (\ s a -> s{_cirsInstanceId = a});
 
-instance FromJSON CreateInstanceResponse where
-    parseJSON = withObject "CreateInstanceResponse" $ \o -> CreateInstanceResponse
-        <$> o .:? "InstanceId"
+-- | The response status code.
+cirsStatus :: Lens' CreateInstanceResponse Int
+cirsStatus = lens _cirsStatus (\ s a -> s{_cirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateLayer.hs b/gen/Network/AWS/OpsWorks/CreateLayer.hs
--- a/gen/Network/AWS/OpsWorks/CreateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/CreateLayer.hs
@@ -1,312 +1,341 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateLayer
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a layer. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-create.html How to Create a Layer>.
+-- Creates a layer. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-create.html How to Create a Layer>.
 --
--- You should use CreateLayer for noncustom layer types such as PHP App Server
--- only if the stack does not have an existing layer of that type. A stack can
--- have at most one instance of each noncustom layer; if you attempt to create a
--- second instance, CreateLayer fails. A stack can have an arbitrary number of
--- custom layers, so you can call CreateLayer as many times as you like for that
--- layer type.
+-- You should use __CreateLayer__ for noncustom layer types such as PHP App
+-- Server only if the stack does not have an existing layer of that type. A
+-- stack can have at most one instance of each noncustom layer; if you
+-- attempt to create a second instance, __CreateLayer__ fails. A stack can
+-- have an arbitrary number of custom layers, so you can call
+-- __CreateLayer__ as many times as you like for that layer type.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateLayer.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateLayer.html AWS API Reference> for CreateLayer.
 module Network.AWS.OpsWorks.CreateLayer
     (
-    -- * Request
-      CreateLayer
-    -- ** Request constructor
-    , createLayer
-    -- ** Request lenses
-    , clAttributes
-    , clAutoAssignElasticIps
-    , clAutoAssignPublicIps
-    , clCustomInstanceProfileArn
-    , clCustomRecipes
-    , clCustomSecurityGroupIds
-    , clEnableAutoHealing
+    -- * Creating a Request
+      createLayer
+    , CreateLayer
+    -- * Request Lenses
+    , clCustomInstanceProfileARN
     , clInstallUpdatesOnBoot
+    , clCustomSecurityGroupIds
     , clLifecycleEventConfiguration
-    , clName
+    , clCustomRecipes
+    , clVolumeConfigurations
+    , clCustomJSON
+    , clEnableAutoHealing
     , clPackages
-    , clShortname
+    , clAttributes
+    , clAutoAssignPublicIPs
+    , clUseEBSOptimizedInstances
+    , clAutoAssignElasticIPs
     , clStackId
     , clType
-    , clUseEbsOptimizedInstances
-    , clVolumeConfigurations
+    , clName
+    , clShortname
 
-    -- * Response
-    , CreateLayerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createLayerResponse
-    -- ** Response lenses
-    , clrLayerId
+    , CreateLayerResponse
+    -- * Response Lenses
+    , clrsLayerId
+    , clrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateLayer = CreateLayer
-    { _clAttributes                  :: Map LayerAttributesKeys Text
-    , _clAutoAssignElasticIps        :: Maybe Bool
-    , _clAutoAssignPublicIps         :: Maybe Bool
-    , _clCustomInstanceProfileArn    :: Maybe Text
-    , _clCustomRecipes               :: Maybe Recipes
-    , _clCustomSecurityGroupIds      :: List "CustomSecurityGroupIds" Text
-    , _clEnableAutoHealing           :: Maybe Bool
-    , _clInstallUpdatesOnBoot        :: Maybe Bool
-    , _clLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
-    , _clName                        :: Text
-    , _clPackages                    :: List "Packages" Text
-    , _clShortname                   :: Text
-    , _clStackId                     :: Text
-    , _clType                        :: LayerType
-    , _clUseEbsOptimizedInstances    :: Maybe Bool
-    , _clVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createLayer' smart constructor.
+data CreateLayer = CreateLayer'
+    { _clCustomInstanceProfileARN    :: !(Maybe Text)
+    , _clInstallUpdatesOnBoot        :: !(Maybe Bool)
+    , _clCustomSecurityGroupIds      :: !(Maybe [Text])
+    , _clLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+    , _clCustomRecipes               :: !(Maybe Recipes)
+    , _clVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
+    , _clCustomJSON                  :: !(Maybe Text)
+    , _clEnableAutoHealing           :: !(Maybe Bool)
+    , _clPackages                    :: !(Maybe [Text])
+    , _clAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
+    , _clAutoAssignPublicIPs         :: !(Maybe Bool)
+    , _clUseEBSOptimizedInstances    :: !(Maybe Bool)
+    , _clAutoAssignElasticIPs        :: !(Maybe Bool)
+    , _clStackId                     :: !Text
+    , _clType                        :: !LayerType
+    , _clName                        :: !Text
+    , _clShortname                   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateLayer' constructor.
+-- | Creates a value of 'CreateLayer' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'clAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
+-- * 'clCustomInstanceProfileARN'
 --
--- * 'clAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
+-- * 'clInstallUpdatesOnBoot'
 --
--- * 'clAutoAssignPublicIps' @::@ 'Maybe' 'Bool'
+-- * 'clCustomSecurityGroupIds'
 --
--- * 'clCustomInstanceProfileArn' @::@ 'Maybe' 'Text'
+-- * 'clLifecycleEventConfiguration'
 --
--- * 'clCustomRecipes' @::@ 'Maybe' 'Recipes'
+-- * 'clCustomRecipes'
 --
--- * 'clCustomSecurityGroupIds' @::@ ['Text']
+-- * 'clVolumeConfigurations'
 --
--- * 'clEnableAutoHealing' @::@ 'Maybe' 'Bool'
+-- * 'clCustomJSON'
 --
--- * 'clInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
+-- * 'clEnableAutoHealing'
 --
--- * 'clLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
+-- * 'clPackages'
 --
--- * 'clName' @::@ 'Text'
+-- * 'clAttributes'
 --
--- * 'clPackages' @::@ ['Text']
+-- * 'clAutoAssignPublicIPs'
 --
--- * 'clShortname' @::@ 'Text'
+-- * 'clUseEBSOptimizedInstances'
 --
--- * 'clStackId' @::@ 'Text'
+-- * 'clAutoAssignElasticIPs'
 --
--- * 'clType' @::@ 'LayerType'
+-- * 'clStackId'
 --
--- * 'clUseEbsOptimizedInstances' @::@ 'Maybe' 'Bool'
+-- * 'clType'
 --
--- * 'clVolumeConfigurations' @::@ ['VolumeConfiguration']
+-- * 'clName'
 --
-createLayer :: Text -- ^ 'clStackId'
-            -> LayerType -- ^ 'clType'
-            -> Text -- ^ 'clName'
-            -> Text -- ^ 'clShortname'
-            -> CreateLayer
-createLayer p1 p2 p3 p4 = CreateLayer
-    { _clStackId                     = p1
-    , _clType                        = p2
-    , _clName                        = p3
-    , _clShortname                   = p4
-    , _clAttributes                  = mempty
-    , _clCustomInstanceProfileArn    = Nothing
-    , _clCustomSecurityGroupIds      = mempty
-    , _clPackages                    = mempty
-    , _clVolumeConfigurations        = mempty
-    , _clEnableAutoHealing           = Nothing
-    , _clAutoAssignElasticIps        = Nothing
-    , _clAutoAssignPublicIps         = Nothing
-    , _clCustomRecipes               = Nothing
-    , _clInstallUpdatesOnBoot        = Nothing
-    , _clUseEbsOptimizedInstances    = Nothing
+-- * 'clShortname'
+createLayer
+    :: Text -- ^ 'clStackId'
+    -> LayerType -- ^ 'clType'
+    -> Text -- ^ 'clName'
+    -> Text -- ^ 'clShortname'
+    -> CreateLayer
+createLayer pStackId_ pType_ pName_ pShortname_ =
+    CreateLayer'
+    { _clCustomInstanceProfileARN = Nothing
+    , _clInstallUpdatesOnBoot = Nothing
+    , _clCustomSecurityGroupIds = Nothing
     , _clLifecycleEventConfiguration = Nothing
+    , _clCustomRecipes = Nothing
+    , _clVolumeConfigurations = Nothing
+    , _clCustomJSON = Nothing
+    , _clEnableAutoHealing = Nothing
+    , _clPackages = Nothing
+    , _clAttributes = Nothing
+    , _clAutoAssignPublicIPs = Nothing
+    , _clUseEBSOptimizedInstances = Nothing
+    , _clAutoAssignElasticIPs = Nothing
+    , _clStackId = pStackId_
+    , _clType = pType_
+    , _clName = pName_
+    , _clShortname = pShortname_
     }
 
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-clAttributes :: Lens' CreateLayer (HashMap LayerAttributesKeys Text)
-clAttributes = lens _clAttributes (\s a -> s { _clAttributes = a }) . _Map
+-- | The ARN of an IAM profile to be used for the layer\'s EC2 instances. For
+-- more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+clCustomInstanceProfileARN :: Lens' CreateLayer (Maybe Text)
+clCustomInstanceProfileARN = lens _clCustomInstanceProfileARN (\ s a -> s{_clCustomInstanceProfileARN = a});
 
--- | Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's
--- instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
-clAutoAssignElasticIps :: Lens' CreateLayer (Maybe Bool)
-clAutoAssignElasticIps =
-    lens _clAutoAssignElasticIps (\s a -> s { _clAutoAssignElasticIps = a })
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. To control when updates are
+-- installed, set this value to 'false'. You must then update your
+-- instances manually by using CreateDeployment to run the
+-- 'update_dependencies' stack command or by manually running 'yum' (Amazon
+-- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- To ensure that your instances have the latest security updates, we
+-- strongly recommend using the default value of 'true'.
+clInstallUpdatesOnBoot :: Lens' CreateLayer (Maybe Bool)
+clInstallUpdatesOnBoot = lens _clInstallUpdatesOnBoot (\ s a -> s{_clInstallUpdatesOnBoot = a});
 
--- | For stacks that are running in a VPC, whether to automatically assign a
--- public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How toEdit a Layer>.
-clAutoAssignPublicIps :: Lens' CreateLayer (Maybe Bool)
-clAutoAssignPublicIps =
-    lens _clAutoAssignPublicIps (\s a -> s { _clAutoAssignPublicIps = a })
+-- | An array containing the layer custom security group IDs.
+clCustomSecurityGroupIds :: Lens' CreateLayer [Text]
+clCustomSecurityGroupIds = lens _clCustomSecurityGroupIds (\ s a -> s{_clCustomSecurityGroupIds = a}) . _Default . _Coerce;
 
--- | The ARN of an IAM profile that to be used for the layer's EC2 instances. For
--- more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-clCustomInstanceProfileArn :: Lens' CreateLayer (Maybe Text)
-clCustomInstanceProfileArn =
-    lens _clCustomInstanceProfileArn
-        (\s a -> s { _clCustomInstanceProfileArn = a })
+-- | A 'LifeCycleEventConfiguration' object that you can use to configure the
+-- Shutdown event to specify an execution timeout and enable or disable
+-- Elastic Load Balancer connection draining.
+clLifecycleEventConfiguration :: Lens' CreateLayer (Maybe LifecycleEventConfiguration)
+clLifecycleEventConfiguration = lens _clLifecycleEventConfiguration (\ s a -> s{_clLifecycleEventConfiguration = a});
 
 -- | A 'LayerCustomRecipes' object that specifies the layer custom recipes.
 clCustomRecipes :: Lens' CreateLayer (Maybe Recipes)
-clCustomRecipes = lens _clCustomRecipes (\s a -> s { _clCustomRecipes = a })
+clCustomRecipes = lens _clCustomRecipes (\ s a -> s{_clCustomRecipes = a});
 
--- | An array containing the layer custom security group IDs.
-clCustomSecurityGroupIds :: Lens' CreateLayer [Text]
-clCustomSecurityGroupIds =
-    lens _clCustomSecurityGroupIds
-        (\s a -> s { _clCustomSecurityGroupIds = a })
-            . _List
+-- | A 'VolumeConfigurations' object that describes the layer\'s Amazon EBS
+-- volumes.
+clVolumeConfigurations :: Lens' CreateLayer [VolumeConfiguration]
+clVolumeConfigurations = lens _clVolumeConfigurations (\ s a -> s{_clVolumeConfigurations = a}) . _Default . _Coerce;
 
+-- | A JSON-formatted string containing custom stack configuration and
+-- deployment attributes to be installed on the layer\'s instances. For
+-- more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-json-override.html Using Custom JSON>.
+clCustomJSON :: Lens' CreateLayer (Maybe Text)
+clCustomJSON = lens _clCustomJSON (\ s a -> s{_clCustomJSON = a});
+
 -- | Whether to disable auto healing for the layer.
 clEnableAutoHealing :: Lens' CreateLayer (Maybe Bool)
-clEnableAutoHealing =
-    lens _clEnableAutoHealing (\s a -> s { _clEnableAutoHealing = a })
+clEnableAutoHealing = lens _clEnableAutoHealing (\ s a -> s{_clEnableAutoHealing = a});
 
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. To control when updates are installed, set
--- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
--- Linux) or 'apt-get' (Ubuntu) on the instances.
---
--- We strongly recommend using the default value of 'true', to ensure that your
--- instances have the latest security updates.
---
---
-clInstallUpdatesOnBoot :: Lens' CreateLayer (Maybe Bool)
-clInstallUpdatesOnBoot =
-    lens _clInstallUpdatesOnBoot (\s a -> s { _clInstallUpdatesOnBoot = a })
+-- | An array of 'Package' objects that describes the layer packages.
+clPackages :: Lens' CreateLayer [Text]
+clPackages = lens _clPackages (\ s a -> s{_clPackages = a}) . _Default . _Coerce;
 
--- | A LifeCycleEventConfiguration object that you can use to configure the
--- Shutdown event to specify an execution timeout and enable or disable Elastic
--- Load Balancer connection draining.
-clLifecycleEventConfiguration :: Lens' CreateLayer (Maybe LifecycleEventConfiguration)
-clLifecycleEventConfiguration =
-    lens _clLifecycleEventConfiguration
-        (\s a -> s { _clLifecycleEventConfiguration = a })
+-- | One or more user-defined key-value pairs to be added to the stack
+-- attributes.
+--
+-- To create a cluster layer, set the 'EcsClusterArn' attribute to the
+-- cluster\'s ARN.
+clAttributes :: Lens' CreateLayer (HashMap LayerAttributesKeys Text)
+clAttributes = lens _clAttributes (\ s a -> s{_clAttributes = a}) . _Default . _Map;
 
--- | The layer name, which is used by the console.
-clName :: Lens' CreateLayer Text
-clName = lens _clName (\s a -> s { _clName = a })
+-- | For stacks that are running in a VPC, whether to automatically assign a
+-- public IP address to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+clAutoAssignPublicIPs :: Lens' CreateLayer (Maybe Bool)
+clAutoAssignPublicIPs = lens _clAutoAssignPublicIPs (\ s a -> s{_clAutoAssignPublicIPs = a});
 
--- | An array of 'Package' objects that describe the layer packages.
-clPackages :: Lens' CreateLayer [Text]
-clPackages = lens _clPackages (\s a -> s { _clPackages = a }) . _List
+-- | Whether to use Amazon EBS-optimized instances.
+clUseEBSOptimizedInstances :: Lens' CreateLayer (Maybe Bool)
+clUseEBSOptimizedInstances = lens _clUseEBSOptimizedInstances (\ s a -> s{_clUseEBSOptimizedInstances = a});
 
--- | For custom layers only, use this parameter to specify the layer's short name,
--- which is used internally by AWS OpsWorks and by Chef recipes. The short name
--- is also used as the name for the directory where your app files are
--- installed. It can have a maximum of 200 characters, which are limited to the
--- alphanumeric characters, '-', '_', and '.'.
---
--- The built-in layers' short names are defined by AWS OpsWorks. For more
--- information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
-clShortname :: Lens' CreateLayer Text
-clShortname = lens _clShortname (\s a -> s { _clShortname = a })
+-- | Whether to automatically assign an
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
+-- to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+clAutoAssignElasticIPs :: Lens' CreateLayer (Maybe Bool)
+clAutoAssignElasticIPs = lens _clAutoAssignElasticIPs (\ s a -> s{_clAutoAssignElasticIPs = a});
 
 -- | The layer stack ID.
 clStackId :: Lens' CreateLayer Text
-clStackId = lens _clStackId (\s a -> s { _clStackId = a })
+clStackId = lens _clStackId (\ s a -> s{_clStackId = a});
 
--- | The layer type. A stack cannot have more than one built-in layer of the same
--- type. It can have any number of custom layers.
+-- | The layer type. A stack cannot have more than one built-in layer of the
+-- same type. It can have any number of custom layers.
 clType :: Lens' CreateLayer LayerType
-clType = lens _clType (\s a -> s { _clType = a })
+clType = lens _clType (\ s a -> s{_clType = a});
 
--- | Whether to use Amazon EBS-optimized instances.
-clUseEbsOptimizedInstances :: Lens' CreateLayer (Maybe Bool)
-clUseEbsOptimizedInstances =
-    lens _clUseEbsOptimizedInstances
-        (\s a -> s { _clUseEbsOptimizedInstances = a })
+-- | The layer name, which is used by the console.
+clName :: Lens' CreateLayer Text
+clName = lens _clName (\ s a -> s{_clName = a});
 
--- | A 'VolumeConfigurations' object that describes the layer's Amazon EBS volumes.
-clVolumeConfigurations :: Lens' CreateLayer [VolumeConfiguration]
-clVolumeConfigurations =
-    lens _clVolumeConfigurations (\s a -> s { _clVolumeConfigurations = a })
-        . _List
+-- | For custom layers only, use this parameter to specify the layer\'s short
+-- name, which is used internally by AWS OpsWorks and by Chef recipes. The
+-- short name is also used as the name for the directory where your app
+-- files are installed. It can have a maximum of 200 characters, which are
+-- limited to the alphanumeric characters, \'-\', \'_\', and \'.\'.
+--
+-- The built-in layers\' short names are defined by AWS OpsWorks. For more
+-- information, see the
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>.
+clShortname :: Lens' CreateLayer Text
+clShortname = lens _clShortname (\ s a -> s{_clShortname = a});
 
-newtype CreateLayerResponse = CreateLayerResponse
-    { _clrLayerId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CreateLayer where
+        type Sv CreateLayer = OpsWorks
+        type Rs CreateLayer = CreateLayerResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateLayerResponse' <$>
+                   (x .?> "LayerId") <*> (pure (fromEnum s)))
 
--- | 'CreateLayerResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'clrLayerId' @::@ 'Maybe' 'Text'
---
-createLayerResponse :: CreateLayerResponse
-createLayerResponse = CreateLayerResponse
-    { _clrLayerId = Nothing
-    }
+instance ToHeaders CreateLayer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateLayer" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The layer ID.
-clrLayerId :: Lens' CreateLayerResponse (Maybe Text)
-clrLayerId = lens _clrLayerId (\s a -> s { _clrLayerId = a })
+instance ToJSON CreateLayer where
+        toJSON CreateLayer'{..}
+          = object
+              ["CustomInstanceProfileArn" .=
+                 _clCustomInstanceProfileARN,
+               "InstallUpdatesOnBoot" .= _clInstallUpdatesOnBoot,
+               "CustomSecurityGroupIds" .=
+                 _clCustomSecurityGroupIds,
+               "LifecycleEventConfiguration" .=
+                 _clLifecycleEventConfiguration,
+               "CustomRecipes" .= _clCustomRecipes,
+               "VolumeConfigurations" .= _clVolumeConfigurations,
+               "CustomJson" .= _clCustomJSON,
+               "EnableAutoHealing" .= _clEnableAutoHealing,
+               "Packages" .= _clPackages,
+               "Attributes" .= _clAttributes,
+               "AutoAssignPublicIps" .= _clAutoAssignPublicIPs,
+               "UseEbsOptimizedInstances" .=
+                 _clUseEBSOptimizedInstances,
+               "AutoAssignElasticIps" .= _clAutoAssignElasticIPs,
+               "StackId" .= _clStackId, "Type" .= _clType,
+               "Name" .= _clName, "Shortname" .= _clShortname]
 
 instance ToPath CreateLayer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateLayer where
-    toQuery = const mempty
-
-instance ToHeaders CreateLayer
+        toQuery = const mempty
 
-instance ToJSON CreateLayer where
-    toJSON CreateLayer{..} = object
-        [ "StackId"                     .= _clStackId
-        , "Type"                        .= _clType
-        , "Name"                        .= _clName
-        , "Shortname"                   .= _clShortname
-        , "Attributes"                  .= _clAttributes
-        , "CustomInstanceProfileArn"    .= _clCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"      .= _clCustomSecurityGroupIds
-        , "Packages"                    .= _clPackages
-        , "VolumeConfigurations"        .= _clVolumeConfigurations
-        , "EnableAutoHealing"           .= _clEnableAutoHealing
-        , "AutoAssignElasticIps"        .= _clAutoAssignElasticIps
-        , "AutoAssignPublicIps"         .= _clAutoAssignPublicIps
-        , "CustomRecipes"               .= _clCustomRecipes
-        , "InstallUpdatesOnBoot"        .= _clInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances"    .= _clUseEbsOptimizedInstances
-        , "LifecycleEventConfiguration" .= _clLifecycleEventConfiguration
-        ]
+-- | Contains the response to a 'CreateLayer' request.
+--
+-- /See:/ 'createLayerResponse' smart constructor.
+data CreateLayerResponse = CreateLayerResponse'
+    { _clrsLayerId :: !(Maybe Text)
+    , _clrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateLayer where
-    type Sv CreateLayer = OpsWorks
-    type Rs CreateLayer = CreateLayerResponse
+-- | Creates a value of 'CreateLayerResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clrsLayerId'
+--
+-- * 'clrsStatus'
+createLayerResponse
+    :: Int -- ^ 'clrsStatus'
+    -> CreateLayerResponse
+createLayerResponse pStatus_ =
+    CreateLayerResponse'
+    { _clrsLayerId = Nothing
+    , _clrsStatus = pStatus_
+    }
 
-    request  = post "CreateLayer"
-    response = jsonResponse
+-- | The layer ID.
+clrsLayerId :: Lens' CreateLayerResponse (Maybe Text)
+clrsLayerId = lens _clrsLayerId (\ s a -> s{_clrsLayerId = a});
 
-instance FromJSON CreateLayerResponse where
-    parseJSON = withObject "CreateLayerResponse" $ \o -> CreateLayerResponse
-        <$> o .:? "LayerId"
+-- | The response status code.
+clrsStatus :: Lens' CreateLayerResponse Int
+clrsStatus = lens _clrsStatus (\ s a -> s{_clrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateStack.hs b/gen/Network/AWS/OpsWorks/CreateStack.hs
--- a/gen/Network/AWS/OpsWorks/CreateStack.hs
+++ b/gen/Network/AWS/OpsWorks/CreateStack.hs
@@ -1,371 +1,459 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-edit.html Create a New Stack>.
+-- Creates a new stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-edit.html Create a New Stack>.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateStack.html AWS API Reference> for CreateStack.
 module Network.AWS.OpsWorks.CreateStack
     (
-    -- * Request
-      CreateStack
-    -- ** Request constructor
-    , createStack
-    -- ** Request lenses
-    , csAttributes
+    -- * Creating a Request
+      createStack
+    , CreateStack
+    -- * Request Lenses
+    , csDefaultRootDeviceType
     , csChefConfiguration
-    , csConfigurationManager
+    , csVPCId
+    , csAgentVersion
+    , csDefaultSSHKeyName
+    , csCustomJSON
     , csCustomCookbooksSource
-    , csCustomJson
     , csDefaultAvailabilityZone
-    , csDefaultInstanceProfileArn
-    , csDefaultOs
-    , csDefaultRootDeviceType
-    , csDefaultSshKeyName
+    , csUseOpsworksSecurityGroups
+    , csDefaultOS
+    , csAttributes
+    , csUseCustomCookbooks
     , csDefaultSubnetId
+    , csConfigurationManager
     , csHostnameTheme
     , csName
     , csRegion
-    , csServiceRoleArn
-    , csUseCustomCookbooks
-    , csUseOpsworksSecurityGroups
-    , csVpcId
+    , csServiceRoleARN
+    , csDefaultInstanceProfileARN
 
-    -- * Response
-    , CreateStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createStackResponse
-    -- ** Response lenses
-    , csr1StackId
+    , CreateStackResponse
+    -- * Response Lenses
+    , crsStackId
+    , crsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateStack = CreateStack
-    { _csAttributes                :: Map StackAttributesKeys Text
-    , _csChefConfiguration         :: Maybe ChefConfiguration
-    , _csConfigurationManager      :: Maybe StackConfigurationManager
-    , _csCustomCookbooksSource     :: Maybe Source
-    , _csCustomJson                :: Maybe Text
-    , _csDefaultAvailabilityZone   :: Maybe Text
-    , _csDefaultInstanceProfileArn :: Text
-    , _csDefaultOs                 :: Maybe Text
-    , _csDefaultRootDeviceType     :: Maybe RootDeviceType
-    , _csDefaultSshKeyName         :: Maybe Text
-    , _csDefaultSubnetId           :: Maybe Text
-    , _csHostnameTheme             :: Maybe Text
-    , _csName                      :: Text
-    , _csRegion                    :: Text
-    , _csServiceRoleArn            :: Text
-    , _csUseCustomCookbooks        :: Maybe Bool
-    , _csUseOpsworksSecurityGroups :: Maybe Bool
-    , _csVpcId                     :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'createStack' smart constructor.
+data CreateStack = CreateStack'
+    { _csDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+    , _csChefConfiguration         :: !(Maybe ChefConfiguration)
+    , _csVPCId                     :: !(Maybe Text)
+    , _csAgentVersion              :: !(Maybe Text)
+    , _csDefaultSSHKeyName         :: !(Maybe Text)
+    , _csCustomJSON                :: !(Maybe Text)
+    , _csCustomCookbooksSource     :: !(Maybe Source)
+    , _csDefaultAvailabilityZone   :: !(Maybe Text)
+    , _csUseOpsworksSecurityGroups :: !(Maybe Bool)
+    , _csDefaultOS                 :: !(Maybe Text)
+    , _csAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+    , _csUseCustomCookbooks        :: !(Maybe Bool)
+    , _csDefaultSubnetId           :: !(Maybe Text)
+    , _csConfigurationManager      :: !(Maybe StackConfigurationManager)
+    , _csHostnameTheme             :: !(Maybe Text)
+    , _csName                      :: !Text
+    , _csRegion                    :: !Text
+    , _csServiceRoleARN            :: !Text
+    , _csDefaultInstanceProfileARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateStack' constructor.
+-- | Creates a value of 'CreateStack' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
+-- * 'csDefaultRootDeviceType'
 --
--- * 'csChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
+-- * 'csChefConfiguration'
 --
--- * 'csConfigurationManager' @::@ 'Maybe' 'StackConfigurationManager'
+-- * 'csVPCId'
 --
--- * 'csCustomCookbooksSource' @::@ 'Maybe' 'Source'
+-- * 'csAgentVersion'
 --
--- * 'csCustomJson' @::@ 'Maybe' 'Text'
+-- * 'csDefaultSSHKeyName'
 --
--- * 'csDefaultAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'csCustomJSON'
 --
--- * 'csDefaultInstanceProfileArn' @::@ 'Text'
+-- * 'csCustomCookbooksSource'
 --
--- * 'csDefaultOs' @::@ 'Maybe' 'Text'
+-- * 'csDefaultAvailabilityZone'
 --
--- * 'csDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
+-- * 'csUseOpsworksSecurityGroups'
 --
--- * 'csDefaultSshKeyName' @::@ 'Maybe' 'Text'
+-- * 'csDefaultOS'
 --
--- * 'csDefaultSubnetId' @::@ 'Maybe' 'Text'
+-- * 'csAttributes'
 --
--- * 'csHostnameTheme' @::@ 'Maybe' 'Text'
+-- * 'csUseCustomCookbooks'
 --
--- * 'csName' @::@ 'Text'
+-- * 'csDefaultSubnetId'
 --
--- * 'csRegion' @::@ 'Text'
+-- * 'csConfigurationManager'
 --
--- * 'csServiceRoleArn' @::@ 'Text'
+-- * 'csHostnameTheme'
 --
--- * 'csUseCustomCookbooks' @::@ 'Maybe' 'Bool'
+-- * 'csName'
 --
--- * 'csUseOpsworksSecurityGroups' @::@ 'Maybe' 'Bool'
+-- * 'csRegion'
 --
--- * 'csVpcId' @::@ 'Maybe' 'Text'
+-- * 'csServiceRoleARN'
 --
-createStack :: Text -- ^ 'csName'
-            -> Text -- ^ 'csRegion'
-            -> Text -- ^ 'csServiceRoleArn'
-            -> Text -- ^ 'csDefaultInstanceProfileArn'
-            -> CreateStack
-createStack p1 p2 p3 p4 = CreateStack
-    { _csName                      = p1
-    , _csRegion                    = p2
-    , _csServiceRoleArn            = p3
-    , _csDefaultInstanceProfileArn = p4
-    , _csVpcId                     = Nothing
-    , _csAttributes                = mempty
-    , _csDefaultOs                 = Nothing
-    , _csHostnameTheme             = Nothing
-    , _csDefaultAvailabilityZone   = Nothing
-    , _csDefaultSubnetId           = Nothing
-    , _csCustomJson                = Nothing
-    , _csConfigurationManager      = Nothing
-    , _csChefConfiguration         = Nothing
-    , _csUseCustomCookbooks        = Nothing
+-- * 'csDefaultInstanceProfileARN'
+createStack
+    :: Text -- ^ 'csName'
+    -> Text -- ^ 'csRegion'
+    -> Text -- ^ 'csServiceRoleARN'
+    -> Text -- ^ 'csDefaultInstanceProfileARN'
+    -> CreateStack
+createStack pName_ pRegion_ pServiceRoleARN_ pDefaultInstanceProfileARN_ =
+    CreateStack'
+    { _csDefaultRootDeviceType = Nothing
+    , _csChefConfiguration = Nothing
+    , _csVPCId = Nothing
+    , _csAgentVersion = Nothing
+    , _csDefaultSSHKeyName = Nothing
+    , _csCustomJSON = Nothing
+    , _csCustomCookbooksSource = Nothing
+    , _csDefaultAvailabilityZone = Nothing
     , _csUseOpsworksSecurityGroups = Nothing
-    , _csCustomCookbooksSource     = Nothing
-    , _csDefaultSshKeyName         = Nothing
-    , _csDefaultRootDeviceType     = Nothing
+    , _csDefaultOS = Nothing
+    , _csAttributes = Nothing
+    , _csUseCustomCookbooks = Nothing
+    , _csDefaultSubnetId = Nothing
+    , _csConfigurationManager = Nothing
+    , _csHostnameTheme = Nothing
+    , _csName = pName_
+    , _csRegion = pRegion_
+    , _csServiceRoleARN = pServiceRoleARN_
+    , _csDefaultInstanceProfileARN = pDefaultInstanceProfileARN_
     }
 
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-csAttributes :: Lens' CreateStack (HashMap StackAttributesKeys Text)
-csAttributes = lens _csAttributes (\s a -> s { _csAttributes = a }) . _Map
+-- | The default root device type. This value is the default for all
+-- instances in the stack, but you can override it when you create an
+-- instance. The default option is 'instance-store'. For more information,
+-- see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+csDefaultRootDeviceType :: Lens' CreateStack (Maybe RootDeviceType)
+csDefaultRootDeviceType = lens _csDefaultRootDeviceType (\ s a -> s{_csDefaultRootDeviceType = a});
 
--- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf and the
--- Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create aNew Stack>.
+-- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf
+-- and the Berkshelf version on Chef 11.10 stacks. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
 csChefConfiguration :: Lens' CreateStack (Maybe ChefConfiguration)
-csChefConfiguration =
-    lens _csChefConfiguration (\s a -> s { _csChefConfiguration = a })
+csChefConfiguration = lens _csChefConfiguration (\ s a -> s{_csChefConfiguration = a});
 
--- | The configuration manager. When you clone a stack we recommend that you use
--- the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10.
--- The default value is currently 11.4.
-csConfigurationManager :: Lens' CreateStack (Maybe StackConfigurationManager)
-csConfigurationManager =
-    lens _csConfigurationManager (\s a -> s { _csConfigurationManager = a })
+-- | The ID of the VPC that the stack is to be launched into. The VPC must be
+-- in the stack\'s region. All instances are launched into this VPC. You
+-- cannot change the ID later.
+--
+-- -   If your account supports EC2-Classic, the default value is 'no VPC'.
+-- -   If your account does not support EC2-Classic, the default value is
+--     the default VPC for the specified region.
+--
+-- If the VPC ID corresponds to a default VPC and you have specified either
+-- the 'DefaultAvailabilityZone' or the 'DefaultSubnetId' parameter only,
+-- AWS OpsWorks infers the value of the other parameter. If you specify
+-- neither parameter, AWS OpsWorks sets these parameters to the first valid
+-- Availability Zone for the specified region and the corresponding default
+-- VPC subnet ID, respectively.
+--
+-- If you specify a nondefault VPC ID, note the following:
+--
+-- -   It must belong to a VPC in your account that is in the specified
+--     region.
+-- -   You must specify a value for 'DefaultSubnetId'.
+--
+-- For more information on how to use AWS OpsWorks with a VPC, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC>.
+-- For more information on default VPC and EC2-Classic, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms>.
+csVPCId :: Lens' CreateStack (Maybe Text)
+csVPCId = lens _csVPCId (\ s a -> s{_csVPCId = a});
 
-csCustomCookbooksSource :: Lens' CreateStack (Maybe Source)
-csCustomCookbooksSource =
-    lens _csCustomCookbooksSource (\s a -> s { _csCustomCookbooksSource = a })
+-- | The default AWS OpsWorks agent version. You have the following options:
+--
+-- -   Auto-update - Set this parameter to 'LATEST'. AWS OpsWorks
+--     automatically installs new agent versions on the stack\'s instances
+--     as soon as they are available.
+-- -   Fixed version - Set this parameter to your preferred agent version.
+--     To update the agent version, you must edit the stack configuration
+--     and specify a new version. AWS OpsWorks then automatically installs
+--     that version on the stack\'s instances.
+--
+-- The default setting is 'LATEST'. To specify an agent version, you must
+-- use the complete version number, not the abbreviated number shown on the
+-- console. For a list of available agent version numbers, call
+-- DescribeAgentVersions.
+--
+-- You can also specify an agent version when you create or update an
+-- instance, which overrides the stack\'s default setting.
+csAgentVersion :: Lens' CreateStack (Maybe Text)
+csAgentVersion = lens _csAgentVersion (\ s a -> s{_csAgentVersion = a});
 
--- | A string that contains user-defined, custom JSON. It can be used to override
--- the corresponding default stack configuration attribute values, or to pass
--- data to recipes. The string should be in the following format and must escape
--- characters such as '"'.:
+-- | A default Amazon EC2 key pair name. The default value is none. If you
+-- specify a key pair name, AWS OpsWorks installs the public key on the
+-- instance and you can use the private key with an SSH client to log in to
+-- the instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance>
+-- and
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>.
+-- You can override this setting by specifying a different key pair, or no
+-- key pair, when you
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance>.
+csDefaultSSHKeyName :: Lens' CreateStack (Maybe Text)
+csDefaultSSHKeyName = lens _csDefaultSSHKeyName (\ s a -> s{_csDefaultSSHKeyName = a});
+
+-- | A string that contains user-defined, custom JSON. It can be used to
+-- override the corresponding default stack configuration attribute values
+-- or to pass data to recipes. The string should be in the following escape
+-- characters such as \'\"\':
 --
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
 --
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>.
-csCustomJson :: Lens' CreateStack (Maybe Text)
-csCustomJson = lens _csCustomJson (\s a -> s { _csCustomJson = a })
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
+csCustomJSON :: Lens' CreateStack (Maybe Text)
+csCustomJSON = lens _csCustomJSON (\ s a -> s{_csCustomJSON = a});
 
--- | The stack's default Availability Zone, which must be in the specified region.
--- For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>. If you also specify a value
--- for 'DefaultSubnetId', the subnet must be in the same zone. For more
--- information, see the 'VpcId' parameter description.
+-- | Undocumented member.
+csCustomCookbooksSource :: Lens' CreateStack (Maybe Source)
+csCustomCookbooksSource = lens _csCustomCookbooksSource (\ s a -> s{_csCustomCookbooksSource = a});
+
+-- | The stack\'s default Availability Zone, which must be in the specified
+-- region. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+-- If you also specify a value for 'DefaultSubnetId', the subnet must be in
+-- the same zone. For more information, see the 'VpcId' parameter
+-- description.
 csDefaultAvailabilityZone :: Lens' CreateStack (Maybe Text)
-csDefaultAvailabilityZone =
-    lens _csDefaultAvailabilityZone
-        (\s a -> s { _csDefaultAvailabilityZone = a })
+csDefaultAvailabilityZone = lens _csDefaultAvailabilityZone (\ s a -> s{_csDefaultAvailabilityZone = a});
 
--- | The ARN of an IAM profile that is the default profile for all of the stack's
--- EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-csDefaultInstanceProfileArn :: Lens' CreateStack Text
-csDefaultInstanceProfileArn =
-    lens _csDefaultInstanceProfileArn
-        (\s a -> s { _csDefaultInstanceProfileArn = a })
+-- | Whether to associate the AWS OpsWorks built-in security groups with the
+-- stack\'s layers.
+--
+-- AWS OpsWorks provides a standard set of built-in security groups, one
+-- for each layer, which are associated with layers by default. With
+-- 'UseOpsworksSecurityGroups' you can instead provide your own custom
+-- security groups. 'UseOpsworksSecurityGroups' has the following settings:
+--
+-- -   True - AWS OpsWorks automatically associates the appropriate
+--     built-in security group with each layer (default setting). You can
+--     associate additional security groups with a layer after you create
+--     it, but you cannot delete the built-in security group.
+-- -   False - AWS OpsWorks does not associate built-in security groups
+--     with layers. You must create appropriate EC2 security groups and
+--     associate a security group with each layer that you create. However,
+--     you can still manually associate a built-in security group with a
+--     layer on creation; custom security groups are required only for
+--     those layers that need custom settings.
+--
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+csUseOpsworksSecurityGroups :: Lens' CreateStack (Maybe Bool)
+csUseOpsworksSecurityGroups = lens _csUseOpsworksSecurityGroups (\ s a -> s{_csUseOpsworksSecurityGroups = a});
 
--- | The stack's operating system, which must be set to one of the following.
+-- | The stack\'s default operating system, which is installed on every
+-- instance unless you specify a different operating system when you create
+-- the instance. You can specify one of the following.
 --
--- Standard Linux operating systems: an Amazon Linux version such as 'AmazonLinux 2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom Linux AMIs: 'Custom'. You specify the custom AMI you want to use when you create instances. Microsoft Windows Server 2012 R2.
--- The default option is the current Amazon Linux version.
-csDefaultOs :: Lens' CreateStack (Maybe Text)
-csDefaultOs = lens _csDefaultOs (\s a -> s { _csDefaultOs = a })
+-- -   A supported Linux operating system: An Amazon Linux version, such as
+--     'Amazon Linux 2015.03', 'Red Hat Enterprise Linux 7',
+--     'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'.
+-- -   'Microsoft Windows Server 2012 R2 Base'.
+-- -   A custom AMI: 'Custom'. You specify the custom AMI you want to use
+--     when you create instances. For more information, see
+--     <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
+--
+-- The default option is the current Amazon Linux version. For more
+-- information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems>.
+csDefaultOS :: Lens' CreateStack (Maybe Text)
+csDefaultOS = lens _csDefaultOS (\ s a -> s{_csDefaultOS = a});
 
--- | The default root device type. This value is used by default for all instances
--- in the stack, but you can override it when you create an instance. The
--- default option is 'instance-store'. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for theRoot Device>.
-csDefaultRootDeviceType :: Lens' CreateStack (Maybe RootDeviceType)
-csDefaultRootDeviceType =
-    lens _csDefaultRootDeviceType (\s a -> s { _csDefaultRootDeviceType = a })
+-- | One or more user-defined key-value pairs to be added to the stack
+-- attributes.
+csAttributes :: Lens' CreateStack (HashMap StackAttributesKeys Text)
+csAttributes = lens _csAttributes (\ s a -> s{_csAttributes = a}) . _Default . _Map;
 
--- | A default Amazon EC2 key pair name. The default value is none. If you specify
--- a key pair name, AWS OpsWorks installs the public key on the instance and you
--- can use the private key with an SSH client to log in to the instance. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
--- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
-csDefaultSshKeyName :: Lens' CreateStack (Maybe Text)
-csDefaultSshKeyName =
-    lens _csDefaultSshKeyName (\s a -> s { _csDefaultSshKeyName = a })
+-- | Whether the stack uses custom cookbooks.
+csUseCustomCookbooks :: Lens' CreateStack (Maybe Bool)
+csUseCustomCookbooks = lens _csUseCustomCookbooks (\ s a -> s{_csUseCustomCookbooks = a});
 
--- | The stack's default VPC subnet ID. This parameter is required if you specify
--- a value for the 'VpcId' parameter. All instances are launched into this subnet
--- unless you specify otherwise when you create the instance. If you also
--- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
--- For information on default values and when this parameter is required, see
--- the 'VpcId' parameter description.
+-- | The stack\'s default VPC subnet ID. This parameter is required if you
+-- specify a value for the 'VpcId' parameter. All instances are launched
+-- into this subnet unless you specify otherwise when you create the
+-- instance. If you also specify a value for 'DefaultAvailabilityZone', the
+-- subnet must be in that zone. For information on default values and when
+-- this parameter is required, see the 'VpcId' parameter description.
 csDefaultSubnetId :: Lens' CreateStack (Maybe Text)
-csDefaultSubnetId =
-    lens _csDefaultSubnetId (\s a -> s { _csDefaultSubnetId = a })
+csDefaultSubnetId = lens _csDefaultSubnetId (\ s a -> s{_csDefaultSubnetId = a});
 
--- | The stack's host name theme, with spaces are replaced by underscores. The
--- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
--- the layer's short name. The other themes are:
+-- | The configuration manager. When you clone a stack we recommend that you
+-- use the configuration manager to specify the Chef version: 0.9, 11.4, or
+-- 11.10. The default value is currently 11.4.
+csConfigurationManager :: Lens' CreateStack (Maybe StackConfigurationManager)
+csConfigurationManager = lens _csConfigurationManager (\ s a -> s{_csConfigurationManager = a});
+
+-- | The stack\'s host name theme, with spaces replaced by underscores. The
+-- theme is used to generate host names for the stack\'s instances. By
+-- default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host
+-- names by appending integers to the layer\'s short name. The other themes
+-- are:
 --
--- 'Baked_Goods'   'Clouds'   'Europe_Cities'   'Fruits'   'Greek_Deities'   'Legendary_creatures_from_Japan'   'Planets_and_Moons'   'Roman_Deities'   'Scottish_Islands'   'US_Cities'   'Wild_Cats'   To obtain a generated host name, call 'GetHostNameSuggestion', which returns
--- a host name based on the current theme.
+-- -   'Baked_Goods'
+-- -   'Clouds'
+-- -   'Europe_Cities'
+-- -   'Fruits'
+-- -   'Greek_Deities'
+-- -   'Legendary_creatures_from_Japan'
+-- -   'Planets_and_Moons'
+-- -   'Roman_Deities'
+-- -   'Scottish_Islands'
+-- -   'US_Cities'
+-- -   'Wild_Cats'
+--
+-- To obtain a generated host name, call 'GetHostNameSuggestion', which
+-- returns a host name based on the current theme.
 csHostnameTheme :: Lens' CreateStack (Maybe Text)
-csHostnameTheme = lens _csHostnameTheme (\s a -> s { _csHostnameTheme = a })
+csHostnameTheme = lens _csHostnameTheme (\ s a -> s{_csHostnameTheme = a});
 
 -- | The stack name.
 csName :: Lens' CreateStack Text
-csName = lens _csName (\s a -> s { _csName = a })
+csName = lens _csName (\ s a -> s{_csName = a});
 
--- | The stack AWS region, such as "us-east-1". For more information about Amazon
--- regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+-- | The stack\'s AWS region, such as \"us-east-1\". For more information
+-- about Amazon regions, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
 csRegion :: Lens' CreateStack Text
-csRegion = lens _csRegion (\s a -> s { _csRegion = a })
-
--- | The stack AWS Identity and Access Management (IAM) role, which allows AWS
--- OpsWorks to work with AWS resources on your behalf. You must set this
--- parameter to the Amazon Resource Name (ARN) for an existing IAM role. For
--- more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-csServiceRoleArn :: Lens' CreateStack Text
-csServiceRoleArn = lens _csServiceRoleArn (\s a -> s { _csServiceRoleArn = a })
-
--- | Whether the stack uses custom cookbooks.
-csUseCustomCookbooks :: Lens' CreateStack (Maybe Bool)
-csUseCustomCookbooks =
-    lens _csUseCustomCookbooks (\s a -> s { _csUseCustomCookbooks = a })
+csRegion = lens _csRegion (\ s a -> s{_csRegion = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the
--- stack's layers.
---
--- AWS OpsWorks provides a standard set of built-in security groups, one for
--- each layer, which are associated with layers by default. With 'UseOpsworksSecurityGroups' you can instead provide your own custom security groups. 'UseOpsworksSecurityGroups' has the following settings:
---
--- True - AWS OpsWorks automatically associates the appropriate built-in
--- security group with each layer (default setting). You can associate
--- additional security groups with a layer after you create it but you cannot
--- delete the built-in security group.  False - AWS OpsWorks does not associate
--- built-in security groups with layers. You must create appropriate EC2
--- security groups and associate a security group with each layer that you
--- create. However, you can still manually associate a built-in security group
--- with a layer on creation; custom security groups are required only for those
--- layers that need custom settings.   For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a NewStack>.
-csUseOpsworksSecurityGroups :: Lens' CreateStack (Maybe Bool)
-csUseOpsworksSecurityGroups =
-    lens _csUseOpsworksSecurityGroups
-        (\s a -> s { _csUseOpsworksSecurityGroups = a })
+-- | The stack\'s AWS Identity and Access Management (IAM) role, which allows
+-- AWS OpsWorks to work with AWS resources on your behalf. You must set
+-- this parameter to the Amazon Resource Name (ARN) for an existing IAM
+-- role. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+csServiceRoleARN :: Lens' CreateStack Text
+csServiceRoleARN = lens _csServiceRoleARN (\ s a -> s{_csServiceRoleARN = a});
 
--- | The ID of the VPC that the stack is to be launched into. It must be in the
--- specified region. All instances are launched into this VPC, and you cannot
--- change the ID later.
---
--- If your account supports EC2 Classic, the default value is no VPC. If your
--- account does not support EC2 Classic, the default value is the default VPC
--- for the specified region.  If the VPC ID corresponds to a default VPC and you
--- have specified either the 'DefaultAvailabilityZone' or the 'DefaultSubnetId'
--- parameter only, AWS OpsWorks infers the value of the other parameter. If you
--- specify neither parameter, AWS OpsWorks sets these parameters to the first
--- valid Availability Zone for the specified region and the corresponding
--- default VPC subnet ID, respectively.
---
--- If you specify a nondefault VPC ID, note the following:
---
--- It must belong to a VPC in your account that is in the specified region. You must specify a value for
--- 'DefaultSubnetId'.  For more information on how to use AWS OpsWorks with a VPC,
--- see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-vpc.html Running a Stack in a VPC>. For more information on default VPC and EC2
--- Classic, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html Supported Platforms>.
-csVpcId :: Lens' CreateStack (Maybe Text)
-csVpcId = lens _csVpcId (\s a -> s { _csVpcId = a })
+-- | The Amazon Resource Name (ARN) of an IAM profile that is the default
+-- profile for all of the stack\'s EC2 instances. For more information
+-- about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+csDefaultInstanceProfileARN :: Lens' CreateStack Text
+csDefaultInstanceProfileARN = lens _csDefaultInstanceProfileARN (\ s a -> s{_csDefaultInstanceProfileARN = a});
 
-newtype CreateStackResponse = CreateStackResponse
-    { _csr1StackId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CreateStack where
+        type Sv CreateStack = OpsWorks
+        type Rs CreateStack = CreateStackResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateStackResponse' <$>
+                   (x .?> "StackId") <*> (pure (fromEnum s)))
 
--- | 'CreateStackResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csr1StackId' @::@ 'Maybe' 'Text'
---
-createStackResponse :: CreateStackResponse
-createStackResponse = CreateStackResponse
-    { _csr1StackId = Nothing
-    }
+instance ToHeaders CreateStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The stack ID, which is an opaque string that you use to identify the stack
--- when performing actions such as 'DescribeStacks'.
-csr1StackId :: Lens' CreateStackResponse (Maybe Text)
-csr1StackId = lens _csr1StackId (\s a -> s { _csr1StackId = a })
+instance ToJSON CreateStack where
+        toJSON CreateStack'{..}
+          = object
+              ["DefaultRootDeviceType" .= _csDefaultRootDeviceType,
+               "ChefConfiguration" .= _csChefConfiguration,
+               "VpcId" .= _csVPCId,
+               "AgentVersion" .= _csAgentVersion,
+               "DefaultSshKeyName" .= _csDefaultSSHKeyName,
+               "CustomJson" .= _csCustomJSON,
+               "CustomCookbooksSource" .= _csCustomCookbooksSource,
+               "DefaultAvailabilityZone" .=
+                 _csDefaultAvailabilityZone,
+               "UseOpsworksSecurityGroups" .=
+                 _csUseOpsworksSecurityGroups,
+               "DefaultOs" .= _csDefaultOS,
+               "Attributes" .= _csAttributes,
+               "UseCustomCookbooks" .= _csUseCustomCookbooks,
+               "DefaultSubnetId" .= _csDefaultSubnetId,
+               "ConfigurationManager" .= _csConfigurationManager,
+               "HostnameTheme" .= _csHostnameTheme,
+               "Name" .= _csName, "Region" .= _csRegion,
+               "ServiceRoleArn" .= _csServiceRoleARN,
+               "DefaultInstanceProfileArn" .=
+                 _csDefaultInstanceProfileARN]
 
 instance ToPath CreateStack where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateStack where
-    toQuery = const mempty
-
-instance ToHeaders CreateStack
+        toQuery = const mempty
 
-instance ToJSON CreateStack where
-    toJSON CreateStack{..} = object
-        [ "Name"                      .= _csName
-        , "Region"                    .= _csRegion
-        , "VpcId"                     .= _csVpcId
-        , "Attributes"                .= _csAttributes
-        , "ServiceRoleArn"            .= _csServiceRoleArn
-        , "DefaultInstanceProfileArn" .= _csDefaultInstanceProfileArn
-        , "DefaultOs"                 .= _csDefaultOs
-        , "HostnameTheme"             .= _csHostnameTheme
-        , "DefaultAvailabilityZone"   .= _csDefaultAvailabilityZone
-        , "DefaultSubnetId"           .= _csDefaultSubnetId
-        , "CustomJson"                .= _csCustomJson
-        , "ConfigurationManager"      .= _csConfigurationManager
-        , "ChefConfiguration"         .= _csChefConfiguration
-        , "UseCustomCookbooks"        .= _csUseCustomCookbooks
-        , "UseOpsworksSecurityGroups" .= _csUseOpsworksSecurityGroups
-        , "CustomCookbooksSource"     .= _csCustomCookbooksSource
-        , "DefaultSshKeyName"         .= _csDefaultSshKeyName
-        , "DefaultRootDeviceType"     .= _csDefaultRootDeviceType
-        ]
+-- | Contains the response to a 'CreateStack' request.
+--
+-- /See:/ 'createStackResponse' smart constructor.
+data CreateStackResponse = CreateStackResponse'
+    { _crsStackId :: !(Maybe Text)
+    , _crsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateStack where
-    type Sv CreateStack = OpsWorks
-    type Rs CreateStack = CreateStackResponse
+-- | Creates a value of 'CreateStackResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsStackId'
+--
+-- * 'crsStatus'
+createStackResponse
+    :: Int -- ^ 'crsStatus'
+    -> CreateStackResponse
+createStackResponse pStatus_ =
+    CreateStackResponse'
+    { _crsStackId = Nothing
+    , _crsStatus = pStatus_
+    }
 
-    request  = post "CreateStack"
-    response = jsonResponse
+-- | The stack ID, which is an opaque string that you use to identify the
+-- stack when performing actions such as 'DescribeStacks'.
+crsStackId :: Lens' CreateStackResponse (Maybe Text)
+crsStackId = lens _crsStackId (\ s a -> s{_crsStackId = a});
 
-instance FromJSON CreateStackResponse where
-    parseJSON = withObject "CreateStackResponse" $ \o -> CreateStackResponse
-        <$> o .:? "StackId"
+-- | The response status code.
+crsStatus :: Lens' CreateStackResponse Int
+crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/CreateUserProfile.hs
@@ -1,152 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.CreateUserProfile
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new user profile.
+-- Creates a new user profile.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateUserProfile.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_CreateUserProfile.html AWS API Reference> for CreateUserProfile.
 module Network.AWS.OpsWorks.CreateUserProfile
     (
-    -- * Request
-      CreateUserProfile
-    -- ** Request constructor
-    , createUserProfile
-    -- ** Request lenses
+    -- * Creating a Request
+      createUserProfile
+    , CreateUserProfile
+    -- * Request Lenses
+    , cupSSHUsername
+    , cupSSHPublicKey
     , cupAllowSelfManagement
-    , cupIamUserArn
-    , cupSshPublicKey
-    , cupSshUsername
+    , cupIAMUserARN
 
-    -- * Response
-    , CreateUserProfileResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createUserProfileResponse
-    -- ** Response lenses
-    , cuprIamUserArn
+    , CreateUserProfileResponse
+    -- * Response Lenses
+    , cuprsIAMUserARN
+    , cuprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data CreateUserProfile = CreateUserProfile
-    { _cupAllowSelfManagement :: Maybe Bool
-    , _cupIamUserArn          :: Text
-    , _cupSshPublicKey        :: Maybe Text
-    , _cupSshUsername         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createUserProfile' smart constructor.
+data CreateUserProfile = CreateUserProfile'
+    { _cupSSHUsername         :: !(Maybe Text)
+    , _cupSSHPublicKey        :: !(Maybe Text)
+    , _cupAllowSelfManagement :: !(Maybe Bool)
+    , _cupIAMUserARN          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateUserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateUserProfile' with the minimum fields required to make a request.
 --
--- * 'cupAllowSelfManagement' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cupIamUserArn' @::@ 'Text'
+-- * 'cupSSHUsername'
 --
--- * 'cupSshPublicKey' @::@ 'Maybe' 'Text'
+-- * 'cupSSHPublicKey'
 --
--- * 'cupSshUsername' @::@ 'Maybe' 'Text'
+-- * 'cupAllowSelfManagement'
 --
-createUserProfile :: Text -- ^ 'cupIamUserArn'
-                  -> CreateUserProfile
-createUserProfile p1 = CreateUserProfile
-    { _cupIamUserArn          = p1
-    , _cupSshUsername         = Nothing
-    , _cupSshPublicKey        = Nothing
+-- * 'cupIAMUserARN'
+createUserProfile
+    :: Text -- ^ 'cupIAMUserARN'
+    -> CreateUserProfile
+createUserProfile pIAMUserARN_ =
+    CreateUserProfile'
+    { _cupSSHUsername = Nothing
+    , _cupSSHPublicKey = Nothing
     , _cupAllowSelfManagement = Nothing
+    , _cupIAMUserARN = pIAMUserARN_
     }
 
--- | Whether users can specify their own SSH public key through the My Settings
--- page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Setting an IAM User's Public SSH Key>.
-cupAllowSelfManagement :: Lens' CreateUserProfile (Maybe Bool)
-cupAllowSelfManagement =
-    lens _cupAllowSelfManagement (\s a -> s { _cupAllowSelfManagement = a })
+-- | The user\'s SSH user name. The allowable characters are [a-z], [A-Z],
+-- [0-9], \'-\', and \'_\'. If the specified name includes other
+-- punctuation marks, AWS OpsWorks removes them. For example, 'my.name'
+-- will be changed to 'myname'. If you do not specify an SSH user name, AWS
+-- OpsWorks generates one from the IAM user name.
+cupSSHUsername :: Lens' CreateUserProfile (Maybe Text)
+cupSSHUsername = lens _cupSSHUsername (\ s a -> s{_cupSSHUsername = a});
 
--- | The user's IAM ARN.
-cupIamUserArn :: Lens' CreateUserProfile Text
-cupIamUserArn = lens _cupIamUserArn (\s a -> s { _cupIamUserArn = a })
+-- | The user\'s public SSH key.
+cupSSHPublicKey :: Lens' CreateUserProfile (Maybe Text)
+cupSSHPublicKey = lens _cupSSHPublicKey (\ s a -> s{_cupSSHPublicKey = a});
 
--- | The user's public SSH key.
-cupSshPublicKey :: Lens' CreateUserProfile (Maybe Text)
-cupSshPublicKey = lens _cupSshPublicKey (\s a -> s { _cupSshPublicKey = a })
+-- | Whether users can specify their own SSH public key through the My
+-- Settings page. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Setting an IAM User\'s Public SSH Key>.
+cupAllowSelfManagement :: Lens' CreateUserProfile (Maybe Bool)
+cupAllowSelfManagement = lens _cupAllowSelfManagement (\ s a -> s{_cupAllowSelfManagement = a});
 
--- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9],
--- '-', and '_'. If the specified name includes other punctuation marks, AWS
--- OpsWorks removes them. For example, 'my.name' will be changed to 'myname'. If you
--- do not specify an SSH user name, AWS OpsWorks generates one from the IAM user
--- name.
-cupSshUsername :: Lens' CreateUserProfile (Maybe Text)
-cupSshUsername = lens _cupSshUsername (\s a -> s { _cupSshUsername = a })
+-- | The user\'s IAM ARN.
+cupIAMUserARN :: Lens' CreateUserProfile Text
+cupIAMUserARN = lens _cupIAMUserARN (\ s a -> s{_cupIAMUserARN = a});
 
-newtype CreateUserProfileResponse = CreateUserProfileResponse
-    { _cuprIamUserArn :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CreateUserProfile where
+        type Sv CreateUserProfile = OpsWorks
+        type Rs CreateUserProfile = CreateUserProfileResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateUserProfileResponse' <$>
+                   (x .?> "IamUserArn") <*> (pure (fromEnum s)))
 
--- | 'CreateUserProfileResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cuprIamUserArn' @::@ 'Maybe' 'Text'
---
-createUserProfileResponse :: CreateUserProfileResponse
-createUserProfileResponse = CreateUserProfileResponse
-    { _cuprIamUserArn = Nothing
-    }
+instance ToHeaders CreateUserProfile where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.CreateUserProfile" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The user's IAM ARN.
-cuprIamUserArn :: Lens' CreateUserProfileResponse (Maybe Text)
-cuprIamUserArn = lens _cuprIamUserArn (\s a -> s { _cuprIamUserArn = a })
+instance ToJSON CreateUserProfile where
+        toJSON CreateUserProfile'{..}
+          = object
+              ["SshUsername" .= _cupSSHUsername,
+               "SshPublicKey" .= _cupSSHPublicKey,
+               "AllowSelfManagement" .= _cupAllowSelfManagement,
+               "IamUserArn" .= _cupIAMUserARN]
 
 instance ToPath CreateUserProfile where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateUserProfile where
-    toQuery = const mempty
-
-instance ToHeaders CreateUserProfile
+        toQuery = const mempty
 
-instance ToJSON CreateUserProfile where
-    toJSON CreateUserProfile{..} = object
-        [ "IamUserArn"          .= _cupIamUserArn
-        , "SshUsername"         .= _cupSshUsername
-        , "SshPublicKey"        .= _cupSshPublicKey
-        , "AllowSelfManagement" .= _cupAllowSelfManagement
-        ]
+-- | Contains the response to a 'CreateUserProfile' request.
+--
+-- /See:/ 'createUserProfileResponse' smart constructor.
+data CreateUserProfileResponse = CreateUserProfileResponse'
+    { _cuprsIAMUserARN :: !(Maybe Text)
+    , _cuprsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateUserProfile where
-    type Sv CreateUserProfile = OpsWorks
-    type Rs CreateUserProfile = CreateUserProfileResponse
+-- | Creates a value of 'CreateUserProfileResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cuprsIAMUserARN'
+--
+-- * 'cuprsStatus'
+createUserProfileResponse
+    :: Int -- ^ 'cuprsStatus'
+    -> CreateUserProfileResponse
+createUserProfileResponse pStatus_ =
+    CreateUserProfileResponse'
+    { _cuprsIAMUserARN = Nothing
+    , _cuprsStatus = pStatus_
+    }
 
-    request  = post "CreateUserProfile"
-    response = jsonResponse
+-- | The user\'s IAM ARN.
+cuprsIAMUserARN :: Lens' CreateUserProfileResponse (Maybe Text)
+cuprsIAMUserARN = lens _cuprsIAMUserARN (\ s a -> s{_cuprsIAMUserARN = a});
 
-instance FromJSON CreateUserProfileResponse where
-    parseJSON = withObject "CreateUserProfileResponse" $ \o -> CreateUserProfileResponse
-        <$> o .:? "IamUserArn"
+-- | The response status code.
+cuprsStatus :: Lens' CreateUserProfileResponse Int
+cuprsStatus = lens _cuprsStatus (\ s a -> s{_cuprsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DeleteApp.hs b/gen/Network/AWS/OpsWorks/DeleteApp.hs
--- a/gen/Network/AWS/OpsWorks/DeleteApp.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteApp.hs
@@ -1,98 +1,104 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeleteApp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a specified app.
+-- Deletes a specified app.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteApp.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteApp.html AWS API Reference> for DeleteApp.
 module Network.AWS.OpsWorks.DeleteApp
     (
-    -- * Request
-      DeleteApp
-    -- ** Request constructor
-    , deleteApp
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteApp
+    , DeleteApp
+    -- * Request Lenses
     , daAppId
 
-    -- * Response
-    , DeleteAppResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteAppResponse
+    , DeleteAppResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteApp = DeleteApp
+-- | /See:/ 'deleteApp' smart constructor.
+newtype DeleteApp = DeleteApp'
     { _daAppId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteApp' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteApp' with the minimum fields required to make a request.
 --
--- * 'daAppId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteApp :: Text -- ^ 'daAppId'
-          -> DeleteApp
-deleteApp p1 = DeleteApp
-    { _daAppId = p1
+-- * 'daAppId'
+deleteApp
+    :: Text -- ^ 'daAppId'
+    -> DeleteApp
+deleteApp pAppId_ =
+    DeleteApp'
+    { _daAppId = pAppId_
     }
 
 -- | The app ID.
 daAppId :: Lens' DeleteApp Text
-daAppId = lens _daAppId (\s a -> s { _daAppId = a })
+daAppId = lens _daAppId (\ s a -> s{_daAppId = a});
 
-data DeleteAppResponse = DeleteAppResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteApp where
+        type Sv DeleteApp = OpsWorks
+        type Rs DeleteApp = DeleteAppResponse
+        request = postJSON
+        response = receiveNull DeleteAppResponse'
 
--- | 'DeleteAppResponse' constructor.
-deleteAppResponse :: DeleteAppResponse
-deleteAppResponse = DeleteAppResponse
+instance ToHeaders DeleteApp where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeleteApp" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteApp where
+        toJSON DeleteApp'{..} = object ["AppId" .= _daAppId]
+
 instance ToPath DeleteApp where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteApp where
-    toQuery = const mempty
-
-instance ToHeaders DeleteApp
-
-instance ToJSON DeleteApp where
-    toJSON DeleteApp{..} = object
-        [ "AppId" .= _daAppId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteApp where
-    type Sv DeleteApp = OpsWorks
-    type Rs DeleteApp = DeleteAppResponse
+-- | /See:/ 'deleteAppResponse' smart constructor.
+data DeleteAppResponse =
+    DeleteAppResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteApp"
-    response = nullResponse DeleteAppResponse
+-- | Creates a value of 'DeleteAppResponse' with the minimum fields required to make a request.
+--
+deleteAppResponse
+    :: DeleteAppResponse
+deleteAppResponse = DeleteAppResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeleteInstance.hs b/gen/Network/AWS/OpsWorks/DeleteInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeleteInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteInstance.hs
@@ -1,122 +1,130 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeleteInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a specified instance, which terminates the associated Amazon EC2
+-- Deletes a specified instance, which terminates the associated Amazon EC2
 -- instance. You must stop an instance before you can delete it.
 --
--- For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-delete.html Deleting Instances>.
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-delete.html Deleting Instances>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteInstance.html AWS API Reference> for DeleteInstance.
 module Network.AWS.OpsWorks.DeleteInstance
     (
-    -- * Request
-      DeleteInstance
-    -- ** Request constructor
-    , deleteInstance
-    -- ** Request lenses
-    , diDeleteElasticIp
+    -- * Creating a Request
+      deleteInstance
+    , DeleteInstance
+    -- * Request Lenses
     , diDeleteVolumes
+    , diDeleteElasticIP
     , diInstanceId
 
-    -- * Response
-    , DeleteInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteInstanceResponse
+    , DeleteInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DeleteInstance = DeleteInstance
-    { _diDeleteElasticIp :: Maybe Bool
-    , _diDeleteVolumes   :: Maybe Bool
-    , _diInstanceId      :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteInstance' smart constructor.
+data DeleteInstance = DeleteInstance'
+    { _diDeleteVolumes   :: !(Maybe Bool)
+    , _diDeleteElasticIP :: !(Maybe Bool)
+    , _diInstanceId      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteInstance' with the minimum fields required to make a request.
 --
--- * 'diDeleteElasticIp' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diDeleteVolumes' @::@ 'Maybe' 'Bool'
+-- * 'diDeleteVolumes'
 --
--- * 'diInstanceId' @::@ 'Text'
+-- * 'diDeleteElasticIP'
 --
-deleteInstance :: Text -- ^ 'diInstanceId'
-               -> DeleteInstance
-deleteInstance p1 = DeleteInstance
-    { _diInstanceId      = p1
-    , _diDeleteElasticIp = Nothing
-    , _diDeleteVolumes   = Nothing
+-- * 'diInstanceId'
+deleteInstance
+    :: Text -- ^ 'diInstanceId'
+    -> DeleteInstance
+deleteInstance pInstanceId_ =
+    DeleteInstance'
+    { _diDeleteVolumes = Nothing
+    , _diDeleteElasticIP = Nothing
+    , _diInstanceId = pInstanceId_
     }
 
--- | Whether to delete the instance Elastic IP address.
-diDeleteElasticIp :: Lens' DeleteInstance (Maybe Bool)
-diDeleteElasticIp =
-    lens _diDeleteElasticIp (\s a -> s { _diDeleteElasticIp = a })
-
--- | Whether to delete the instance's Amazon EBS volumes.
+-- | Whether to delete the instance\'s Amazon EBS volumes.
 diDeleteVolumes :: Lens' DeleteInstance (Maybe Bool)
-diDeleteVolumes = lens _diDeleteVolumes (\s a -> s { _diDeleteVolumes = a })
+diDeleteVolumes = lens _diDeleteVolumes (\ s a -> s{_diDeleteVolumes = a});
 
+-- | Whether to delete the instance Elastic IP address.
+diDeleteElasticIP :: Lens' DeleteInstance (Maybe Bool)
+diDeleteElasticIP = lens _diDeleteElasticIP (\ s a -> s{_diDeleteElasticIP = a});
+
 -- | The instance ID.
 diInstanceId :: Lens' DeleteInstance Text
-diInstanceId = lens _diInstanceId (\s a -> s { _diInstanceId = a })
+diInstanceId = lens _diInstanceId (\ s a -> s{_diInstanceId = a});
 
-data DeleteInstanceResponse = DeleteInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteInstance where
+        type Sv DeleteInstance = OpsWorks
+        type Rs DeleteInstance = DeleteInstanceResponse
+        request = postJSON
+        response = receiveNull DeleteInstanceResponse'
 
--- | 'DeleteInstanceResponse' constructor.
-deleteInstanceResponse :: DeleteInstanceResponse
-deleteInstanceResponse = DeleteInstanceResponse
+instance ToHeaders DeleteInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeleteInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteInstance where
+        toJSON DeleteInstance'{..}
+          = object
+              ["DeleteVolumes" .= _diDeleteVolumes,
+               "DeleteElasticIp" .= _diDeleteElasticIP,
+               "InstanceId" .= _diInstanceId]
+
 instance ToPath DeleteInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteInstance where
-    toQuery = const mempty
-
-instance ToHeaders DeleteInstance
-
-instance ToJSON DeleteInstance where
-    toJSON DeleteInstance{..} = object
-        [ "InstanceId"      .= _diInstanceId
-        , "DeleteElasticIp" .= _diDeleteElasticIp
-        , "DeleteVolumes"   .= _diDeleteVolumes
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteInstance where
-    type Sv DeleteInstance = OpsWorks
-    type Rs DeleteInstance = DeleteInstanceResponse
+-- | /See:/ 'deleteInstanceResponse' smart constructor.
+data DeleteInstanceResponse =
+    DeleteInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteInstance"
-    response = nullResponse DeleteInstanceResponse
+-- | Creates a value of 'DeleteInstanceResponse' with the minimum fields required to make a request.
+--
+deleteInstanceResponse
+    :: DeleteInstanceResponse
+deleteInstanceResponse = DeleteInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeleteLayer.hs b/gen/Network/AWS/OpsWorks/DeleteLayer.hs
--- a/gen/Network/AWS/OpsWorks/DeleteLayer.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteLayer.hs
@@ -1,99 +1,108 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeleteLayer
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a specified layer. You must first stop and then delete all associated
--- instances or unassign registered instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-delete.html How toDelete a Layer>.
+-- Deletes a specified layer. You must first stop and then delete all
+-- associated instances or unassign registered instances. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-delete.html How to Delete a Layer>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteLayer.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteLayer.html AWS API Reference> for DeleteLayer.
 module Network.AWS.OpsWorks.DeleteLayer
     (
-    -- * Request
-      DeleteLayer
-    -- ** Request constructor
-    , deleteLayer
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteLayer
+    , DeleteLayer
+    -- * Request Lenses
     , dlLayerId
 
-    -- * Response
-    , DeleteLayerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteLayerResponse
+    , DeleteLayerResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteLayer = DeleteLayer
+-- | /See:/ 'deleteLayer' smart constructor.
+newtype DeleteLayer = DeleteLayer'
     { _dlLayerId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteLayer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteLayer' with the minimum fields required to make a request.
 --
--- * 'dlLayerId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteLayer :: Text -- ^ 'dlLayerId'
-            -> DeleteLayer
-deleteLayer p1 = DeleteLayer
-    { _dlLayerId = p1
+-- * 'dlLayerId'
+deleteLayer
+    :: Text -- ^ 'dlLayerId'
+    -> DeleteLayer
+deleteLayer pLayerId_ =
+    DeleteLayer'
+    { _dlLayerId = pLayerId_
     }
 
 -- | The layer ID.
 dlLayerId :: Lens' DeleteLayer Text
-dlLayerId = lens _dlLayerId (\s a -> s { _dlLayerId = a })
+dlLayerId = lens _dlLayerId (\ s a -> s{_dlLayerId = a});
 
-data DeleteLayerResponse = DeleteLayerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteLayer where
+        type Sv DeleteLayer = OpsWorks
+        type Rs DeleteLayer = DeleteLayerResponse
+        request = postJSON
+        response = receiveNull DeleteLayerResponse'
 
--- | 'DeleteLayerResponse' constructor.
-deleteLayerResponse :: DeleteLayerResponse
-deleteLayerResponse = DeleteLayerResponse
+instance ToHeaders DeleteLayer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeleteLayer" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteLayer where
+        toJSON DeleteLayer'{..}
+          = object ["LayerId" .= _dlLayerId]
+
 instance ToPath DeleteLayer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteLayer where
-    toQuery = const mempty
-
-instance ToHeaders DeleteLayer
-
-instance ToJSON DeleteLayer where
-    toJSON DeleteLayer{..} = object
-        [ "LayerId" .= _dlLayerId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteLayer where
-    type Sv DeleteLayer = OpsWorks
-    type Rs DeleteLayer = DeleteLayerResponse
+-- | /See:/ 'deleteLayerResponse' smart constructor.
+data DeleteLayerResponse =
+    DeleteLayerResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteLayer"
-    response = nullResponse DeleteLayerResponse
+-- | Creates a value of 'DeleteLayerResponse' with the minimum fields required to make a request.
+--
+deleteLayerResponse
+    :: DeleteLayerResponse
+deleteLayerResponse = DeleteLayerResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeleteStack.hs b/gen/Network/AWS/OpsWorks/DeleteStack.hs
--- a/gen/Network/AWS/OpsWorks/DeleteStack.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteStack.hs
@@ -1,99 +1,107 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeleteStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a specified stack. You must first delete all instances, layers, and
--- apps or deregister registered instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-shutting.html Shut Downa Stack>.
+-- Deletes a specified stack. You must first delete all instances, layers,
+-- and apps or deregister registered instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-shutting.html Shut Down a Stack>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteStack.html AWS API Reference> for DeleteStack.
 module Network.AWS.OpsWorks.DeleteStack
     (
-    -- * Request
-      DeleteStack
-    -- ** Request constructor
-    , deleteStack
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteStack
+    , DeleteStack
+    -- * Request Lenses
     , dsStackId
 
-    -- * Response
-    , DeleteStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteStackResponse
+    , DeleteStackResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteStack = DeleteStack
+-- | /See:/ 'deleteStack' smart constructor.
+newtype DeleteStack = DeleteStack'
     { _dsStackId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteStack' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteStack' with the minimum fields required to make a request.
 --
--- * 'dsStackId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteStack :: Text -- ^ 'dsStackId'
-            -> DeleteStack
-deleteStack p1 = DeleteStack
-    { _dsStackId = p1
+-- * 'dsStackId'
+deleteStack
+    :: Text -- ^ 'dsStackId'
+    -> DeleteStack
+deleteStack pStackId_ =
+    DeleteStack'
+    { _dsStackId = pStackId_
     }
 
 -- | The stack ID.
 dsStackId :: Lens' DeleteStack Text
-dsStackId = lens _dsStackId (\s a -> s { _dsStackId = a })
+dsStackId = lens _dsStackId (\ s a -> s{_dsStackId = a});
 
-data DeleteStackResponse = DeleteStackResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteStack where
+        type Sv DeleteStack = OpsWorks
+        type Rs DeleteStack = DeleteStackResponse
+        request = postJSON
+        response = receiveNull DeleteStackResponse'
 
--- | 'DeleteStackResponse' constructor.
-deleteStackResponse :: DeleteStackResponse
-deleteStackResponse = DeleteStackResponse
+instance ToHeaders DeleteStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeleteStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteStack where
+        toJSON DeleteStack'{..}
+          = object ["StackId" .= _dsStackId]
+
 instance ToPath DeleteStack where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteStack where
-    toQuery = const mempty
-
-instance ToHeaders DeleteStack
-
-instance ToJSON DeleteStack where
-    toJSON DeleteStack{..} = object
-        [ "StackId" .= _dsStackId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteStack where
-    type Sv DeleteStack = OpsWorks
-    type Rs DeleteStack = DeleteStackResponse
+-- | /See:/ 'deleteStackResponse' smart constructor.
+data DeleteStackResponse =
+    DeleteStackResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteStack"
-    response = nullResponse DeleteStackResponse
+-- | Creates a value of 'DeleteStackResponse' with the minimum fields required to make a request.
+--
+deleteStackResponse
+    :: DeleteStackResponse
+deleteStackResponse = DeleteStackResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DeleteUserProfile.hs
@@ -1,98 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeleteUserProfile
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deletes a user profile.
+-- Deletes a user profile.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteUserProfile.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeleteUserProfile.html AWS API Reference> for DeleteUserProfile.
 module Network.AWS.OpsWorks.DeleteUserProfile
     (
-    -- * Request
-      DeleteUserProfile
-    -- ** Request constructor
-    , deleteUserProfile
-    -- ** Request lenses
-    , dupIamUserArn
+    -- * Creating a Request
+      deleteUserProfile
+    , DeleteUserProfile
+    -- * Request Lenses
+    , dupIAMUserARN
 
-    -- * Response
-    , DeleteUserProfileResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteUserProfileResponse
+    , DeleteUserProfileResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeleteUserProfile = DeleteUserProfile
-    { _dupIamUserArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'deleteUserProfile' smart constructor.
+newtype DeleteUserProfile = DeleteUserProfile'
+    { _dupIAMUserARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteUserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteUserProfile' with the minimum fields required to make a request.
 --
--- * 'dupIamUserArn' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteUserProfile :: Text -- ^ 'dupIamUserArn'
-                  -> DeleteUserProfile
-deleteUserProfile p1 = DeleteUserProfile
-    { _dupIamUserArn = p1
+-- * 'dupIAMUserARN'
+deleteUserProfile
+    :: Text -- ^ 'dupIAMUserARN'
+    -> DeleteUserProfile
+deleteUserProfile pIAMUserARN_ =
+    DeleteUserProfile'
+    { _dupIAMUserARN = pIAMUserARN_
     }
 
--- | The user's IAM ARN.
-dupIamUserArn :: Lens' DeleteUserProfile Text
-dupIamUserArn = lens _dupIamUserArn (\s a -> s { _dupIamUserArn = a })
+-- | The user\'s IAM ARN.
+dupIAMUserARN :: Lens' DeleteUserProfile Text
+dupIAMUserARN = lens _dupIAMUserARN (\ s a -> s{_dupIAMUserARN = a});
 
-data DeleteUserProfileResponse = DeleteUserProfileResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeleteUserProfile where
+        type Sv DeleteUserProfile = OpsWorks
+        type Rs DeleteUserProfile = DeleteUserProfileResponse
+        request = postJSON
+        response = receiveNull DeleteUserProfileResponse'
 
--- | 'DeleteUserProfileResponse' constructor.
-deleteUserProfileResponse :: DeleteUserProfileResponse
-deleteUserProfileResponse = DeleteUserProfileResponse
+instance ToHeaders DeleteUserProfile where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeleteUserProfile" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeleteUserProfile where
+        toJSON DeleteUserProfile'{..}
+          = object ["IamUserArn" .= _dupIAMUserARN]
+
 instance ToPath DeleteUserProfile where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteUserProfile where
-    toQuery = const mempty
-
-instance ToHeaders DeleteUserProfile
-
-instance ToJSON DeleteUserProfile where
-    toJSON DeleteUserProfile{..} = object
-        [ "IamUserArn" .= _dupIamUserArn
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeleteUserProfile where
-    type Sv DeleteUserProfile = OpsWorks
-    type Rs DeleteUserProfile = DeleteUserProfileResponse
+-- | /See:/ 'deleteUserProfileResponse' smart constructor.
+data DeleteUserProfileResponse =
+    DeleteUserProfileResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeleteUserProfile"
-    response = nullResponse DeleteUserProfileResponse
+-- | Creates a value of 'DeleteUserProfileResponse' with the minimum fields required to make a request.
+--
+deleteUserProfileResponse
+    :: DeleteUserProfileResponse
+deleteUserProfileResponse = DeleteUserProfileResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs b/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DeregisterEcsCluster.hs
@@ -0,0 +1,109 @@
+{-# 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.OpsWorks.DeregisterEcsCluster
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Deregisters a specified Amazon ECS cluster from a stack. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-ecscluster.html#workinglayers-ecscluster-delete Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html >.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterEcsCluster.html AWS API Reference> for DeregisterEcsCluster.
+module Network.AWS.OpsWorks.DeregisterEcsCluster
+    (
+    -- * Creating a Request
+      deregisterEcsCluster
+    , DeregisterEcsCluster
+    -- * Request Lenses
+    , decEcsClusterARN
+
+    -- * Destructuring the Response
+    , deregisterEcsClusterResponse
+    , DeregisterEcsClusterResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deregisterEcsCluster' smart constructor.
+newtype DeregisterEcsCluster = DeregisterEcsCluster'
+    { _decEcsClusterARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterEcsCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'decEcsClusterARN'
+deregisterEcsCluster
+    :: Text -- ^ 'decEcsClusterARN'
+    -> DeregisterEcsCluster
+deregisterEcsCluster pEcsClusterARN_ =
+    DeregisterEcsCluster'
+    { _decEcsClusterARN = pEcsClusterARN_
+    }
+
+-- | The cluster\'s ARN.
+decEcsClusterARN :: Lens' DeregisterEcsCluster Text
+decEcsClusterARN = lens _decEcsClusterARN (\ s a -> s{_decEcsClusterARN = a});
+
+instance AWSRequest DeregisterEcsCluster where
+        type Sv DeregisterEcsCluster = OpsWorks
+        type Rs DeregisterEcsCluster =
+             DeregisterEcsClusterResponse
+        request = postJSON
+        response = receiveNull DeregisterEcsClusterResponse'
+
+instance ToHeaders DeregisterEcsCluster where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeregisterEcsCluster" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeregisterEcsCluster where
+        toJSON DeregisterEcsCluster'{..}
+          = object ["EcsClusterArn" .= _decEcsClusterARN]
+
+instance ToPath DeregisterEcsCluster where
+        toPath = const "/"
+
+instance ToQuery DeregisterEcsCluster where
+        toQuery = const mempty
+
+-- | /See:/ 'deregisterEcsClusterResponse' smart constructor.
+data DeregisterEcsClusterResponse =
+    DeregisterEcsClusterResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterEcsClusterResponse' with the minimum fields required to make a request.
+--
+deregisterEcsClusterResponse
+    :: DeregisterEcsClusterResponse
+deregisterEcsClusterResponse = DeregisterEcsClusterResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs b/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DeregisterElasticIP.hs
@@ -0,0 +1,109 @@
+{-# 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.OpsWorks.DeregisterElasticIP
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Deregisters a specified Elastic IP address. The address can then be
+-- registered by another stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterElasticIP.html AWS API Reference> for DeregisterElasticIP.
+module Network.AWS.OpsWorks.DeregisterElasticIP
+    (
+    -- * Creating a Request
+      deregisterElasticIP
+    , DeregisterElasticIP
+    -- * Request Lenses
+    , deipElasticIP
+
+    -- * Destructuring the Response
+    , deregisterElasticIPResponse
+    , DeregisterElasticIPResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deregisterElasticIP' smart constructor.
+newtype DeregisterElasticIP = DeregisterElasticIP'
+    { _deipElasticIP :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'deipElasticIP'
+deregisterElasticIP
+    :: Text -- ^ 'deipElasticIP'
+    -> DeregisterElasticIP
+deregisterElasticIP pElasticIP_ =
+    DeregisterElasticIP'
+    { _deipElasticIP = pElasticIP_
+    }
+
+-- | The Elastic IP address.
+deipElasticIP :: Lens' DeregisterElasticIP Text
+deipElasticIP = lens _deipElasticIP (\ s a -> s{_deipElasticIP = a});
+
+instance AWSRequest DeregisterElasticIP where
+        type Sv DeregisterElasticIP = OpsWorks
+        type Rs DeregisterElasticIP =
+             DeregisterElasticIPResponse
+        request = postJSON
+        response = receiveNull DeregisterElasticIPResponse'
+
+instance ToHeaders DeregisterElasticIP where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeregisterElasticIp" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeregisterElasticIP where
+        toJSON DeregisterElasticIP'{..}
+          = object ["ElasticIp" .= _deipElasticIP]
+
+instance ToPath DeregisterElasticIP where
+        toPath = const "/"
+
+instance ToQuery DeregisterElasticIP where
+        toQuery = const mempty
+
+-- | /See:/ 'deregisterElasticIPResponse' smart constructor.
+data DeregisterElasticIPResponse =
+    DeregisterElasticIPResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterElasticIPResponse' with the minimum fields required to make a request.
+--
+deregisterElasticIPResponse
+    :: DeregisterElasticIPResponse
+deregisterElasticIPResponse = DeregisterElasticIPResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs b/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DeregisterElasticIp.hs
+++ /dev/null
@@ -1,99 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DeregisterElasticIp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deregisters a specified Elastic IP address. The address can then be
--- registered by another stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterElasticIp.html>
-module Network.AWS.OpsWorks.DeregisterElasticIp
-    (
-    -- * Request
-      DeregisterElasticIp
-    -- ** Request constructor
-    , deregisterElasticIp
-    -- ** Request lenses
-    , dei1ElasticIp
-
-    -- * Response
-    , DeregisterElasticIpResponse
-    -- ** Response constructor
-    , deregisterElasticIpResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DeregisterElasticIp = DeregisterElasticIp
-    { _dei1ElasticIp :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeregisterElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dei1ElasticIp' @::@ 'Text'
---
-deregisterElasticIp :: Text -- ^ 'dei1ElasticIp'
-                    -> DeregisterElasticIp
-deregisterElasticIp p1 = DeregisterElasticIp
-    { _dei1ElasticIp = p1
-    }
-
--- | The Elastic IP address.
-dei1ElasticIp :: Lens' DeregisterElasticIp Text
-dei1ElasticIp = lens _dei1ElasticIp (\s a -> s { _dei1ElasticIp = a })
-
-data DeregisterElasticIpResponse = DeregisterElasticIpResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DeregisterElasticIpResponse' constructor.
-deregisterElasticIpResponse :: DeregisterElasticIpResponse
-deregisterElasticIpResponse = DeregisterElasticIpResponse
-
-instance ToPath DeregisterElasticIp where
-    toPath = const "/"
-
-instance ToQuery DeregisterElasticIp where
-    toQuery = const mempty
-
-instance ToHeaders DeregisterElasticIp
-
-instance ToJSON DeregisterElasticIp where
-    toJSON DeregisterElasticIp{..} = object
-        [ "ElasticIp" .= _dei1ElasticIp
-        ]
-
-instance AWSRequest DeregisterElasticIp where
-    type Sv DeregisterElasticIp = OpsWorks
-    type Rs DeregisterElasticIp = DeregisterElasticIpResponse
-
-    request  = post "DeregisterElasticIp"
-    response = nullResponse DeregisterElasticIpResponse
diff --git a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterInstance.hs
@@ -1,100 +1,110 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeregisterInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deregister a registered Amazon EC2 or on-premises instance. This action
+-- Deregister a registered Amazon EC2 or on-premises instance. This action
 -- removes the instance from the stack and returns it to your control. This
--- action can not be used with instances that were created with AWS OpsWorks.
+-- action can not be used with instances that were created with AWS
+-- OpsWorks.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterInstance.html AWS API Reference> for DeregisterInstance.
 module Network.AWS.OpsWorks.DeregisterInstance
     (
-    -- * Request
-      DeregisterInstance
-    -- ** Request constructor
-    , deregisterInstance
-    -- ** Request lenses
-    , di1InstanceId
+    -- * Creating a Request
+      deregisterInstance
+    , DeregisterInstance
+    -- * Request Lenses
+    , dInstanceId
 
-    -- * Response
-    , DeregisterInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deregisterInstanceResponse
+    , DeregisterInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeregisterInstance = DeregisterInstance
-    { _di1InstanceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'deregisterInstance' smart constructor.
+newtype DeregisterInstance = DeregisterInstance'
+    { _dInstanceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeregisterInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeregisterInstance' with the minimum fields required to make a request.
 --
--- * 'di1InstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deregisterInstance :: Text -- ^ 'di1InstanceId'
-                   -> DeregisterInstance
-deregisterInstance p1 = DeregisterInstance
-    { _di1InstanceId = p1
+-- * 'dInstanceId'
+deregisterInstance
+    :: Text -- ^ 'dInstanceId'
+    -> DeregisterInstance
+deregisterInstance pInstanceId_ =
+    DeregisterInstance'
+    { _dInstanceId = pInstanceId_
     }
 
 -- | The instance ID.
-di1InstanceId :: Lens' DeregisterInstance Text
-di1InstanceId = lens _di1InstanceId (\s a -> s { _di1InstanceId = a })
+dInstanceId :: Lens' DeregisterInstance Text
+dInstanceId = lens _dInstanceId (\ s a -> s{_dInstanceId = a});
 
-data DeregisterInstanceResponse = DeregisterInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeregisterInstance where
+        type Sv DeregisterInstance = OpsWorks
+        type Rs DeregisterInstance =
+             DeregisterInstanceResponse
+        request = postJSON
+        response = receiveNull DeregisterInstanceResponse'
 
--- | 'DeregisterInstanceResponse' constructor.
-deregisterInstanceResponse :: DeregisterInstanceResponse
-deregisterInstanceResponse = DeregisterInstanceResponse
+instance ToHeaders DeregisterInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeregisterInstance" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeregisterInstance where
+        toJSON DeregisterInstance'{..}
+          = object ["InstanceId" .= _dInstanceId]
+
 instance ToPath DeregisterInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeregisterInstance where
-    toQuery = const mempty
-
-instance ToHeaders DeregisterInstance
-
-instance ToJSON DeregisterInstance where
-    toJSON DeregisterInstance{..} = object
-        [ "InstanceId" .= _di1InstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeregisterInstance where
-    type Sv DeregisterInstance = OpsWorks
-    type Rs DeregisterInstance = DeregisterInstanceResponse
+-- | /See:/ 'deregisterInstanceResponse' smart constructor.
+data DeregisterInstanceResponse =
+    DeregisterInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeregisterInstance"
-    response = nullResponse DeregisterInstanceResponse
+-- | Creates a value of 'DeregisterInstanceResponse' with the minimum fields required to make a request.
+--
+deregisterInstanceResponse
+    :: DeregisterInstanceResponse
+deregisterInstanceResponse = DeregisterInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DeregisterRDSDBInstance.hs
@@ -0,0 +1,109 @@
+{-# 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.OpsWorks.DeregisterRDSDBInstance
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Deregisters an Amazon RDS instance.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterRDSDBInstance.html AWS API Reference> for DeregisterRDSDBInstance.
+module Network.AWS.OpsWorks.DeregisterRDSDBInstance
+    (
+    -- * Creating a Request
+      deregisterRDSDBInstance
+    , DeregisterRDSDBInstance
+    -- * Request Lenses
+    , drdiRDSDBInstanceARN
+
+    -- * Destructuring the Response
+    , deregisterRDSDBInstanceResponse
+    , DeregisterRDSDBInstanceResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'deregisterRDSDBInstance' smart constructor.
+newtype DeregisterRDSDBInstance = DeregisterRDSDBInstance'
+    { _drdiRDSDBInstanceARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterRDSDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drdiRDSDBInstanceARN'
+deregisterRDSDBInstance
+    :: Text -- ^ 'drdiRDSDBInstanceARN'
+    -> DeregisterRDSDBInstance
+deregisterRDSDBInstance pRDSDBInstanceARN_ =
+    DeregisterRDSDBInstance'
+    { _drdiRDSDBInstanceARN = pRDSDBInstanceARN_
+    }
+
+-- | The Amazon RDS instance\'s ARN.
+drdiRDSDBInstanceARN :: Lens' DeregisterRDSDBInstance Text
+drdiRDSDBInstanceARN = lens _drdiRDSDBInstanceARN (\ s a -> s{_drdiRDSDBInstanceARN = a});
+
+instance AWSRequest DeregisterRDSDBInstance where
+        type Sv DeregisterRDSDBInstance = OpsWorks
+        type Rs DeregisterRDSDBInstance =
+             DeregisterRDSDBInstanceResponse
+        request = postJSON
+        response
+          = receiveNull DeregisterRDSDBInstanceResponse'
+
+instance ToHeaders DeregisterRDSDBInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeregisterRdsDbInstance" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeregisterRDSDBInstance where
+        toJSON DeregisterRDSDBInstance'{..}
+          = object
+              ["RdsDbInstanceArn" .= _drdiRDSDBInstanceARN]
+
+instance ToPath DeregisterRDSDBInstance where
+        toPath = const "/"
+
+instance ToQuery DeregisterRDSDBInstance where
+        toQuery = const mempty
+
+-- | /See:/ 'deregisterRDSDBInstanceResponse' smart constructor.
+data DeregisterRDSDBInstanceResponse =
+    DeregisterRDSDBInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeregisterRDSDBInstanceResponse' with the minimum fields required to make a request.
+--
+deregisterRDSDBInstanceResponse
+    :: DeregisterRDSDBInstanceResponse
+deregisterRDSDBInstanceResponse = DeregisterRDSDBInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/DeregisterRdsDbInstance.hs b/gen/Network/AWS/OpsWorks/DeregisterRdsDbInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DeregisterRdsDbInstance.hs
+++ /dev/null
@@ -1,99 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DeregisterRdsDbInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deregisters an Amazon RDS instance.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterRdsDbInstance.html>
-module Network.AWS.OpsWorks.DeregisterRdsDbInstance
-    (
-    -- * Request
-      DeregisterRdsDbInstance
-    -- ** Request constructor
-    , deregisterRdsDbInstance
-    -- ** Request lenses
-    , drdiRdsDbInstanceArn
-
-    -- * Response
-    , DeregisterRdsDbInstanceResponse
-    -- ** Response constructor
-    , deregisterRdsDbInstanceResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DeregisterRdsDbInstance = DeregisterRdsDbInstance
-    { _drdiRdsDbInstanceArn :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DeregisterRdsDbInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'drdiRdsDbInstanceArn' @::@ 'Text'
---
-deregisterRdsDbInstance :: Text -- ^ 'drdiRdsDbInstanceArn'
-                        -> DeregisterRdsDbInstance
-deregisterRdsDbInstance p1 = DeregisterRdsDbInstance
-    { _drdiRdsDbInstanceArn = p1
-    }
-
--- | The Amazon RDS instance's ARN.
-drdiRdsDbInstanceArn :: Lens' DeregisterRdsDbInstance Text
-drdiRdsDbInstanceArn =
-    lens _drdiRdsDbInstanceArn (\s a -> s { _drdiRdsDbInstanceArn = a })
-
-data DeregisterRdsDbInstanceResponse = DeregisterRdsDbInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DeregisterRdsDbInstanceResponse' constructor.
-deregisterRdsDbInstanceResponse :: DeregisterRdsDbInstanceResponse
-deregisterRdsDbInstanceResponse = DeregisterRdsDbInstanceResponse
-
-instance ToPath DeregisterRdsDbInstance where
-    toPath = const "/"
-
-instance ToQuery DeregisterRdsDbInstance where
-    toQuery = const mempty
-
-instance ToHeaders DeregisterRdsDbInstance
-
-instance ToJSON DeregisterRdsDbInstance where
-    toJSON DeregisterRdsDbInstance{..} = object
-        [ "RdsDbInstanceArn" .= _drdiRdsDbInstanceArn
-        ]
-
-instance AWSRequest DeregisterRdsDbInstance where
-    type Sv DeregisterRdsDbInstance = OpsWorks
-    type Rs DeregisterRdsDbInstance = DeregisterRdsDbInstanceResponse
-
-    request  = post "DeregisterRdsDbInstance"
-    response = nullResponse DeregisterRdsDbInstanceResponse
diff --git a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/DeregisterVolume.hs
@@ -1,101 +1,109 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DeregisterVolume
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Deregisters an Amazon EBS volume. The volume can then be registered by
--- another stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+-- Deregisters an Amazon EBS volume. The volume can then be registered by
+-- another stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DeregisterVolume.html AWS API Reference> for DeregisterVolume.
 module Network.AWS.OpsWorks.DeregisterVolume
     (
-    -- * Request
-      DeregisterVolume
-    -- ** Request constructor
-    , deregisterVolume
-    -- ** Request lenses
+    -- * Creating a Request
+      deregisterVolume
+    , DeregisterVolume
+    -- * Request Lenses
     , dvVolumeId
 
-    -- * Response
-    , DeregisterVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deregisterVolumeResponse
+    , DeregisterVolumeResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DeregisterVolume = DeregisterVolume
+-- | /See:/ 'deregisterVolume' smart constructor.
+newtype DeregisterVolume = DeregisterVolume'
     { _dvVolumeId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeregisterVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeregisterVolume' with the minimum fields required to make a request.
 --
--- * 'dvVolumeId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deregisterVolume :: Text -- ^ 'dvVolumeId'
-                 -> DeregisterVolume
-deregisterVolume p1 = DeregisterVolume
-    { _dvVolumeId = p1
+-- * 'dvVolumeId'
+deregisterVolume
+    :: Text -- ^ 'dvVolumeId'
+    -> DeregisterVolume
+deregisterVolume pVolumeId_ =
+    DeregisterVolume'
+    { _dvVolumeId = pVolumeId_
     }
 
--- | The AWS OpsWorks volume ID, which is the GUID that AWS OpsWorks assigned to
--- the instance when you registered the volume with the stack, not the Amazon
--- EC2 volume ID.
+-- | The AWS OpsWorks volume ID, which is the GUID that AWS OpsWorks assigned
+-- to the instance when you registered the volume with the stack, not the
+-- Amazon EC2 volume ID.
 dvVolumeId :: Lens' DeregisterVolume Text
-dvVolumeId = lens _dvVolumeId (\s a -> s { _dvVolumeId = a })
+dvVolumeId = lens _dvVolumeId (\ s a -> s{_dvVolumeId = a});
 
-data DeregisterVolumeResponse = DeregisterVolumeResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DeregisterVolume where
+        type Sv DeregisterVolume = OpsWorks
+        type Rs DeregisterVolume = DeregisterVolumeResponse
+        request = postJSON
+        response = receiveNull DeregisterVolumeResponse'
 
--- | 'DeregisterVolumeResponse' constructor.
-deregisterVolumeResponse :: DeregisterVolumeResponse
-deregisterVolumeResponse = DeregisterVolumeResponse
+instance ToHeaders DeregisterVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DeregisterVolume" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DeregisterVolume where
+        toJSON DeregisterVolume'{..}
+          = object ["VolumeId" .= _dvVolumeId]
+
 instance ToPath DeregisterVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeregisterVolume where
-    toQuery = const mempty
-
-instance ToHeaders DeregisterVolume
-
-instance ToJSON DeregisterVolume where
-    toJSON DeregisterVolume{..} = object
-        [ "VolumeId" .= _dvVolumeId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DeregisterVolume where
-    type Sv DeregisterVolume = OpsWorks
-    type Rs DeregisterVolume = DeregisterVolumeResponse
+-- | /See:/ 'deregisterVolumeResponse' smart constructor.
+data DeregisterVolumeResponse =
+    DeregisterVolumeResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DeregisterVolume"
-    response = nullResponse DeregisterVolumeResponse
+-- | Creates a value of 'DeregisterVolumeResponse' with the minimum fields required to make a request.
+--
+deregisterVolumeResponse
+    :: DeregisterVolumeResponse
+deregisterVolumeResponse = DeregisterVolumeResponse'
diff --git a/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs b/gen/Network/AWS/OpsWorks/DescribeAgentVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeAgentVersions.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.OpsWorks.DescribeAgentVersions
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the available AWS OpsWorks agent versions. You must specify a
+-- stack ID or a configuration manager. 'DescribeAgentVersions' returns a
+-- list of available agent versions for the specified stack or
+-- configuration manager.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeAgentVersions.html AWS API Reference> for DescribeAgentVersions.
+module Network.AWS.OpsWorks.DescribeAgentVersions
+    (
+    -- * Creating a Request
+      describeAgentVersions
+    , DescribeAgentVersions
+    -- * Request Lenses
+    , davConfigurationManager
+    , davStackId
+
+    -- * Destructuring the Response
+    , describeAgentVersionsResponse
+    , DescribeAgentVersionsResponse
+    -- * Response Lenses
+    , davrsAgentVersions
+    , davrsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeAgentVersions' smart constructor.
+data DescribeAgentVersions = DescribeAgentVersions'
+    { _davConfigurationManager :: !(Maybe StackConfigurationManager)
+    , _davStackId              :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAgentVersions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'davConfigurationManager'
+--
+-- * 'davStackId'
+describeAgentVersions
+    :: DescribeAgentVersions
+describeAgentVersions =
+    DescribeAgentVersions'
+    { _davConfigurationManager = Nothing
+    , _davStackId = Nothing
+    }
+
+-- | The configuration manager.
+davConfigurationManager :: Lens' DescribeAgentVersions (Maybe StackConfigurationManager)
+davConfigurationManager = lens _davConfigurationManager (\ s a -> s{_davConfigurationManager = a});
+
+-- | The stack ID.
+davStackId :: Lens' DescribeAgentVersions (Maybe Text)
+davStackId = lens _davStackId (\ s a -> s{_davStackId = a});
+
+instance AWSRequest DescribeAgentVersions where
+        type Sv DescribeAgentVersions = OpsWorks
+        type Rs DescribeAgentVersions =
+             DescribeAgentVersionsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeAgentVersionsResponse' <$>
+                   (x .?> "AgentVersions" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DescribeAgentVersions where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeAgentVersions" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeAgentVersions where
+        toJSON DescribeAgentVersions'{..}
+          = object
+              ["ConfigurationManager" .= _davConfigurationManager,
+               "StackId" .= _davStackId]
+
+instance ToPath DescribeAgentVersions where
+        toPath = const "/"
+
+instance ToQuery DescribeAgentVersions where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeAgentVersions' request.
+--
+-- /See:/ 'describeAgentVersionsResponse' smart constructor.
+data DescribeAgentVersionsResponse = DescribeAgentVersionsResponse'
+    { _davrsAgentVersions :: !(Maybe [AgentVersion])
+    , _davrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeAgentVersionsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'davrsAgentVersions'
+--
+-- * 'davrsStatus'
+describeAgentVersionsResponse
+    :: Int -- ^ 'davrsStatus'
+    -> DescribeAgentVersionsResponse
+describeAgentVersionsResponse pStatus_ =
+    DescribeAgentVersionsResponse'
+    { _davrsAgentVersions = Nothing
+    , _davrsStatus = pStatus_
+    }
+
+-- | The agent versions for the specified stack or configuration manager.
+-- Note that this value is the complete version number, not the abbreviated
+-- number used by the console.
+davrsAgentVersions :: Lens' DescribeAgentVersionsResponse [AgentVersion]
+davrsAgentVersions = lens _davrsAgentVersions (\ s a -> s{_davrsAgentVersions = a}) . _Default . _Coerce;
+
+-- | The response status code.
+davrsStatus :: Lens' DescribeAgentVersionsResponse Int
+davrsStatus = lens _davrsStatus (\ s a -> s{_davrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeApps.hs b/gen/Network/AWS/OpsWorks/DescribeApps.hs
--- a/gen/Network/AWS/OpsWorks/DescribeApps.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeApps.hs
@@ -1,135 +1,147 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeApps
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of a specified set of apps.
+-- Requests a description of a specified set of apps.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeApps.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeApps.html AWS API Reference> for DescribeApps.
 module Network.AWS.OpsWorks.DescribeApps
     (
-    -- * Request
-      DescribeApps
-    -- ** Request constructor
-    , describeApps
-    -- ** Request lenses
+    -- * Creating a Request
+      describeApps
+    , DescribeApps
+    -- * Request Lenses
     , daAppIds
     , daStackId
 
-    -- * Response
-    , DescribeAppsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAppsResponse
-    -- ** Response lenses
-    , darApps
+    , DescribeAppsResponse
+    -- * Response Lenses
+    , darsApps
+    , darsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeApps = DescribeApps
-    { _daAppIds  :: List "AppIds" Text
-    , _daStackId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeApps' smart constructor.
+data DescribeApps = DescribeApps'
+    { _daAppIds  :: !(Maybe [Text])
+    , _daStackId :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeApps' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeApps' with the minimum fields required to make a request.
 --
--- * 'daAppIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'daStackId' @::@ 'Maybe' 'Text'
+-- * 'daAppIds'
 --
-describeApps :: DescribeApps
-describeApps = DescribeApps
-    { _daStackId = Nothing
-    , _daAppIds  = mempty
+-- * 'daStackId'
+describeApps
+    :: DescribeApps
+describeApps =
+    DescribeApps'
+    { _daAppIds = Nothing
+    , _daStackId = Nothing
     }
 
--- | An array of app IDs for the apps to be described. If you use this parameter, 'DescribeApps' returns a description of the specified apps. Otherwise, it returns a
--- description of every app.
+-- | An array of app IDs for the apps to be described. If you use this
+-- parameter, 'DescribeApps' returns a description of the specified apps.
+-- Otherwise, it returns a description of every app.
 daAppIds :: Lens' DescribeApps [Text]
-daAppIds = lens _daAppIds (\s a -> s { _daAppIds = a }) . _List
+daAppIds = lens _daAppIds (\ s a -> s{_daAppIds = a}) . _Default . _Coerce;
 
 -- | The app stack ID. If you use this parameter, 'DescribeApps' returns a
 -- description of the apps in the specified stack.
 daStackId :: Lens' DescribeApps (Maybe Text)
-daStackId = lens _daStackId (\s a -> s { _daStackId = a })
-
-newtype DescribeAppsResponse = DescribeAppsResponse
-    { _darApps :: List "Apps" App
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeAppsResponse where
-    type Item DescribeAppsResponse = App
+daStackId = lens _daStackId (\ s a -> s{_daStackId = a});
 
-    fromList = DescribeAppsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _darApps
+instance AWSRequest DescribeApps where
+        type Sv DescribeApps = OpsWorks
+        type Rs DescribeApps = DescribeAppsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeAppsResponse' <$>
+                   (x .?> "Apps" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | 'DescribeAppsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'darApps' @::@ ['App']
---
-describeAppsResponse :: DescribeAppsResponse
-describeAppsResponse = DescribeAppsResponse
-    { _darApps = mempty
-    }
+instance ToHeaders DescribeApps where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeApps" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'App' objects that describe the specified apps.
-darApps :: Lens' DescribeAppsResponse [App]
-darApps = lens _darApps (\s a -> s { _darApps = a }) . _List
+instance ToJSON DescribeApps where
+        toJSON DescribeApps'{..}
+          = object
+              ["AppIds" .= _daAppIds, "StackId" .= _daStackId]
 
 instance ToPath DescribeApps where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeApps where
-    toQuery = const mempty
-
-instance ToHeaders DescribeApps
+        toQuery = const mempty
 
-instance ToJSON DescribeApps where
-    toJSON DescribeApps{..} = object
-        [ "StackId" .= _daStackId
-        , "AppIds"  .= _daAppIds
-        ]
+-- | Contains the response to a 'DescribeApps' request.
+--
+-- /See:/ 'describeAppsResponse' smart constructor.
+data DescribeAppsResponse = DescribeAppsResponse'
+    { _darsApps   :: !(Maybe [App])
+    , _darsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeApps where
-    type Sv DescribeApps = OpsWorks
-    type Rs DescribeApps = DescribeAppsResponse
+-- | Creates a value of 'DescribeAppsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'darsApps'
+--
+-- * 'darsStatus'
+describeAppsResponse
+    :: Int -- ^ 'darsStatus'
+    -> DescribeAppsResponse
+describeAppsResponse pStatus_ =
+    DescribeAppsResponse'
+    { _darsApps = Nothing
+    , _darsStatus = pStatus_
+    }
 
-    request  = post "DescribeApps"
-    response = jsonResponse
+-- | An array of 'App' objects that describe the specified apps.
+darsApps :: Lens' DescribeAppsResponse [App]
+darsApps = lens _darsApps (\ s a -> s{_darsApps = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeAppsResponse where
-    parseJSON = withObject "DescribeAppsResponse" $ \o -> DescribeAppsResponse
-        <$> o .:? "Apps" .!= mempty
+-- | The response status code.
+darsStatus :: Lens' DescribeAppsResponse Int
+darsStatus = lens _darsStatus (\ s a -> s{_darsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeCommands.hs b/gen/Network/AWS/OpsWorks/DescribeCommands.hs
--- a/gen/Network/AWS/OpsWorks/DescribeCommands.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeCommands.hs
@@ -1,147 +1,163 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeCommands
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes the results of specified commands.
+-- Describes the results of specified commands.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeCommands.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeCommands.html AWS API Reference> for DescribeCommands.
 module Network.AWS.OpsWorks.DescribeCommands
     (
-    -- * Request
-      DescribeCommands
-    -- ** Request constructor
-    , describeCommands
-    -- ** Request lenses
-    , dcCommandIds
-    , dcDeploymentId
+    -- * Creating a Request
+      describeCommands
+    , DescribeCommands
+    -- * Request Lenses
     , dcInstanceId
+    , dcDeploymentId
+    , dcCommandIds
 
-    -- * Response
-    , DescribeCommandsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCommandsResponse
-    -- ** Response lenses
-    , dcrCommands
+    , DescribeCommandsResponse
+    -- * Response Lenses
+    , dcrsCommands
+    , dcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeCommands = DescribeCommands
-    { _dcCommandIds   :: List "CommandIds" Text
-    , _dcDeploymentId :: Maybe Text
-    , _dcInstanceId   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeCommands' smart constructor.
+data DescribeCommands = DescribeCommands'
+    { _dcInstanceId   :: !(Maybe Text)
+    , _dcDeploymentId :: !(Maybe Text)
+    , _dcCommandIds   :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeCommands' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeCommands' with the minimum fields required to make a request.
 --
--- * 'dcCommandIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcDeploymentId' @::@ 'Maybe' 'Text'
+-- * 'dcInstanceId'
 --
--- * 'dcInstanceId' @::@ 'Maybe' 'Text'
+-- * 'dcDeploymentId'
 --
-describeCommands :: DescribeCommands
-describeCommands = DescribeCommands
-    { _dcDeploymentId = Nothing
-    , _dcInstanceId   = Nothing
-    , _dcCommandIds   = mempty
+-- * 'dcCommandIds'
+describeCommands
+    :: DescribeCommands
+describeCommands =
+    DescribeCommands'
+    { _dcInstanceId = Nothing
+    , _dcDeploymentId = Nothing
+    , _dcCommandIds = Nothing
     }
 
--- | An array of command IDs. If you include this parameter, 'DescribeCommands'
--- returns a description of the specified commands. Otherwise, it returns a
--- description of every command.
-dcCommandIds :: Lens' DescribeCommands [Text]
-dcCommandIds = lens _dcCommandIds (\s a -> s { _dcCommandIds = a }) . _List
-
--- | The deployment ID. If you include this parameter, 'DescribeCommands' returns a
--- description of the commands associated with the specified deployment.
-dcDeploymentId :: Lens' DescribeCommands (Maybe Text)
-dcDeploymentId = lens _dcDeploymentId (\s a -> s { _dcDeploymentId = a })
-
--- | The instance ID. If you include this parameter, 'DescribeCommands' returns a
--- description of the commands associated with the specified instance.
+-- | The instance ID. If you include this parameter, 'DescribeCommands'
+-- returns a description of the commands associated with the specified
+-- instance.
 dcInstanceId :: Lens' DescribeCommands (Maybe Text)
-dcInstanceId = lens _dcInstanceId (\s a -> s { _dcInstanceId = a })
+dcInstanceId = lens _dcInstanceId (\ s a -> s{_dcInstanceId = a});
 
-newtype DescribeCommandsResponse = DescribeCommandsResponse
-    { _dcrCommands :: List "Commands" Command
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+-- | The deployment ID. If you include this parameter, 'DescribeCommands'
+-- returns a description of the commands associated with the specified
+-- deployment.
+dcDeploymentId :: Lens' DescribeCommands (Maybe Text)
+dcDeploymentId = lens _dcDeploymentId (\ s a -> s{_dcDeploymentId = a});
 
-instance GHC.Exts.IsList DescribeCommandsResponse where
-    type Item DescribeCommandsResponse = Command
+-- | An array of command IDs. If you include this parameter,
+-- 'DescribeCommands' returns a description of the specified commands.
+-- Otherwise, it returns a description of every command.
+dcCommandIds :: Lens' DescribeCommands [Text]
+dcCommandIds = lens _dcCommandIds (\ s a -> s{_dcCommandIds = a}) . _Default . _Coerce;
 
-    fromList = DescribeCommandsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcrCommands
+instance AWSRequest DescribeCommands where
+        type Sv DescribeCommands = OpsWorks
+        type Rs DescribeCommands = DescribeCommandsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCommandsResponse' <$>
+                   (x .?> "Commands" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeCommandsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcrCommands' @::@ ['Command']
---
-describeCommandsResponse :: DescribeCommandsResponse
-describeCommandsResponse = DescribeCommandsResponse
-    { _dcrCommands = mempty
-    }
+instance ToHeaders DescribeCommands where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeCommands" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'Command' objects that describe each of the specified commands.
-dcrCommands :: Lens' DescribeCommandsResponse [Command]
-dcrCommands = lens _dcrCommands (\s a -> s { _dcrCommands = a }) . _List
+instance ToJSON DescribeCommands where
+        toJSON DescribeCommands'{..}
+          = object
+              ["InstanceId" .= _dcInstanceId,
+               "DeploymentId" .= _dcDeploymentId,
+               "CommandIds" .= _dcCommandIds]
 
 instance ToPath DescribeCommands where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeCommands where
-    toQuery = const mempty
-
-instance ToHeaders DescribeCommands
+        toQuery = const mempty
 
-instance ToJSON DescribeCommands where
-    toJSON DescribeCommands{..} = object
-        [ "DeploymentId" .= _dcDeploymentId
-        , "InstanceId"   .= _dcInstanceId
-        , "CommandIds"   .= _dcCommandIds
-        ]
+-- | Contains the response to a 'DescribeCommands' request.
+--
+-- /See:/ 'describeCommandsResponse' smart constructor.
+data DescribeCommandsResponse = DescribeCommandsResponse'
+    { _dcrsCommands :: !(Maybe [Command])
+    , _dcrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeCommands where
-    type Sv DescribeCommands = OpsWorks
-    type Rs DescribeCommands = DescribeCommandsResponse
+-- | Creates a value of 'DescribeCommandsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcrsCommands'
+--
+-- * 'dcrsStatus'
+describeCommandsResponse
+    :: Int -- ^ 'dcrsStatus'
+    -> DescribeCommandsResponse
+describeCommandsResponse pStatus_ =
+    DescribeCommandsResponse'
+    { _dcrsCommands = Nothing
+    , _dcrsStatus = pStatus_
+    }
 
-    request  = post "DescribeCommands"
-    response = jsonResponse
+-- | An array of 'Command' objects that describe each of the specified
+-- commands.
+dcrsCommands :: Lens' DescribeCommandsResponse [Command]
+dcrsCommands = lens _dcrsCommands (\ s a -> s{_dcrsCommands = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeCommandsResponse where
-    parseJSON = withObject "DescribeCommandsResponse" $ \o -> DescribeCommandsResponse
-        <$> o .:? "Commands" .!= mempty
+-- | The response status code.
+dcrsStatus :: Lens' DescribeCommandsResponse Int
+dcrsStatus = lens _dcrsStatus (\ s a -> s{_dcrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeDeployments.hs b/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
--- a/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeDeployments.hs
@@ -1,146 +1,163 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeDeployments
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of a specified set of deployments.
+-- Requests a description of a specified set of deployments.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeDeployments.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeDeployments.html AWS API Reference> for DescribeDeployments.
 module Network.AWS.OpsWorks.DescribeDeployments
     (
-    -- * Request
-      DescribeDeployments
-    -- ** Request constructor
-    , describeDeployments
-    -- ** Request lenses
+    -- * Creating a Request
+      describeDeployments
+    , DescribeDeployments
+    -- * Request Lenses
     , ddAppId
     , ddDeploymentIds
     , ddStackId
 
-    -- * Response
-    , DescribeDeploymentsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeDeploymentsResponse
-    -- ** Response lenses
-    , ddrDeployments
+    , DescribeDeploymentsResponse
+    -- * Response Lenses
+    , ddrsDeployments
+    , ddrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeDeployments = DescribeDeployments
-    { _ddAppId         :: Maybe Text
-    , _ddDeploymentIds :: List "DeploymentIds" Text
-    , _ddStackId       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeDeployments' smart constructor.
+data DescribeDeployments = DescribeDeployments'
+    { _ddAppId         :: !(Maybe Text)
+    , _ddDeploymentIds :: !(Maybe [Text])
+    , _ddStackId       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeDeployments' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeDeployments' with the minimum fields required to make a request.
 --
--- * 'ddAppId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ddDeploymentIds' @::@ ['Text']
+-- * 'ddAppId'
 --
--- * 'ddStackId' @::@ 'Maybe' 'Text'
+-- * 'ddDeploymentIds'
 --
-describeDeployments :: DescribeDeployments
-describeDeployments = DescribeDeployments
-    { _ddStackId       = Nothing
-    , _ddAppId         = Nothing
-    , _ddDeploymentIds = mempty
+-- * 'ddStackId'
+describeDeployments
+    :: DescribeDeployments
+describeDeployments =
+    DescribeDeployments'
+    { _ddAppId = Nothing
+    , _ddDeploymentIds = Nothing
+    , _ddStackId = Nothing
     }
 
--- | The app ID. If you include this parameter, 'DescribeDeployments' returns a
--- description of the commands associated with the specified app.
+-- | The app ID. If you include this parameter, 'DescribeDeployments' returns
+-- a description of the commands associated with the specified app.
 ddAppId :: Lens' DescribeDeployments (Maybe Text)
-ddAppId = lens _ddAppId (\s a -> s { _ddAppId = a })
+ddAppId = lens _ddAppId (\ s a -> s{_ddAppId = a});
 
--- | An array of deployment IDs to be described. If you include this parameter, 'DescribeDeployments' returns a description of the specified deployments. Otherwise, it returns a
--- description of every deployment.
+-- | An array of deployment IDs to be described. If you include this
+-- parameter, 'DescribeDeployments' returns a description of the specified
+-- deployments. Otherwise, it returns a description of every deployment.
 ddDeploymentIds :: Lens' DescribeDeployments [Text]
-ddDeploymentIds = lens _ddDeploymentIds (\s a -> s { _ddDeploymentIds = a }) . _List
+ddDeploymentIds = lens _ddDeploymentIds (\ s a -> s{_ddDeploymentIds = a}) . _Default . _Coerce;
 
--- | The stack ID. If you include this parameter, 'DescribeDeployments' returns a
--- description of the commands associated with the specified stack.
+-- | The stack ID. If you include this parameter, 'DescribeDeployments'
+-- returns a description of the commands associated with the specified
+-- stack.
 ddStackId :: Lens' DescribeDeployments (Maybe Text)
-ddStackId = lens _ddStackId (\s a -> s { _ddStackId = a })
-
-newtype DescribeDeploymentsResponse = DescribeDeploymentsResponse
-    { _ddrDeployments :: List "Deployments" Deployment
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeDeploymentsResponse where
-    type Item DescribeDeploymentsResponse = Deployment
+ddStackId = lens _ddStackId (\ s a -> s{_ddStackId = a});
 
-    fromList = DescribeDeploymentsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ddrDeployments
+instance AWSRequest DescribeDeployments where
+        type Sv DescribeDeployments = OpsWorks
+        type Rs DescribeDeployments =
+             DescribeDeploymentsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeDeploymentsResponse' <$>
+                   (x .?> "Deployments" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeDeploymentsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ddrDeployments' @::@ ['Deployment']
---
-describeDeploymentsResponse :: DescribeDeploymentsResponse
-describeDeploymentsResponse = DescribeDeploymentsResponse
-    { _ddrDeployments = mempty
-    }
+instance ToHeaders DescribeDeployments where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeDeployments" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'Deployment' objects that describe the deployments.
-ddrDeployments :: Lens' DescribeDeploymentsResponse [Deployment]
-ddrDeployments = lens _ddrDeployments (\s a -> s { _ddrDeployments = a }) . _List
+instance ToJSON DescribeDeployments where
+        toJSON DescribeDeployments'{..}
+          = object
+              ["AppId" .= _ddAppId,
+               "DeploymentIds" .= _ddDeploymentIds,
+               "StackId" .= _ddStackId]
 
 instance ToPath DescribeDeployments where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeDeployments where
-    toQuery = const mempty
-
-instance ToHeaders DescribeDeployments
+        toQuery = const mempty
 
-instance ToJSON DescribeDeployments where
-    toJSON DescribeDeployments{..} = object
-        [ "StackId"       .= _ddStackId
-        , "AppId"         .= _ddAppId
-        , "DeploymentIds" .= _ddDeploymentIds
-        ]
+-- | Contains the response to a 'DescribeDeployments' request.
+--
+-- /See:/ 'describeDeploymentsResponse' smart constructor.
+data DescribeDeploymentsResponse = DescribeDeploymentsResponse'
+    { _ddrsDeployments :: !(Maybe [Deployment])
+    , _ddrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeDeployments where
-    type Sv DescribeDeployments = OpsWorks
-    type Rs DescribeDeployments = DescribeDeploymentsResponse
+-- | Creates a value of 'DescribeDeploymentsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddrsDeployments'
+--
+-- * 'ddrsStatus'
+describeDeploymentsResponse
+    :: Int -- ^ 'ddrsStatus'
+    -> DescribeDeploymentsResponse
+describeDeploymentsResponse pStatus_ =
+    DescribeDeploymentsResponse'
+    { _ddrsDeployments = Nothing
+    , _ddrsStatus = pStatus_
+    }
 
-    request  = post "DescribeDeployments"
-    response = jsonResponse
+-- | An array of 'Deployment' objects that describe the deployments.
+ddrsDeployments :: Lens' DescribeDeploymentsResponse [Deployment]
+ddrsDeployments = lens _ddrsDeployments (\ s a -> s{_ddrsDeployments = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeDeploymentsResponse where
-    parseJSON = withObject "DescribeDeploymentsResponse" $ \o -> DescribeDeploymentsResponse
-        <$> o .:? "Deployments" .!= mempty
+-- | The response status code.
+ddrsStatus :: Lens' DescribeDeploymentsResponse Int
+ddrsStatus = lens _ddrsStatus (\ s a -> s{_ddrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs b/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeEcsClusters.hs
@@ -0,0 +1,194 @@
+{-# 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.OpsWorks.DescribeEcsClusters
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes Amazon ECS clusters that are registered with a stack. If you
+-- specify only a stack ID, you can use the 'MaxResults' and 'NextToken'
+-- parameters to paginate the response. However, AWS OpsWorks currently
+-- supports only one cluster per layer, so the result set has a maximum of
+-- one element.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack or an attached
+-- policy that explicitly grants permission. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeEcsClusters.html AWS API Reference> for DescribeEcsClusters.
+module Network.AWS.OpsWorks.DescribeEcsClusters
+    (
+    -- * Creating a Request
+      describeEcsClusters
+    , DescribeEcsClusters
+    -- * Request Lenses
+    , decNextToken
+    , decStackId
+    , decMaxResults
+    , decEcsClusterARNs
+
+    -- * Destructuring the Response
+    , describeEcsClustersResponse
+    , DescribeEcsClustersResponse
+    -- * Response Lenses
+    , decrsNextToken
+    , decrsEcsClusters
+    , decrsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeEcsClusters' smart constructor.
+data DescribeEcsClusters = DescribeEcsClusters'
+    { _decNextToken      :: !(Maybe Text)
+    , _decStackId        :: !(Maybe Text)
+    , _decMaxResults     :: !(Maybe Int)
+    , _decEcsClusterARNs :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEcsClusters' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'decNextToken'
+--
+-- * 'decStackId'
+--
+-- * 'decMaxResults'
+--
+-- * 'decEcsClusterARNs'
+describeEcsClusters
+    :: DescribeEcsClusters
+describeEcsClusters =
+    DescribeEcsClusters'
+    { _decNextToken = Nothing
+    , _decStackId = Nothing
+    , _decMaxResults = Nothing
+    , _decEcsClusterARNs = Nothing
+    }
+
+-- | If the previous paginated request did not return all of the remaining
+-- results, the response object\'s'NextToken' parameter value is set to a
+-- token. To retrieve the next set of results, call 'DescribeEcsClusters'
+-- again and assign that token to the request object\'s 'NextToken'
+-- parameter. If there are no remaining results, the previous response
+-- object\'s 'NextToken' parameter is set to 'null'.
+decNextToken :: Lens' DescribeEcsClusters (Maybe Text)
+decNextToken = lens _decNextToken (\ s a -> s{_decNextToken = a});
+
+-- | A stack ID. 'DescribeEcsClusters' returns a description of the cluster
+-- that is registered with the stack.
+decStackId :: Lens' DescribeEcsClusters (Maybe Text)
+decStackId = lens _decStackId (\ s a -> s{_decStackId = a});
+
+-- | To receive a paginated response, use this parameter to specify the
+-- maximum number of results to be returned with a single call. If the
+-- number of available results exceeds this maximum, the response includes
+-- a 'NextToken' value that you can assign to the 'NextToken' request
+-- parameter to get the next set of results.
+decMaxResults :: Lens' DescribeEcsClusters (Maybe Int)
+decMaxResults = lens _decMaxResults (\ s a -> s{_decMaxResults = a});
+
+-- | A list of ARNs, one for each cluster to be described.
+decEcsClusterARNs :: Lens' DescribeEcsClusters [Text]
+decEcsClusterARNs = lens _decEcsClusterARNs (\ s a -> s{_decEcsClusterARNs = a}) . _Default . _Coerce;
+
+instance AWSRequest DescribeEcsClusters where
+        type Sv DescribeEcsClusters = OpsWorks
+        type Rs DescribeEcsClusters =
+             DescribeEcsClustersResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeEcsClustersResponse' <$>
+                   (x .?> "NextToken") <*>
+                     (x .?> "EcsClusters" .!@ mempty)
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeEcsClusters where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeEcsClusters" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeEcsClusters where
+        toJSON DescribeEcsClusters'{..}
+          = object
+              ["NextToken" .= _decNextToken,
+               "StackId" .= _decStackId,
+               "MaxResults" .= _decMaxResults,
+               "EcsClusterArns" .= _decEcsClusterARNs]
+
+instance ToPath DescribeEcsClusters where
+        toPath = const "/"
+
+instance ToQuery DescribeEcsClusters where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeEcsClusters' request.
+--
+-- /See:/ 'describeEcsClustersResponse' smart constructor.
+data DescribeEcsClustersResponse = DescribeEcsClustersResponse'
+    { _decrsNextToken   :: !(Maybe Text)
+    , _decrsEcsClusters :: !(Maybe [EcsCluster])
+    , _decrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeEcsClustersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'decrsNextToken'
+--
+-- * 'decrsEcsClusters'
+--
+-- * 'decrsStatus'
+describeEcsClustersResponse
+    :: Int -- ^ 'decrsStatus'
+    -> DescribeEcsClustersResponse
+describeEcsClustersResponse pStatus_ =
+    DescribeEcsClustersResponse'
+    { _decrsNextToken = Nothing
+    , _decrsEcsClusters = Nothing
+    , _decrsStatus = pStatus_
+    }
+
+-- | If a paginated request does not return all of the remaining results,
+-- this parameter is set to a token that you can assign to the request
+-- object\'s 'NextToken' parameter to retrieve the next set of results. If
+-- the previous paginated request returned all of the remaining results,
+-- this parameter is set to 'null'.
+decrsNextToken :: Lens' DescribeEcsClustersResponse (Maybe Text)
+decrsNextToken = lens _decrsNextToken (\ s a -> s{_decrsNextToken = a});
+
+-- | A list of 'EcsCluster' objects containing the cluster descriptions.
+decrsEcsClusters :: Lens' DescribeEcsClustersResponse [EcsCluster]
+decrsEcsClusters = lens _decrsEcsClusters (\ s a -> s{_decrsEcsClusters = a}) . _Default . _Coerce;
+
+-- | The response status code.
+decrsStatus :: Lens' DescribeEcsClustersResponse Int
+decrsStatus = lens _decrsStatus (\ s a -> s{_decrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs b/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeElasticIPs.hs
@@ -0,0 +1,166 @@
+{-# 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.OpsWorks.DescribeElasticIPs
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP addresses>.
+--
+-- You must specify at least one of the parameters.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeElasticIPs.html AWS API Reference> for DescribeElasticIPs.
+module Network.AWS.OpsWorks.DescribeElasticIPs
+    (
+    -- * Creating a Request
+      describeElasticIPs
+    , DescribeElasticIPs
+    -- * Request Lenses
+    , deiInstanceId
+    , deiIPs
+    , deiStackId
+
+    -- * Destructuring the Response
+    , describeElasticIPsResponse
+    , DescribeElasticIPsResponse
+    -- * Response Lenses
+    , deirsElasticIPs
+    , deirsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeElasticIPs' smart constructor.
+data DescribeElasticIPs = DescribeElasticIPs'
+    { _deiInstanceId :: !(Maybe Text)
+    , _deiIPs        :: !(Maybe [Text])
+    , _deiStackId    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeElasticIPs' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'deiInstanceId'
+--
+-- * 'deiIPs'
+--
+-- * 'deiStackId'
+describeElasticIPs
+    :: DescribeElasticIPs
+describeElasticIPs =
+    DescribeElasticIPs'
+    { _deiInstanceId = Nothing
+    , _deiIPs = Nothing
+    , _deiStackId = Nothing
+    }
+
+-- | The instance ID. If you include this parameter, 'DescribeElasticIps'
+-- returns a description of the Elastic IP addresses associated with the
+-- specified instance.
+deiInstanceId :: Lens' DescribeElasticIPs (Maybe Text)
+deiInstanceId = lens _deiInstanceId (\ s a -> s{_deiInstanceId = a});
+
+-- | An array of Elastic IP addresses to be described. If you include this
+-- parameter, 'DescribeElasticIps' returns a description of the specified
+-- Elastic IP addresses. Otherwise, it returns a description of every
+-- Elastic IP address.
+deiIPs :: Lens' DescribeElasticIPs [Text]
+deiIPs = lens _deiIPs (\ s a -> s{_deiIPs = a}) . _Default . _Coerce;
+
+-- | A stack ID. If you include this parameter, 'DescribeElasticIps' returns
+-- a description of the Elastic IP addresses that are registered with the
+-- specified stack.
+deiStackId :: Lens' DescribeElasticIPs (Maybe Text)
+deiStackId = lens _deiStackId (\ s a -> s{_deiStackId = a});
+
+instance AWSRequest DescribeElasticIPs where
+        type Sv DescribeElasticIPs = OpsWorks
+        type Rs DescribeElasticIPs =
+             DescribeElasticIPsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeElasticIPsResponse' <$>
+                   (x .?> "ElasticIps" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DescribeElasticIPs where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeElasticIps" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeElasticIPs where
+        toJSON DescribeElasticIPs'{..}
+          = object
+              ["InstanceId" .= _deiInstanceId, "Ips" .= _deiIPs,
+               "StackId" .= _deiStackId]
+
+instance ToPath DescribeElasticIPs where
+        toPath = const "/"
+
+instance ToQuery DescribeElasticIPs where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeElasticIps' request.
+--
+-- /See:/ 'describeElasticIPsResponse' smart constructor.
+data DescribeElasticIPsResponse = DescribeElasticIPsResponse'
+    { _deirsElasticIPs :: !(Maybe [ElasticIP])
+    , _deirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeElasticIPsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'deirsElasticIPs'
+--
+-- * 'deirsStatus'
+describeElasticIPsResponse
+    :: Int -- ^ 'deirsStatus'
+    -> DescribeElasticIPsResponse
+describeElasticIPsResponse pStatus_ =
+    DescribeElasticIPsResponse'
+    { _deirsElasticIPs = Nothing
+    , _deirsStatus = pStatus_
+    }
+
+-- | An 'ElasticIps' object that describes the specified Elastic IP
+-- addresses.
+deirsElasticIPs :: Lens' DescribeElasticIPsResponse [ElasticIP]
+deirsElasticIPs = lens _deirsElasticIPs (\ s a -> s{_deirsElasticIPs = a}) . _Default . _Coerce;
+
+-- | The response status code.
+deirsStatus :: Lens' DescribeElasticIPsResponse Int
+deirsStatus = lens _deirsStatus (\ s a -> s{_deirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeElasticIps.hs b/gen/Network/AWS/OpsWorks/DescribeElasticIps.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DescribeElasticIps.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DescribeElasticIps
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP addresses>.
---
--- You must specify at least one of the parameters.
---
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeElasticIps.html>
-module Network.AWS.OpsWorks.DescribeElasticIps
-    (
-    -- * Request
-      DescribeElasticIps
-    -- ** Request constructor
-    , describeElasticIps
-    -- ** Request lenses
-    , deiInstanceId
-    , deiIps
-    , deiStackId
-
-    -- * Response
-    , DescribeElasticIpsResponse
-    -- ** Response constructor
-    , describeElasticIpsResponse
-    -- ** Response lenses
-    , deirElasticIps
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data DescribeElasticIps = DescribeElasticIps
-    { _deiInstanceId :: Maybe Text
-    , _deiIps        :: List "Ips" Text
-    , _deiStackId    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeElasticIps' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'deiInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'deiIps' @::@ ['Text']
---
--- * 'deiStackId' @::@ 'Maybe' 'Text'
---
-describeElasticIps :: DescribeElasticIps
-describeElasticIps = DescribeElasticIps
-    { _deiInstanceId = Nothing
-    , _deiStackId    = Nothing
-    , _deiIps        = mempty
-    }
-
--- | The instance ID. If you include this parameter, 'DescribeElasticIps' returns a
--- description of the Elastic IP addresses associated with the specified
--- instance.
-deiInstanceId :: Lens' DescribeElasticIps (Maybe Text)
-deiInstanceId = lens _deiInstanceId (\s a -> s { _deiInstanceId = a })
-
--- | An array of Elastic IP addresses to be described. If you include this
--- parameter, 'DescribeElasticIps' returns a description of the specified Elastic
--- IP addresses. Otherwise, it returns a description of every Elastic IP address.
-deiIps :: Lens' DescribeElasticIps [Text]
-deiIps = lens _deiIps (\s a -> s { _deiIps = a }) . _List
-
--- | A stack ID. If you include this parameter, 'DescribeElasticIps' returns a
--- description of the Elastic IP addresses that are registered with the
--- specified stack.
-deiStackId :: Lens' DescribeElasticIps (Maybe Text)
-deiStackId = lens _deiStackId (\s a -> s { _deiStackId = a })
-
-newtype DescribeElasticIpsResponse = DescribeElasticIpsResponse
-    { _deirElasticIps :: List "ElasticIps" ElasticIp
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeElasticIpsResponse where
-    type Item DescribeElasticIpsResponse = ElasticIp
-
-    fromList = DescribeElasticIpsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _deirElasticIps
-
--- | 'DescribeElasticIpsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'deirElasticIps' @::@ ['ElasticIp']
---
-describeElasticIpsResponse :: DescribeElasticIpsResponse
-describeElasticIpsResponse = DescribeElasticIpsResponse
-    { _deirElasticIps = mempty
-    }
-
--- | An 'ElasticIps' object that describes the specified Elastic IP addresses.
-deirElasticIps :: Lens' DescribeElasticIpsResponse [ElasticIp]
-deirElasticIps = lens _deirElasticIps (\s a -> s { _deirElasticIps = a }) . _List
-
-instance ToPath DescribeElasticIps where
-    toPath = const "/"
-
-instance ToQuery DescribeElasticIps where
-    toQuery = const mempty
-
-instance ToHeaders DescribeElasticIps
-
-instance ToJSON DescribeElasticIps where
-    toJSON DescribeElasticIps{..} = object
-        [ "InstanceId" .= _deiInstanceId
-        , "StackId"    .= _deiStackId
-        , "Ips"        .= _deiIps
-        ]
-
-instance AWSRequest DescribeElasticIps where
-    type Sv DescribeElasticIps = OpsWorks
-    type Rs DescribeElasticIps = DescribeElasticIpsResponse
-
-    request  = post "DescribeElasticIps"
-    response = jsonResponse
-
-instance FromJSON DescribeElasticIpsResponse where
-    parseJSON = withObject "DescribeElasticIpsResponse" $ \o -> DescribeElasticIpsResponse
-        <$> o .:? "ElasticIps" .!= mempty
diff --git a/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs b/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
--- a/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeElasticLoadBalancers.hs
@@ -1,138 +1,152 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeElasticLoadBalancers
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes a stack's Elastic Load Balancing instances.
+-- Describes a stack\'s Elastic Load Balancing instances.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeElasticLoadBalancers.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeElasticLoadBalancers.html AWS API Reference> for DescribeElasticLoadBalancers.
 module Network.AWS.OpsWorks.DescribeElasticLoadBalancers
     (
-    -- * Request
-      DescribeElasticLoadBalancers
-    -- ** Request constructor
-    , describeElasticLoadBalancers
-    -- ** Request lenses
+    -- * Creating a Request
+      describeElasticLoadBalancers
+    , DescribeElasticLoadBalancers
+    -- * Request Lenses
     , delbLayerIds
     , delbStackId
 
-    -- * Response
-    , DescribeElasticLoadBalancersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeElasticLoadBalancersResponse
-    -- ** Response lenses
-    , delbrElasticLoadBalancers
+    , DescribeElasticLoadBalancersResponse
+    -- * Response Lenses
+    , delbrsElasticLoadBalancers
+    , delbrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeElasticLoadBalancers = DescribeElasticLoadBalancers
-    { _delbLayerIds :: List "LayerIds" Text
-    , _delbStackId  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeElasticLoadBalancers' smart constructor.
+data DescribeElasticLoadBalancers = DescribeElasticLoadBalancers'
+    { _delbLayerIds :: !(Maybe [Text])
+    , _delbStackId  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeElasticLoadBalancers' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeElasticLoadBalancers' with the minimum fields required to make a request.
 --
--- * 'delbLayerIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'delbStackId' @::@ 'Maybe' 'Text'
+-- * 'delbLayerIds'
 --
-describeElasticLoadBalancers :: DescribeElasticLoadBalancers
-describeElasticLoadBalancers = DescribeElasticLoadBalancers
-    { _delbStackId  = Nothing
-    , _delbLayerIds = mempty
+-- * 'delbStackId'
+describeElasticLoadBalancers
+    :: DescribeElasticLoadBalancers
+describeElasticLoadBalancers =
+    DescribeElasticLoadBalancers'
+    { _delbLayerIds = Nothing
+    , _delbStackId = Nothing
     }
 
 -- | A list of layer IDs. The action describes the Elastic Load Balancing
 -- instances for the specified layers.
 delbLayerIds :: Lens' DescribeElasticLoadBalancers [Text]
-delbLayerIds = lens _delbLayerIds (\s a -> s { _delbLayerIds = a }) . _List
+delbLayerIds = lens _delbLayerIds (\ s a -> s{_delbLayerIds = a}) . _Default . _Coerce;
 
--- | A stack ID. The action describes the stack's Elastic Load Balancing instances.
+-- | A stack ID. The action describes the stack\'s Elastic Load Balancing
+-- instances.
 delbStackId :: Lens' DescribeElasticLoadBalancers (Maybe Text)
-delbStackId = lens _delbStackId (\s a -> s { _delbStackId = a })
-
-newtype DescribeElasticLoadBalancersResponse = DescribeElasticLoadBalancersResponse
-    { _delbrElasticLoadBalancers :: List "ElasticLoadBalancers" ElasticLoadBalancer
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeElasticLoadBalancersResponse where
-    type Item DescribeElasticLoadBalancersResponse = ElasticLoadBalancer
+delbStackId = lens _delbStackId (\ s a -> s{_delbStackId = a});
 
-    fromList = DescribeElasticLoadBalancersResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _delbrElasticLoadBalancers
+instance AWSRequest DescribeElasticLoadBalancers
+         where
+        type Sv DescribeElasticLoadBalancers = OpsWorks
+        type Rs DescribeElasticLoadBalancers =
+             DescribeElasticLoadBalancersResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeElasticLoadBalancersResponse' <$>
+                   (x .?> "ElasticLoadBalancers" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeElasticLoadBalancersResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'delbrElasticLoadBalancers' @::@ ['ElasticLoadBalancer']
---
-describeElasticLoadBalancersResponse :: DescribeElasticLoadBalancersResponse
-describeElasticLoadBalancersResponse = DescribeElasticLoadBalancersResponse
-    { _delbrElasticLoadBalancers = mempty
-    }
+instance ToHeaders DescribeElasticLoadBalancers where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeElasticLoadBalancers" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list of 'ElasticLoadBalancer' objects that describe the specified Elastic
--- Load Balancing instances.
-delbrElasticLoadBalancers :: Lens' DescribeElasticLoadBalancersResponse [ElasticLoadBalancer]
-delbrElasticLoadBalancers =
-    lens _delbrElasticLoadBalancers
-        (\s a -> s { _delbrElasticLoadBalancers = a })
-            . _List
+instance ToJSON DescribeElasticLoadBalancers where
+        toJSON DescribeElasticLoadBalancers'{..}
+          = object
+              ["LayerIds" .= _delbLayerIds,
+               "StackId" .= _delbStackId]
 
 instance ToPath DescribeElasticLoadBalancers where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeElasticLoadBalancers where
-    toQuery = const mempty
-
-instance ToHeaders DescribeElasticLoadBalancers
+        toQuery = const mempty
 
-instance ToJSON DescribeElasticLoadBalancers where
-    toJSON DescribeElasticLoadBalancers{..} = object
-        [ "StackId"  .= _delbStackId
-        , "LayerIds" .= _delbLayerIds
-        ]
+-- | Contains the response to a 'DescribeElasticLoadBalancers' request.
+--
+-- /See:/ 'describeElasticLoadBalancersResponse' smart constructor.
+data DescribeElasticLoadBalancersResponse = DescribeElasticLoadBalancersResponse'
+    { _delbrsElasticLoadBalancers :: !(Maybe [ElasticLoadBalancer])
+    , _delbrsStatus               :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeElasticLoadBalancers where
-    type Sv DescribeElasticLoadBalancers = OpsWorks
-    type Rs DescribeElasticLoadBalancers = DescribeElasticLoadBalancersResponse
+-- | Creates a value of 'DescribeElasticLoadBalancersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delbrsElasticLoadBalancers'
+--
+-- * 'delbrsStatus'
+describeElasticLoadBalancersResponse
+    :: Int -- ^ 'delbrsStatus'
+    -> DescribeElasticLoadBalancersResponse
+describeElasticLoadBalancersResponse pStatus_ =
+    DescribeElasticLoadBalancersResponse'
+    { _delbrsElasticLoadBalancers = Nothing
+    , _delbrsStatus = pStatus_
+    }
 
-    request  = post "DescribeElasticLoadBalancers"
-    response = jsonResponse
+-- | A list of 'ElasticLoadBalancer' objects that describe the specified
+-- Elastic Load Balancing instances.
+delbrsElasticLoadBalancers :: Lens' DescribeElasticLoadBalancersResponse [ElasticLoadBalancer]
+delbrsElasticLoadBalancers = lens _delbrsElasticLoadBalancers (\ s a -> s{_delbrsElasticLoadBalancers = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeElasticLoadBalancersResponse where
-    parseJSON = withObject "DescribeElasticLoadBalancersResponse" $ \o -> DescribeElasticLoadBalancersResponse
-        <$> o .:? "ElasticLoadBalancers" .!= mempty
+-- | The response status code.
+delbrsStatus :: Lens' DescribeElasticLoadBalancersResponse Int
+delbrsStatus = lens _delbrsStatus (\ s a -> s{_delbrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeInstances.hs b/gen/Network/AWS/OpsWorks/DescribeInstances.hs
--- a/gen/Network/AWS/OpsWorks/DescribeInstances.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeInstances.hs
@@ -1,146 +1,160 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeInstances
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of a set of instances.
+-- Requests a description of a set of instances.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeInstances.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeInstances.html AWS API Reference> for DescribeInstances.
 module Network.AWS.OpsWorks.DescribeInstances
     (
-    -- * Request
-      DescribeInstances
-    -- ** Request constructor
-    , describeInstances
-    -- ** Request lenses
+    -- * Creating a Request
+      describeInstances
+    , DescribeInstances
+    -- * Request Lenses
     , diInstanceIds
-    , diLayerId
     , diStackId
+    , diLayerId
 
-    -- * Response
-    , DescribeInstancesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeInstancesResponse
-    -- ** Response lenses
-    , dirInstances
+    , DescribeInstancesResponse
+    -- * Response Lenses
+    , dirsInstances
+    , dirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeInstances = DescribeInstances
-    { _diInstanceIds :: List "InstanceIds" Text
-    , _diLayerId     :: Maybe Text
-    , _diStackId     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeInstances' smart constructor.
+data DescribeInstances = DescribeInstances'
+    { _diInstanceIds :: !(Maybe [Text])
+    , _diStackId     :: !(Maybe Text)
+    , _diLayerId     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeInstances' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeInstances' with the minimum fields required to make a request.
 --
--- * 'diInstanceIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'diLayerId' @::@ 'Maybe' 'Text'
+-- * 'diInstanceIds'
 --
--- * 'diStackId' @::@ 'Maybe' 'Text'
+-- * 'diStackId'
 --
-describeInstances :: DescribeInstances
-describeInstances = DescribeInstances
-    { _diStackId     = Nothing
-    , _diLayerId     = Nothing
-    , _diInstanceIds = mempty
+-- * 'diLayerId'
+describeInstances
+    :: DescribeInstances
+describeInstances =
+    DescribeInstances'
+    { _diInstanceIds = Nothing
+    , _diStackId = Nothing
+    , _diLayerId = Nothing
     }
 
--- | An array of instance IDs to be described. If you use this parameter, 'DescribeInstances' returns a description of the specified instances. Otherwise, it returns a
--- description of every instance.
+-- | An array of instance IDs to be described. If you use this parameter,
+-- 'DescribeInstances' returns a description of the specified instances.
+-- Otherwise, it returns a description of every instance.
 diInstanceIds :: Lens' DescribeInstances [Text]
-diInstanceIds = lens _diInstanceIds (\s a -> s { _diInstanceIds = a }) . _List
-
--- | A layer ID. If you use this parameter, 'DescribeInstances' returns descriptions
--- of the instances associated with the specified layer.
-diLayerId :: Lens' DescribeInstances (Maybe Text)
-diLayerId = lens _diLayerId (\s a -> s { _diLayerId = a })
+diInstanceIds = lens _diInstanceIds (\ s a -> s{_diInstanceIds = a}) . _Default . _Coerce;
 
--- | A stack ID. If you use this parameter, 'DescribeInstances' returns descriptions
--- of the instances associated with the specified stack.
+-- | A stack ID. If you use this parameter, 'DescribeInstances' returns
+-- descriptions of the instances associated with the specified stack.
 diStackId :: Lens' DescribeInstances (Maybe Text)
-diStackId = lens _diStackId (\s a -> s { _diStackId = a })
-
-newtype DescribeInstancesResponse = DescribeInstancesResponse
-    { _dirInstances :: List "Instances" Instance
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+diStackId = lens _diStackId (\ s a -> s{_diStackId = a});
 
-instance GHC.Exts.IsList DescribeInstancesResponse where
-    type Item DescribeInstancesResponse = Instance
+-- | A layer ID. If you use this parameter, 'DescribeInstances' returns
+-- descriptions of the instances associated with the specified layer.
+diLayerId :: Lens' DescribeInstances (Maybe Text)
+diLayerId = lens _diLayerId (\ s a -> s{_diLayerId = a});
 
-    fromList = DescribeInstancesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dirInstances
+instance AWSRequest DescribeInstances where
+        type Sv DescribeInstances = OpsWorks
+        type Rs DescribeInstances = DescribeInstancesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeInstancesResponse' <$>
+                   (x .?> "Instances" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeInstancesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dirInstances' @::@ ['Instance']
---
-describeInstancesResponse :: DescribeInstancesResponse
-describeInstancesResponse = DescribeInstancesResponse
-    { _dirInstances = mempty
-    }
+instance ToHeaders DescribeInstances where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeInstances" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'Instance' objects that describe the instances.
-dirInstances :: Lens' DescribeInstancesResponse [Instance]
-dirInstances = lens _dirInstances (\s a -> s { _dirInstances = a }) . _List
+instance ToJSON DescribeInstances where
+        toJSON DescribeInstances'{..}
+          = object
+              ["InstanceIds" .= _diInstanceIds,
+               "StackId" .= _diStackId, "LayerId" .= _diLayerId]
 
 instance ToPath DescribeInstances where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeInstances where
-    toQuery = const mempty
-
-instance ToHeaders DescribeInstances
+        toQuery = const mempty
 
-instance ToJSON DescribeInstances where
-    toJSON DescribeInstances{..} = object
-        [ "StackId"     .= _diStackId
-        , "LayerId"     .= _diLayerId
-        , "InstanceIds" .= _diInstanceIds
-        ]
+-- | Contains the response to a 'DescribeInstances' request.
+--
+-- /See:/ 'describeInstancesResponse' smart constructor.
+data DescribeInstancesResponse = DescribeInstancesResponse'
+    { _dirsInstances :: !(Maybe [Instance])
+    , _dirsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeInstances where
-    type Sv DescribeInstances = OpsWorks
-    type Rs DescribeInstances = DescribeInstancesResponse
+-- | Creates a value of 'DescribeInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dirsInstances'
+--
+-- * 'dirsStatus'
+describeInstancesResponse
+    :: Int -- ^ 'dirsStatus'
+    -> DescribeInstancesResponse
+describeInstancesResponse pStatus_ =
+    DescribeInstancesResponse'
+    { _dirsInstances = Nothing
+    , _dirsStatus = pStatus_
+    }
 
-    request  = post "DescribeInstances"
-    response = jsonResponse
+-- | An array of 'Instance' objects that describe the instances.
+dirsInstances :: Lens' DescribeInstancesResponse [Instance]
+dirsInstances = lens _dirsInstances (\ s a -> s{_dirsInstances = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeInstancesResponse where
-    parseJSON = withObject "DescribeInstancesResponse" $ \o -> DescribeInstancesResponse
-        <$> o .:? "Instances" .!= mempty
+-- | The response status code.
+dirsStatus :: Lens' DescribeInstancesResponse Int
+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeLayers.hs b/gen/Network/AWS/OpsWorks/DescribeLayers.hs
--- a/gen/Network/AWS/OpsWorks/DescribeLayers.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeLayers.hs
@@ -1,135 +1,146 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeLayers
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of one or more layers in a specified stack.
+-- Requests a description of one or more layers in a specified stack.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeLayers.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeLayers.html AWS API Reference> for DescribeLayers.
 module Network.AWS.OpsWorks.DescribeLayers
     (
-    -- * Request
-      DescribeLayers
-    -- ** Request constructor
-    , describeLayers
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLayers
+    , DescribeLayers
+    -- * Request Lenses
     , dlLayerIds
     , dlStackId
 
-    -- * Response
-    , DescribeLayersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLayersResponse
-    -- ** Response lenses
-    , dlrLayers
+    , DescribeLayersResponse
+    -- * Response Lenses
+    , dlrsLayers
+    , dlrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeLayers = DescribeLayers
-    { _dlLayerIds :: List "LayerIds" Text
-    , _dlStackId  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeLayers' smart constructor.
+data DescribeLayers = DescribeLayers'
+    { _dlLayerIds :: !(Maybe [Text])
+    , _dlStackId  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLayers' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLayers' with the minimum fields required to make a request.
 --
--- * 'dlLayerIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dlStackId' @::@ 'Maybe' 'Text'
+-- * 'dlLayerIds'
 --
-describeLayers :: DescribeLayers
-describeLayers = DescribeLayers
-    { _dlStackId  = Nothing
-    , _dlLayerIds = mempty
+-- * 'dlStackId'
+describeLayers
+    :: DescribeLayers
+describeLayers =
+    DescribeLayers'
+    { _dlLayerIds = Nothing
+    , _dlStackId = Nothing
     }
 
--- | An array of layer IDs that specify the layers to be described. If you omit
--- this parameter, 'DescribeLayers' returns a description of every layer in the
--- specified stack.
+-- | An array of layer IDs that specify the layers to be described. If you
+-- omit this parameter, 'DescribeLayers' returns a description of every
+-- layer in the specified stack.
 dlLayerIds :: Lens' DescribeLayers [Text]
-dlLayerIds = lens _dlLayerIds (\s a -> s { _dlLayerIds = a }) . _List
+dlLayerIds = lens _dlLayerIds (\ s a -> s{_dlLayerIds = a}) . _Default . _Coerce;
 
 -- | The stack ID.
 dlStackId :: Lens' DescribeLayers (Maybe Text)
-dlStackId = lens _dlStackId (\s a -> s { _dlStackId = a })
-
-newtype DescribeLayersResponse = DescribeLayersResponse
-    { _dlrLayers :: List "Layers" Layer
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeLayersResponse where
-    type Item DescribeLayersResponse = Layer
+dlStackId = lens _dlStackId (\ s a -> s{_dlStackId = a});
 
-    fromList = DescribeLayersResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlrLayers
+instance AWSRequest DescribeLayers where
+        type Sv DescribeLayers = OpsWorks
+        type Rs DescribeLayers = DescribeLayersResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeLayersResponse' <$>
+                   (x .?> "Layers" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | 'DescribeLayersResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlrLayers' @::@ ['Layer']
---
-describeLayersResponse :: DescribeLayersResponse
-describeLayersResponse = DescribeLayersResponse
-    { _dlrLayers = mempty
-    }
+instance ToHeaders DescribeLayers where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeLayers" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'Layer' objects that describe the layers.
-dlrLayers :: Lens' DescribeLayersResponse [Layer]
-dlrLayers = lens _dlrLayers (\s a -> s { _dlrLayers = a }) . _List
+instance ToJSON DescribeLayers where
+        toJSON DescribeLayers'{..}
+          = object
+              ["LayerIds" .= _dlLayerIds, "StackId" .= _dlStackId]
 
 instance ToPath DescribeLayers where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLayers where
-    toQuery = const mempty
-
-instance ToHeaders DescribeLayers
+        toQuery = const mempty
 
-instance ToJSON DescribeLayers where
-    toJSON DescribeLayers{..} = object
-        [ "StackId"  .= _dlStackId
-        , "LayerIds" .= _dlLayerIds
-        ]
+-- | Contains the response to a 'DescribeLayers' request.
+--
+-- /See:/ 'describeLayersResponse' smart constructor.
+data DescribeLayersResponse = DescribeLayersResponse'
+    { _dlrsLayers :: !(Maybe [Layer])
+    , _dlrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLayers where
-    type Sv DescribeLayers = OpsWorks
-    type Rs DescribeLayers = DescribeLayersResponse
+-- | Creates a value of 'DescribeLayersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlrsLayers'
+--
+-- * 'dlrsStatus'
+describeLayersResponse
+    :: Int -- ^ 'dlrsStatus'
+    -> DescribeLayersResponse
+describeLayersResponse pStatus_ =
+    DescribeLayersResponse'
+    { _dlrsLayers = Nothing
+    , _dlrsStatus = pStatus_
+    }
 
-    request  = post "DescribeLayers"
-    response = jsonResponse
+-- | An array of 'Layer' objects that describe the layers.
+dlrsLayers :: Lens' DescribeLayersResponse [Layer]
+dlrsLayers = lens _dlrsLayers (\ s a -> s{_dlrsLayers = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeLayersResponse where
-    parseJSON = withObject "DescribeLayersResponse" $ \o -> DescribeLayersResponse
-        <$> o .:? "Layers" .!= mempty
+-- | The response status code.
+dlrsStatus :: Lens' DescribeLayersResponse Int
+dlrsStatus = lens _dlrsStatus (\ s a -> s{_dlrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeLoadBasedAutoScaling.hs
@@ -1,133 +1,140 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeLoadBasedAutoScaling
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes load-based auto scaling configurations for specified layers.
+-- Describes load-based auto scaling configurations for specified layers.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeLoadBasedAutoScaling.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeLoadBasedAutoScaling.html AWS API Reference> for DescribeLoadBasedAutoScaling.
 module Network.AWS.OpsWorks.DescribeLoadBasedAutoScaling
     (
-    -- * Request
-      DescribeLoadBasedAutoScaling
-    -- ** Request constructor
-    , describeLoadBasedAutoScaling
-    -- ** Request lenses
+    -- * Creating a Request
+      describeLoadBasedAutoScaling
+    , DescribeLoadBasedAutoScaling
+    -- * Request Lenses
     , dlbasLayerIds
 
-    -- * Response
-    , DescribeLoadBasedAutoScalingResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeLoadBasedAutoScalingResponse
-    -- ** Response lenses
-    , dlbasrLoadBasedAutoScalingConfigurations
+    , DescribeLoadBasedAutoScalingResponse
+    -- * Response Lenses
+    , dlbasrsLoadBasedAutoScalingConfigurations
+    , dlbasrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DescribeLoadBasedAutoScaling = DescribeLoadBasedAutoScaling
-    { _dlbasLayerIds :: List "LayerIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeLoadBasedAutoScaling where
-    type Item DescribeLoadBasedAutoScaling = Text
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeLoadBasedAutoScaling . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbasLayerIds
+-- | /See:/ 'describeLoadBasedAutoScaling' smart constructor.
+newtype DescribeLoadBasedAutoScaling = DescribeLoadBasedAutoScaling'
+    { _dlbasLayerIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeLoadBasedAutoScaling' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeLoadBasedAutoScaling' with the minimum fields required to make a request.
 --
--- * 'dlbasLayerIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeLoadBasedAutoScaling :: DescribeLoadBasedAutoScaling
-describeLoadBasedAutoScaling = DescribeLoadBasedAutoScaling
+-- * 'dlbasLayerIds'
+describeLoadBasedAutoScaling
+    :: DescribeLoadBasedAutoScaling
+describeLoadBasedAutoScaling =
+    DescribeLoadBasedAutoScaling'
     { _dlbasLayerIds = mempty
     }
 
 -- | An array of layer IDs.
 dlbasLayerIds :: Lens' DescribeLoadBasedAutoScaling [Text]
-dlbasLayerIds = lens _dlbasLayerIds (\s a -> s { _dlbasLayerIds = a }) . _List
-
-newtype DescribeLoadBasedAutoScalingResponse = DescribeLoadBasedAutoScalingResponse
-    { _dlbasrLoadBasedAutoScalingConfigurations :: List "LoadBasedAutoScalingConfigurations" LoadBasedAutoScalingConfiguration
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeLoadBasedAutoScalingResponse where
-    type Item DescribeLoadBasedAutoScalingResponse = LoadBasedAutoScalingConfiguration
+dlbasLayerIds = lens _dlbasLayerIds (\ s a -> s{_dlbasLayerIds = a}) . _Coerce;
 
-    fromList = DescribeLoadBasedAutoScalingResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dlbasrLoadBasedAutoScalingConfigurations
+instance AWSRequest DescribeLoadBasedAutoScaling
+         where
+        type Sv DescribeLoadBasedAutoScaling = OpsWorks
+        type Rs DescribeLoadBasedAutoScaling =
+             DescribeLoadBasedAutoScalingResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeLoadBasedAutoScalingResponse' <$>
+                   (x .?> "LoadBasedAutoScalingConfigurations" .!@
+                      mempty)
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeLoadBasedAutoScalingResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dlbasrLoadBasedAutoScalingConfigurations' @::@ ['LoadBasedAutoScalingConfiguration']
---
-describeLoadBasedAutoScalingResponse :: DescribeLoadBasedAutoScalingResponse
-describeLoadBasedAutoScalingResponse = DescribeLoadBasedAutoScalingResponse
-    { _dlbasrLoadBasedAutoScalingConfigurations = mempty
-    }
+instance ToHeaders DescribeLoadBasedAutoScaling where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeLoadBasedAutoScaling" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'LoadBasedAutoScalingConfiguration' objects that describe each
--- layer's configuration.
-dlbasrLoadBasedAutoScalingConfigurations :: Lens' DescribeLoadBasedAutoScalingResponse [LoadBasedAutoScalingConfiguration]
-dlbasrLoadBasedAutoScalingConfigurations =
-    lens _dlbasrLoadBasedAutoScalingConfigurations
-        (\s a -> s { _dlbasrLoadBasedAutoScalingConfigurations = a })
-            . _List
+instance ToJSON DescribeLoadBasedAutoScaling where
+        toJSON DescribeLoadBasedAutoScaling'{..}
+          = object ["LayerIds" .= _dlbasLayerIds]
 
 instance ToPath DescribeLoadBasedAutoScaling where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeLoadBasedAutoScaling where
-    toQuery = const mempty
-
-instance ToHeaders DescribeLoadBasedAutoScaling
+        toQuery = const mempty
 
-instance ToJSON DescribeLoadBasedAutoScaling where
-    toJSON DescribeLoadBasedAutoScaling{..} = object
-        [ "LayerIds" .= _dlbasLayerIds
-        ]
+-- | Contains the response to a 'DescribeLoadBasedAutoScaling' request.
+--
+-- /See:/ 'describeLoadBasedAutoScalingResponse' smart constructor.
+data DescribeLoadBasedAutoScalingResponse = DescribeLoadBasedAutoScalingResponse'
+    { _dlbasrsLoadBasedAutoScalingConfigurations :: !(Maybe [LoadBasedAutoScalingConfiguration])
+    , _dlbasrsStatus                             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeLoadBasedAutoScaling where
-    type Sv DescribeLoadBasedAutoScaling = OpsWorks
-    type Rs DescribeLoadBasedAutoScaling = DescribeLoadBasedAutoScalingResponse
+-- | Creates a value of 'DescribeLoadBasedAutoScalingResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlbasrsLoadBasedAutoScalingConfigurations'
+--
+-- * 'dlbasrsStatus'
+describeLoadBasedAutoScalingResponse
+    :: Int -- ^ 'dlbasrsStatus'
+    -> DescribeLoadBasedAutoScalingResponse
+describeLoadBasedAutoScalingResponse pStatus_ =
+    DescribeLoadBasedAutoScalingResponse'
+    { _dlbasrsLoadBasedAutoScalingConfigurations = Nothing
+    , _dlbasrsStatus = pStatus_
+    }
 
-    request  = post "DescribeLoadBasedAutoScaling"
-    response = jsonResponse
+-- | An array of 'LoadBasedAutoScalingConfiguration' objects that describe
+-- each layer\'s configuration.
+dlbasrsLoadBasedAutoScalingConfigurations :: Lens' DescribeLoadBasedAutoScalingResponse [LoadBasedAutoScalingConfiguration]
+dlbasrsLoadBasedAutoScalingConfigurations = lens _dlbasrsLoadBasedAutoScalingConfigurations (\ s a -> s{_dlbasrsLoadBasedAutoScalingConfigurations = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeLoadBasedAutoScalingResponse where
-    parseJSON = withObject "DescribeLoadBasedAutoScalingResponse" $ \o -> DescribeLoadBasedAutoScalingResponse
-        <$> o .:? "LoadBasedAutoScalingConfigurations" .!= mempty
+-- | The response status code.
+dlbasrsStatus :: Lens' DescribeLoadBasedAutoScalingResponse Int
+dlbasrsStatus = lens _dlbasrsStatus (\ s a -> s{_dlbasrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeMyUserProfile.hs
@@ -1,99 +1,120 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeMyUserProfile
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes a user's SSH information.
+-- Describes a user\'s SSH information.
 --
--- Required Permissions: To use this action, an IAM user must have
+-- __Required Permissions__: To use this action, an IAM user must have
 -- self-management enabled or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- permissions. For more information on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeMyUserProfile.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeMyUserProfile.html AWS API Reference> for DescribeMyUserProfile.
 module Network.AWS.OpsWorks.DescribeMyUserProfile
     (
-    -- * Request
-      DescribeMyUserProfile
-    -- ** Request constructor
-    , describeMyUserProfile
+    -- * Creating a Request
+      describeMyUserProfile
+    , DescribeMyUserProfile
 
-    -- * Response
-    , DescribeMyUserProfileResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeMyUserProfileResponse
-    -- ** Response lenses
-    , dmuprUserProfile
+    , DescribeMyUserProfileResponse
+    -- * Response Lenses
+    , dmuprsUserProfile
+    , dmuprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeMyUserProfile = DescribeMyUserProfile
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | /See:/ 'describeMyUserProfile' smart constructor.
+data DescribeMyUserProfile =
+    DescribeMyUserProfile'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeMyUserProfile' constructor.
-describeMyUserProfile :: DescribeMyUserProfile
-describeMyUserProfile = DescribeMyUserProfile
+-- | Creates a value of 'DescribeMyUserProfile' with the minimum fields required to make a request.
+--
+describeMyUserProfile
+    :: DescribeMyUserProfile
+describeMyUserProfile = DescribeMyUserProfile'
 
-newtype DescribeMyUserProfileResponse = DescribeMyUserProfileResponse
-    { _dmuprUserProfile :: Maybe SelfUserProfile
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeMyUserProfile where
+        type Sv DescribeMyUserProfile = OpsWorks
+        type Rs DescribeMyUserProfile =
+             DescribeMyUserProfileResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeMyUserProfileResponse' <$>
+                   (x .?> "UserProfile") <*> (pure (fromEnum s)))
 
--- | 'DescribeMyUserProfileResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dmuprUserProfile' @::@ 'Maybe' 'SelfUserProfile'
---
-describeMyUserProfileResponse :: DescribeMyUserProfileResponse
-describeMyUserProfileResponse = DescribeMyUserProfileResponse
-    { _dmuprUserProfile = Nothing
-    }
+instance ToHeaders DescribeMyUserProfile where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeMyUserProfile" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A 'UserProfile' object that describes the user's SSH information.
-dmuprUserProfile :: Lens' DescribeMyUserProfileResponse (Maybe SelfUserProfile)
-dmuprUserProfile = lens _dmuprUserProfile (\s a -> s { _dmuprUserProfile = a })
+instance ToJSON DescribeMyUserProfile where
+        toJSON = const (Object mempty)
 
 instance ToPath DescribeMyUserProfile where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeMyUserProfile where
-    toQuery = const mempty
-
-instance ToHeaders DescribeMyUserProfile
+        toQuery = const mempty
 
-instance ToJSON DescribeMyUserProfile where
-    toJSON = const (toJSON Empty)
+-- | Contains the response to a 'DescribeMyUserProfile' request.
+--
+-- /See:/ 'describeMyUserProfileResponse' smart constructor.
+data DescribeMyUserProfileResponse = DescribeMyUserProfileResponse'
+    { _dmuprsUserProfile :: !(Maybe SelfUserProfile)
+    , _dmuprsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeMyUserProfile where
-    type Sv DescribeMyUserProfile = OpsWorks
-    type Rs DescribeMyUserProfile = DescribeMyUserProfileResponse
+-- | Creates a value of 'DescribeMyUserProfileResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dmuprsUserProfile'
+--
+-- * 'dmuprsStatus'
+describeMyUserProfileResponse
+    :: Int -- ^ 'dmuprsStatus'
+    -> DescribeMyUserProfileResponse
+describeMyUserProfileResponse pStatus_ =
+    DescribeMyUserProfileResponse'
+    { _dmuprsUserProfile = Nothing
+    , _dmuprsStatus = pStatus_
+    }
 
-    request  = post "DescribeMyUserProfile"
-    response = jsonResponse
+-- | A 'UserProfile' object that describes the user\'s SSH information.
+dmuprsUserProfile :: Lens' DescribeMyUserProfileResponse (Maybe SelfUserProfile)
+dmuprsUserProfile = lens _dmuprsUserProfile (\ s a -> s{_dmuprsUserProfile = a});
 
-instance FromJSON DescribeMyUserProfileResponse where
-    parseJSON = withObject "DescribeMyUserProfileResponse" $ \o -> DescribeMyUserProfileResponse
-        <$> o .:? "UserProfile"
+-- | The response status code.
+dmuprsStatus :: Lens' DescribeMyUserProfileResponse Int
+dmuprsStatus = lens _dmuprsStatus (\ s a -> s{_dmuprsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribePermissions.hs b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
--- a/gen/Network/AWS/OpsWorks/DescribePermissions.hs
+++ b/gen/Network/AWS/OpsWorks/DescribePermissions.hs
@@ -1,138 +1,156 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribePermissions
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes the permissions for a specified stack.
+-- Describes the permissions for a specified stack.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribePermissions.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribePermissions.html AWS API Reference> for DescribePermissions.
 module Network.AWS.OpsWorks.DescribePermissions
     (
-    -- * Request
-      DescribePermissions
-    -- ** Request constructor
-    , describePermissions
-    -- ** Request lenses
-    , dpIamUserArn
+    -- * Creating a Request
+      describePermissions
+    , DescribePermissions
+    -- * Request Lenses
+    , dpIAMUserARN
     , dpStackId
 
-    -- * Response
-    , DescribePermissionsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describePermissionsResponse
-    -- ** Response lenses
-    , dprPermissions
+    , DescribePermissionsResponse
+    -- * Response Lenses
+    , dprsPermissions
+    , dprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribePermissions = DescribePermissions
-    { _dpIamUserArn :: Maybe Text
-    , _dpStackId    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describePermissions' smart constructor.
+data DescribePermissions = DescribePermissions'
+    { _dpIAMUserARN :: !(Maybe Text)
+    , _dpStackId    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribePermissions' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribePermissions' with the minimum fields required to make a request.
 --
--- * 'dpIamUserArn' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dpStackId' @::@ 'Maybe' 'Text'
+-- * 'dpIAMUserARN'
 --
-describePermissions :: DescribePermissions
-describePermissions = DescribePermissions
-    { _dpIamUserArn = Nothing
-    , _dpStackId    = Nothing
+-- * 'dpStackId'
+describePermissions
+    :: DescribePermissions
+describePermissions =
+    DescribePermissions'
+    { _dpIAMUserARN = Nothing
+    , _dpStackId = Nothing
     }
 
--- | The user's IAM ARN. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>
--- .
-dpIamUserArn :: Lens' DescribePermissions (Maybe Text)
-dpIamUserArn = lens _dpIamUserArn (\s a -> s { _dpIamUserArn = a })
+-- | The user\'s IAM ARN. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+dpIAMUserARN :: Lens' DescribePermissions (Maybe Text)
+dpIAMUserARN = lens _dpIAMUserARN (\ s a -> s{_dpIAMUserARN = a});
 
 -- | The stack ID.
 dpStackId :: Lens' DescribePermissions (Maybe Text)
-dpStackId = lens _dpStackId (\s a -> s { _dpStackId = a })
+dpStackId = lens _dpStackId (\ s a -> s{_dpStackId = a});
 
-newtype DescribePermissionsResponse = DescribePermissionsResponse
-    { _dprPermissions :: List "Permissions" Permission
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribePermissions where
+        type Sv DescribePermissions = OpsWorks
+        type Rs DescribePermissions =
+             DescribePermissionsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribePermissionsResponse' <$>
+                   (x .?> "Permissions" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribePermissionsResponse where
-    type Item DescribePermissionsResponse = Permission
+instance ToHeaders DescribePermissions where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribePermissions" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribePermissionsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dprPermissions
+instance ToJSON DescribePermissions where
+        toJSON DescribePermissions'{..}
+          = object
+              ["IamUserArn" .= _dpIAMUserARN,
+               "StackId" .= _dpStackId]
 
--- | 'DescribePermissionsResponse' constructor.
+instance ToPath DescribePermissions where
+        toPath = const "/"
+
+instance ToQuery DescribePermissions where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribePermissions' request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describePermissionsResponse' smart constructor.
+data DescribePermissionsResponse = DescribePermissionsResponse'
+    { _dprsPermissions :: !(Maybe [Permission])
+    , _dprsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribePermissionsResponse' with the minimum fields required to make a request.
 --
--- * 'dprPermissions' @::@ ['Permission']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describePermissionsResponse :: DescribePermissionsResponse
-describePermissionsResponse = DescribePermissionsResponse
-    { _dprPermissions = mempty
+-- * 'dprsPermissions'
+--
+-- * 'dprsStatus'
+describePermissionsResponse
+    :: Int -- ^ 'dprsStatus'
+    -> DescribePermissionsResponse
+describePermissionsResponse pStatus_ =
+    DescribePermissionsResponse'
+    { _dprsPermissions = Nothing
+    , _dprsStatus = pStatus_
     }
 
 -- | An array of 'Permission' objects that describe the stack permissions.
 --
--- If the request object contains only a stack ID, the array contains a 'Permission' object with permissions for each of the stack IAM ARNs. If the request
--- object contains only an IAM ARN, the array contains a 'Permission' object with
--- permissions for each of the user's stack IDs. If the request contains a stack
--- ID and an IAM ARN, the array contains a single 'Permission' object with
--- permissions for the specified stack and IAM ARN.
-dprPermissions :: Lens' DescribePermissionsResponse [Permission]
-dprPermissions = lens _dprPermissions (\s a -> s { _dprPermissions = a }) . _List
-
-instance ToPath DescribePermissions where
-    toPath = const "/"
-
-instance ToQuery DescribePermissions where
-    toQuery = const mempty
-
-instance ToHeaders DescribePermissions
-
-instance ToJSON DescribePermissions where
-    toJSON DescribePermissions{..} = object
-        [ "IamUserArn" .= _dpIamUserArn
-        , "StackId"    .= _dpStackId
-        ]
-
-instance AWSRequest DescribePermissions where
-    type Sv DescribePermissions = OpsWorks
-    type Rs DescribePermissions = DescribePermissionsResponse
-
-    request  = post "DescribePermissions"
-    response = jsonResponse
+-- -   If the request object contains only a stack ID, the array contains a
+--     'Permission' object with permissions for each of the stack IAM ARNs.
+-- -   If the request object contains only an IAM ARN, the array contains a
+--     'Permission' object with permissions for each of the user\'s stack
+--     IDs.
+-- -   If the request contains a stack ID and an IAM ARN, the array
+--     contains a single 'Permission' object with permissions for the
+--     specified stack and IAM ARN.
+dprsPermissions :: Lens' DescribePermissionsResponse [Permission]
+dprsPermissions = lens _dprsPermissions (\ s a -> s{_dprsPermissions = a}) . _Default . _Coerce;
 
-instance FromJSON DescribePermissionsResponse where
-    parseJSON = withObject "DescribePermissionsResponse" $ \o -> DescribePermissionsResponse
-        <$> o .:? "Permissions" .!= mempty
+-- | The response status code.
+dprsStatus :: Lens' DescribePermissionsResponse Int
+dprsStatus = lens _dprsStatus (\ s a -> s{_dprsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs b/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeRAIdArrays.hs
@@ -0,0 +1,161 @@
+{-# 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.OpsWorks.DescribeRAIdArrays
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Describe an instance\'s RAID arrays.
+--
+-- You must specify at least one of the parameters.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeRAIdArrays.html AWS API Reference> for DescribeRAIdArrays.
+module Network.AWS.OpsWorks.DescribeRAIdArrays
+    (
+    -- * Creating a Request
+      describeRAIdArrays
+    , DescribeRAIdArrays
+    -- * Request Lenses
+    , draiaInstanceId
+    , draiaRAIdArrayIds
+    , draiaStackId
+
+    -- * Destructuring the Response
+    , describeRAIdArraysResponse
+    , DescribeRAIdArraysResponse
+    -- * Response Lenses
+    , draiarsRAIdArrays
+    , draiarsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeRAIdArrays' smart constructor.
+data DescribeRAIdArrays = DescribeRAIdArrays'
+    { _draiaInstanceId   :: !(Maybe Text)
+    , _draiaRAIdArrayIds :: !(Maybe [Text])
+    , _draiaStackId      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRAIdArrays' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'draiaInstanceId'
+--
+-- * 'draiaRAIdArrayIds'
+--
+-- * 'draiaStackId'
+describeRAIdArrays
+    :: DescribeRAIdArrays
+describeRAIdArrays =
+    DescribeRAIdArrays'
+    { _draiaInstanceId = Nothing
+    , _draiaRAIdArrayIds = Nothing
+    , _draiaStackId = Nothing
+    }
+
+-- | The instance ID. If you use this parameter, 'DescribeRaidArrays' returns
+-- descriptions of the RAID arrays associated with the specified instance.
+draiaInstanceId :: Lens' DescribeRAIdArrays (Maybe Text)
+draiaInstanceId = lens _draiaInstanceId (\ s a -> s{_draiaInstanceId = a});
+
+-- | An array of RAID array IDs. If you use this parameter,
+-- 'DescribeRaidArrays' returns descriptions of the specified arrays.
+-- Otherwise, it returns a description of every array.
+draiaRAIdArrayIds :: Lens' DescribeRAIdArrays [Text]
+draiaRAIdArrayIds = lens _draiaRAIdArrayIds (\ s a -> s{_draiaRAIdArrayIds = a}) . _Default . _Coerce;
+
+-- | The stack ID.
+draiaStackId :: Lens' DescribeRAIdArrays (Maybe Text)
+draiaStackId = lens _draiaStackId (\ s a -> s{_draiaStackId = a});
+
+instance AWSRequest DescribeRAIdArrays where
+        type Sv DescribeRAIdArrays = OpsWorks
+        type Rs DescribeRAIdArrays =
+             DescribeRAIdArraysResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeRAIdArraysResponse' <$>
+                   (x .?> "RaidArrays" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DescribeRAIdArrays where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeRaidArrays" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeRAIdArrays where
+        toJSON DescribeRAIdArrays'{..}
+          = object
+              ["InstanceId" .= _draiaInstanceId,
+               "RaidArrayIds" .= _draiaRAIdArrayIds,
+               "StackId" .= _draiaStackId]
+
+instance ToPath DescribeRAIdArrays where
+        toPath = const "/"
+
+instance ToQuery DescribeRAIdArrays where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeRaidArrays' request.
+--
+-- /See:/ 'describeRAIdArraysResponse' smart constructor.
+data DescribeRAIdArraysResponse = DescribeRAIdArraysResponse'
+    { _draiarsRAIdArrays :: !(Maybe [RAIdArray])
+    , _draiarsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRAIdArraysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'draiarsRAIdArrays'
+--
+-- * 'draiarsStatus'
+describeRAIdArraysResponse
+    :: Int -- ^ 'draiarsStatus'
+    -> DescribeRAIdArraysResponse
+describeRAIdArraysResponse pStatus_ =
+    DescribeRAIdArraysResponse'
+    { _draiarsRAIdArrays = Nothing
+    , _draiarsStatus = pStatus_
+    }
+
+-- | A 'RaidArrays' object that describes the specified RAID arrays.
+draiarsRAIdArrays :: Lens' DescribeRAIdArraysResponse [RAIdArray]
+draiarsRAIdArrays = lens _draiarsRAIdArrays (\ s a -> s{_draiarsRAIdArrays = a}) . _Default . _Coerce;
+
+-- | The response status code.
+draiarsStatus :: Lens' DescribeRAIdArraysResponse Int
+draiarsStatus = lens _draiarsStatus (\ s a -> s{_draiarsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs b/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DescribeRDSDBInstances.hs
@@ -0,0 +1,148 @@
+{-# 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.OpsWorks.DescribeRDSDBInstances
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes Amazon RDS instances.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeRDSDBInstances.html AWS API Reference> for DescribeRDSDBInstances.
+module Network.AWS.OpsWorks.DescribeRDSDBInstances
+    (
+    -- * Creating a Request
+      describeRDSDBInstances
+    , DescribeRDSDBInstances
+    -- * Request Lenses
+    , drdiRDSDBInstanceARNs
+    , drdiStackId
+
+    -- * Destructuring the Response
+    , describeRDSDBInstancesResponse
+    , DescribeRDSDBInstancesResponse
+    -- * Response Lenses
+    , drdirsRDSDBInstances
+    , drdirsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'describeRDSDBInstances' smart constructor.
+data DescribeRDSDBInstances = DescribeRDSDBInstances'
+    { _drdiRDSDBInstanceARNs :: !(Maybe [Text])
+    , _drdiStackId           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRDSDBInstances' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drdiRDSDBInstanceARNs'
+--
+-- * 'drdiStackId'
+describeRDSDBInstances
+    :: Text -- ^ 'drdiStackId'
+    -> DescribeRDSDBInstances
+describeRDSDBInstances pStackId_ =
+    DescribeRDSDBInstances'
+    { _drdiRDSDBInstanceARNs = Nothing
+    , _drdiStackId = pStackId_
+    }
+
+-- | An array containing the ARNs of the instances to be described.
+drdiRDSDBInstanceARNs :: Lens' DescribeRDSDBInstances [Text]
+drdiRDSDBInstanceARNs = lens _drdiRDSDBInstanceARNs (\ s a -> s{_drdiRDSDBInstanceARNs = a}) . _Default . _Coerce;
+
+-- | The stack ID that the instances are registered with. The operation
+-- returns descriptions of all registered Amazon RDS instances.
+drdiStackId :: Lens' DescribeRDSDBInstances Text
+drdiStackId = lens _drdiStackId (\ s a -> s{_drdiStackId = a});
+
+instance AWSRequest DescribeRDSDBInstances where
+        type Sv DescribeRDSDBInstances = OpsWorks
+        type Rs DescribeRDSDBInstances =
+             DescribeRDSDBInstancesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeRDSDBInstancesResponse' <$>
+                   (x .?> "RdsDbInstances" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders DescribeRDSDBInstances where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeRdsDbInstances" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeRDSDBInstances where
+        toJSON DescribeRDSDBInstances'{..}
+          = object
+              ["RdsDbInstanceArns" .= _drdiRDSDBInstanceARNs,
+               "StackId" .= _drdiStackId]
+
+instance ToPath DescribeRDSDBInstances where
+        toPath = const "/"
+
+instance ToQuery DescribeRDSDBInstances where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeRdsDbInstances' request.
+--
+-- /See:/ 'describeRDSDBInstancesResponse' smart constructor.
+data DescribeRDSDBInstancesResponse = DescribeRDSDBInstancesResponse'
+    { _drdirsRDSDBInstances :: !(Maybe [RDSDBInstance])
+    , _drdirsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeRDSDBInstancesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drdirsRDSDBInstances'
+--
+-- * 'drdirsStatus'
+describeRDSDBInstancesResponse
+    :: Int -- ^ 'drdirsStatus'
+    -> DescribeRDSDBInstancesResponse
+describeRDSDBInstancesResponse pStatus_ =
+    DescribeRDSDBInstancesResponse'
+    { _drdirsRDSDBInstances = Nothing
+    , _drdirsStatus = pStatus_
+    }
+
+-- | An a array of 'RdsDbInstance' objects that describe the instances.
+drdirsRDSDBInstances :: Lens' DescribeRDSDBInstancesResponse [RDSDBInstance]
+drdirsRDSDBInstances = lens _drdirsRDSDBInstances (\ s a -> s{_drdirsRDSDBInstances = a}) . _Default . _Coerce;
+
+-- | The response status code.
+drdirsStatus :: Lens' DescribeRDSDBInstancesResponse Int
+drdirsStatus = lens _drdirsStatus (\ s a -> s{_drdirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeRaidArrays.hs b/gen/Network/AWS/OpsWorks/DescribeRaidArrays.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DescribeRaidArrays.hs
+++ /dev/null
@@ -1,146 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DescribeRaidArrays
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describe an instance's RAID arrays.
---
--- You must specify at least one of the parameters.
---
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeRaidArrays.html>
-module Network.AWS.OpsWorks.DescribeRaidArrays
-    (
-    -- * Request
-      DescribeRaidArrays
-    -- ** Request constructor
-    , describeRaidArrays
-    -- ** Request lenses
-    , draInstanceId
-    , draRaidArrayIds
-    , draStackId
-
-    -- * Response
-    , DescribeRaidArraysResponse
-    -- ** Response constructor
-    , describeRaidArraysResponse
-    -- ** Response lenses
-    , drarRaidArrays
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data DescribeRaidArrays = DescribeRaidArrays
-    { _draInstanceId   :: Maybe Text
-    , _draRaidArrayIds :: List "RaidArrayIds" Text
-    , _draStackId      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeRaidArrays' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'draInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'draRaidArrayIds' @::@ ['Text']
---
--- * 'draStackId' @::@ 'Maybe' 'Text'
---
-describeRaidArrays :: DescribeRaidArrays
-describeRaidArrays = DescribeRaidArrays
-    { _draInstanceId   = Nothing
-    , _draStackId      = Nothing
-    , _draRaidArrayIds = mempty
-    }
-
--- | The instance ID. If you use this parameter, 'DescribeRaidArrays' returns
--- descriptions of the RAID arrays associated with the specified instance.
-draInstanceId :: Lens' DescribeRaidArrays (Maybe Text)
-draInstanceId = lens _draInstanceId (\s a -> s { _draInstanceId = a })
-
--- | An array of RAID array IDs. If you use this parameter, 'DescribeRaidArrays'
--- returns descriptions of the specified arrays. Otherwise, it returns a
--- description of every array.
-draRaidArrayIds :: Lens' DescribeRaidArrays [Text]
-draRaidArrayIds = lens _draRaidArrayIds (\s a -> s { _draRaidArrayIds = a }) . _List
-
--- | The stack ID.
-draStackId :: Lens' DescribeRaidArrays (Maybe Text)
-draStackId = lens _draStackId (\s a -> s { _draStackId = a })
-
-newtype DescribeRaidArraysResponse = DescribeRaidArraysResponse
-    { _drarRaidArrays :: List "RaidArrays" RaidArray
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeRaidArraysResponse where
-    type Item DescribeRaidArraysResponse = RaidArray
-
-    fromList = DescribeRaidArraysResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _drarRaidArrays
-
--- | 'DescribeRaidArraysResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'drarRaidArrays' @::@ ['RaidArray']
---
-describeRaidArraysResponse :: DescribeRaidArraysResponse
-describeRaidArraysResponse = DescribeRaidArraysResponse
-    { _drarRaidArrays = mempty
-    }
-
--- | A 'RaidArrays' object that describes the specified RAID arrays.
-drarRaidArrays :: Lens' DescribeRaidArraysResponse [RaidArray]
-drarRaidArrays = lens _drarRaidArrays (\s a -> s { _drarRaidArrays = a }) . _List
-
-instance ToPath DescribeRaidArrays where
-    toPath = const "/"
-
-instance ToQuery DescribeRaidArrays where
-    toQuery = const mempty
-
-instance ToHeaders DescribeRaidArrays
-
-instance ToJSON DescribeRaidArrays where
-    toJSON DescribeRaidArrays{..} = object
-        [ "InstanceId"   .= _draInstanceId
-        , "StackId"      .= _draStackId
-        , "RaidArrayIds" .= _draRaidArrayIds
-        ]
-
-instance AWSRequest DescribeRaidArrays where
-    type Sv DescribeRaidArrays = OpsWorks
-    type Rs DescribeRaidArrays = DescribeRaidArraysResponse
-
-    request  = post "DescribeRaidArrays"
-    response = jsonResponse
-
-instance FromJSON DescribeRaidArraysResponse where
-    parseJSON = withObject "DescribeRaidArraysResponse" $ \o -> DescribeRaidArraysResponse
-        <$> o .:? "RaidArrays" .!= mempty
diff --git a/gen/Network/AWS/OpsWorks/DescribeRdsDbInstances.hs b/gen/Network/AWS/OpsWorks/DescribeRdsDbInstances.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DescribeRdsDbInstances.hs
+++ /dev/null
@@ -1,137 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DescribeRdsDbInstances
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes Amazon RDS instances.
---
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeRdsDbInstances.html>
-module Network.AWS.OpsWorks.DescribeRdsDbInstances
-    (
-    -- * Request
-      DescribeRdsDbInstances
-    -- ** Request constructor
-    , describeRdsDbInstances
-    -- ** Request lenses
-    , drdiRdsDbInstanceArns
-    , drdiStackId
-
-    -- * Response
-    , DescribeRdsDbInstancesResponse
-    -- ** Response constructor
-    , describeRdsDbInstancesResponse
-    -- ** Response lenses
-    , drdirRdsDbInstances
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data DescribeRdsDbInstances = DescribeRdsDbInstances
-    { _drdiRdsDbInstanceArns :: List "RdsDbInstanceArns" Text
-    , _drdiStackId           :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeRdsDbInstances' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'drdiRdsDbInstanceArns' @::@ ['Text']
---
--- * 'drdiStackId' @::@ 'Text'
---
-describeRdsDbInstances :: Text -- ^ 'drdiStackId'
-                       -> DescribeRdsDbInstances
-describeRdsDbInstances p1 = DescribeRdsDbInstances
-    { _drdiStackId           = p1
-    , _drdiRdsDbInstanceArns = mempty
-    }
-
--- | An array containing the ARNs of the instances to be described.
-drdiRdsDbInstanceArns :: Lens' DescribeRdsDbInstances [Text]
-drdiRdsDbInstanceArns =
-    lens _drdiRdsDbInstanceArns (\s a -> s { _drdiRdsDbInstanceArns = a })
-        . _List
-
--- | The stack ID that the instances are registered with. The operation returns
--- descriptions of all registered Amazon RDS instances.
-drdiStackId :: Lens' DescribeRdsDbInstances Text
-drdiStackId = lens _drdiStackId (\s a -> s { _drdiStackId = a })
-
-newtype DescribeRdsDbInstancesResponse = DescribeRdsDbInstancesResponse
-    { _drdirRdsDbInstances :: List "RdsDbInstances" RdsDbInstance
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeRdsDbInstancesResponse where
-    type Item DescribeRdsDbInstancesResponse = RdsDbInstance
-
-    fromList = DescribeRdsDbInstancesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _drdirRdsDbInstances
-
--- | 'DescribeRdsDbInstancesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'drdirRdsDbInstances' @::@ ['RdsDbInstance']
---
-describeRdsDbInstancesResponse :: DescribeRdsDbInstancesResponse
-describeRdsDbInstancesResponse = DescribeRdsDbInstancesResponse
-    { _drdirRdsDbInstances = mempty
-    }
-
--- | An a array of 'RdsDbInstance' objects that describe the instances.
-drdirRdsDbInstances :: Lens' DescribeRdsDbInstancesResponse [RdsDbInstance]
-drdirRdsDbInstances =
-    lens _drdirRdsDbInstances (\s a -> s { _drdirRdsDbInstances = a })
-        . _List
-
-instance ToPath DescribeRdsDbInstances where
-    toPath = const "/"
-
-instance ToQuery DescribeRdsDbInstances where
-    toQuery = const mempty
-
-instance ToHeaders DescribeRdsDbInstances
-
-instance ToJSON DescribeRdsDbInstances where
-    toJSON DescribeRdsDbInstances{..} = object
-        [ "StackId"           .= _drdiStackId
-        , "RdsDbInstanceArns" .= _drdiRdsDbInstanceArns
-        ]
-
-instance AWSRequest DescribeRdsDbInstances where
-    type Sv DescribeRdsDbInstances = OpsWorks
-    type Rs DescribeRdsDbInstances = DescribeRdsDbInstancesResponse
-
-    request  = post "DescribeRdsDbInstances"
-    response = jsonResponse
-
-instance FromJSON DescribeRdsDbInstancesResponse where
-    parseJSON = withObject "DescribeRdsDbInstancesResponse" $ \o -> DescribeRdsDbInstancesResponse
-        <$> o .:? "RdsDbInstances" .!= mempty
diff --git a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
--- a/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeServiceErrors.hs
@@ -1,148 +1,162 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeServiceErrors
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes AWS OpsWorks service errors.
+-- Describes AWS OpsWorks service errors.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeServiceErrors.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeServiceErrors.html AWS API Reference> for DescribeServiceErrors.
 module Network.AWS.OpsWorks.DescribeServiceErrors
     (
-    -- * Request
-      DescribeServiceErrors
-    -- ** Request constructor
-    , describeServiceErrors
-    -- ** Request lenses
+    -- * Creating a Request
+      describeServiceErrors
+    , DescribeServiceErrors
+    -- * Request Lenses
     , dseInstanceId
     , dseServiceErrorIds
     , dseStackId
 
-    -- * Response
-    , DescribeServiceErrorsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeServiceErrorsResponse
-    -- ** Response lenses
-    , dserServiceErrors
+    , DescribeServiceErrorsResponse
+    -- * Response Lenses
+    , dsersServiceErrors
+    , dsersStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeServiceErrors = DescribeServiceErrors
-    { _dseInstanceId      :: Maybe Text
-    , _dseServiceErrorIds :: List "ServiceErrorIds" Text
-    , _dseStackId         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeServiceErrors' smart constructor.
+data DescribeServiceErrors = DescribeServiceErrors'
+    { _dseInstanceId      :: !(Maybe Text)
+    , _dseServiceErrorIds :: !(Maybe [Text])
+    , _dseStackId         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeServiceErrors' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeServiceErrors' with the minimum fields required to make a request.
 --
--- * 'dseInstanceId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dseServiceErrorIds' @::@ ['Text']
+-- * 'dseInstanceId'
 --
--- * 'dseStackId' @::@ 'Maybe' 'Text'
+-- * 'dseServiceErrorIds'
 --
-describeServiceErrors :: DescribeServiceErrors
-describeServiceErrors = DescribeServiceErrors
-    { _dseStackId         = Nothing
-    , _dseInstanceId      = Nothing
-    , _dseServiceErrorIds = mempty
+-- * 'dseStackId'
+describeServiceErrors
+    :: DescribeServiceErrors
+describeServiceErrors =
+    DescribeServiceErrors'
+    { _dseInstanceId = Nothing
+    , _dseServiceErrorIds = Nothing
+    , _dseStackId = Nothing
     }
 
--- | The instance ID. If you use this parameter, 'DescribeServiceErrors' returns
--- descriptions of the errors associated with the specified instance.
+-- | The instance ID. If you use this parameter, 'DescribeServiceErrors'
+-- returns descriptions of the errors associated with the specified
+-- instance.
 dseInstanceId :: Lens' DescribeServiceErrors (Maybe Text)
-dseInstanceId = lens _dseInstanceId (\s a -> s { _dseInstanceId = a })
+dseInstanceId = lens _dseInstanceId (\ s a -> s{_dseInstanceId = a});
 
--- | An array of service error IDs. If you use this parameter, 'DescribeServiceErrors' returns descriptions of the specified errors. Otherwise, it returns a
--- description of every error.
+-- | An array of service error IDs. If you use this parameter,
+-- 'DescribeServiceErrors' returns descriptions of the specified errors.
+-- Otherwise, it returns a description of every error.
 dseServiceErrorIds :: Lens' DescribeServiceErrors [Text]
-dseServiceErrorIds =
-    lens _dseServiceErrorIds (\s a -> s { _dseServiceErrorIds = a })
-        . _List
+dseServiceErrorIds = lens _dseServiceErrorIds (\ s a -> s{_dseServiceErrorIds = a}) . _Default . _Coerce;
 
 -- | The stack ID. If you use this parameter, 'DescribeServiceErrors' returns
 -- descriptions of the errors associated with the specified stack.
 dseStackId :: Lens' DescribeServiceErrors (Maybe Text)
-dseStackId = lens _dseStackId (\s a -> s { _dseStackId = a })
-
-newtype DescribeServiceErrorsResponse = DescribeServiceErrorsResponse
-    { _dserServiceErrors :: List "ServiceErrors" ServiceError'
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeServiceErrorsResponse where
-    type Item DescribeServiceErrorsResponse = ServiceError'
+dseStackId = lens _dseStackId (\ s a -> s{_dseStackId = a});
 
-    fromList = DescribeServiceErrorsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dserServiceErrors
+instance AWSRequest DescribeServiceErrors where
+        type Sv DescribeServiceErrors = OpsWorks
+        type Rs DescribeServiceErrors =
+             DescribeServiceErrorsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeServiceErrorsResponse' <$>
+                   (x .?> "ServiceErrors" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeServiceErrorsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dserServiceErrors' @::@ ['ServiceError'']
---
-describeServiceErrorsResponse :: DescribeServiceErrorsResponse
-describeServiceErrorsResponse = DescribeServiceErrorsResponse
-    { _dserServiceErrors = mempty
-    }
+instance ToHeaders DescribeServiceErrors where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeServiceErrors" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'ServiceError' objects that describe the specified service errors.
-dserServiceErrors :: Lens' DescribeServiceErrorsResponse [ServiceError']
-dserServiceErrors =
-    lens _dserServiceErrors (\s a -> s { _dserServiceErrors = a })
-        . _List
+instance ToJSON DescribeServiceErrors where
+        toJSON DescribeServiceErrors'{..}
+          = object
+              ["InstanceId" .= _dseInstanceId,
+               "ServiceErrorIds" .= _dseServiceErrorIds,
+               "StackId" .= _dseStackId]
 
 instance ToPath DescribeServiceErrors where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeServiceErrors where
-    toQuery = const mempty
-
-instance ToHeaders DescribeServiceErrors
+        toQuery = const mempty
 
-instance ToJSON DescribeServiceErrors where
-    toJSON DescribeServiceErrors{..} = object
-        [ "StackId"         .= _dseStackId
-        , "InstanceId"      .= _dseInstanceId
-        , "ServiceErrorIds" .= _dseServiceErrorIds
-        ]
+-- | Contains the response to a 'DescribeServiceErrors' request.
+--
+-- /See:/ 'describeServiceErrorsResponse' smart constructor.
+data DescribeServiceErrorsResponse = DescribeServiceErrorsResponse'
+    { _dsersServiceErrors :: !(Maybe [ServiceError'])
+    , _dsersStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeServiceErrors where
-    type Sv DescribeServiceErrors = OpsWorks
-    type Rs DescribeServiceErrors = DescribeServiceErrorsResponse
+-- | Creates a value of 'DescribeServiceErrorsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsersServiceErrors'
+--
+-- * 'dsersStatus'
+describeServiceErrorsResponse
+    :: Int -- ^ 'dsersStatus'
+    -> DescribeServiceErrorsResponse
+describeServiceErrorsResponse pStatus_ =
+    DescribeServiceErrorsResponse'
+    { _dsersServiceErrors = Nothing
+    , _dsersStatus = pStatus_
+    }
 
-    request  = post "DescribeServiceErrors"
-    response = jsonResponse
+-- | An array of 'ServiceError' objects that describe the specified service
+-- errors.
+dsersServiceErrors :: Lens' DescribeServiceErrorsResponse [ServiceError']
+dsersServiceErrors = lens _dsersServiceErrors (\ s a -> s{_dsersServiceErrors = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeServiceErrorsResponse where
-    parseJSON = withObject "DescribeServiceErrorsResponse" $ \o -> DescribeServiceErrorsResponse
-        <$> o .:? "ServiceErrors" .!= mempty
+-- | The response status code.
+dsersStatus :: Lens' DescribeServiceErrorsResponse Int
+dsersStatus = lens _dsersStatus (\ s a -> s{_dsersStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackProvisioningParameters.hs
@@ -1,127 +1,153 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeStackProvisioningParameters
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of a stack's provisioning parameters.
+-- Requests a description of a stack\'s provisioning parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStackProvisioningParameters.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStackProvisioningParameters.html AWS API Reference> for DescribeStackProvisioningParameters.
 module Network.AWS.OpsWorks.DescribeStackProvisioningParameters
     (
-    -- * Request
-      DescribeStackProvisioningParameters
-    -- ** Request constructor
-    , describeStackProvisioningParameters
-    -- ** Request lenses
+    -- * Creating a Request
+      describeStackProvisioningParameters
+    , DescribeStackProvisioningParameters
+    -- * Request Lenses
     , dsppStackId
 
-    -- * Response
-    , DescribeStackProvisioningParametersResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeStackProvisioningParametersResponse
-    -- ** Response lenses
-    , dspprAgentInstallerUrl
-    , dspprParameters
+    , DescribeStackProvisioningParametersResponse
+    -- * Response Lenses
+    , dspprsAgentInstallerURL
+    , dspprsParameters
+    , dspprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeStackProvisioningParameters = DescribeStackProvisioningParameters
+-- | /See:/ 'describeStackProvisioningParameters' smart constructor.
+newtype DescribeStackProvisioningParameters = DescribeStackProvisioningParameters'
     { _dsppStackId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeStackProvisioningParameters' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeStackProvisioningParameters' with the minimum fields required to make a request.
 --
--- * 'dsppStackId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeStackProvisioningParameters :: Text -- ^ 'dsppStackId'
-                                    -> DescribeStackProvisioningParameters
-describeStackProvisioningParameters p1 = DescribeStackProvisioningParameters
-    { _dsppStackId = p1
+-- * 'dsppStackId'
+describeStackProvisioningParameters
+    :: Text -- ^ 'dsppStackId'
+    -> DescribeStackProvisioningParameters
+describeStackProvisioningParameters pStackId_ =
+    DescribeStackProvisioningParameters'
+    { _dsppStackId = pStackId_
     }
 
 -- | The stack ID
 dsppStackId :: Lens' DescribeStackProvisioningParameters Text
-dsppStackId = lens _dsppStackId (\s a -> s { _dsppStackId = a })
+dsppStackId = lens _dsppStackId (\ s a -> s{_dsppStackId = a});
 
-data DescribeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse
-    { _dspprAgentInstallerUrl :: Maybe Text
-    , _dspprParameters        :: Map Text Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest
+         DescribeStackProvisioningParameters where
+        type Sv DescribeStackProvisioningParameters =
+             OpsWorks
+        type Rs DescribeStackProvisioningParameters =
+             DescribeStackProvisioningParametersResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeStackProvisioningParametersResponse' <$>
+                   (x .?> "AgentInstallerUrl") <*>
+                     (x .?> "Parameters" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeStackProvisioningParametersResponse' constructor.
+instance ToHeaders
+         DescribeStackProvisioningParameters where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeStackProvisioningParameters"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeStackProvisioningParameters
+         where
+        toJSON DescribeStackProvisioningParameters'{..}
+          = object ["StackId" .= _dsppStackId]
+
+instance ToPath DescribeStackProvisioningParameters
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeStackProvisioningParameters
+         where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeStackProvisioningParameters'
+-- request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeStackProvisioningParametersResponse' smart constructor.
+data DescribeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse'
+    { _dspprsAgentInstallerURL :: !(Maybe Text)
+    , _dspprsParameters        :: !(Maybe (Map Text Text))
+    , _dspprsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeStackProvisioningParametersResponse' with the minimum fields required to make a request.
 --
--- * 'dspprAgentInstallerUrl' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dspprParameters' @::@ 'HashMap' 'Text' 'Text'
+-- * 'dspprsAgentInstallerURL'
 --
-describeStackProvisioningParametersResponse :: DescribeStackProvisioningParametersResponse
-describeStackProvisioningParametersResponse = DescribeStackProvisioningParametersResponse
-    { _dspprAgentInstallerUrl = Nothing
-    , _dspprParameters        = mempty
+-- * 'dspprsParameters'
+--
+-- * 'dspprsStatus'
+describeStackProvisioningParametersResponse
+    :: Int -- ^ 'dspprsStatus'
+    -> DescribeStackProvisioningParametersResponse
+describeStackProvisioningParametersResponse pStatus_ =
+    DescribeStackProvisioningParametersResponse'
+    { _dspprsAgentInstallerURL = Nothing
+    , _dspprsParameters = Nothing
+    , _dspprsStatus = pStatus_
     }
 
--- | The AWS OpsWorks agent installer's URL.
-dspprAgentInstallerUrl :: Lens' DescribeStackProvisioningParametersResponse (Maybe Text)
-dspprAgentInstallerUrl =
-    lens _dspprAgentInstallerUrl (\s a -> s { _dspprAgentInstallerUrl = a })
+-- | The AWS OpsWorks agent installer\'s URL.
+dspprsAgentInstallerURL :: Lens' DescribeStackProvisioningParametersResponse (Maybe Text)
+dspprsAgentInstallerURL = lens _dspprsAgentInstallerURL (\ s a -> s{_dspprsAgentInstallerURL = a});
 
 -- | An embedded object that contains the provisioning parameters.
-dspprParameters :: Lens' DescribeStackProvisioningParametersResponse (HashMap Text Text)
-dspprParameters = lens _dspprParameters (\s a -> s { _dspprParameters = a }) . _Map
-
-instance ToPath DescribeStackProvisioningParameters where
-    toPath = const "/"
-
-instance ToQuery DescribeStackProvisioningParameters where
-    toQuery = const mempty
-
-instance ToHeaders DescribeStackProvisioningParameters
-
-instance ToJSON DescribeStackProvisioningParameters where
-    toJSON DescribeStackProvisioningParameters{..} = object
-        [ "StackId" .= _dsppStackId
-        ]
-
-instance AWSRequest DescribeStackProvisioningParameters where
-    type Sv DescribeStackProvisioningParameters = OpsWorks
-    type Rs DescribeStackProvisioningParameters = DescribeStackProvisioningParametersResponse
-
-    request  = post "DescribeStackProvisioningParameters"
-    response = jsonResponse
+dspprsParameters :: Lens' DescribeStackProvisioningParametersResponse (HashMap Text Text)
+dspprsParameters = lens _dspprsParameters (\ s a -> s{_dspprsParameters = a}) . _Default . _Map;
 
-instance FromJSON DescribeStackProvisioningParametersResponse where
-    parseJSON = withObject "DescribeStackProvisioningParametersResponse" $ \o -> DescribeStackProvisioningParametersResponse
-        <$> o .:? "AgentInstallerUrl"
-        <*> o .:? "Parameters" .!= mempty
+-- | The response status code.
+dspprsStatus :: Lens' DescribeStackProvisioningParametersResponse Int
+dspprsStatus = lens _dspprsStatus (\ s a -> s{_dspprsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStackSummary.hs
@@ -1,117 +1,136 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeStackSummary
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes the number of layers and apps in a specified stack, and the number
--- of instances in each state, such as 'running_setup' or 'online'.
+-- Describes the number of layers and apps in a specified stack, and the
+-- number of instances in each state, such as 'running_setup' or 'online'.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStackSummary.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStackSummary.html AWS API Reference> for DescribeStackSummary.
 module Network.AWS.OpsWorks.DescribeStackSummary
     (
-    -- * Request
-      DescribeStackSummary
-    -- ** Request constructor
-    , describeStackSummary
-    -- ** Request lenses
+    -- * Creating a Request
+      describeStackSummary
+    , DescribeStackSummary
+    -- * Request Lenses
     , dssStackId
 
-    -- * Response
-    , DescribeStackSummaryResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeStackSummaryResponse
-    -- ** Response lenses
-    , dssrStackSummary
+    , DescribeStackSummaryResponse
+    -- * Response Lenses
+    , dssrsStackSummary
+    , dssrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype DescribeStackSummary = DescribeStackSummary
+-- | /See:/ 'describeStackSummary' smart constructor.
+newtype DescribeStackSummary = DescribeStackSummary'
     { _dssStackId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeStackSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeStackSummary' with the minimum fields required to make a request.
 --
--- * 'dssStackId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeStackSummary :: Text -- ^ 'dssStackId'
-                     -> DescribeStackSummary
-describeStackSummary p1 = DescribeStackSummary
-    { _dssStackId = p1
+-- * 'dssStackId'
+describeStackSummary
+    :: Text -- ^ 'dssStackId'
+    -> DescribeStackSummary
+describeStackSummary pStackId_ =
+    DescribeStackSummary'
+    { _dssStackId = pStackId_
     }
 
 -- | The stack ID.
 dssStackId :: Lens' DescribeStackSummary Text
-dssStackId = lens _dssStackId (\s a -> s { _dssStackId = a })
+dssStackId = lens _dssStackId (\ s a -> s{_dssStackId = a});
 
-newtype DescribeStackSummaryResponse = DescribeStackSummaryResponse
-    { _dssrStackSummary :: Maybe StackSummary
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeStackSummary where
+        type Sv DescribeStackSummary = OpsWorks
+        type Rs DescribeStackSummary =
+             DescribeStackSummaryResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeStackSummaryResponse' <$>
+                   (x .?> "StackSummary") <*> (pure (fromEnum s)))
 
--- | 'DescribeStackSummaryResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dssrStackSummary' @::@ 'Maybe' 'StackSummary'
---
-describeStackSummaryResponse :: DescribeStackSummaryResponse
-describeStackSummaryResponse = DescribeStackSummaryResponse
-    { _dssrStackSummary = Nothing
-    }
+instance ToHeaders DescribeStackSummary where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeStackSummary" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A 'StackSummary' object that contains the results.
-dssrStackSummary :: Lens' DescribeStackSummaryResponse (Maybe StackSummary)
-dssrStackSummary = lens _dssrStackSummary (\s a -> s { _dssrStackSummary = a })
+instance ToJSON DescribeStackSummary where
+        toJSON DescribeStackSummary'{..}
+          = object ["StackId" .= _dssStackId]
 
 instance ToPath DescribeStackSummary where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeStackSummary where
-    toQuery = const mempty
-
-instance ToHeaders DescribeStackSummary
+        toQuery = const mempty
 
-instance ToJSON DescribeStackSummary where
-    toJSON DescribeStackSummary{..} = object
-        [ "StackId" .= _dssStackId
-        ]
+-- | Contains the response to a 'DescribeStackSummary' request.
+--
+-- /See:/ 'describeStackSummaryResponse' smart constructor.
+data DescribeStackSummaryResponse = DescribeStackSummaryResponse'
+    { _dssrsStackSummary :: !(Maybe StackSummary)
+    , _dssrsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeStackSummary where
-    type Sv DescribeStackSummary = OpsWorks
-    type Rs DescribeStackSummary = DescribeStackSummaryResponse
+-- | Creates a value of 'DescribeStackSummaryResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dssrsStackSummary'
+--
+-- * 'dssrsStatus'
+describeStackSummaryResponse
+    :: Int -- ^ 'dssrsStatus'
+    -> DescribeStackSummaryResponse
+describeStackSummaryResponse pStatus_ =
+    DescribeStackSummaryResponse'
+    { _dssrsStackSummary = Nothing
+    , _dssrsStatus = pStatus_
+    }
 
-    request  = post "DescribeStackSummary"
-    response = jsonResponse
+-- | A 'StackSummary' object that contains the results.
+dssrsStackSummary :: Lens' DescribeStackSummaryResponse (Maybe StackSummary)
+dssrsStackSummary = lens _dssrsStackSummary (\ s a -> s{_dssrsStackSummary = a});
 
-instance FromJSON DescribeStackSummaryResponse where
-    parseJSON = withObject "DescribeStackSummaryResponse" $ \o -> DescribeStackSummaryResponse
-        <$> o .:? "StackSummary"
+-- | The response status code.
+dssrsStatus :: Lens' DescribeStackSummaryResponse Int
+dssrsStatus = lens _dssrsStatus (\ s a -> s{_dssrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeStacks.hs b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
--- a/gen/Network/AWS/OpsWorks/DescribeStacks.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeStacks.hs
@@ -1,128 +1,134 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeStacks
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a description of one or more stacks.
+-- Requests a description of one or more stacks.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStacks.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeStacks.html AWS API Reference> for DescribeStacks.
 module Network.AWS.OpsWorks.DescribeStacks
     (
-    -- * Request
-      DescribeStacks
-    -- ** Request constructor
-    , describeStacks
-    -- ** Request lenses
+    -- * Creating a Request
+      describeStacks
+    , DescribeStacks
+    -- * Request Lenses
     , dsStackIds
 
-    -- * Response
-    , DescribeStacksResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeStacksResponse
-    -- ** Response lenses
-    , dsrStacks
+    , DescribeStacksResponse
+    -- * Response Lenses
+    , dsrsStacks
+    , dsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DescribeStacks = DescribeStacks
-    { _dsStackIds :: List "StackIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeStacks where
-    type Item DescribeStacks = Text
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeStacks . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsStackIds
+-- | /See:/ 'describeStacks' smart constructor.
+newtype DescribeStacks = DescribeStacks'
+    { _dsStackIds :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeStacks' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeStacks' with the minimum fields required to make a request.
 --
--- * 'dsStackIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeStacks :: DescribeStacks
-describeStacks = DescribeStacks
-    { _dsStackIds = mempty
+-- * 'dsStackIds'
+describeStacks
+    :: DescribeStacks
+describeStacks =
+    DescribeStacks'
+    { _dsStackIds = Nothing
     }
 
--- | An array of stack IDs that specify the stacks to be described. If you omit
--- this parameter, 'DescribeStacks' returns a description of every stack.
+-- | An array of stack IDs that specify the stacks to be described. If you
+-- omit this parameter, 'DescribeStacks' returns a description of every
+-- stack.
 dsStackIds :: Lens' DescribeStacks [Text]
-dsStackIds = lens _dsStackIds (\s a -> s { _dsStackIds = a }) . _List
-
-newtype DescribeStacksResponse = DescribeStacksResponse
-    { _dsrStacks :: List "Stacks" Stack
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeStacksResponse where
-    type Item DescribeStacksResponse = Stack
+dsStackIds = lens _dsStackIds (\ s a -> s{_dsStackIds = a}) . _Default . _Coerce;
 
-    fromList = DescribeStacksResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsrStacks
+instance AWSRequest DescribeStacks where
+        type Sv DescribeStacks = OpsWorks
+        type Rs DescribeStacks = DescribeStacksResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeStacksResponse' <$>
+                   (x .?> "Stacks" .!@ mempty) <*> (pure (fromEnum s)))
 
--- | 'DescribeStacksResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsrStacks' @::@ ['Stack']
---
-describeStacksResponse :: DescribeStacksResponse
-describeStacksResponse = DescribeStacksResponse
-    { _dsrStacks = mempty
-    }
+instance ToHeaders DescribeStacks where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeStacks" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'Stack' objects that describe the stacks.
-dsrStacks :: Lens' DescribeStacksResponse [Stack]
-dsrStacks = lens _dsrStacks (\s a -> s { _dsrStacks = a }) . _List
+instance ToJSON DescribeStacks where
+        toJSON DescribeStacks'{..}
+          = object ["StackIds" .= _dsStackIds]
 
 instance ToPath DescribeStacks where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeStacks where
-    toQuery = const mempty
-
-instance ToHeaders DescribeStacks
+        toQuery = const mempty
 
-instance ToJSON DescribeStacks where
-    toJSON DescribeStacks{..} = object
-        [ "StackIds" .= _dsStackIds
-        ]
+-- | Contains the response to a 'DescribeStacks' request.
+--
+-- /See:/ 'describeStacksResponse' smart constructor.
+data DescribeStacksResponse = DescribeStacksResponse'
+    { _dsrsStacks :: !(Maybe [Stack])
+    , _dsrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeStacks where
-    type Sv DescribeStacks = OpsWorks
-    type Rs DescribeStacks = DescribeStacksResponse
+-- | Creates a value of 'DescribeStacksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsrsStacks'
+--
+-- * 'dsrsStatus'
+describeStacksResponse
+    :: Int -- ^ 'dsrsStatus'
+    -> DescribeStacksResponse
+describeStacksResponse pStatus_ =
+    DescribeStacksResponse'
+    { _dsrsStacks = Nothing
+    , _dsrsStatus = pStatus_
+    }
 
-    request  = post "DescribeStacks"
-    response = jsonResponse
+-- | An array of 'Stack' objects that describe the stacks.
+dsrsStacks :: Lens' DescribeStacksResponse [Stack]
+dsrsStacks = lens _dsrsStacks (\ s a -> s{_dsrsStacks = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeStacksResponse where
-    parseJSON = withObject "DescribeStacksResponse" $ \o -> DescribeStacksResponse
-        <$> o .:? "Stacks" .!= mempty
+-- | The response status code.
+dsrsStatus :: Lens' DescribeStacksResponse Int
+dsrsStatus = lens _dsrsStatus (\ s a -> s{_dsrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeTimeBasedAutoScaling.hs
@@ -1,133 +1,141 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeTimeBasedAutoScaling
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes time-based auto scaling configurations for specified instances.
+-- Describes time-based auto scaling configurations for specified
+-- instances.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeTimeBasedAutoScaling.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeTimeBasedAutoScaling.html AWS API Reference> for DescribeTimeBasedAutoScaling.
 module Network.AWS.OpsWorks.DescribeTimeBasedAutoScaling
     (
-    -- * Request
-      DescribeTimeBasedAutoScaling
-    -- ** Request constructor
-    , describeTimeBasedAutoScaling
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTimeBasedAutoScaling
+    , DescribeTimeBasedAutoScaling
+    -- * Request Lenses
     , dtbasInstanceIds
 
-    -- * Response
-    , DescribeTimeBasedAutoScalingResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTimeBasedAutoScalingResponse
-    -- ** Response lenses
-    , dtbasrTimeBasedAutoScalingConfigurations
+    , DescribeTimeBasedAutoScalingResponse
+    -- * Response Lenses
+    , dtbasrsTimeBasedAutoScalingConfigurations
+    , dtbasrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DescribeTimeBasedAutoScaling = DescribeTimeBasedAutoScaling
-    { _dtbasInstanceIds :: List "InstanceIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTimeBasedAutoScaling where
-    type Item DescribeTimeBasedAutoScaling = Text
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeTimeBasedAutoScaling . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtbasInstanceIds
+-- | /See:/ 'describeTimeBasedAutoScaling' smart constructor.
+newtype DescribeTimeBasedAutoScaling = DescribeTimeBasedAutoScaling'
+    { _dtbasInstanceIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTimeBasedAutoScaling' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTimeBasedAutoScaling' with the minimum fields required to make a request.
 --
--- * 'dtbasInstanceIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTimeBasedAutoScaling :: DescribeTimeBasedAutoScaling
-describeTimeBasedAutoScaling = DescribeTimeBasedAutoScaling
+-- * 'dtbasInstanceIds'
+describeTimeBasedAutoScaling
+    :: DescribeTimeBasedAutoScaling
+describeTimeBasedAutoScaling =
+    DescribeTimeBasedAutoScaling'
     { _dtbasInstanceIds = mempty
     }
 
 -- | An array of instance IDs.
 dtbasInstanceIds :: Lens' DescribeTimeBasedAutoScaling [Text]
-dtbasInstanceIds = lens _dtbasInstanceIds (\s a -> s { _dtbasInstanceIds = a }) . _List
-
-newtype DescribeTimeBasedAutoScalingResponse = DescribeTimeBasedAutoScalingResponse
-    { _dtbasrTimeBasedAutoScalingConfigurations :: List "TimeBasedAutoScalingConfigurations" TimeBasedAutoScalingConfiguration
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTimeBasedAutoScalingResponse where
-    type Item DescribeTimeBasedAutoScalingResponse = TimeBasedAutoScalingConfiguration
+dtbasInstanceIds = lens _dtbasInstanceIds (\ s a -> s{_dtbasInstanceIds = a}) . _Coerce;
 
-    fromList = DescribeTimeBasedAutoScalingResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtbasrTimeBasedAutoScalingConfigurations
+instance AWSRequest DescribeTimeBasedAutoScaling
+         where
+        type Sv DescribeTimeBasedAutoScaling = OpsWorks
+        type Rs DescribeTimeBasedAutoScaling =
+             DescribeTimeBasedAutoScalingResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTimeBasedAutoScalingResponse' <$>
+                   (x .?> "TimeBasedAutoScalingConfigurations" .!@
+                      mempty)
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeTimeBasedAutoScalingResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtbasrTimeBasedAutoScalingConfigurations' @::@ ['TimeBasedAutoScalingConfiguration']
---
-describeTimeBasedAutoScalingResponse :: DescribeTimeBasedAutoScalingResponse
-describeTimeBasedAutoScalingResponse = DescribeTimeBasedAutoScalingResponse
-    { _dtbasrTimeBasedAutoScalingConfigurations = mempty
-    }
+instance ToHeaders DescribeTimeBasedAutoScaling where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeTimeBasedAutoScaling" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of 'TimeBasedAutoScalingConfiguration' objects that describe the
--- configuration for the specified instances.
-dtbasrTimeBasedAutoScalingConfigurations :: Lens' DescribeTimeBasedAutoScalingResponse [TimeBasedAutoScalingConfiguration]
-dtbasrTimeBasedAutoScalingConfigurations =
-    lens _dtbasrTimeBasedAutoScalingConfigurations
-        (\s a -> s { _dtbasrTimeBasedAutoScalingConfigurations = a })
-            . _List
+instance ToJSON DescribeTimeBasedAutoScaling where
+        toJSON DescribeTimeBasedAutoScaling'{..}
+          = object ["InstanceIds" .= _dtbasInstanceIds]
 
 instance ToPath DescribeTimeBasedAutoScaling where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTimeBasedAutoScaling where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTimeBasedAutoScaling
+        toQuery = const mempty
 
-instance ToJSON DescribeTimeBasedAutoScaling where
-    toJSON DescribeTimeBasedAutoScaling{..} = object
-        [ "InstanceIds" .= _dtbasInstanceIds
-        ]
+-- | Contains the response to a 'DescribeTimeBasedAutoScaling' request.
+--
+-- /See:/ 'describeTimeBasedAutoScalingResponse' smart constructor.
+data DescribeTimeBasedAutoScalingResponse = DescribeTimeBasedAutoScalingResponse'
+    { _dtbasrsTimeBasedAutoScalingConfigurations :: !(Maybe [TimeBasedAutoScalingConfiguration])
+    , _dtbasrsStatus                             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTimeBasedAutoScaling where
-    type Sv DescribeTimeBasedAutoScaling = OpsWorks
-    type Rs DescribeTimeBasedAutoScaling = DescribeTimeBasedAutoScalingResponse
+-- | Creates a value of 'DescribeTimeBasedAutoScalingResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtbasrsTimeBasedAutoScalingConfigurations'
+--
+-- * 'dtbasrsStatus'
+describeTimeBasedAutoScalingResponse
+    :: Int -- ^ 'dtbasrsStatus'
+    -> DescribeTimeBasedAutoScalingResponse
+describeTimeBasedAutoScalingResponse pStatus_ =
+    DescribeTimeBasedAutoScalingResponse'
+    { _dtbasrsTimeBasedAutoScalingConfigurations = Nothing
+    , _dtbasrsStatus = pStatus_
+    }
 
-    request  = post "DescribeTimeBasedAutoScaling"
-    response = jsonResponse
+-- | An array of 'TimeBasedAutoScalingConfiguration' objects that describe
+-- the configuration for the specified instances.
+dtbasrsTimeBasedAutoScalingConfigurations :: Lens' DescribeTimeBasedAutoScalingResponse [TimeBasedAutoScalingConfiguration]
+dtbasrsTimeBasedAutoScalingConfigurations = lens _dtbasrsTimeBasedAutoScalingConfigurations (\ s a -> s{_dtbasrsTimeBasedAutoScalingConfigurations = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeTimeBasedAutoScalingResponse where
-    parseJSON = withObject "DescribeTimeBasedAutoScalingResponse" $ \o -> DescribeTimeBasedAutoScalingResponse
-        <$> o .:? "TimeBasedAutoScalingConfigurations" .!= mempty
+-- | The response status code.
+dtbasrsStatus :: Lens' DescribeTimeBasedAutoScalingResponse Int
+dtbasrsStatus = lens _dtbasrsStatus (\ s a -> s{_dtbasrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
--- a/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeUserProfiles.hs
@@ -1,127 +1,134 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeUserProfiles
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describe specified users.
+-- Describe specified users.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeUserProfiles.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeUserProfiles.html AWS API Reference> for DescribeUserProfiles.
 module Network.AWS.OpsWorks.DescribeUserProfiles
     (
-    -- * Request
-      DescribeUserProfiles
-    -- ** Request constructor
-    , describeUserProfiles
-    -- ** Request lenses
-    , dupIamUserArns
+    -- * Creating a Request
+      describeUserProfiles
+    , DescribeUserProfiles
+    -- * Request Lenses
+    , dupIAMUserARNs
 
-    -- * Response
-    , DescribeUserProfilesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeUserProfilesResponse
-    -- ** Response lenses
-    , duprUserProfiles
+    , DescribeUserProfilesResponse
+    -- * Response Lenses
+    , duprsUserProfiles
+    , duprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DescribeUserProfiles = DescribeUserProfiles
-    { _dupIamUserArns :: List "IamUserArns" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeUserProfiles where
-    type Item DescribeUserProfiles = Text
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-    fromList = DescribeUserProfiles . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dupIamUserArns
+-- | /See:/ 'describeUserProfiles' smart constructor.
+newtype DescribeUserProfiles = DescribeUserProfiles'
+    { _dupIAMUserARNs :: Maybe [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeUserProfiles' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeUserProfiles' with the minimum fields required to make a request.
 --
--- * 'dupIamUserArns' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeUserProfiles :: DescribeUserProfiles
-describeUserProfiles = DescribeUserProfiles
-    { _dupIamUserArns = mempty
+-- * 'dupIAMUserARNs'
+describeUserProfiles
+    :: DescribeUserProfiles
+describeUserProfiles =
+    DescribeUserProfiles'
+    { _dupIAMUserARNs = Nothing
     }
 
 -- | An array of IAM user ARNs that identify the users to be described.
-dupIamUserArns :: Lens' DescribeUserProfiles [Text]
-dupIamUserArns = lens _dupIamUserArns (\s a -> s { _dupIamUserArns = a }) . _List
-
-newtype DescribeUserProfilesResponse = DescribeUserProfilesResponse
-    { _duprUserProfiles :: List "UserProfiles" UserProfile
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeUserProfilesResponse where
-    type Item DescribeUserProfilesResponse = UserProfile
+dupIAMUserARNs :: Lens' DescribeUserProfiles [Text]
+dupIAMUserARNs = lens _dupIAMUserARNs (\ s a -> s{_dupIAMUserARNs = a}) . _Default . _Coerce;
 
-    fromList = DescribeUserProfilesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _duprUserProfiles
+instance AWSRequest DescribeUserProfiles where
+        type Sv DescribeUserProfiles = OpsWorks
+        type Rs DescribeUserProfiles =
+             DescribeUserProfilesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeUserProfilesResponse' <$>
+                   (x .?> "UserProfiles" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeUserProfilesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'duprUserProfiles' @::@ ['UserProfile']
---
-describeUserProfilesResponse :: DescribeUserProfilesResponse
-describeUserProfilesResponse = DescribeUserProfilesResponse
-    { _duprUserProfiles = mempty
-    }
+instance ToHeaders DescribeUserProfiles where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeUserProfiles" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A 'Users' object that describes the specified users.
-duprUserProfiles :: Lens' DescribeUserProfilesResponse [UserProfile]
-duprUserProfiles = lens _duprUserProfiles (\s a -> s { _duprUserProfiles = a }) . _List
+instance ToJSON DescribeUserProfiles where
+        toJSON DescribeUserProfiles'{..}
+          = object ["IamUserArns" .= _dupIAMUserARNs]
 
 instance ToPath DescribeUserProfiles where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeUserProfiles where
-    toQuery = const mempty
-
-instance ToHeaders DescribeUserProfiles
+        toQuery = const mempty
 
-instance ToJSON DescribeUserProfiles where
-    toJSON DescribeUserProfiles{..} = object
-        [ "IamUserArns" .= _dupIamUserArns
-        ]
+-- | Contains the response to a 'DescribeUserProfiles' request.
+--
+-- /See:/ 'describeUserProfilesResponse' smart constructor.
+data DescribeUserProfilesResponse = DescribeUserProfilesResponse'
+    { _duprsUserProfiles :: !(Maybe [UserProfile])
+    , _duprsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeUserProfiles where
-    type Sv DescribeUserProfiles = OpsWorks
-    type Rs DescribeUserProfiles = DescribeUserProfilesResponse
+-- | Creates a value of 'DescribeUserProfilesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'duprsUserProfiles'
+--
+-- * 'duprsStatus'
+describeUserProfilesResponse
+    :: Int -- ^ 'duprsStatus'
+    -> DescribeUserProfilesResponse
+describeUserProfilesResponse pStatus_ =
+    DescribeUserProfilesResponse'
+    { _duprsUserProfiles = Nothing
+    , _duprsStatus = pStatus_
+    }
 
-    request  = post "DescribeUserProfiles"
-    response = jsonResponse
+-- | A 'Users' object that describes the specified users.
+duprsUserProfiles :: Lens' DescribeUserProfilesResponse [UserProfile]
+duprsUserProfiles = lens _duprsUserProfiles (\ s a -> s{_duprsUserProfiles = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeUserProfilesResponse where
-    parseJSON = withObject "DescribeUserProfilesResponse" $ \o -> DescribeUserProfilesResponse
-        <$> o .:? "UserProfiles" .!= mempty
+-- | The response status code.
+duprsStatus :: Lens' DescribeUserProfilesResponse Int
+duprsStatus = lens _duprsStatus (\ s a -> s{_duprsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DescribeVolumes.hs b/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
--- a/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
+++ b/gen/Network/AWS/OpsWorks/DescribeVolumes.hs
@@ -1,157 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DescribeVolumes
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Describes an instance's Amazon EBS volumes.
+-- Describes an instance\'s Amazon EBS volumes.
 --
 -- You must specify at least one of the parameters.
 --
--- Required Permissions: To use this action, an IAM user must have a Show,
--- Deploy, or Manage permissions level for the stack, or an attached policy that
--- explicitly grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Show, Deploy, or Manage permissions level for the stack, or an attached
+-- policy that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeVolumes.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DescribeVolumes.html AWS API Reference> for DescribeVolumes.
 module Network.AWS.OpsWorks.DescribeVolumes
     (
-    -- * Request
-      DescribeVolumes
-    -- ** Request constructor
-    , describeVolumes
-    -- ** Request lenses
+    -- * Creating a Request
+      describeVolumes
+    , DescribeVolumes
+    -- * Request Lenses
     , dvInstanceId
-    , dvRaidArrayId
-    , dvStackId
     , dvVolumeIds
+    , dvRAIdArrayId
+    , dvStackId
 
-    -- * Response
-    , DescribeVolumesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeVolumesResponse
-    -- ** Response lenses
-    , dvrVolumes
+    , DescribeVolumesResponse
+    -- * Response Lenses
+    , dvrsVolumes
+    , dvrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DescribeVolumes = DescribeVolumes
-    { _dvInstanceId  :: Maybe Text
-    , _dvRaidArrayId :: Maybe Text
-    , _dvStackId     :: Maybe Text
-    , _dvVolumeIds   :: List "VolumeIds" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeVolumes' smart constructor.
+data DescribeVolumes = DescribeVolumes'
+    { _dvInstanceId  :: !(Maybe Text)
+    , _dvVolumeIds   :: !(Maybe [Text])
+    , _dvRAIdArrayId :: !(Maybe Text)
+    , _dvStackId     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeVolumes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeVolumes' with the minimum fields required to make a request.
 --
--- * 'dvInstanceId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dvRaidArrayId' @::@ 'Maybe' 'Text'
+-- * 'dvInstanceId'
 --
--- * 'dvStackId' @::@ 'Maybe' 'Text'
+-- * 'dvVolumeIds'
 --
--- * 'dvVolumeIds' @::@ ['Text']
+-- * 'dvRAIdArrayId'
 --
-describeVolumes :: DescribeVolumes
-describeVolumes = DescribeVolumes
-    { _dvInstanceId  = Nothing
-    , _dvStackId     = Nothing
-    , _dvRaidArrayId = Nothing
-    , _dvVolumeIds   = mempty
+-- * 'dvStackId'
+describeVolumes
+    :: DescribeVolumes
+describeVolumes =
+    DescribeVolumes'
+    { _dvInstanceId = Nothing
+    , _dvVolumeIds = Nothing
+    , _dvRAIdArrayId = Nothing
+    , _dvStackId = Nothing
     }
 
 -- | The instance ID. If you use this parameter, 'DescribeVolumes' returns
 -- descriptions of the volumes associated with the specified instance.
 dvInstanceId :: Lens' DescribeVolumes (Maybe Text)
-dvInstanceId = lens _dvInstanceId (\s a -> s { _dvInstanceId = a })
+dvInstanceId = lens _dvInstanceId (\ s a -> s{_dvInstanceId = a});
 
+-- | Am array of volume IDs. If you use this parameter, 'DescribeVolumes'
+-- returns descriptions of the specified volumes. Otherwise, it returns a
+-- description of every volume.
+dvVolumeIds :: Lens' DescribeVolumes [Text]
+dvVolumeIds = lens _dvVolumeIds (\ s a -> s{_dvVolumeIds = a}) . _Default . _Coerce;
+
 -- | The RAID array ID. If you use this parameter, 'DescribeVolumes' returns
 -- descriptions of the volumes associated with the specified RAID array.
-dvRaidArrayId :: Lens' DescribeVolumes (Maybe Text)
-dvRaidArrayId = lens _dvRaidArrayId (\s a -> s { _dvRaidArrayId = a })
+dvRAIdArrayId :: Lens' DescribeVolumes (Maybe Text)
+dvRAIdArrayId = lens _dvRAIdArrayId (\ s a -> s{_dvRAIdArrayId = a});
 
--- | A stack ID. The action describes the stack's registered Amazon EBS volumes.
+-- | A stack ID. The action describes the stack\'s registered Amazon EBS
+-- volumes.
 dvStackId :: Lens' DescribeVolumes (Maybe Text)
-dvStackId = lens _dvStackId (\s a -> s { _dvStackId = a })
+dvStackId = lens _dvStackId (\ s a -> s{_dvStackId = a});
 
--- | Am array of volume IDs. If you use this parameter, 'DescribeVolumes' returns
--- descriptions of the specified volumes. Otherwise, it returns a description of
--- every volume.
-dvVolumeIds :: Lens' DescribeVolumes [Text]
-dvVolumeIds = lens _dvVolumeIds (\s a -> s { _dvVolumeIds = a }) . _List
+instance AWSRequest DescribeVolumes where
+        type Sv DescribeVolumes = OpsWorks
+        type Rs DescribeVolumes = DescribeVolumesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeVolumesResponse' <$>
+                   (x .?> "Volumes" .!@ mempty) <*> (pure (fromEnum s)))
 
-newtype DescribeVolumesResponse = DescribeVolumesResponse
-    { _dvrVolumes :: List "Volumes" Volume
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance ToHeaders DescribeVolumes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DescribeVolumes" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance GHC.Exts.IsList DescribeVolumesResponse where
-    type Item DescribeVolumesResponse = Volume
+instance ToJSON DescribeVolumes where
+        toJSON DescribeVolumes'{..}
+          = object
+              ["InstanceId" .= _dvInstanceId,
+               "VolumeIds" .= _dvVolumeIds,
+               "RaidArrayId" .= _dvRAIdArrayId,
+               "StackId" .= _dvStackId]
 
-    fromList = DescribeVolumesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dvrVolumes
+instance ToPath DescribeVolumes where
+        toPath = const "/"
 
--- | 'DescribeVolumesResponse' constructor.
+instance ToQuery DescribeVolumes where
+        toQuery = const mempty
+
+-- | Contains the response to a 'DescribeVolumes' request.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeVolumesResponse' smart constructor.
+data DescribeVolumesResponse = DescribeVolumesResponse'
+    { _dvrsVolumes :: !(Maybe [Volume])
+    , _dvrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeVolumesResponse' with the minimum fields required to make a request.
 --
--- * 'dvrVolumes' @::@ ['Volume']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeVolumesResponse :: DescribeVolumesResponse
-describeVolumesResponse = DescribeVolumesResponse
-    { _dvrVolumes = mempty
+-- * 'dvrsVolumes'
+--
+-- * 'dvrsStatus'
+describeVolumesResponse
+    :: Int -- ^ 'dvrsStatus'
+    -> DescribeVolumesResponse
+describeVolumesResponse pStatus_ =
+    DescribeVolumesResponse'
+    { _dvrsVolumes = Nothing
+    , _dvrsStatus = pStatus_
     }
 
 -- | An array of volume IDs.
-dvrVolumes :: Lens' DescribeVolumesResponse [Volume]
-dvrVolumes = lens _dvrVolumes (\s a -> s { _dvrVolumes = a }) . _List
-
-instance ToPath DescribeVolumes where
-    toPath = const "/"
-
-instance ToQuery DescribeVolumes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeVolumes
-
-instance ToJSON DescribeVolumes where
-    toJSON DescribeVolumes{..} = object
-        [ "InstanceId"  .= _dvInstanceId
-        , "StackId"     .= _dvStackId
-        , "RaidArrayId" .= _dvRaidArrayId
-        , "VolumeIds"   .= _dvVolumeIds
-        ]
-
-instance AWSRequest DescribeVolumes where
-    type Sv DescribeVolumes = OpsWorks
-    type Rs DescribeVolumes = DescribeVolumesResponse
-
-    request  = post "DescribeVolumes"
-    response = jsonResponse
+dvrsVolumes :: Lens' DescribeVolumesResponse [Volume]
+dvrsVolumes = lens _dvrsVolumes (\ s a -> s{_dvrsVolumes = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeVolumesResponse where
-    parseJSON = withObject "DescribeVolumesResponse" $ \o -> DescribeVolumesResponse
-        <$> o .:? "Volumes" .!= mempty
+-- | The response status code.
+dvrsStatus :: Lens' DescribeVolumesResponse Int
+dvrsStatus = lens _dvrsStatus (\ s a -> s{_dvrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
--- a/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
+++ b/gen/Network/AWS/OpsWorks/DetachElasticLoadBalancer.hs
@@ -1,111 +1,122 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.DetachElasticLoadBalancer
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Detaches a specified Elastic Load Balancing instance from its layer.
+-- Detaches a specified Elastic Load Balancing instance from its layer.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DetachElasticLoadBalancer.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DetachElasticLoadBalancer.html AWS API Reference> for DetachElasticLoadBalancer.
 module Network.AWS.OpsWorks.DetachElasticLoadBalancer
     (
-    -- * Request
-      DetachElasticLoadBalancer
-    -- ** Request constructor
-    , detachElasticLoadBalancer
-    -- ** Request lenses
+    -- * Creating a Request
+      detachElasticLoadBalancer
+    , DetachElasticLoadBalancer
+    -- * Request Lenses
     , delbElasticLoadBalancerName
     , delbLayerId
 
-    -- * Response
-    , DetachElasticLoadBalancerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , detachElasticLoadBalancerResponse
+    , DetachElasticLoadBalancerResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data DetachElasticLoadBalancer = DetachElasticLoadBalancer
-    { _delbElasticLoadBalancerName :: Text
-    , _delbLayerId                 :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'detachElasticLoadBalancer' smart constructor.
+data DetachElasticLoadBalancer = DetachElasticLoadBalancer'
+    { _delbElasticLoadBalancerName :: !Text
+    , _delbLayerId                 :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DetachElasticLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DetachElasticLoadBalancer' with the minimum fields required to make a request.
 --
--- * 'delbElasticLoadBalancerName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'delbLayerId' @::@ 'Text'
+-- * 'delbElasticLoadBalancerName'
 --
-detachElasticLoadBalancer :: Text -- ^ 'delbElasticLoadBalancerName'
-                          -> Text -- ^ 'delbLayerId'
-                          -> DetachElasticLoadBalancer
-detachElasticLoadBalancer p1 p2 = DetachElasticLoadBalancer
-    { _delbElasticLoadBalancerName = p1
-    , _delbLayerId                 = p2
+-- * 'delbLayerId'
+detachElasticLoadBalancer
+    :: Text -- ^ 'delbElasticLoadBalancerName'
+    -> Text -- ^ 'delbLayerId'
+    -> DetachElasticLoadBalancer
+detachElasticLoadBalancer pElasticLoadBalancerName_ pLayerId_ =
+    DetachElasticLoadBalancer'
+    { _delbElasticLoadBalancerName = pElasticLoadBalancerName_
+    , _delbLayerId = pLayerId_
     }
 
--- | The Elastic Load Balancing instance's name.
+-- | The Elastic Load Balancing instance\'s name.
 delbElasticLoadBalancerName :: Lens' DetachElasticLoadBalancer Text
-delbElasticLoadBalancerName =
-    lens _delbElasticLoadBalancerName
-        (\s a -> s { _delbElasticLoadBalancerName = a })
+delbElasticLoadBalancerName = lens _delbElasticLoadBalancerName (\ s a -> s{_delbElasticLoadBalancerName = a});
 
--- | The ID of the layer that the Elastic Load Balancing instance is attached to.
+-- | The ID of the layer that the Elastic Load Balancing instance is attached
+-- to.
 delbLayerId :: Lens' DetachElasticLoadBalancer Text
-delbLayerId = lens _delbLayerId (\s a -> s { _delbLayerId = a })
+delbLayerId = lens _delbLayerId (\ s a -> s{_delbLayerId = a});
 
-data DetachElasticLoadBalancerResponse = DetachElasticLoadBalancerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest DetachElasticLoadBalancer where
+        type Sv DetachElasticLoadBalancer = OpsWorks
+        type Rs DetachElasticLoadBalancer =
+             DetachElasticLoadBalancerResponse
+        request = postJSON
+        response
+          = receiveNull DetachElasticLoadBalancerResponse'
 
--- | 'DetachElasticLoadBalancerResponse' constructor.
-detachElasticLoadBalancerResponse :: DetachElasticLoadBalancerResponse
-detachElasticLoadBalancerResponse = DetachElasticLoadBalancerResponse
+instance ToHeaders DetachElasticLoadBalancer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DetachElasticLoadBalancer" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DetachElasticLoadBalancer where
+        toJSON DetachElasticLoadBalancer'{..}
+          = object
+              ["ElasticLoadBalancerName" .=
+                 _delbElasticLoadBalancerName,
+               "LayerId" .= _delbLayerId]
+
 instance ToPath DetachElasticLoadBalancer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DetachElasticLoadBalancer where
-    toQuery = const mempty
-
-instance ToHeaders DetachElasticLoadBalancer
-
-instance ToJSON DetachElasticLoadBalancer where
-    toJSON DetachElasticLoadBalancer{..} = object
-        [ "ElasticLoadBalancerName" .= _delbElasticLoadBalancerName
-        , "LayerId"                 .= _delbLayerId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest DetachElasticLoadBalancer where
-    type Sv DetachElasticLoadBalancer = OpsWorks
-    type Rs DetachElasticLoadBalancer = DetachElasticLoadBalancerResponse
+-- | /See:/ 'detachElasticLoadBalancerResponse' smart constructor.
+data DetachElasticLoadBalancerResponse =
+    DetachElasticLoadBalancerResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "DetachElasticLoadBalancer"
-    response = nullResponse DetachElasticLoadBalancerResponse
+-- | Creates a value of 'DetachElasticLoadBalancerResponse' with the minimum fields required to make a request.
+--
+detachElasticLoadBalancerResponse
+    :: DetachElasticLoadBalancerResponse
+detachElasticLoadBalancerResponse = DetachElasticLoadBalancerResponse'
diff --git a/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs b/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/DisassociateElasticIP.hs
@@ -0,0 +1,109 @@
+{-# 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.OpsWorks.DisassociateElasticIP
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Disassociates an Elastic IP address from its instance. The address
+-- remains registered with the stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DisassociateElasticIP.html AWS API Reference> for DisassociateElasticIP.
+module Network.AWS.OpsWorks.DisassociateElasticIP
+    (
+    -- * Creating a Request
+      disassociateElasticIP
+    , DisassociateElasticIP
+    -- * Request Lenses
+    , deiElasticIP
+
+    -- * Destructuring the Response
+    , disassociateElasticIPResponse
+    , DisassociateElasticIPResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'disassociateElasticIP' smart constructor.
+newtype DisassociateElasticIP = DisassociateElasticIP'
+    { _deiElasticIP :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisassociateElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'deiElasticIP'
+disassociateElasticIP
+    :: Text -- ^ 'deiElasticIP'
+    -> DisassociateElasticIP
+disassociateElasticIP pElasticIP_ =
+    DisassociateElasticIP'
+    { _deiElasticIP = pElasticIP_
+    }
+
+-- | The Elastic IP address.
+deiElasticIP :: Lens' DisassociateElasticIP Text
+deiElasticIP = lens _deiElasticIP (\ s a -> s{_deiElasticIP = a});
+
+instance AWSRequest DisassociateElasticIP where
+        type Sv DisassociateElasticIP = OpsWorks
+        type Rs DisassociateElasticIP =
+             DisassociateElasticIPResponse
+        request = postJSON
+        response = receiveNull DisassociateElasticIPResponse'
+
+instance ToHeaders DisassociateElasticIP where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.DisassociateElasticIp" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DisassociateElasticIP where
+        toJSON DisassociateElasticIP'{..}
+          = object ["ElasticIp" .= _deiElasticIP]
+
+instance ToPath DisassociateElasticIP where
+        toPath = const "/"
+
+instance ToQuery DisassociateElasticIP where
+        toQuery = const mempty
+
+-- | /See:/ 'disassociateElasticIPResponse' smart constructor.
+data DisassociateElasticIPResponse =
+    DisassociateElasticIPResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisassociateElasticIPResponse' with the minimum fields required to make a request.
+--
+disassociateElasticIPResponse
+    :: DisassociateElasticIPResponse
+disassociateElasticIPResponse = DisassociateElasticIPResponse'
diff --git a/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs b/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/DisassociateElasticIp.hs
+++ /dev/null
@@ -1,99 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.DisassociateElasticIp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Disassociates an Elastic IP address from its instance. The address remains
--- registered with the stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_DisassociateElasticIp.html>
-module Network.AWS.OpsWorks.DisassociateElasticIp
-    (
-    -- * Request
-      DisassociateElasticIp
-    -- ** Request constructor
-    , disassociateElasticIp
-    -- ** Request lenses
-    , deiElasticIp
-
-    -- * Response
-    , DisassociateElasticIpResponse
-    -- ** Response constructor
-    , disassociateElasticIpResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-newtype DisassociateElasticIp = DisassociateElasticIp
-    { _deiElasticIp :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
-
--- | 'DisassociateElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'deiElasticIp' @::@ 'Text'
---
-disassociateElasticIp :: Text -- ^ 'deiElasticIp'
-                      -> DisassociateElasticIp
-disassociateElasticIp p1 = DisassociateElasticIp
-    { _deiElasticIp = p1
-    }
-
--- | The Elastic IP address.
-deiElasticIp :: Lens' DisassociateElasticIp Text
-deiElasticIp = lens _deiElasticIp (\s a -> s { _deiElasticIp = a })
-
-data DisassociateElasticIpResponse = DisassociateElasticIpResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'DisassociateElasticIpResponse' constructor.
-disassociateElasticIpResponse :: DisassociateElasticIpResponse
-disassociateElasticIpResponse = DisassociateElasticIpResponse
-
-instance ToPath DisassociateElasticIp where
-    toPath = const "/"
-
-instance ToQuery DisassociateElasticIp where
-    toQuery = const mempty
-
-instance ToHeaders DisassociateElasticIp
-
-instance ToJSON DisassociateElasticIp where
-    toJSON DisassociateElasticIp{..} = object
-        [ "ElasticIp" .= _deiElasticIp
-        ]
-
-instance AWSRequest DisassociateElasticIp where
-    type Sv DisassociateElasticIp = OpsWorks
-    type Rs DisassociateElasticIp = DisassociateElasticIpResponse
-
-    request  = post "DisassociateElasticIp"
-    response = nullResponse DisassociateElasticIpResponse
diff --git a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
--- a/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
+++ b/gen/Network/AWS/OpsWorks/GetHostnameSuggestion.hs
@@ -1,127 +1,146 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.GetHostnameSuggestion
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Gets a generated host name for the specified layer, based on the current host
--- name theme.
+-- Gets a generated host name for the specified layer, based on the current
+-- host name theme.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_GetHostnameSuggestion.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_GetHostnameSuggestion.html AWS API Reference> for GetHostnameSuggestion.
 module Network.AWS.OpsWorks.GetHostnameSuggestion
     (
-    -- * Request
-      GetHostnameSuggestion
-    -- ** Request constructor
-    , getHostnameSuggestion
-    -- ** Request lenses
+    -- * Creating a Request
+      getHostnameSuggestion
+    , GetHostnameSuggestion
+    -- * Request Lenses
     , ghsLayerId
 
-    -- * Response
-    , GetHostnameSuggestionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getHostnameSuggestionResponse
-    -- ** Response lenses
-    , ghsrHostname
-    , ghsrLayerId
+    , GetHostnameSuggestionResponse
+    -- * Response Lenses
+    , ghsrsHostname
+    , ghsrsLayerId
+    , ghsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype GetHostnameSuggestion = GetHostnameSuggestion
+-- | /See:/ 'getHostnameSuggestion' smart constructor.
+newtype GetHostnameSuggestion = GetHostnameSuggestion'
     { _ghsLayerId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetHostnameSuggestion' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetHostnameSuggestion' with the minimum fields required to make a request.
 --
--- * 'ghsLayerId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-getHostnameSuggestion :: Text -- ^ 'ghsLayerId'
-                      -> GetHostnameSuggestion
-getHostnameSuggestion p1 = GetHostnameSuggestion
-    { _ghsLayerId = p1
+-- * 'ghsLayerId'
+getHostnameSuggestion
+    :: Text -- ^ 'ghsLayerId'
+    -> GetHostnameSuggestion
+getHostnameSuggestion pLayerId_ =
+    GetHostnameSuggestion'
+    { _ghsLayerId = pLayerId_
     }
 
 -- | The layer ID.
 ghsLayerId :: Lens' GetHostnameSuggestion Text
-ghsLayerId = lens _ghsLayerId (\s a -> s { _ghsLayerId = a })
-
-data GetHostnameSuggestionResponse = GetHostnameSuggestionResponse
-    { _ghsrHostname :: Maybe Text
-    , _ghsrLayerId  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+ghsLayerId = lens _ghsLayerId (\ s a -> s{_ghsLayerId = a});
 
--- | 'GetHostnameSuggestionResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ghsrHostname' @::@ 'Maybe' 'Text'
---
--- * 'ghsrLayerId' @::@ 'Maybe' 'Text'
---
-getHostnameSuggestionResponse :: GetHostnameSuggestionResponse
-getHostnameSuggestionResponse = GetHostnameSuggestionResponse
-    { _ghsrLayerId  = Nothing
-    , _ghsrHostname = Nothing
-    }
+instance AWSRequest GetHostnameSuggestion where
+        type Sv GetHostnameSuggestion = OpsWorks
+        type Rs GetHostnameSuggestion =
+             GetHostnameSuggestionResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GetHostnameSuggestionResponse' <$>
+                   (x .?> "Hostname") <*> (x .?> "LayerId") <*>
+                     (pure (fromEnum s)))
 
--- | The generated host name.
-ghsrHostname :: Lens' GetHostnameSuggestionResponse (Maybe Text)
-ghsrHostname = lens _ghsrHostname (\s a -> s { _ghsrHostname = a })
+instance ToHeaders GetHostnameSuggestion where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.GetHostnameSuggestion" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The layer ID.
-ghsrLayerId :: Lens' GetHostnameSuggestionResponse (Maybe Text)
-ghsrLayerId = lens _ghsrLayerId (\s a -> s { _ghsrLayerId = a })
+instance ToJSON GetHostnameSuggestion where
+        toJSON GetHostnameSuggestion'{..}
+          = object ["LayerId" .= _ghsLayerId]
 
 instance ToPath GetHostnameSuggestion where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GetHostnameSuggestion where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders GetHostnameSuggestion
+-- | Contains the response to a 'GetHostnameSuggestion' request.
+--
+-- /See:/ 'getHostnameSuggestionResponse' smart constructor.
+data GetHostnameSuggestionResponse = GetHostnameSuggestionResponse'
+    { _ghsrsHostname :: !(Maybe Text)
+    , _ghsrsLayerId  :: !(Maybe Text)
+    , _ghsrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON GetHostnameSuggestion where
-    toJSON GetHostnameSuggestion{..} = object
-        [ "LayerId" .= _ghsLayerId
-        ]
+-- | Creates a value of 'GetHostnameSuggestionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ghsrsHostname'
+--
+-- * 'ghsrsLayerId'
+--
+-- * 'ghsrsStatus'
+getHostnameSuggestionResponse
+    :: Int -- ^ 'ghsrsStatus'
+    -> GetHostnameSuggestionResponse
+getHostnameSuggestionResponse pStatus_ =
+    GetHostnameSuggestionResponse'
+    { _ghsrsHostname = Nothing
+    , _ghsrsLayerId = Nothing
+    , _ghsrsStatus = pStatus_
+    }
 
-instance AWSRequest GetHostnameSuggestion where
-    type Sv GetHostnameSuggestion = OpsWorks
-    type Rs GetHostnameSuggestion = GetHostnameSuggestionResponse
+-- | The generated host name.
+ghsrsHostname :: Lens' GetHostnameSuggestionResponse (Maybe Text)
+ghsrsHostname = lens _ghsrsHostname (\ s a -> s{_ghsrsHostname = a});
 
-    request  = post "GetHostnameSuggestion"
-    response = jsonResponse
+-- | The layer ID.
+ghsrsLayerId :: Lens' GetHostnameSuggestionResponse (Maybe Text)
+ghsrsLayerId = lens _ghsrsLayerId (\ s a -> s{_ghsrsLayerId = a});
 
-instance FromJSON GetHostnameSuggestionResponse where
-    parseJSON = withObject "GetHostnameSuggestionResponse" $ \o -> GetHostnameSuggestionResponse
-        <$> o .:? "Hostname"
-        <*> o .:? "LayerId"
+-- | The response status code.
+ghsrsStatus :: Lens' GetHostnameSuggestionResponse Int
+ghsrsStatus = lens _ghsrsStatus (\ s a -> s{_ghsrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/GrantAccess.hs b/gen/Network/AWS/OpsWorks/GrantAccess.hs
--- a/gen/Network/AWS/OpsWorks/GrantAccess.hs
+++ b/gen/Network/AWS/OpsWorks/GrantAccess.hs
@@ -1,130 +1,146 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.GrantAccess
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This API can be used only with Windows stacks. Grants RDP access to a Windows
--- instance for a specified time period.
+-- This action can be used only with Windows stacks.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_GrantAccess.html>
+-- Grants RDP access to a Windows instance for a specified time period.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_GrantAccess.html AWS API Reference> for GrantAccess.
 module Network.AWS.OpsWorks.GrantAccess
     (
-    -- * Request
-      GrantAccess
-    -- ** Request constructor
-    , grantAccess
-    -- ** Request lenses
-    , gaInstanceId
+    -- * Creating a Request
+      grantAccess
+    , GrantAccess
+    -- * Request Lenses
     , gaValidForInMinutes
+    , gaInstanceId
 
-    -- * Response
-    , GrantAccessResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , grantAccessResponse
-    -- ** Response lenses
-    , garTemporaryCredential
+    , GrantAccessResponse
+    -- * Response Lenses
+    , garsTemporaryCredential
+    , garsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data GrantAccess = GrantAccess
-    { _gaInstanceId        :: Text
-    , _gaValidForInMinutes :: Maybe Nat
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'grantAccess' smart constructor.
+data GrantAccess = GrantAccess'
+    { _gaValidForInMinutes :: !(Maybe Nat)
+    , _gaInstanceId        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GrantAccess' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GrantAccess' with the minimum fields required to make a request.
 --
--- * 'gaInstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gaValidForInMinutes' @::@ 'Maybe' 'Natural'
+-- * 'gaValidForInMinutes'
 --
-grantAccess :: Text -- ^ 'gaInstanceId'
-            -> GrantAccess
-grantAccess p1 = GrantAccess
-    { _gaInstanceId        = p1
-    , _gaValidForInMinutes = Nothing
+-- * 'gaInstanceId'
+grantAccess
+    :: Text -- ^ 'gaInstanceId'
+    -> GrantAccess
+grantAccess pInstanceId_ =
+    GrantAccess'
+    { _gaValidForInMinutes = Nothing
+    , _gaInstanceId = pInstanceId_
     }
 
--- | The instance's AWS OpsWorks ID.
-gaInstanceId :: Lens' GrantAccess Text
-gaInstanceId = lens _gaInstanceId (\s a -> s { _gaInstanceId = a })
-
 -- | The length of time (in minutes) that the grant is valid. When the grant
--- expires at the end of this period, the user will no longer be able to use the
--- credentials to log in. If the user is logged in at the time, he or she
--- automatically will be logged out.
+-- expires at the end of this period, the user will no longer be able to
+-- use the credentials to log in. If the user is logged in at the time, he
+-- or she automatically will be logged out.
 gaValidForInMinutes :: Lens' GrantAccess (Maybe Natural)
-gaValidForInMinutes =
-    lens _gaValidForInMinutes (\s a -> s { _gaValidForInMinutes = a })
-        . mapping _Nat
+gaValidForInMinutes = lens _gaValidForInMinutes (\ s a -> s{_gaValidForInMinutes = a}) . mapping _Nat;
 
-newtype GrantAccessResponse = GrantAccessResponse
-    { _garTemporaryCredential :: Maybe TemporaryCredential
-    } deriving (Eq, Read, Show)
+-- | The instance\'s AWS OpsWorks ID.
+gaInstanceId :: Lens' GrantAccess Text
+gaInstanceId = lens _gaInstanceId (\ s a -> s{_gaInstanceId = a});
 
--- | 'GrantAccessResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'garTemporaryCredential' @::@ 'Maybe' 'TemporaryCredential'
---
-grantAccessResponse :: GrantAccessResponse
-grantAccessResponse = GrantAccessResponse
-    { _garTemporaryCredential = Nothing
-    }
+instance AWSRequest GrantAccess where
+        type Sv GrantAccess = OpsWorks
+        type Rs GrantAccess = GrantAccessResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 GrantAccessResponse' <$>
+                   (x .?> "TemporaryCredential") <*>
+                     (pure (fromEnum s)))
 
--- | A 'TemporaryCredential' object that contains the data needed to log in to the
--- instance by RDP clients, such as the Microsoft Remote Desktop Connection.
-garTemporaryCredential :: Lens' GrantAccessResponse (Maybe TemporaryCredential)
-garTemporaryCredential =
-    lens _garTemporaryCredential (\s a -> s { _garTemporaryCredential = a })
+instance ToHeaders GrantAccess where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.GrantAccess" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON GrantAccess where
+        toJSON GrantAccess'{..}
+          = object
+              ["ValidForInMinutes" .= _gaValidForInMinutes,
+               "InstanceId" .= _gaInstanceId]
+
 instance ToPath GrantAccess where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery GrantAccess where
-    toQuery = const mempty
-
-instance ToHeaders GrantAccess
+        toQuery = const mempty
 
-instance ToJSON GrantAccess where
-    toJSON GrantAccess{..} = object
-        [ "InstanceId"        .= _gaInstanceId
-        , "ValidForInMinutes" .= _gaValidForInMinutes
-        ]
+-- | Contains the response to a 'GrantAccess' request.
+--
+-- /See:/ 'grantAccessResponse' smart constructor.
+data GrantAccessResponse = GrantAccessResponse'
+    { _garsTemporaryCredential :: !(Maybe TemporaryCredential)
+    , _garsStatus              :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest GrantAccess where
-    type Sv GrantAccess = OpsWorks
-    type Rs GrantAccess = GrantAccessResponse
+-- | Creates a value of 'GrantAccessResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'garsTemporaryCredential'
+--
+-- * 'garsStatus'
+grantAccessResponse
+    :: Int -- ^ 'garsStatus'
+    -> GrantAccessResponse
+grantAccessResponse pStatus_ =
+    GrantAccessResponse'
+    { _garsTemporaryCredential = Nothing
+    , _garsStatus = pStatus_
+    }
 
-    request  = post "GrantAccess"
-    response = jsonResponse
+-- | A 'TemporaryCredential' object that contains the data needed to log in
+-- to the instance by RDP clients, such as the Microsoft Remote Desktop
+-- Connection.
+garsTemporaryCredential :: Lens' GrantAccessResponse (Maybe TemporaryCredential)
+garsTemporaryCredential = lens _garsTemporaryCredential (\ s a -> s{_garsTemporaryCredential = a});
 
-instance FromJSON GrantAccessResponse where
-    parseJSON = withObject "GrantAccessResponse" $ \o -> GrantAccessResponse
-        <$> o .:? "TemporaryCredential"
+-- | The response status code.
+garsStatus :: Lens' GrantAccessResponse Int
+garsStatus = lens _garsStatus (\ s a -> s{_garsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/RebootInstance.hs b/gen/Network/AWS/OpsWorks/RebootInstance.hs
--- a/gen/Network/AWS/OpsWorks/RebootInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RebootInstance.hs
@@ -1,98 +1,106 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.RebootInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Reboots a specified instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping,and Rebooting Instances>.
+-- Reboots a specified instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping, and Rebooting Instances>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RebootInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RebootInstance.html AWS API Reference> for RebootInstance.
 module Network.AWS.OpsWorks.RebootInstance
     (
-    -- * Request
-      RebootInstance
-    -- ** Request constructor
-    , rebootInstance
-    -- ** Request lenses
+    -- * Creating a Request
+      rebootInstance
+    , RebootInstance
+    -- * Request Lenses
     , riInstanceId
 
-    -- * Response
-    , RebootInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , rebootInstanceResponse
+    , RebootInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype RebootInstance = RebootInstance
+-- | /See:/ 'rebootInstance' smart constructor.
+newtype RebootInstance = RebootInstance'
     { _riInstanceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RebootInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RebootInstance' with the minimum fields required to make a request.
 --
--- * 'riInstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-rebootInstance :: Text -- ^ 'riInstanceId'
-               -> RebootInstance
-rebootInstance p1 = RebootInstance
-    { _riInstanceId = p1
+-- * 'riInstanceId'
+rebootInstance
+    :: Text -- ^ 'riInstanceId'
+    -> RebootInstance
+rebootInstance pInstanceId_ =
+    RebootInstance'
+    { _riInstanceId = pInstanceId_
     }
 
 -- | The instance ID.
 riInstanceId :: Lens' RebootInstance Text
-riInstanceId = lens _riInstanceId (\s a -> s { _riInstanceId = a })
+riInstanceId = lens _riInstanceId (\ s a -> s{_riInstanceId = a});
 
-data RebootInstanceResponse = RebootInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest RebootInstance where
+        type Sv RebootInstance = OpsWorks
+        type Rs RebootInstance = RebootInstanceResponse
+        request = postJSON
+        response = receiveNull RebootInstanceResponse'
 
--- | 'RebootInstanceResponse' constructor.
-rebootInstanceResponse :: RebootInstanceResponse
-rebootInstanceResponse = RebootInstanceResponse
+instance ToHeaders RebootInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RebootInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON RebootInstance where
+        toJSON RebootInstance'{..}
+          = object ["InstanceId" .= _riInstanceId]
+
 instance ToPath RebootInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RebootInstance where
-    toQuery = const mempty
-
-instance ToHeaders RebootInstance
-
-instance ToJSON RebootInstance where
-    toJSON RebootInstance{..} = object
-        [ "InstanceId" .= _riInstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest RebootInstance where
-    type Sv RebootInstance = OpsWorks
-    type Rs RebootInstance = RebootInstanceResponse
+-- | /See:/ 'rebootInstanceResponse' smart constructor.
+data RebootInstanceResponse =
+    RebootInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "RebootInstance"
-    response = nullResponse RebootInstanceResponse
+-- | Creates a value of 'RebootInstanceResponse' with the minimum fields required to make a request.
+--
+rebootInstanceResponse
+    :: RebootInstanceResponse
+rebootInstanceResponse = RebootInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs b/gen/Network/AWS/OpsWorks/RegisterEcsCluster.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/RegisterEcsCluster.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.OpsWorks.RegisterEcsCluster
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Registers a specified Amazon ECS cluster with a stack. You can register
+-- only one cluster with a stack. A cluster can be registered with only one
+-- stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-ecscluster.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterEcsCluster.html AWS API Reference> for RegisterEcsCluster.
+module Network.AWS.OpsWorks.RegisterEcsCluster
+    (
+    -- * Creating a Request
+      registerEcsCluster
+    , RegisterEcsCluster
+    -- * Request Lenses
+    , recEcsClusterARN
+    , recStackId
+
+    -- * Destructuring the Response
+    , registerEcsClusterResponse
+    , RegisterEcsClusterResponse
+    -- * Response Lenses
+    , recrsEcsClusterARN
+    , recrsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'registerEcsCluster' smart constructor.
+data RegisterEcsCluster = RegisterEcsCluster'
+    { _recEcsClusterARN :: !Text
+    , _recStackId       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterEcsCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'recEcsClusterARN'
+--
+-- * 'recStackId'
+registerEcsCluster
+    :: Text -- ^ 'recEcsClusterARN'
+    -> Text -- ^ 'recStackId'
+    -> RegisterEcsCluster
+registerEcsCluster pEcsClusterARN_ pStackId_ =
+    RegisterEcsCluster'
+    { _recEcsClusterARN = pEcsClusterARN_
+    , _recStackId = pStackId_
+    }
+
+-- | The cluster\'s ARN.
+recEcsClusterARN :: Lens' RegisterEcsCluster Text
+recEcsClusterARN = lens _recEcsClusterARN (\ s a -> s{_recEcsClusterARN = a});
+
+-- | The stack ID.
+recStackId :: Lens' RegisterEcsCluster Text
+recStackId = lens _recStackId (\ s a -> s{_recStackId = a});
+
+instance AWSRequest RegisterEcsCluster where
+        type Sv RegisterEcsCluster = OpsWorks
+        type Rs RegisterEcsCluster =
+             RegisterEcsClusterResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterEcsClusterResponse' <$>
+                   (x .?> "EcsClusterArn") <*> (pure (fromEnum s)))
+
+instance ToHeaders RegisterEcsCluster where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RegisterEcsCluster" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterEcsCluster where
+        toJSON RegisterEcsCluster'{..}
+          = object
+              ["EcsClusterArn" .= _recEcsClusterARN,
+               "StackId" .= _recStackId]
+
+instance ToPath RegisterEcsCluster where
+        toPath = const "/"
+
+instance ToQuery RegisterEcsCluster where
+        toQuery = const mempty
+
+-- | Contains the response to a 'RegisterEcsCluster' request.
+--
+-- /See:/ 'registerEcsClusterResponse' smart constructor.
+data RegisterEcsClusterResponse = RegisterEcsClusterResponse'
+    { _recrsEcsClusterARN :: !(Maybe Text)
+    , _recrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterEcsClusterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'recrsEcsClusterARN'
+--
+-- * 'recrsStatus'
+registerEcsClusterResponse
+    :: Int -- ^ 'recrsStatus'
+    -> RegisterEcsClusterResponse
+registerEcsClusterResponse pStatus_ =
+    RegisterEcsClusterResponse'
+    { _recrsEcsClusterARN = Nothing
+    , _recrsStatus = pStatus_
+    }
+
+-- | The cluster\'s ARN.
+recrsEcsClusterARN :: Lens' RegisterEcsClusterResponse (Maybe Text)
+recrsEcsClusterARN = lens _recrsEcsClusterARN (\ s a -> s{_recrsEcsClusterARN = a});
+
+-- | The response status code.
+recrsStatus :: Lens' RegisterEcsClusterResponse Int
+recrsStatus = lens _recrsStatus (\ s a -> s{_recrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs b/gen/Network/AWS/OpsWorks/RegisterElasticIP.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/RegisterElasticIP.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.OpsWorks.RegisterElasticIP
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Registers an Elastic IP address with a specified stack. An address can
+-- be registered with only one stack at a time. If the address is already
+-- registered, you must first deregister it by calling DeregisterElasticIp.
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterElasticIP.html AWS API Reference> for RegisterElasticIP.
+module Network.AWS.OpsWorks.RegisterElasticIP
+    (
+    -- * Creating a Request
+      registerElasticIP
+    , RegisterElasticIP
+    -- * Request Lenses
+    , reiElasticIP
+    , reiStackId
+
+    -- * Destructuring the Response
+    , registerElasticIPResponse
+    , RegisterElasticIPResponse
+    -- * Response Lenses
+    , reirsElasticIP
+    , reirsStatus
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'registerElasticIP' smart constructor.
+data RegisterElasticIP = RegisterElasticIP'
+    { _reiElasticIP :: !Text
+    , _reiStackId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'reiElasticIP'
+--
+-- * 'reiStackId'
+registerElasticIP
+    :: Text -- ^ 'reiElasticIP'
+    -> Text -- ^ 'reiStackId'
+    -> RegisterElasticIP
+registerElasticIP pElasticIP_ pStackId_ =
+    RegisterElasticIP'
+    { _reiElasticIP = pElasticIP_
+    , _reiStackId = pStackId_
+    }
+
+-- | The Elastic IP address.
+reiElasticIP :: Lens' RegisterElasticIP Text
+reiElasticIP = lens _reiElasticIP (\ s a -> s{_reiElasticIP = a});
+
+-- | The stack ID.
+reiStackId :: Lens' RegisterElasticIP Text
+reiStackId = lens _reiStackId (\ s a -> s{_reiStackId = a});
+
+instance AWSRequest RegisterElasticIP where
+        type Sv RegisterElasticIP = OpsWorks
+        type Rs RegisterElasticIP = RegisterElasticIPResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterElasticIPResponse' <$>
+                   (x .?> "ElasticIp") <*> (pure (fromEnum s)))
+
+instance ToHeaders RegisterElasticIP where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RegisterElasticIp" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterElasticIP where
+        toJSON RegisterElasticIP'{..}
+          = object
+              ["ElasticIp" .= _reiElasticIP,
+               "StackId" .= _reiStackId]
+
+instance ToPath RegisterElasticIP where
+        toPath = const "/"
+
+instance ToQuery RegisterElasticIP where
+        toQuery = const mempty
+
+-- | Contains the response to a 'RegisterElasticIp' request.
+--
+-- /See:/ 'registerElasticIPResponse' smart constructor.
+data RegisterElasticIPResponse = RegisterElasticIPResponse'
+    { _reirsElasticIP :: !(Maybe Text)
+    , _reirsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterElasticIPResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'reirsElasticIP'
+--
+-- * 'reirsStatus'
+registerElasticIPResponse
+    :: Int -- ^ 'reirsStatus'
+    -> RegisterElasticIPResponse
+registerElasticIPResponse pStatus_ =
+    RegisterElasticIPResponse'
+    { _reirsElasticIP = Nothing
+    , _reirsStatus = pStatus_
+    }
+
+-- | The Elastic IP address.
+reirsElasticIP :: Lens' RegisterElasticIPResponse (Maybe Text)
+reirsElasticIP = lens _reirsElasticIP (\ s a -> s{_reirsElasticIP = a});
+
+-- | The response status code.
+reirsStatus :: Lens' RegisterElasticIPResponse Int
+reirsStatus = lens _reirsStatus (\ s a -> s{_reirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs b/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/RegisterElasticIp.hs
+++ /dev/null
@@ -1,130 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.RegisterElasticIp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Registers an Elastic IP address with a specified stack. An address can be
--- registered with only one stack at a time. If the address is already
--- registered, you must first deregister it by calling 'DeregisterElasticIp'. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterElasticIp.html>
-module Network.AWS.OpsWorks.RegisterElasticIp
-    (
-    -- * Request
-      RegisterElasticIp
-    -- ** Request constructor
-    , registerElasticIp
-    -- ** Request lenses
-    , reiElasticIp
-    , reiStackId
-
-    -- * Response
-    , RegisterElasticIpResponse
-    -- ** Response constructor
-    , registerElasticIpResponse
-    -- ** Response lenses
-    , reirElasticIp
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data RegisterElasticIp = RegisterElasticIp
-    { _reiElasticIp :: Text
-    , _reiStackId   :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'RegisterElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'reiElasticIp' @::@ 'Text'
---
--- * 'reiStackId' @::@ 'Text'
---
-registerElasticIp :: Text -- ^ 'reiElasticIp'
-                  -> Text -- ^ 'reiStackId'
-                  -> RegisterElasticIp
-registerElasticIp p1 p2 = RegisterElasticIp
-    { _reiElasticIp = p1
-    , _reiStackId   = p2
-    }
-
--- | The Elastic IP address.
-reiElasticIp :: Lens' RegisterElasticIp Text
-reiElasticIp = lens _reiElasticIp (\s a -> s { _reiElasticIp = a })
-
--- | The stack ID.
-reiStackId :: Lens' RegisterElasticIp Text
-reiStackId = lens _reiStackId (\s a -> s { _reiStackId = a })
-
-newtype RegisterElasticIpResponse = RegisterElasticIpResponse
-    { _reirElasticIp :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
-
--- | 'RegisterElasticIpResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'reirElasticIp' @::@ 'Maybe' 'Text'
---
-registerElasticIpResponse :: RegisterElasticIpResponse
-registerElasticIpResponse = RegisterElasticIpResponse
-    { _reirElasticIp = Nothing
-    }
-
--- | The Elastic IP address.
-reirElasticIp :: Lens' RegisterElasticIpResponse (Maybe Text)
-reirElasticIp = lens _reirElasticIp (\s a -> s { _reirElasticIp = a })
-
-instance ToPath RegisterElasticIp where
-    toPath = const "/"
-
-instance ToQuery RegisterElasticIp where
-    toQuery = const mempty
-
-instance ToHeaders RegisterElasticIp
-
-instance ToJSON RegisterElasticIp where
-    toJSON RegisterElasticIp{..} = object
-        [ "ElasticIp" .= _reiElasticIp
-        , "StackId"   .= _reiStackId
-        ]
-
-instance AWSRequest RegisterElasticIp where
-    type Sv RegisterElasticIp = OpsWorks
-    type Rs RegisterElasticIp = RegisterElasticIpResponse
-
-    request  = post "RegisterElasticIp"
-    response = jsonResponse
-
-instance FromJSON RegisterElasticIpResponse where
-    parseJSON = withObject "RegisterElasticIpResponse" $ \o -> RegisterElasticIpResponse
-        <$> o .:? "ElasticIp"
diff --git a/gen/Network/AWS/OpsWorks/RegisterInstance.hs b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
--- a/gen/Network/AWS/OpsWorks/RegisterInstance.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterInstance.hs
@@ -1,185 +1,205 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.RegisterInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Registers instances with a specified stack that were created outside of AWS
--- OpsWorks.
+-- Registers instances with a specified stack that were created outside of
+-- AWS OpsWorks.
 --
--- We do not recommend using this action to register instances. The complete
--- registration operation has two primary steps, installing the AWS OpsWorks
--- agent on the instance and registering the instance with the stack. 'RegisterInstance' handles only the second step. You should instead use the AWS CLI 'register'
--- command, which performs the entire registration operation. Required
--- Permissions: To use this action, an IAM user must have a Manage permissions
--- level for the stack or an attached policy that explicitly grants permissions.
--- For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- We do not recommend using this action to register instances. The
+-- complete registration operation has two primary steps, installing the
+-- AWS OpsWorks agent on the instance and registering the instance with the
+-- stack. 'RegisterInstance' handles only the second step. You should
+-- instead use the AWS CLI 'register' command, which performs the entire
+-- registration operation. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/registered-instances-register.html Registering an Instance with an AWS OpsWorks Stack>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterInstance.html>
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterInstance.html AWS API Reference> for RegisterInstance.
 module Network.AWS.OpsWorks.RegisterInstance
     (
-    -- * Request
-      RegisterInstance
-    -- ** Request constructor
-    , registerInstance
-    -- ** Request lenses
+    -- * Creating a Request
+      registerInstance
+    , RegisterInstance
+    -- * Request Lenses
+    , riPrivateIP
     , riHostname
     , riInstanceIdentity
-    , riPrivateIp
-    , riPublicIp
-    , riRsaPublicKey
+    , riPublicIP
     , riRsaPublicKeyFingerprint
+    , riRsaPublicKey
     , riStackId
 
-    -- * Response
-    , RegisterInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , registerInstanceResponse
-    -- ** Response lenses
-    , rirInstanceId
+    , RegisterInstanceResponse
+    -- * Response Lenses
+    , rirsInstanceId
+    , rirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RegisterInstance = RegisterInstance
-    { _riHostname                :: Maybe Text
-    , _riInstanceIdentity        :: Maybe InstanceIdentity
-    , _riPrivateIp               :: Maybe Text
-    , _riPublicIp                :: Maybe Text
-    , _riRsaPublicKey            :: Maybe Text
-    , _riRsaPublicKeyFingerprint :: Maybe Text
-    , _riStackId                 :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'registerInstance' smart constructor.
+data RegisterInstance = RegisterInstance'
+    { _riPrivateIP               :: !(Maybe Text)
+    , _riHostname                :: !(Maybe Text)
+    , _riInstanceIdentity        :: !(Maybe InstanceIdentity)
+    , _riPublicIP                :: !(Maybe Text)
+    , _riRsaPublicKeyFingerprint :: !(Maybe Text)
+    , _riRsaPublicKey            :: !(Maybe Text)
+    , _riStackId                 :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RegisterInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RegisterInstance' with the minimum fields required to make a request.
 --
--- * 'riHostname' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'riInstanceIdentity' @::@ 'Maybe' 'InstanceIdentity'
+-- * 'riPrivateIP'
 --
--- * 'riPrivateIp' @::@ 'Maybe' 'Text'
+-- * 'riHostname'
 --
--- * 'riPublicIp' @::@ 'Maybe' 'Text'
+-- * 'riInstanceIdentity'
 --
--- * 'riRsaPublicKey' @::@ 'Maybe' 'Text'
+-- * 'riPublicIP'
 --
--- * 'riRsaPublicKeyFingerprint' @::@ 'Maybe' 'Text'
+-- * 'riRsaPublicKeyFingerprint'
 --
--- * 'riStackId' @::@ 'Text'
+-- * 'riRsaPublicKey'
 --
-registerInstance :: Text -- ^ 'riStackId'
-                 -> RegisterInstance
-registerInstance p1 = RegisterInstance
-    { _riStackId                 = p1
-    , _riHostname                = Nothing
-    , _riPublicIp                = Nothing
-    , _riPrivateIp               = Nothing
-    , _riRsaPublicKey            = Nothing
+-- * 'riStackId'
+registerInstance
+    :: Text -- ^ 'riStackId'
+    -> RegisterInstance
+registerInstance pStackId_ =
+    RegisterInstance'
+    { _riPrivateIP = Nothing
+    , _riHostname = Nothing
+    , _riInstanceIdentity = Nothing
+    , _riPublicIP = Nothing
     , _riRsaPublicKeyFingerprint = Nothing
-    , _riInstanceIdentity        = Nothing
+    , _riRsaPublicKey = Nothing
+    , _riStackId = pStackId_
     }
 
--- | The instance's hostname.
+-- | The instance\'s private IP address.
+riPrivateIP :: Lens' RegisterInstance (Maybe Text)
+riPrivateIP = lens _riPrivateIP (\ s a -> s{_riPrivateIP = a});
+
+-- | The instance\'s hostname.
 riHostname :: Lens' RegisterInstance (Maybe Text)
-riHostname = lens _riHostname (\s a -> s { _riHostname = a })
+riHostname = lens _riHostname (\ s a -> s{_riHostname = a});
 
--- | An InstanceIdentity object that contains the instance's identity.
+-- | An InstanceIdentity object that contains the instance\'s identity.
 riInstanceIdentity :: Lens' RegisterInstance (Maybe InstanceIdentity)
-riInstanceIdentity =
-    lens _riInstanceIdentity (\s a -> s { _riInstanceIdentity = a })
+riInstanceIdentity = lens _riInstanceIdentity (\ s a -> s{_riInstanceIdentity = a});
 
--- | The instance's private IP address.
-riPrivateIp :: Lens' RegisterInstance (Maybe Text)
-riPrivateIp = lens _riPrivateIp (\s a -> s { _riPrivateIp = a })
+-- | The instance\'s public IP address.
+riPublicIP :: Lens' RegisterInstance (Maybe Text)
+riPublicIP = lens _riPublicIP (\ s a -> s{_riPublicIP = a});
 
--- | The instance's public IP address.
-riPublicIp :: Lens' RegisterInstance (Maybe Text)
-riPublicIp = lens _riPublicIp (\s a -> s { _riPublicIp = a })
+-- | The instances public RSA key fingerprint.
+riRsaPublicKeyFingerprint :: Lens' RegisterInstance (Maybe Text)
+riRsaPublicKeyFingerprint = lens _riRsaPublicKeyFingerprint (\ s a -> s{_riRsaPublicKeyFingerprint = a});
 
 -- | The instances public RSA key. This key is used to encrypt communication
 -- between the instance and the service.
 riRsaPublicKey :: Lens' RegisterInstance (Maybe Text)
-riRsaPublicKey = lens _riRsaPublicKey (\s a -> s { _riRsaPublicKey = a })
-
--- | The instances public RSA key fingerprint.
-riRsaPublicKeyFingerprint :: Lens' RegisterInstance (Maybe Text)
-riRsaPublicKeyFingerprint =
-    lens _riRsaPublicKeyFingerprint
-        (\s a -> s { _riRsaPublicKeyFingerprint = a })
+riRsaPublicKey = lens _riRsaPublicKey (\ s a -> s{_riRsaPublicKey = a});
 
 -- | The ID of the stack that the instance is to be registered with.
 riStackId :: Lens' RegisterInstance Text
-riStackId = lens _riStackId (\s a -> s { _riStackId = a })
+riStackId = lens _riStackId (\ s a -> s{_riStackId = a});
 
-newtype RegisterInstanceResponse = RegisterInstanceResponse
-    { _rirInstanceId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest RegisterInstance where
+        type Sv RegisterInstance = OpsWorks
+        type Rs RegisterInstance = RegisterInstanceResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterInstanceResponse' <$>
+                   (x .?> "InstanceId") <*> (pure (fromEnum s)))
 
--- | 'RegisterInstanceResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rirInstanceId' @::@ 'Maybe' 'Text'
---
-registerInstanceResponse :: RegisterInstanceResponse
-registerInstanceResponse = RegisterInstanceResponse
-    { _rirInstanceId = Nothing
-    }
+instance ToHeaders RegisterInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RegisterInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The registered instance's AWS OpsWorks ID.
-rirInstanceId :: Lens' RegisterInstanceResponse (Maybe Text)
-rirInstanceId = lens _rirInstanceId (\s a -> s { _rirInstanceId = a })
+instance ToJSON RegisterInstance where
+        toJSON RegisterInstance'{..}
+          = object
+              ["PrivateIp" .= _riPrivateIP,
+               "Hostname" .= _riHostname,
+               "InstanceIdentity" .= _riInstanceIdentity,
+               "PublicIp" .= _riPublicIP,
+               "RsaPublicKeyFingerprint" .=
+                 _riRsaPublicKeyFingerprint,
+               "RsaPublicKey" .= _riRsaPublicKey,
+               "StackId" .= _riStackId]
 
 instance ToPath RegisterInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RegisterInstance where
-    toQuery = const mempty
-
-instance ToHeaders RegisterInstance
+        toQuery = const mempty
 
-instance ToJSON RegisterInstance where
-    toJSON RegisterInstance{..} = object
-        [ "StackId"                 .= _riStackId
-        , "Hostname"                .= _riHostname
-        , "PublicIp"                .= _riPublicIp
-        , "PrivateIp"               .= _riPrivateIp
-        , "RsaPublicKey"            .= _riRsaPublicKey
-        , "RsaPublicKeyFingerprint" .= _riRsaPublicKeyFingerprint
-        , "InstanceIdentity"        .= _riInstanceIdentity
-        ]
+-- | Contains the response to a 'RegisterInstanceResult' request.
+--
+-- /See:/ 'registerInstanceResponse' smart constructor.
+data RegisterInstanceResponse = RegisterInstanceResponse'
+    { _rirsInstanceId :: !(Maybe Text)
+    , _rirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RegisterInstance where
-    type Sv RegisterInstance = OpsWorks
-    type Rs RegisterInstance = RegisterInstanceResponse
+-- | Creates a value of 'RegisterInstanceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rirsInstanceId'
+--
+-- * 'rirsStatus'
+registerInstanceResponse
+    :: Int -- ^ 'rirsStatus'
+    -> RegisterInstanceResponse
+registerInstanceResponse pStatus_ =
+    RegisterInstanceResponse'
+    { _rirsInstanceId = Nothing
+    , _rirsStatus = pStatus_
+    }
 
-    request  = post "RegisterInstance"
-    response = jsonResponse
+-- | The registered instance\'s AWS OpsWorks ID.
+rirsInstanceId :: Lens' RegisterInstanceResponse (Maybe Text)
+rirsInstanceId = lens _rirsInstanceId (\ s a -> s{_rirsInstanceId = a});
 
-instance FromJSON RegisterInstanceResponse where
-    parseJSON = withObject "RegisterInstanceResponse" $ \o -> RegisterInstanceResponse
-        <$> o .:? "InstanceId"
+-- | The response status code.
+rirsStatus :: Lens' RegisterInstanceResponse Int
+rirsStatus = lens _rirsStatus (\ s a -> s{_rirsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/RegisterRDSDBInstance.hs
@@ -0,0 +1,141 @@
+{-# 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.OpsWorks.RegisterRDSDBInstance
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Registers an Amazon RDS instance with a stack.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterRDSDBInstance.html AWS API Reference> for RegisterRDSDBInstance.
+module Network.AWS.OpsWorks.RegisterRDSDBInstance
+    (
+    -- * Creating a Request
+      registerRDSDBInstance
+    , RegisterRDSDBInstance
+    -- * Request Lenses
+    , rrdiStackId
+    , rrdiRDSDBInstanceARN
+    , rrdiDBUser
+    , rrdiDBPassword
+
+    -- * Destructuring the Response
+    , registerRDSDBInstanceResponse
+    , RegisterRDSDBInstanceResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'registerRDSDBInstance' smart constructor.
+data RegisterRDSDBInstance = RegisterRDSDBInstance'
+    { _rrdiStackId          :: !Text
+    , _rrdiRDSDBInstanceARN :: !Text
+    , _rrdiDBUser           :: !Text
+    , _rrdiDBPassword       :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterRDSDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrdiStackId'
+--
+-- * 'rrdiRDSDBInstanceARN'
+--
+-- * 'rrdiDBUser'
+--
+-- * 'rrdiDBPassword'
+registerRDSDBInstance
+    :: Text -- ^ 'rrdiStackId'
+    -> Text -- ^ 'rrdiRDSDBInstanceARN'
+    -> Text -- ^ 'rrdiDBUser'
+    -> Text -- ^ 'rrdiDBPassword'
+    -> RegisterRDSDBInstance
+registerRDSDBInstance pStackId_ pRDSDBInstanceARN_ pDBUser_ pDBPassword_ =
+    RegisterRDSDBInstance'
+    { _rrdiStackId = pStackId_
+    , _rrdiRDSDBInstanceARN = pRDSDBInstanceARN_
+    , _rrdiDBUser = pDBUser_
+    , _rrdiDBPassword = pDBPassword_
+    }
+
+-- | The stack ID.
+rrdiStackId :: Lens' RegisterRDSDBInstance Text
+rrdiStackId = lens _rrdiStackId (\ s a -> s{_rrdiStackId = a});
+
+-- | The Amazon RDS instance\'s ARN.
+rrdiRDSDBInstanceARN :: Lens' RegisterRDSDBInstance Text
+rrdiRDSDBInstanceARN = lens _rrdiRDSDBInstanceARN (\ s a -> s{_rrdiRDSDBInstanceARN = a});
+
+-- | The database\'s master user name.
+rrdiDBUser :: Lens' RegisterRDSDBInstance Text
+rrdiDBUser = lens _rrdiDBUser (\ s a -> s{_rrdiDBUser = a});
+
+-- | The database password.
+rrdiDBPassword :: Lens' RegisterRDSDBInstance Text
+rrdiDBPassword = lens _rrdiDBPassword (\ s a -> s{_rrdiDBPassword = a});
+
+instance AWSRequest RegisterRDSDBInstance where
+        type Sv RegisterRDSDBInstance = OpsWorks
+        type Rs RegisterRDSDBInstance =
+             RegisterRDSDBInstanceResponse
+        request = postJSON
+        response = receiveNull RegisterRDSDBInstanceResponse'
+
+instance ToHeaders RegisterRDSDBInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RegisterRdsDbInstance" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON RegisterRDSDBInstance where
+        toJSON RegisterRDSDBInstance'{..}
+          = object
+              ["StackId" .= _rrdiStackId,
+               "RdsDbInstanceArn" .= _rrdiRDSDBInstanceARN,
+               "DbUser" .= _rrdiDBUser,
+               "DbPassword" .= _rrdiDBPassword]
+
+instance ToPath RegisterRDSDBInstance where
+        toPath = const "/"
+
+instance ToQuery RegisterRDSDBInstance where
+        toQuery = const mempty
+
+-- | /See:/ 'registerRDSDBInstanceResponse' smart constructor.
+data RegisterRDSDBInstanceResponse =
+    RegisterRDSDBInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RegisterRDSDBInstanceResponse' with the minimum fields required to make a request.
+--
+registerRDSDBInstanceResponse
+    :: RegisterRDSDBInstanceResponse
+registerRDSDBInstanceResponse = RegisterRDSDBInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/RegisterRdsDbInstance.hs b/gen/Network/AWS/OpsWorks/RegisterRdsDbInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/RegisterRdsDbInstance.hs
+++ /dev/null
@@ -1,132 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.RegisterRdsDbInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Registers an Amazon RDS instance with a stack.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterRdsDbInstance.html>
-module Network.AWS.OpsWorks.RegisterRdsDbInstance
-    (
-    -- * Request
-      RegisterRdsDbInstance
-    -- ** Request constructor
-    , registerRdsDbInstance
-    -- ** Request lenses
-    , rrdiDbPassword
-    , rrdiDbUser
-    , rrdiRdsDbInstanceArn
-    , rrdiStackId
-
-    -- * Response
-    , RegisterRdsDbInstanceResponse
-    -- ** Response constructor
-    , registerRdsDbInstanceResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data RegisterRdsDbInstance = RegisterRdsDbInstance
-    { _rrdiDbPassword       :: Text
-    , _rrdiDbUser           :: Text
-    , _rrdiRdsDbInstanceArn :: Text
-    , _rrdiStackId          :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'RegisterRdsDbInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rrdiDbPassword' @::@ 'Text'
---
--- * 'rrdiDbUser' @::@ 'Text'
---
--- * 'rrdiRdsDbInstanceArn' @::@ 'Text'
---
--- * 'rrdiStackId' @::@ 'Text'
---
-registerRdsDbInstance :: Text -- ^ 'rrdiStackId'
-                      -> Text -- ^ 'rrdiRdsDbInstanceArn'
-                      -> Text -- ^ 'rrdiDbUser'
-                      -> Text -- ^ 'rrdiDbPassword'
-                      -> RegisterRdsDbInstance
-registerRdsDbInstance p1 p2 p3 p4 = RegisterRdsDbInstance
-    { _rrdiStackId          = p1
-    , _rrdiRdsDbInstanceArn = p2
-    , _rrdiDbUser           = p3
-    , _rrdiDbPassword       = p4
-    }
-
--- | The database password.
-rrdiDbPassword :: Lens' RegisterRdsDbInstance Text
-rrdiDbPassword = lens _rrdiDbPassword (\s a -> s { _rrdiDbPassword = a })
-
--- | The database's master user name.
-rrdiDbUser :: Lens' RegisterRdsDbInstance Text
-rrdiDbUser = lens _rrdiDbUser (\s a -> s { _rrdiDbUser = a })
-
--- | The Amazon RDS instance's ARN.
-rrdiRdsDbInstanceArn :: Lens' RegisterRdsDbInstance Text
-rrdiRdsDbInstanceArn =
-    lens _rrdiRdsDbInstanceArn (\s a -> s { _rrdiRdsDbInstanceArn = a })
-
--- | The stack ID.
-rrdiStackId :: Lens' RegisterRdsDbInstance Text
-rrdiStackId = lens _rrdiStackId (\s a -> s { _rrdiStackId = a })
-
-data RegisterRdsDbInstanceResponse = RegisterRdsDbInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'RegisterRdsDbInstanceResponse' constructor.
-registerRdsDbInstanceResponse :: RegisterRdsDbInstanceResponse
-registerRdsDbInstanceResponse = RegisterRdsDbInstanceResponse
-
-instance ToPath RegisterRdsDbInstance where
-    toPath = const "/"
-
-instance ToQuery RegisterRdsDbInstance where
-    toQuery = const mempty
-
-instance ToHeaders RegisterRdsDbInstance
-
-instance ToJSON RegisterRdsDbInstance where
-    toJSON RegisterRdsDbInstance{..} = object
-        [ "StackId"          .= _rrdiStackId
-        , "RdsDbInstanceArn" .= _rrdiRdsDbInstanceArn
-        , "DbUser"           .= _rrdiDbUser
-        , "DbPassword"       .= _rrdiDbPassword
-        ]
-
-instance AWSRequest RegisterRdsDbInstance where
-    type Sv RegisterRdsDbInstance = OpsWorks
-    type Rs RegisterRdsDbInstance = RegisterRdsDbInstanceResponse
-
-    request  = post "RegisterRdsDbInstance"
-    response = nullResponse RegisterRdsDbInstanceResponse
diff --git a/gen/Network/AWS/OpsWorks/RegisterVolume.hs b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
--- a/gen/Network/AWS/OpsWorks/RegisterVolume.hs
+++ b/gen/Network/AWS/OpsWorks/RegisterVolume.hs
@@ -1,129 +1,148 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.RegisterVolume
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Registers an Amazon EBS volume with a specified stack. A volume can be
+-- Registers an Amazon EBS volume with a specified stack. A volume can be
 -- registered with only one stack at a time. If the volume is already
--- registered, you must first deregister it by calling 'DeregisterVolume'. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+-- registered, you must first deregister it by calling DeregisterVolume.
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_RegisterVolume.html AWS API Reference> for RegisterVolume.
 module Network.AWS.OpsWorks.RegisterVolume
     (
-    -- * Request
-      RegisterVolume
-    -- ** Request constructor
-    , registerVolume
-    -- ** Request lenses
-    , rvEc2VolumeId
+    -- * Creating a Request
+      registerVolume
+    , RegisterVolume
+    -- * Request Lenses
+    , rvEC2VolumeId
     , rvStackId
 
-    -- * Response
-    , RegisterVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , registerVolumeResponse
-    -- ** Response lenses
-    , rvrVolumeId
+    , RegisterVolumeResponse
+    -- * Response Lenses
+    , rvrsVolumeId
+    , rvrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data RegisterVolume = RegisterVolume
-    { _rvEc2VolumeId :: Maybe Text
-    , _rvStackId     :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'registerVolume' smart constructor.
+data RegisterVolume = RegisterVolume'
+    { _rvEC2VolumeId :: !(Maybe Text)
+    , _rvStackId     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RegisterVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RegisterVolume' with the minimum fields required to make a request.
 --
--- * 'rvEc2VolumeId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rvStackId' @::@ 'Text'
+-- * 'rvEC2VolumeId'
 --
-registerVolume :: Text -- ^ 'rvStackId'
-               -> RegisterVolume
-registerVolume p1 = RegisterVolume
-    { _rvStackId     = p1
-    , _rvEc2VolumeId = Nothing
+-- * 'rvStackId'
+registerVolume
+    :: Text -- ^ 'rvStackId'
+    -> RegisterVolume
+registerVolume pStackId_ =
+    RegisterVolume'
+    { _rvEC2VolumeId = Nothing
+    , _rvStackId = pStackId_
     }
 
 -- | The Amazon EBS volume ID.
-rvEc2VolumeId :: Lens' RegisterVolume (Maybe Text)
-rvEc2VolumeId = lens _rvEc2VolumeId (\s a -> s { _rvEc2VolumeId = a })
+rvEC2VolumeId :: Lens' RegisterVolume (Maybe Text)
+rvEC2VolumeId = lens _rvEC2VolumeId (\ s a -> s{_rvEC2VolumeId = a});
 
 -- | The stack ID.
 rvStackId :: Lens' RegisterVolume Text
-rvStackId = lens _rvStackId (\s a -> s { _rvStackId = a })
+rvStackId = lens _rvStackId (\ s a -> s{_rvStackId = a});
 
-newtype RegisterVolumeResponse = RegisterVolumeResponse
-    { _rvrVolumeId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest RegisterVolume where
+        type Sv RegisterVolume = OpsWorks
+        type Rs RegisterVolume = RegisterVolumeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RegisterVolumeResponse' <$>
+                   (x .?> "VolumeId") <*> (pure (fromEnum s)))
 
--- | 'RegisterVolumeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rvrVolumeId' @::@ 'Maybe' 'Text'
---
-registerVolumeResponse :: RegisterVolumeResponse
-registerVolumeResponse = RegisterVolumeResponse
-    { _rvrVolumeId = Nothing
-    }
+instance ToHeaders RegisterVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.RegisterVolume" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The volume ID.
-rvrVolumeId :: Lens' RegisterVolumeResponse (Maybe Text)
-rvrVolumeId = lens _rvrVolumeId (\s a -> s { _rvrVolumeId = a })
+instance ToJSON RegisterVolume where
+        toJSON RegisterVolume'{..}
+          = object
+              ["Ec2VolumeId" .= _rvEC2VolumeId,
+               "StackId" .= _rvStackId]
 
 instance ToPath RegisterVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RegisterVolume where
-    toQuery = const mempty
-
-instance ToHeaders RegisterVolume
+        toQuery = const mempty
 
-instance ToJSON RegisterVolume where
-    toJSON RegisterVolume{..} = object
-        [ "Ec2VolumeId" .= _rvEc2VolumeId
-        , "StackId"     .= _rvStackId
-        ]
+-- | Contains the response to a 'RegisterVolume' request.
+--
+-- /See:/ 'registerVolumeResponse' smart constructor.
+data RegisterVolumeResponse = RegisterVolumeResponse'
+    { _rvrsVolumeId :: !(Maybe Text)
+    , _rvrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RegisterVolume where
-    type Sv RegisterVolume = OpsWorks
-    type Rs RegisterVolume = RegisterVolumeResponse
+-- | Creates a value of 'RegisterVolumeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rvrsVolumeId'
+--
+-- * 'rvrsStatus'
+registerVolumeResponse
+    :: Int -- ^ 'rvrsStatus'
+    -> RegisterVolumeResponse
+registerVolumeResponse pStatus_ =
+    RegisterVolumeResponse'
+    { _rvrsVolumeId = Nothing
+    , _rvrsStatus = pStatus_
+    }
 
-    request  = post "RegisterVolume"
-    response = jsonResponse
+-- | The volume ID.
+rvrsVolumeId :: Lens' RegisterVolumeResponse (Maybe Text)
+rvrsVolumeId = lens _rvrsVolumeId (\ s a -> s{_rvrsVolumeId = a});
 
-instance FromJSON RegisterVolumeResponse where
-    parseJSON = withObject "RegisterVolumeResponse" $ \o -> RegisterVolumeResponse
-        <$> o .:? "VolumeId"
+-- | The response status code.
+rvrsStatus :: Lens' RegisterVolumeResponse Int
+rvrsStatus = lens _rvrsStatus (\ s a -> s{_rvrsStatus = a});
diff --git a/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/SetLoadBasedAutoScaling.hs
@@ -1,138 +1,150 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.SetLoadBasedAutoScaling
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Specify the load-based auto scaling configuration for a specified layer. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autoscaling.html Managing Load with Time-based and Load-based Instances>.
+-- Specify the load-based auto scaling configuration for a specified layer.
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autoscaling.html Managing Load with Time-based and Load-based Instances>.
 --
 -- To use load-based auto scaling, you must create a set of load-based auto
--- scaling instances. Load-based auto scaling operates only on the instances
--- from that set, so you must ensure that you have created enough instances to
--- handle the maximum anticipated load.
+-- scaling instances. Load-based auto scaling operates only on the
+-- instances from that set, so you must ensure that you have created enough
+-- instances to handle the maximum anticipated load.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetLoadBasedAutoScaling.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetLoadBasedAutoScaling.html AWS API Reference> for SetLoadBasedAutoScaling.
 module Network.AWS.OpsWorks.SetLoadBasedAutoScaling
     (
-    -- * Request
-      SetLoadBasedAutoScaling
-    -- ** Request constructor
-    , setLoadBasedAutoScaling
-    -- ** Request lenses
-    , slbasDownScaling
+    -- * Creating a Request
+      setLoadBasedAutoScaling
+    , SetLoadBasedAutoScaling
+    -- * Request Lenses
+    , slbasUpScaling
     , slbasEnable
+    , slbasDownScaling
     , slbasLayerId
-    , slbasUpScaling
 
-    -- * Response
-    , SetLoadBasedAutoScalingResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setLoadBasedAutoScalingResponse
+    , SetLoadBasedAutoScalingResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetLoadBasedAutoScaling = SetLoadBasedAutoScaling
-    { _slbasDownScaling :: Maybe AutoScalingThresholds
-    , _slbasEnable      :: Maybe Bool
-    , _slbasLayerId     :: Text
-    , _slbasUpScaling   :: Maybe AutoScalingThresholds
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'setLoadBasedAutoScaling' smart constructor.
+data SetLoadBasedAutoScaling = SetLoadBasedAutoScaling'
+    { _slbasUpScaling   :: !(Maybe AutoScalingThresholds)
+    , _slbasEnable      :: !(Maybe Bool)
+    , _slbasDownScaling :: !(Maybe AutoScalingThresholds)
+    , _slbasLayerId     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetLoadBasedAutoScaling' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetLoadBasedAutoScaling' with the minimum fields required to make a request.
 --
--- * 'slbasDownScaling' @::@ 'Maybe' 'AutoScalingThresholds'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'slbasEnable' @::@ 'Maybe' 'Bool'
+-- * 'slbasUpScaling'
 --
--- * 'slbasLayerId' @::@ 'Text'
+-- * 'slbasEnable'
 --
--- * 'slbasUpScaling' @::@ 'Maybe' 'AutoScalingThresholds'
+-- * 'slbasDownScaling'
 --
-setLoadBasedAutoScaling :: Text -- ^ 'slbasLayerId'
-                        -> SetLoadBasedAutoScaling
-setLoadBasedAutoScaling p1 = SetLoadBasedAutoScaling
-    { _slbasLayerId     = p1
-    , _slbasEnable      = Nothing
-    , _slbasUpScaling   = Nothing
+-- * 'slbasLayerId'
+setLoadBasedAutoScaling
+    :: Text -- ^ 'slbasLayerId'
+    -> SetLoadBasedAutoScaling
+setLoadBasedAutoScaling pLayerId_ =
+    SetLoadBasedAutoScaling'
+    { _slbasUpScaling = Nothing
+    , _slbasEnable = Nothing
     , _slbasDownScaling = Nothing
+    , _slbasLayerId = pLayerId_
     }
 
--- | An 'AutoScalingThresholds' object with the downscaling threshold configuration.
--- If the load falls below these thresholds for a specified amount of time, AWS
--- OpsWorks stops a specified number of instances.
-slbasDownScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
-slbasDownScaling = lens _slbasDownScaling (\s a -> s { _slbasDownScaling = a })
+-- | An 'AutoScalingThresholds' object with the upscaling threshold
+-- configuration. If the load exceeds these thresholds for a specified
+-- amount of time, AWS OpsWorks starts a specified number of instances.
+slbasUpScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
+slbasUpScaling = lens _slbasUpScaling (\ s a -> s{_slbasUpScaling = a});
 
 -- | Enables load-based auto scaling for the layer.
 slbasEnable :: Lens' SetLoadBasedAutoScaling (Maybe Bool)
-slbasEnable = lens _slbasEnable (\s a -> s { _slbasEnable = a })
+slbasEnable = lens _slbasEnable (\ s a -> s{_slbasEnable = a});
 
+-- | An 'AutoScalingThresholds' object with the downscaling threshold
+-- configuration. If the load falls below these thresholds for a specified
+-- amount of time, AWS OpsWorks stops a specified number of instances.
+slbasDownScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
+slbasDownScaling = lens _slbasDownScaling (\ s a -> s{_slbasDownScaling = a});
+
 -- | The layer ID.
 slbasLayerId :: Lens' SetLoadBasedAutoScaling Text
-slbasLayerId = lens _slbasLayerId (\s a -> s { _slbasLayerId = a })
+slbasLayerId = lens _slbasLayerId (\ s a -> s{_slbasLayerId = a});
 
--- | An 'AutoScalingThresholds' object with the upscaling threshold configuration.
--- If the load exceeds these thresholds for a specified amount of time, AWS
--- OpsWorks starts a specified number of instances.
-slbasUpScaling :: Lens' SetLoadBasedAutoScaling (Maybe AutoScalingThresholds)
-slbasUpScaling = lens _slbasUpScaling (\s a -> s { _slbasUpScaling = a })
+instance AWSRequest SetLoadBasedAutoScaling where
+        type Sv SetLoadBasedAutoScaling = OpsWorks
+        type Rs SetLoadBasedAutoScaling =
+             SetLoadBasedAutoScalingResponse
+        request = postJSON
+        response
+          = receiveNull SetLoadBasedAutoScalingResponse'
 
-data SetLoadBasedAutoScalingResponse = SetLoadBasedAutoScalingResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance ToHeaders SetLoadBasedAutoScaling where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.SetLoadBasedAutoScaling" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'SetLoadBasedAutoScalingResponse' constructor.
-setLoadBasedAutoScalingResponse :: SetLoadBasedAutoScalingResponse
-setLoadBasedAutoScalingResponse = SetLoadBasedAutoScalingResponse
+instance ToJSON SetLoadBasedAutoScaling where
+        toJSON SetLoadBasedAutoScaling'{..}
+          = object
+              ["UpScaling" .= _slbasUpScaling,
+               "Enable" .= _slbasEnable,
+               "DownScaling" .= _slbasDownScaling,
+               "LayerId" .= _slbasLayerId]
 
 instance ToPath SetLoadBasedAutoScaling where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetLoadBasedAutoScaling where
-    toQuery = const mempty
-
-instance ToHeaders SetLoadBasedAutoScaling
-
-instance ToJSON SetLoadBasedAutoScaling where
-    toJSON SetLoadBasedAutoScaling{..} = object
-        [ "LayerId"     .= _slbasLayerId
-        , "Enable"      .= _slbasEnable
-        , "UpScaling"   .= _slbasUpScaling
-        , "DownScaling" .= _slbasDownScaling
-        ]
+        toQuery = const mempty
 
-instance AWSRequest SetLoadBasedAutoScaling where
-    type Sv SetLoadBasedAutoScaling = OpsWorks
-    type Rs SetLoadBasedAutoScaling = SetLoadBasedAutoScalingResponse
+-- | /See:/ 'setLoadBasedAutoScalingResponse' smart constructor.
+data SetLoadBasedAutoScalingResponse =
+    SetLoadBasedAutoScalingResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetLoadBasedAutoScaling"
-    response = nullResponse SetLoadBasedAutoScalingResponse
+-- | Creates a value of 'SetLoadBasedAutoScalingResponse' with the minimum fields required to make a request.
+--
+setLoadBasedAutoScalingResponse
+    :: SetLoadBasedAutoScalingResponse
+setLoadBasedAutoScalingResponse = SetLoadBasedAutoScalingResponse'
diff --git a/gen/Network/AWS/OpsWorks/SetPermission.hs b/gen/Network/AWS/OpsWorks/SetPermission.hs
--- a/gen/Network/AWS/OpsWorks/SetPermission.hs
+++ b/gen/Network/AWS/OpsWorks/SetPermission.hs
@@ -1,143 +1,157 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.SetPermission
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Specifies a user's permissions. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingsecurity.html Security andPermissions>.
+-- Specifies a user\'s permissions. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingsecurity.html Security and Permissions>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetPermission.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetPermission.html AWS API Reference> for SetPermission.
 module Network.AWS.OpsWorks.SetPermission
     (
-    -- * Request
-      SetPermission
-    -- ** Request constructor
-    , setPermission
-    -- ** Request lenses
-    , spAllowSsh
+    -- * Creating a Request
+      setPermission
+    , SetPermission
+    -- * Request Lenses
     , spAllowSudo
-    , spIamUserArn
     , spLevel
+    , spAllowSSH
     , spStackId
+    , spIAMUserARN
 
-    -- * Response
-    , SetPermissionResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setPermissionResponse
+    , SetPermissionResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetPermission = SetPermission
-    { _spAllowSsh   :: Maybe Bool
-    , _spAllowSudo  :: Maybe Bool
-    , _spIamUserArn :: Text
-    , _spLevel      :: Maybe Text
-    , _spStackId    :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'setPermission' smart constructor.
+data SetPermission = SetPermission'
+    { _spAllowSudo  :: !(Maybe Bool)
+    , _spLevel      :: !(Maybe Text)
+    , _spAllowSSH   :: !(Maybe Bool)
+    , _spStackId    :: !Text
+    , _spIAMUserARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetPermission' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetPermission' with the minimum fields required to make a request.
 --
--- * 'spAllowSsh' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'spAllowSudo' @::@ 'Maybe' 'Bool'
+-- * 'spAllowSudo'
 --
--- * 'spIamUserArn' @::@ 'Text'
+-- * 'spLevel'
 --
--- * 'spLevel' @::@ 'Maybe' 'Text'
+-- * 'spAllowSSH'
 --
--- * 'spStackId' @::@ 'Text'
+-- * 'spStackId'
 --
-setPermission :: Text -- ^ 'spStackId'
-              -> Text -- ^ 'spIamUserArn'
-              -> SetPermission
-setPermission p1 p2 = SetPermission
-    { _spStackId    = p1
-    , _spIamUserArn = p2
-    , _spAllowSsh   = Nothing
-    , _spAllowSudo  = Nothing
-    , _spLevel      = Nothing
+-- * 'spIAMUserARN'
+setPermission
+    :: Text -- ^ 'spStackId'
+    -> Text -- ^ 'spIAMUserARN'
+    -> SetPermission
+setPermission pStackId_ pIAMUserARN_ =
+    SetPermission'
+    { _spAllowSudo = Nothing
+    , _spLevel = Nothing
+    , _spAllowSSH = Nothing
+    , _spStackId = pStackId_
+    , _spIAMUserARN = pIAMUserARN_
     }
 
--- | The user is allowed to use SSH to communicate with the instance.
-spAllowSsh :: Lens' SetPermission (Maybe Bool)
-spAllowSsh = lens _spAllowSsh (\s a -> s { _spAllowSsh = a })
-
--- | The user is allowed to use sudo to elevate privileges.
+-- | The user is allowed to use __sudo__ to elevate privileges.
 spAllowSudo :: Lens' SetPermission (Maybe Bool)
-spAllowSudo = lens _spAllowSudo (\s a -> s { _spAllowSudo = a })
-
--- | The user's IAM ARN.
-spIamUserArn :: Lens' SetPermission Text
-spIamUserArn = lens _spIamUserArn (\s a -> s { _spIamUserArn = a })
+spAllowSudo = lens _spAllowSudo (\ s a -> s{_spAllowSudo = a});
 
--- | The user's permission level, which must be set to one of the following
+-- | The user\'s permission level, which must be set to one of the following
 -- strings. You cannot set your own permissions level.
 --
--- 'deny'   'show'   'deploy'   'manage'   'iam_only'   For more information on the
--- permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
+-- -   'deny'
+-- -   'show'
+-- -   'deploy'
+-- -   'manage'
+-- -   'iam_only'
+--
+-- For more information on the permissions associated with these levels,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 spLevel :: Lens' SetPermission (Maybe Text)
-spLevel = lens _spLevel (\s a -> s { _spLevel = a })
+spLevel = lens _spLevel (\ s a -> s{_spLevel = a});
 
+-- | The user is allowed to use SSH to communicate with the instance.
+spAllowSSH :: Lens' SetPermission (Maybe Bool)
+spAllowSSH = lens _spAllowSSH (\ s a -> s{_spAllowSSH = a});
+
 -- | The stack ID.
 spStackId :: Lens' SetPermission Text
-spStackId = lens _spStackId (\s a -> s { _spStackId = a })
+spStackId = lens _spStackId (\ s a -> s{_spStackId = a});
 
-data SetPermissionResponse = SetPermissionResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The user\'s IAM ARN.
+spIAMUserARN :: Lens' SetPermission Text
+spIAMUserARN = lens _spIAMUserARN (\ s a -> s{_spIAMUserARN = a});
 
--- | 'SetPermissionResponse' constructor.
-setPermissionResponse :: SetPermissionResponse
-setPermissionResponse = SetPermissionResponse
+instance AWSRequest SetPermission where
+        type Sv SetPermission = OpsWorks
+        type Rs SetPermission = SetPermissionResponse
+        request = postJSON
+        response = receiveNull SetPermissionResponse'
 
-instance ToPath SetPermission where
-    toPath = const "/"
+instance ToHeaders SetPermission where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.SetPermission" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance ToQuery SetPermission where
-    toQuery = const mempty
+instance ToJSON SetPermission where
+        toJSON SetPermission'{..}
+          = object
+              ["AllowSudo" .= _spAllowSudo, "Level" .= _spLevel,
+               "AllowSsh" .= _spAllowSSH, "StackId" .= _spStackId,
+               "IamUserArn" .= _spIAMUserARN]
 
-instance ToHeaders SetPermission
+instance ToPath SetPermission where
+        toPath = const "/"
 
-instance ToJSON SetPermission where
-    toJSON SetPermission{..} = object
-        [ "StackId"    .= _spStackId
-        , "IamUserArn" .= _spIamUserArn
-        , "AllowSsh"   .= _spAllowSsh
-        , "AllowSudo"  .= _spAllowSudo
-        , "Level"      .= _spLevel
-        ]
+instance ToQuery SetPermission where
+        toQuery = const mempty
 
-instance AWSRequest SetPermission where
-    type Sv SetPermission = OpsWorks
-    type Rs SetPermission = SetPermissionResponse
+-- | /See:/ 'setPermissionResponse' smart constructor.
+data SetPermissionResponse =
+    SetPermissionResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetPermission"
-    response = nullResponse SetPermissionResponse
+-- | Creates a value of 'SetPermissionResponse' with the minimum fields required to make a request.
+--
+setPermissionResponse
+    :: SetPermissionResponse
+setPermissionResponse = SetPermissionResponse'
diff --git a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
--- a/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
+++ b/gen/Network/AWS/OpsWorks/SetTimeBasedAutoScaling.hs
@@ -1,111 +1,121 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.SetTimeBasedAutoScaling
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Specify the time-based auto scaling configuration for a specified instance.
--- For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autoscaling.html Managing Load with Time-based and Load-basedInstances>.
+-- Specify the time-based auto scaling configuration for a specified
+-- instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-autoscaling.html Managing Load with Time-based and Load-based Instances>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetTimeBasedAutoScaling.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_SetTimeBasedAutoScaling.html AWS API Reference> for SetTimeBasedAutoScaling.
 module Network.AWS.OpsWorks.SetTimeBasedAutoScaling
     (
-    -- * Request
-      SetTimeBasedAutoScaling
-    -- ** Request constructor
-    , setTimeBasedAutoScaling
-    -- ** Request lenses
+    -- * Creating a Request
+      setTimeBasedAutoScaling
+    , SetTimeBasedAutoScaling
+    -- * Request Lenses
     , stbasAutoScalingSchedule
     , stbasInstanceId
 
-    -- * Response
-    , SetTimeBasedAutoScalingResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , setTimeBasedAutoScalingResponse
+    , SetTimeBasedAutoScalingResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data SetTimeBasedAutoScaling = SetTimeBasedAutoScaling
-    { _stbasAutoScalingSchedule :: Maybe WeeklyAutoScalingSchedule
-    , _stbasInstanceId          :: Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'setTimeBasedAutoScaling' smart constructor.
+data SetTimeBasedAutoScaling = SetTimeBasedAutoScaling'
+    { _stbasAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
+    , _stbasInstanceId          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'SetTimeBasedAutoScaling' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'SetTimeBasedAutoScaling' with the minimum fields required to make a request.
 --
--- * 'stbasAutoScalingSchedule' @::@ 'Maybe' 'WeeklyAutoScalingSchedule'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'stbasInstanceId' @::@ 'Text'
+-- * 'stbasAutoScalingSchedule'
 --
-setTimeBasedAutoScaling :: Text -- ^ 'stbasInstanceId'
-                        -> SetTimeBasedAutoScaling
-setTimeBasedAutoScaling p1 = SetTimeBasedAutoScaling
-    { _stbasInstanceId          = p1
-    , _stbasAutoScalingSchedule = Nothing
+-- * 'stbasInstanceId'
+setTimeBasedAutoScaling
+    :: Text -- ^ 'stbasInstanceId'
+    -> SetTimeBasedAutoScaling
+setTimeBasedAutoScaling pInstanceId_ =
+    SetTimeBasedAutoScaling'
+    { _stbasAutoScalingSchedule = Nothing
+    , _stbasInstanceId = pInstanceId_
     }
 
 -- | An 'AutoScalingSchedule' with the instance schedule.
 stbasAutoScalingSchedule :: Lens' SetTimeBasedAutoScaling (Maybe WeeklyAutoScalingSchedule)
-stbasAutoScalingSchedule =
-    lens _stbasAutoScalingSchedule
-        (\s a -> s { _stbasAutoScalingSchedule = a })
+stbasAutoScalingSchedule = lens _stbasAutoScalingSchedule (\ s a -> s{_stbasAutoScalingSchedule = a});
 
 -- | The instance ID.
 stbasInstanceId :: Lens' SetTimeBasedAutoScaling Text
-stbasInstanceId = lens _stbasInstanceId (\s a -> s { _stbasInstanceId = a })
+stbasInstanceId = lens _stbasInstanceId (\ s a -> s{_stbasInstanceId = a});
 
-data SetTimeBasedAutoScalingResponse = SetTimeBasedAutoScalingResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest SetTimeBasedAutoScaling where
+        type Sv SetTimeBasedAutoScaling = OpsWorks
+        type Rs SetTimeBasedAutoScaling =
+             SetTimeBasedAutoScalingResponse
+        request = postJSON
+        response
+          = receiveNull SetTimeBasedAutoScalingResponse'
 
--- | 'SetTimeBasedAutoScalingResponse' constructor.
-setTimeBasedAutoScalingResponse :: SetTimeBasedAutoScalingResponse
-setTimeBasedAutoScalingResponse = SetTimeBasedAutoScalingResponse
+instance ToHeaders SetTimeBasedAutoScaling where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.SetTimeBasedAutoScaling" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON SetTimeBasedAutoScaling where
+        toJSON SetTimeBasedAutoScaling'{..}
+          = object
+              ["AutoScalingSchedule" .= _stbasAutoScalingSchedule,
+               "InstanceId" .= _stbasInstanceId]
+
 instance ToPath SetTimeBasedAutoScaling where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery SetTimeBasedAutoScaling where
-    toQuery = const mempty
-
-instance ToHeaders SetTimeBasedAutoScaling
-
-instance ToJSON SetTimeBasedAutoScaling where
-    toJSON SetTimeBasedAutoScaling{..} = object
-        [ "InstanceId"          .= _stbasInstanceId
-        , "AutoScalingSchedule" .= _stbasAutoScalingSchedule
-        ]
+        toQuery = const mempty
 
-instance AWSRequest SetTimeBasedAutoScaling where
-    type Sv SetTimeBasedAutoScaling = OpsWorks
-    type Rs SetTimeBasedAutoScaling = SetTimeBasedAutoScalingResponse
+-- | /See:/ 'setTimeBasedAutoScalingResponse' smart constructor.
+data SetTimeBasedAutoScalingResponse =
+    SetTimeBasedAutoScalingResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "SetTimeBasedAutoScaling"
-    response = nullResponse SetTimeBasedAutoScalingResponse
+-- | Creates a value of 'SetTimeBasedAutoScalingResponse' with the minimum fields required to make a request.
+--
+setTimeBasedAutoScalingResponse
+    :: SetTimeBasedAutoScalingResponse
+setTimeBasedAutoScalingResponse = SetTimeBasedAutoScalingResponse'
diff --git a/gen/Network/AWS/OpsWorks/StartInstance.hs b/gen/Network/AWS/OpsWorks/StartInstance.hs
--- a/gen/Network/AWS/OpsWorks/StartInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StartInstance.hs
@@ -1,98 +1,106 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.StartInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Starts a specified instance. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping,and Rebooting Instances>.
+-- Starts a specified instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping, and Rebooting Instances>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StartInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StartInstance.html AWS API Reference> for StartInstance.
 module Network.AWS.OpsWorks.StartInstance
     (
-    -- * Request
-      StartInstance
-    -- ** Request constructor
-    , startInstance
-    -- ** Request lenses
-    , si1InstanceId
+    -- * Creating a Request
+      startInstance
+    , StartInstance
+    -- * Request Lenses
+    , sInstanceId
 
-    -- * Response
-    , StartInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , startInstanceResponse
+    , StartInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype StartInstance = StartInstance
-    { _si1InstanceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'startInstance' smart constructor.
+newtype StartInstance = StartInstance'
+    { _sInstanceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StartInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StartInstance' with the minimum fields required to make a request.
 --
--- * 'si1InstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-startInstance :: Text -- ^ 'si1InstanceId'
-              -> StartInstance
-startInstance p1 = StartInstance
-    { _si1InstanceId = p1
+-- * 'sInstanceId'
+startInstance
+    :: Text -- ^ 'sInstanceId'
+    -> StartInstance
+startInstance pInstanceId_ =
+    StartInstance'
+    { _sInstanceId = pInstanceId_
     }
 
 -- | The instance ID.
-si1InstanceId :: Lens' StartInstance Text
-si1InstanceId = lens _si1InstanceId (\s a -> s { _si1InstanceId = a })
+sInstanceId :: Lens' StartInstance Text
+sInstanceId = lens _sInstanceId (\ s a -> s{_sInstanceId = a});
 
-data StartInstanceResponse = StartInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StartInstance where
+        type Sv StartInstance = OpsWorks
+        type Rs StartInstance = StartInstanceResponse
+        request = postJSON
+        response = receiveNull StartInstanceResponse'
 
--- | 'StartInstanceResponse' constructor.
-startInstanceResponse :: StartInstanceResponse
-startInstanceResponse = StartInstanceResponse
+instance ToHeaders StartInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.StartInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StartInstance where
+        toJSON StartInstance'{..}
+          = object ["InstanceId" .= _sInstanceId]
+
 instance ToPath StartInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StartInstance where
-    toQuery = const mempty
-
-instance ToHeaders StartInstance
-
-instance ToJSON StartInstance where
-    toJSON StartInstance{..} = object
-        [ "InstanceId" .= _si1InstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StartInstance where
-    type Sv StartInstance = OpsWorks
-    type Rs StartInstance = StartInstanceResponse
+-- | /See:/ 'startInstanceResponse' smart constructor.
+data StartInstanceResponse =
+    StartInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StartInstance"
-    response = nullResponse StartInstanceResponse
+-- | Creates a value of 'StartInstanceResponse' with the minimum fields required to make a request.
+--
+startInstanceResponse
+    :: StartInstanceResponse
+startInstanceResponse = StartInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/StartStack.hs b/gen/Network/AWS/OpsWorks/StartStack.hs
--- a/gen/Network/AWS/OpsWorks/StartStack.hs
+++ b/gen/Network/AWS/OpsWorks/StartStack.hs
@@ -1,98 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.StartStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Starts a stack's instances.
+-- Starts a stack\'s instances.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StartStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StartStack.html AWS API Reference> for StartStack.
 module Network.AWS.OpsWorks.StartStack
     (
-    -- * Request
-      StartStack
-    -- ** Request constructor
-    , startStack
-    -- ** Request lenses
-    , ss2StackId
+    -- * Creating a Request
+      startStack
+    , StartStack
+    -- * Request Lenses
+    , staStackId
 
-    -- * Response
-    , StartStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , startStackResponse
+    , StartStackResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype StartStack = StartStack
-    { _ss2StackId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'startStack' smart constructor.
+newtype StartStack = StartStack'
+    { _staStackId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StartStack' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StartStack' with the minimum fields required to make a request.
 --
--- * 'ss2StackId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-startStack :: Text -- ^ 'ss2StackId'
-           -> StartStack
-startStack p1 = StartStack
-    { _ss2StackId = p1
+-- * 'staStackId'
+startStack
+    :: Text -- ^ 'staStackId'
+    -> StartStack
+startStack pStackId_ =
+    StartStack'
+    { _staStackId = pStackId_
     }
 
 -- | The stack ID.
-ss2StackId :: Lens' StartStack Text
-ss2StackId = lens _ss2StackId (\s a -> s { _ss2StackId = a })
+staStackId :: Lens' StartStack Text
+staStackId = lens _staStackId (\ s a -> s{_staStackId = a});
 
-data StartStackResponse = StartStackResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StartStack where
+        type Sv StartStack = OpsWorks
+        type Rs StartStack = StartStackResponse
+        request = postJSON
+        response = receiveNull StartStackResponse'
 
--- | 'StartStackResponse' constructor.
-startStackResponse :: StartStackResponse
-startStackResponse = StartStackResponse
+instance ToHeaders StartStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.StartStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StartStack where
+        toJSON StartStack'{..}
+          = object ["StackId" .= _staStackId]
+
 instance ToPath StartStack where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StartStack where
-    toQuery = const mempty
-
-instance ToHeaders StartStack
-
-instance ToJSON StartStack where
-    toJSON StartStack{..} = object
-        [ "StackId" .= _ss2StackId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StartStack where
-    type Sv StartStack = OpsWorks
-    type Rs StartStack = StartStackResponse
+-- | /See:/ 'startStackResponse' smart constructor.
+data StartStackResponse =
+    StartStackResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StartStack"
-    response = nullResponse StartStackResponse
+-- | Creates a value of 'StartStackResponse' with the minimum fields required to make a request.
+--
+startStackResponse
+    :: StartStackResponse
+startStackResponse = StartStackResponse'
diff --git a/gen/Network/AWS/OpsWorks/StopInstance.hs b/gen/Network/AWS/OpsWorks/StopInstance.hs
--- a/gen/Network/AWS/OpsWorks/StopInstance.hs
+++ b/gen/Network/AWS/OpsWorks/StopInstance.hs
@@ -1,101 +1,109 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.StopInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Stops a specified instance. When you stop a standard instance, the data
--- disappears and must be reinstalled when you restart the instance. You can
--- stop an Amazon EBS-backed instance without losing data. For more information,
--- see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping, and Rebooting Instances>.
+-- Stops a specified instance. When you stop a standard instance, the data
+-- disappears and must be reinstalled when you restart the instance. You
+-- can stop an Amazon EBS-backed instance without losing data. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-starting.html Starting, Stopping, and Rebooting Instances>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StopInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StopInstance.html AWS API Reference> for StopInstance.
 module Network.AWS.OpsWorks.StopInstance
     (
-    -- * Request
-      StopInstance
-    -- ** Request constructor
-    , stopInstance
-    -- ** Request lenses
+    -- * Creating a Request
+      stopInstance
+    , StopInstance
+    -- * Request Lenses
     , siInstanceId
 
-    -- * Response
-    , StopInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , stopInstanceResponse
+    , StopInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype StopInstance = StopInstance
+-- | /See:/ 'stopInstance' smart constructor.
+newtype StopInstance = StopInstance'
     { _siInstanceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StopInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StopInstance' with the minimum fields required to make a request.
 --
--- * 'siInstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-stopInstance :: Text -- ^ 'siInstanceId'
-             -> StopInstance
-stopInstance p1 = StopInstance
-    { _siInstanceId = p1
+-- * 'siInstanceId'
+stopInstance
+    :: Text -- ^ 'siInstanceId'
+    -> StopInstance
+stopInstance pInstanceId_ =
+    StopInstance'
+    { _siInstanceId = pInstanceId_
     }
 
 -- | The instance ID.
 siInstanceId :: Lens' StopInstance Text
-siInstanceId = lens _siInstanceId (\s a -> s { _siInstanceId = a })
+siInstanceId = lens _siInstanceId (\ s a -> s{_siInstanceId = a});
 
-data StopInstanceResponse = StopInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StopInstance where
+        type Sv StopInstance = OpsWorks
+        type Rs StopInstance = StopInstanceResponse
+        request = postJSON
+        response = receiveNull StopInstanceResponse'
 
--- | 'StopInstanceResponse' constructor.
-stopInstanceResponse :: StopInstanceResponse
-stopInstanceResponse = StopInstanceResponse
+instance ToHeaders StopInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.StopInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StopInstance where
+        toJSON StopInstance'{..}
+          = object ["InstanceId" .= _siInstanceId]
+
 instance ToPath StopInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StopInstance where
-    toQuery = const mempty
-
-instance ToHeaders StopInstance
-
-instance ToJSON StopInstance where
-    toJSON StopInstance{..} = object
-        [ "InstanceId" .= _siInstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StopInstance where
-    type Sv StopInstance = OpsWorks
-    type Rs StopInstance = StopInstanceResponse
+-- | /See:/ 'stopInstanceResponse' smart constructor.
+data StopInstanceResponse =
+    StopInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StopInstance"
-    response = nullResponse StopInstanceResponse
+-- | Creates a value of 'StopInstanceResponse' with the minimum fields required to make a request.
+--
+stopInstanceResponse
+    :: StopInstanceResponse
+stopInstanceResponse = StopInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/StopStack.hs b/gen/Network/AWS/OpsWorks/StopStack.hs
--- a/gen/Network/AWS/OpsWorks/StopStack.hs
+++ b/gen/Network/AWS/OpsWorks/StopStack.hs
@@ -1,98 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.StopStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Stops a specified stack.
+-- Stops a specified stack.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StopStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_StopStack.html AWS API Reference> for StopStack.
 module Network.AWS.OpsWorks.StopStack
     (
-    -- * Request
-      StopStack
-    -- ** Request constructor
-    , stopStack
-    -- ** Request lenses
-    , ss1StackId
+    -- * Creating a Request
+      stopStack
+    , StopStack
+    -- * Request Lenses
+    , stoStackId
 
-    -- * Response
-    , StopStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , stopStackResponse
+    , StopStackResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype StopStack = StopStack
-    { _ss1StackId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'stopStack' smart constructor.
+newtype StopStack = StopStack'
+    { _stoStackId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StopStack' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StopStack' with the minimum fields required to make a request.
 --
--- * 'ss1StackId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-stopStack :: Text -- ^ 'ss1StackId'
-          -> StopStack
-stopStack p1 = StopStack
-    { _ss1StackId = p1
+-- * 'stoStackId'
+stopStack
+    :: Text -- ^ 'stoStackId'
+    -> StopStack
+stopStack pStackId_ =
+    StopStack'
+    { _stoStackId = pStackId_
     }
 
 -- | The stack ID.
-ss1StackId :: Lens' StopStack Text
-ss1StackId = lens _ss1StackId (\s a -> s { _ss1StackId = a })
+stoStackId :: Lens' StopStack Text
+stoStackId = lens _stoStackId (\ s a -> s{_stoStackId = a});
 
-data StopStackResponse = StopStackResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest StopStack where
+        type Sv StopStack = OpsWorks
+        type Rs StopStack = StopStackResponse
+        request = postJSON
+        response = receiveNull StopStackResponse'
 
--- | 'StopStackResponse' constructor.
-stopStackResponse :: StopStackResponse
-stopStackResponse = StopStackResponse
+instance ToHeaders StopStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.StopStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON StopStack where
+        toJSON StopStack'{..}
+          = object ["StackId" .= _stoStackId]
+
 instance ToPath StopStack where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StopStack where
-    toQuery = const mempty
-
-instance ToHeaders StopStack
-
-instance ToJSON StopStack where
-    toJSON StopStack{..} = object
-        [ "StackId" .= _ss1StackId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest StopStack where
-    type Sv StopStack = OpsWorks
-    type Rs StopStack = StopStackResponse
+-- | /See:/ 'stopStackResponse' smart constructor.
+data StopStackResponse =
+    StopStackResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "StopStack"
-    response = nullResponse StopStackResponse
+-- | Creates a value of 'StopStackResponse' with the minimum fields required to make a request.
+--
+stopStackResponse
+    :: StopStackResponse
+stopStackResponse = StopStackResponse'
diff --git a/gen/Network/AWS/OpsWorks/Types.hs b/gen/Network/AWS/OpsWorks/Types.hs
--- a/gen/Network/AWS/OpsWorks/Types.hs
+++ b/gen/Network/AWS/OpsWorks/Types.hs
@@ -1,4724 +1,553 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.Types
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
-module Network.AWS.OpsWorks.Types
-    (
-    -- * Service
-      OpsWorks
-    -- ** Error
-    , JSONError
-
-    -- * SslConfiguration
-    , SslConfiguration
-    , sslConfiguration
-    , scCertificate
-    , scChain
-    , scPrivateKey
-
-    -- * VirtualizationType
-    , VirtualizationType (..)
-
-    -- * Command
-    , Command
-    , command
-    , cAcknowledgedAt
-    , cCommandId
-    , cCompletedAt
-    , cCreatedAt
-    , cDeploymentId
-    , cExitCode
-    , cInstanceId
-    , cLogUrl
-    , cStatus
-    , cType
-
-    -- * RaidArray
-    , RaidArray
-    , raidArray
-    , raAvailabilityZone
-    , raCreatedAt
-    , raDevice
-    , raInstanceId
-    , raIops
-    , raMountPoint
-    , raName
-    , raNumberOfDisks
-    , raRaidArrayId
-    , raRaidLevel
-    , raSize
-    , raStackId
-    , raVolumeType
-
-    -- * ElasticLoadBalancer
-    , ElasticLoadBalancer
-    , elasticLoadBalancer
-    , elbAvailabilityZones
-    , elbDnsName
-    , elbEc2InstanceIds
-    , elbElasticLoadBalancerName
-    , elbLayerId
-    , elbRegion
-    , elbStackId
-    , elbSubnetIds
-    , elbVpcId
-
-    -- * LifecycleEventConfiguration
-    , LifecycleEventConfiguration
-    , lifecycleEventConfiguration
-    , lecShutdown
-
-    -- * RdsDbInstance
-    , RdsDbInstance
-    , rdsDbInstance
-    , rdiAddress
-    , rdiDbInstanceIdentifier
-    , rdiDbPassword
-    , rdiDbUser
-    , rdiEngine
-    , rdiMissingOnRds
-    , rdiRdsDbInstanceArn
-    , rdiRegion
-    , rdiStackId
-
-    -- * AppAttributesKeys
-    , AppAttributesKeys (..)
-
-    -- * ServiceError'
-    , ServiceError'
-    , serviceError'
-    , seCreatedAt
-    , seInstanceId
-    , seMessage
-    , seServiceErrorId
-    , seStackId
-    , seType
-
-    -- * StackSummary
-    , StackSummary
-    , stackSummary
-    , ssAppsCount
-    , ssArn
-    , ssInstancesCount
-    , ssLayersCount
-    , ssName
-    , ssStackId
-
-    -- * BlockDeviceMapping
-    , BlockDeviceMapping
-    , blockDeviceMapping
-    , bdmDeviceName
-    , bdmEbs
-    , bdmNoDevice
-    , bdmVirtualName
-
-    -- * StackAttributesKeys
-    , StackAttributesKeys (..)
-
-    -- * LoadBasedAutoScalingConfiguration
-    , LoadBasedAutoScalingConfiguration
-    , loadBasedAutoScalingConfiguration
-    , lbascDownScaling
-    , lbascEnable
-    , lbascLayerId
-    , lbascUpScaling
-
-    -- * SourceType
-    , SourceType (..)
-
-    -- * Volume
-    , Volume
-    , volume
-    , vAvailabilityZone
-    , vDevice
-    , vEc2VolumeId
-    , vInstanceId
-    , vIops
-    , vMountPoint
-    , vName
-    , vRaidArrayId
-    , vRegion
-    , vSize
-    , vStatus
-    , vVolumeId
-    , vVolumeType
-
-    -- * ChefConfiguration
-    , ChefConfiguration
-    , chefConfiguration
-    , ccBerkshelfVersion
-    , ccManageBerkshelf
-
-    -- * LayerType
-    , LayerType (..)
-
-    -- * AutoScalingThresholds
-    , AutoScalingThresholds
-    , autoScalingThresholds
-    , astAlarms
-    , astCpuThreshold
-    , astIgnoreMetricsTime
-    , astInstanceCount
-    , astLoadThreshold
-    , astMemoryThreshold
-    , astThresholdsWaitTime
-
-    -- * App
-    , App
-    , app
-    , appAppId
-    , appAppSource
-    , appAttributes
-    , appCreatedAt
-    , appDataSources
-    , appDescription
-    , appDomains
-    , appEnableSsl
-    , appEnvironment
-    , appName
-    , appShortname
-    , appSslConfiguration
-    , appStackId
-    , appType
-
-    -- * ElasticIp
-    , ElasticIp
-    , elasticIp
-    , eiDomain
-    , eiInstanceId
-    , eiIp
-    , eiName
-    , eiRegion
-
-    -- * ShutdownEventConfiguration
-    , ShutdownEventConfiguration
-    , shutdownEventConfiguration
-    , secDelayUntilElbConnectionsDrained
-    , secExecutionTimeout
-
-    -- * InstanceIdentity
-    , InstanceIdentity
-    , instanceIdentity
-    , iiDocument
-    , iiSignature
-
-    -- * UserProfile
-    , UserProfile
-    , userProfile
-    , upAllowSelfManagement
-    , upIamUserArn
-    , upName
-    , upSshPublicKey
-    , upSshUsername
-
-    -- * AutoScalingType
-    , AutoScalingType (..)
-
-    -- * Source
-    , Source
-    , source
-    , sPassword
-    , sRevision
-    , sSshKey
-    , sType
-    , sUrl
-    , sUsername
-
-    -- * DataSource
-    , DataSource
-    , dataSource
-    , dsArn
-    , dsDatabaseName
-    , dsType
-
-    -- * Architecture
-    , Architecture (..)
-
-    -- * StackConfigurationManager
-    , StackConfigurationManager
-    , stackConfigurationManager
-    , scmName
-    , scmVersion
-
-    -- * EbsBlockDevice
-    , EbsBlockDevice
-    , ebsBlockDevice
-    , ebdDeleteOnTermination
-    , ebdIops
-    , ebdSnapshotId
-    , ebdVolumeSize
-    , ebdVolumeType
-
-    -- * LayerAttributesKeys
-    , LayerAttributesKeys (..)
-
-    -- * TemporaryCredential
-    , TemporaryCredential
-    , temporaryCredential
-    , tcInstanceId
-    , tcPassword
-    , tcUsername
-    , tcValidForInMinutes
-
-    -- * VolumeConfiguration
-    , VolumeConfiguration
-    , volumeConfiguration
-    , vcIops
-    , vcMountPoint
-    , vcNumberOfDisks
-    , vcRaidLevel
-    , vcSize
-    , vcVolumeType
-
-    -- * VolumeType
-    , VolumeType (..)
-
-    -- * ReportedOs
-    , ReportedOs
-    , reportedOs
-    , roFamily
-    , roName
-    , roVersion
-
-    -- * Permission
-    , Permission
-    , permission
-    , pAllowSsh
-    , pAllowSudo
-    , pIamUserArn
-    , pLevel
-    , pStackId
-
-    -- * EnvironmentVariable
-    , EnvironmentVariable
-    , environmentVariable
-    , evKey
-    , evSecure
-    , evValue
-
-    -- * Layer
-    , Layer
-    , layer
-    , lAttributes
-    , lAutoAssignElasticIps
-    , lAutoAssignPublicIps
-    , lCreatedAt
-    , lCustomInstanceProfileArn
-    , lCustomRecipes
-    , lCustomSecurityGroupIds
-    , lDefaultRecipes
-    , lDefaultSecurityGroupNames
-    , lEnableAutoHealing
-    , lInstallUpdatesOnBoot
-    , lLayerId
-    , lLifecycleEventConfiguration
-    , lName
-    , lPackages
-    , lShortname
-    , lStackId
-    , lType
-    , lUseEbsOptimizedInstances
-    , lVolumeConfigurations
-
-    -- * Recipes
-    , Recipes
-    , recipes
-    , rConfigure
-    , rDeploy
-    , rSetup
-    , rShutdown
-    , rUndeploy
-
-    -- * TimeBasedAutoScalingConfiguration
-    , TimeBasedAutoScalingConfiguration
-    , timeBasedAutoScalingConfiguration
-    , tbascAutoScalingSchedule
-    , tbascInstanceId
-
-    -- * SelfUserProfile
-    , SelfUserProfile
-    , selfUserProfile
-    , supIamUserArn
-    , supName
-    , supSshPublicKey
-    , supSshUsername
-
-    -- * RootDeviceType
-    , RootDeviceType (..)
-
-    -- * Stack
-    , Stack
-    , stack
-    , sArn
-    , sAttributes
-    , sChefConfiguration
-    , sConfigurationManager
-    , sCreatedAt
-    , sCustomCookbooksSource
-    , sCustomJson
-    , sDefaultAvailabilityZone
-    , sDefaultInstanceProfileArn
-    , sDefaultOs
-    , sDefaultRootDeviceType
-    , sDefaultSshKeyName
-    , sDefaultSubnetId
-    , sHostnameTheme
-    , sName
-    , sRegion
-    , sServiceRoleArn
-    , sStackId
-    , sUseCustomCookbooks
-    , sUseOpsworksSecurityGroups
-    , sVpcId
-
-    -- * DeploymentCommand
-    , DeploymentCommand
-    , deploymentCommand
-    , dcArgs
-    , dcName
-
-    -- * WeeklyAutoScalingSchedule
-    , WeeklyAutoScalingSchedule
-    , weeklyAutoScalingSchedule
-    , wassFriday
-    , wassMonday
-    , wassSaturday
-    , wassSunday
-    , wassThursday
-    , wassTuesday
-    , wassWednesday
-
-    -- * DeploymentCommandName
-    , DeploymentCommandName (..)
-
-    -- * Instance
-    , Instance
-    , instance'
-    , iAmiId
-    , iArchitecture
-    , iAutoScalingType
-    , iAvailabilityZone
-    , iBlockDeviceMappings
-    , iCreatedAt
-    , iEbsOptimized
-    , iEc2InstanceId
-    , iElasticIp
-    , iHostname
-    , iInfrastructureClass
-    , iInstallUpdatesOnBoot
-    , iInstanceId
-    , iInstanceProfileArn
-    , iInstanceType
-    , iLastServiceErrorId
-    , iLayerIds
-    , iOs
-    , iPrivateDns
-    , iPrivateIp
-    , iPublicDns
-    , iPublicIp
-    , iRegisteredBy
-    , iReportedAgentVersion
-    , iReportedOs
-    , iRootDeviceType
-    , iRootDeviceVolumeId
-    , iSecurityGroupIds
-    , iSshHostDsaKeyFingerprint
-    , iSshHostRsaKeyFingerprint
-    , iSshKeyName
-    , iStackId
-    , iStatus
-    , iSubnetId
-    , iVirtualizationType
-
-    -- * Deployment
-    , Deployment
-    , deployment
-    , dAppId
-    , dCommand
-    , dComment
-    , dCompletedAt
-    , dCreatedAt
-    , dCustomJson
-    , dDeploymentId
-    , dDuration
-    , dIamUserArn
-    , dInstanceIds
-    , dStackId
-    , dStatus
-
-    -- * InstancesCount
-    , InstancesCount
-    , instancesCount
-    , icAssigning
-    , icBooting
-    , icConnectionLost
-    , icDeregistering
-    , icOnline
-    , icPending
-    , icRebooting
-    , icRegistered
-    , icRegistering
-    , icRequested
-    , icRunningSetup
-    , icSetupFailed
-    , icShuttingDown
-    , icStartFailed
-    , icStopped
-    , icStopping
-    , icTerminated
-    , icTerminating
-    , icUnassigning
-
-    -- * AppType
-    , AppType (..)
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2013-02-18@ of the Amazon OpsWorks service.
-data OpsWorks
-
-instance AWSService OpsWorks where
-    type Sg OpsWorks = V4
-    type Er OpsWorks = JSONError
-
-    service = service'
-      where
-        service' :: Service OpsWorks
-        service' = Service
-            { _svcAbbrev       = "OpsWorks"
-            , _svcPrefix       = "opsworks"
-            , _svcVersion      = "2013-02-18"
-            , _svcTargetPrefix = Just "OpsWorks_20130218"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry OpsWorks
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "Throttling") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data SslConfiguration = SslConfiguration
-    { _scCertificate :: Text
-    , _scChain       :: Maybe Text
-    , _scPrivateKey  :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SslConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'scCertificate' @::@ 'Text'
---
--- * 'scChain' @::@ 'Maybe' 'Text'
---
--- * 'scPrivateKey' @::@ 'Text'
---
-sslConfiguration :: Text -- ^ 'scCertificate'
-                 -> Text -- ^ 'scPrivateKey'
-                 -> SslConfiguration
-sslConfiguration p1 p2 = SslConfiguration
-    { _scCertificate = p1
-    , _scPrivateKey  = p2
-    , _scChain       = Nothing
-    }
-
--- | The contents of the certificate's domain.crt file.
-scCertificate :: Lens' SslConfiguration Text
-scCertificate = lens _scCertificate (\s a -> s { _scCertificate = a })
-
--- | Optional. Can be used to specify an intermediate certificate authority key or
--- client authentication.
-scChain :: Lens' SslConfiguration (Maybe Text)
-scChain = lens _scChain (\s a -> s { _scChain = a })
-
--- | The private key; the contents of the certificate's domain.kex file.
-scPrivateKey :: Lens' SslConfiguration Text
-scPrivateKey = lens _scPrivateKey (\s a -> s { _scPrivateKey = a })
-
-instance FromJSON SslConfiguration where
-    parseJSON = withObject "SslConfiguration" $ \o -> SslConfiguration
-        <$> o .:  "Certificate"
-        <*> o .:? "Chain"
-        <*> o .:  "PrivateKey"
-
-instance ToJSON SslConfiguration where
-    toJSON SslConfiguration{..} = object
-        [ "Certificate" .= _scCertificate
-        , "PrivateKey"  .= _scPrivateKey
-        , "Chain"       .= _scChain
-        ]
-
-data VirtualizationType
-    = Hvm         -- ^ hvm
-    | Paravirtual -- ^ paravirtual
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable VirtualizationType
-
-instance FromText VirtualizationType where
-    parser = takeLowerText >>= \case
-        "hvm"         -> pure Hvm
-        "paravirtual" -> pure Paravirtual
-        e             -> fail $
-            "Failure parsing VirtualizationType from " ++ show e
-
-instance ToText VirtualizationType where
-    toText = \case
-        Hvm         -> "hvm"
-        Paravirtual -> "paravirtual"
-
-instance ToByteString VirtualizationType
-instance ToHeader     VirtualizationType
-instance ToQuery      VirtualizationType
-
-instance FromJSON VirtualizationType where
-    parseJSON = parseJSONText "VirtualizationType"
-
-instance ToJSON VirtualizationType where
-    toJSON = toJSONText
-
-data Command = Command
-    { _cAcknowledgedAt :: Maybe Text
-    , _cCommandId      :: Maybe Text
-    , _cCompletedAt    :: Maybe Text
-    , _cCreatedAt      :: Maybe Text
-    , _cDeploymentId   :: Maybe Text
-    , _cExitCode       :: Maybe Int
-    , _cInstanceId     :: Maybe Text
-    , _cLogUrl         :: Maybe Text
-    , _cStatus         :: Maybe Text
-    , _cType           :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Command' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cAcknowledgedAt' @::@ 'Maybe' 'Text'
---
--- * 'cCommandId' @::@ 'Maybe' 'Text'
---
--- * 'cCompletedAt' @::@ 'Maybe' 'Text'
---
--- * 'cCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'cDeploymentId' @::@ 'Maybe' 'Text'
---
--- * 'cExitCode' @::@ 'Maybe' 'Int'
---
--- * 'cInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'cLogUrl' @::@ 'Maybe' 'Text'
---
--- * 'cStatus' @::@ 'Maybe' 'Text'
---
--- * 'cType' @::@ 'Maybe' 'Text'
---
-command :: Command
-command = Command
-    { _cCommandId      = Nothing
-    , _cInstanceId     = Nothing
-    , _cDeploymentId   = Nothing
-    , _cCreatedAt      = Nothing
-    , _cAcknowledgedAt = Nothing
-    , _cCompletedAt    = Nothing
-    , _cStatus         = Nothing
-    , _cExitCode       = Nothing
-    , _cLogUrl         = Nothing
-    , _cType           = Nothing
-    }
-
--- | Date and time when the command was acknowledged.
-cAcknowledgedAt :: Lens' Command (Maybe Text)
-cAcknowledgedAt = lens _cAcknowledgedAt (\s a -> s { _cAcknowledgedAt = a })
-
--- | The command ID.
-cCommandId :: Lens' Command (Maybe Text)
-cCommandId = lens _cCommandId (\s a -> s { _cCommandId = a })
-
--- | Date when the command completed.
-cCompletedAt :: Lens' Command (Maybe Text)
-cCompletedAt = lens _cCompletedAt (\s a -> s { _cCompletedAt = a })
-
--- | Date and time when the command was run.
-cCreatedAt :: Lens' Command (Maybe Text)
-cCreatedAt = lens _cCreatedAt (\s a -> s { _cCreatedAt = a })
-
--- | The command deployment ID.
-cDeploymentId :: Lens' Command (Maybe Text)
-cDeploymentId = lens _cDeploymentId (\s a -> s { _cDeploymentId = a })
-
--- | The command exit code.
-cExitCode :: Lens' Command (Maybe Int)
-cExitCode = lens _cExitCode (\s a -> s { _cExitCode = a })
-
--- | The ID of the instance where the command was executed.
-cInstanceId :: Lens' Command (Maybe Text)
-cInstanceId = lens _cInstanceId (\s a -> s { _cInstanceId = a })
-
--- | The URL of the command log.
-cLogUrl :: Lens' Command (Maybe Text)
-cLogUrl = lens _cLogUrl (\s a -> s { _cLogUrl = a })
-
--- | The command status:
---
--- failed successful skipped pending
-cStatus :: Lens' Command (Maybe Text)
-cStatus = lens _cStatus (\s a -> s { _cStatus = a })
-
--- | The command type:
---
--- 'deploy'   'rollback'   'start'   'stop'   'restart'   'undeploy'   'update_dependencies'
--- 'install_dependencies'   'update_custom_cookbooks'   'execute_recipes'
-cType :: Lens' Command (Maybe Text)
-cType = lens _cType (\s a -> s { _cType = a })
-
-instance FromJSON Command where
-    parseJSON = withObject "Command" $ \o -> Command
-        <$> o .:? "AcknowledgedAt"
-        <*> o .:? "CommandId"
-        <*> o .:? "CompletedAt"
-        <*> o .:? "CreatedAt"
-        <*> o .:? "DeploymentId"
-        <*> o .:? "ExitCode"
-        <*> o .:? "InstanceId"
-        <*> o .:? "LogUrl"
-        <*> o .:? "Status"
-        <*> o .:? "Type"
-
-instance ToJSON Command where
-    toJSON Command{..} = object
-        [ "CommandId"      .= _cCommandId
-        , "InstanceId"     .= _cInstanceId
-        , "DeploymentId"   .= _cDeploymentId
-        , "CreatedAt"      .= _cCreatedAt
-        , "AcknowledgedAt" .= _cAcknowledgedAt
-        , "CompletedAt"    .= _cCompletedAt
-        , "Status"         .= _cStatus
-        , "ExitCode"       .= _cExitCode
-        , "LogUrl"         .= _cLogUrl
-        , "Type"           .= _cType
-        ]
-
-data RaidArray = RaidArray
-    { _raAvailabilityZone :: Maybe Text
-    , _raCreatedAt        :: Maybe Text
-    , _raDevice           :: Maybe Text
-    , _raInstanceId       :: Maybe Text
-    , _raIops             :: Maybe Int
-    , _raMountPoint       :: Maybe Text
-    , _raName             :: Maybe Text
-    , _raNumberOfDisks    :: Maybe Int
-    , _raRaidArrayId      :: Maybe Text
-    , _raRaidLevel        :: Maybe Int
-    , _raSize             :: Maybe Int
-    , _raStackId          :: Maybe Text
-    , _raVolumeType       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'RaidArray' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'raAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'raCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'raDevice' @::@ 'Maybe' 'Text'
---
--- * 'raInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'raIops' @::@ 'Maybe' 'Int'
---
--- * 'raMountPoint' @::@ 'Maybe' 'Text'
---
--- * 'raName' @::@ 'Maybe' 'Text'
---
--- * 'raNumberOfDisks' @::@ 'Maybe' 'Int'
---
--- * 'raRaidArrayId' @::@ 'Maybe' 'Text'
---
--- * 'raRaidLevel' @::@ 'Maybe' 'Int'
---
--- * 'raSize' @::@ 'Maybe' 'Int'
---
--- * 'raStackId' @::@ 'Maybe' 'Text'
---
--- * 'raVolumeType' @::@ 'Maybe' 'Text'
---
-raidArray :: RaidArray
-raidArray = RaidArray
-    { _raRaidArrayId      = Nothing
-    , _raInstanceId       = Nothing
-    , _raName             = Nothing
-    , _raRaidLevel        = Nothing
-    , _raNumberOfDisks    = Nothing
-    , _raSize             = Nothing
-    , _raDevice           = Nothing
-    , _raMountPoint       = Nothing
-    , _raAvailabilityZone = Nothing
-    , _raCreatedAt        = Nothing
-    , _raStackId          = Nothing
-    , _raVolumeType       = Nothing
-    , _raIops             = Nothing
-    }
-
--- | The array's Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>
--- .
-raAvailabilityZone :: Lens' RaidArray (Maybe Text)
-raAvailabilityZone =
-    lens _raAvailabilityZone (\s a -> s { _raAvailabilityZone = a })
-
--- | When the RAID array was created.
-raCreatedAt :: Lens' RaidArray (Maybe Text)
-raCreatedAt = lens _raCreatedAt (\s a -> s { _raCreatedAt = a })
-
--- | The array's Linux device. For example /dev/mdadm0.
-raDevice :: Lens' RaidArray (Maybe Text)
-raDevice = lens _raDevice (\s a -> s { _raDevice = a })
-
--- | The instance ID.
-raInstanceId :: Lens' RaidArray (Maybe Text)
-raInstanceId = lens _raInstanceId (\s a -> s { _raInstanceId = a })
-
--- | For PIOPS volumes, the IOPS per disk.
-raIops :: Lens' RaidArray (Maybe Int)
-raIops = lens _raIops (\s a -> s { _raIops = a })
-
--- | The array's mount point.
-raMountPoint :: Lens' RaidArray (Maybe Text)
-raMountPoint = lens _raMountPoint (\s a -> s { _raMountPoint = a })
-
--- | The array name.
-raName :: Lens' RaidArray (Maybe Text)
-raName = lens _raName (\s a -> s { _raName = a })
-
--- | The number of disks in the array.
-raNumberOfDisks :: Lens' RaidArray (Maybe Int)
-raNumberOfDisks = lens _raNumberOfDisks (\s a -> s { _raNumberOfDisks = a })
-
--- | The array ID.
-raRaidArrayId :: Lens' RaidArray (Maybe Text)
-raRaidArrayId = lens _raRaidArrayId (\s a -> s { _raRaidArrayId = a })
-
--- | The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level>.
-raRaidLevel :: Lens' RaidArray (Maybe Int)
-raRaidLevel = lens _raRaidLevel (\s a -> s { _raRaidLevel = a })
-
--- | The array's size.
-raSize :: Lens' RaidArray (Maybe Int)
-raSize = lens _raSize (\s a -> s { _raSize = a })
-
--- | The stack ID.
-raStackId :: Lens' RaidArray (Maybe Text)
-raStackId = lens _raStackId (\s a -> s { _raStackId = a })
-
--- | The volume type, standard or PIOPS.
-raVolumeType :: Lens' RaidArray (Maybe Text)
-raVolumeType = lens _raVolumeType (\s a -> s { _raVolumeType = a })
-
-instance FromJSON RaidArray where
-    parseJSON = withObject "RaidArray" $ \o -> RaidArray
-        <$> o .:? "AvailabilityZone"
-        <*> o .:? "CreatedAt"
-        <*> o .:? "Device"
-        <*> o .:? "InstanceId"
-        <*> o .:? "Iops"
-        <*> o .:? "MountPoint"
-        <*> o .:? "Name"
-        <*> o .:? "NumberOfDisks"
-        <*> o .:? "RaidArrayId"
-        <*> o .:? "RaidLevel"
-        <*> o .:? "Size"
-        <*> o .:? "StackId"
-        <*> o .:? "VolumeType"
-
-instance ToJSON RaidArray where
-    toJSON RaidArray{..} = object
-        [ "RaidArrayId"      .= _raRaidArrayId
-        , "InstanceId"       .= _raInstanceId
-        , "Name"             .= _raName
-        , "RaidLevel"        .= _raRaidLevel
-        , "NumberOfDisks"    .= _raNumberOfDisks
-        , "Size"             .= _raSize
-        , "Device"           .= _raDevice
-        , "MountPoint"       .= _raMountPoint
-        , "AvailabilityZone" .= _raAvailabilityZone
-        , "CreatedAt"        .= _raCreatedAt
-        , "StackId"          .= _raStackId
-        , "VolumeType"       .= _raVolumeType
-        , "Iops"             .= _raIops
-        ]
-
-data ElasticLoadBalancer = ElasticLoadBalancer
-    { _elbAvailabilityZones       :: List "AvailabilityZones" Text
-    , _elbDnsName                 :: Maybe Text
-    , _elbEc2InstanceIds          :: List "Ec2InstanceIds" Text
-    , _elbElasticLoadBalancerName :: Maybe Text
-    , _elbLayerId                 :: Maybe Text
-    , _elbRegion                  :: Maybe Text
-    , _elbStackId                 :: Maybe Text
-    , _elbSubnetIds               :: List "SubnetIds" Text
-    , _elbVpcId                   :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ElasticLoadBalancer' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'elbAvailabilityZones' @::@ ['Text']
---
--- * 'elbDnsName' @::@ 'Maybe' 'Text'
---
--- * 'elbEc2InstanceIds' @::@ ['Text']
---
--- * 'elbElasticLoadBalancerName' @::@ 'Maybe' 'Text'
---
--- * 'elbLayerId' @::@ 'Maybe' 'Text'
---
--- * 'elbRegion' @::@ 'Maybe' 'Text'
---
--- * 'elbStackId' @::@ 'Maybe' 'Text'
---
--- * 'elbSubnetIds' @::@ ['Text']
---
--- * 'elbVpcId' @::@ 'Maybe' 'Text'
---
-elasticLoadBalancer :: ElasticLoadBalancer
-elasticLoadBalancer = ElasticLoadBalancer
-    { _elbElasticLoadBalancerName = Nothing
-    , _elbRegion                  = Nothing
-    , _elbDnsName                 = Nothing
-    , _elbStackId                 = Nothing
-    , _elbLayerId                 = Nothing
-    , _elbVpcId                   = Nothing
-    , _elbAvailabilityZones       = mempty
-    , _elbSubnetIds               = mempty
-    , _elbEc2InstanceIds          = mempty
-    }
-
--- | A list of Availability Zones.
-elbAvailabilityZones :: Lens' ElasticLoadBalancer [Text]
-elbAvailabilityZones =
-    lens _elbAvailabilityZones (\s a -> s { _elbAvailabilityZones = a })
-        . _List
-
--- | The instance's public DNS name.
-elbDnsName :: Lens' ElasticLoadBalancer (Maybe Text)
-elbDnsName = lens _elbDnsName (\s a -> s { _elbDnsName = a })
-
--- | A list of the EC2 instances that the Elastic Load Balancing instance is
--- managing traffic for.
-elbEc2InstanceIds :: Lens' ElasticLoadBalancer [Text]
-elbEc2InstanceIds =
-    lens _elbEc2InstanceIds (\s a -> s { _elbEc2InstanceIds = a })
-        . _List
-
--- | The Elastic Load Balancing instance's name.
-elbElasticLoadBalancerName :: Lens' ElasticLoadBalancer (Maybe Text)
-elbElasticLoadBalancerName =
-    lens _elbElasticLoadBalancerName
-        (\s a -> s { _elbElasticLoadBalancerName = a })
-
--- | The ID of the layer that the instance is attached to.
-elbLayerId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbLayerId = lens _elbLayerId (\s a -> s { _elbLayerId = a })
-
--- | The instance's AWS region.
-elbRegion :: Lens' ElasticLoadBalancer (Maybe Text)
-elbRegion = lens _elbRegion (\s a -> s { _elbRegion = a })
-
--- | The ID of the stack that the instance is associated with.
-elbStackId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbStackId = lens _elbStackId (\s a -> s { _elbStackId = a })
-
--- | A list of subnet IDs, if the stack is running in a VPC.
-elbSubnetIds :: Lens' ElasticLoadBalancer [Text]
-elbSubnetIds = lens _elbSubnetIds (\s a -> s { _elbSubnetIds = a }) . _List
-
--- | The VPC ID.
-elbVpcId :: Lens' ElasticLoadBalancer (Maybe Text)
-elbVpcId = lens _elbVpcId (\s a -> s { _elbVpcId = a })
-
-instance FromJSON ElasticLoadBalancer where
-    parseJSON = withObject "ElasticLoadBalancer" $ \o -> ElasticLoadBalancer
-        <$> o .:? "AvailabilityZones" .!= mempty
-        <*> o .:? "DnsName"
-        <*> o .:? "Ec2InstanceIds" .!= mempty
-        <*> o .:? "ElasticLoadBalancerName"
-        <*> o .:? "LayerId"
-        <*> o .:? "Region"
-        <*> o .:? "StackId"
-        <*> o .:? "SubnetIds" .!= mempty
-        <*> o .:? "VpcId"
-
-instance ToJSON ElasticLoadBalancer where
-    toJSON ElasticLoadBalancer{..} = object
-        [ "ElasticLoadBalancerName" .= _elbElasticLoadBalancerName
-        , "Region"                  .= _elbRegion
-        , "DnsName"                 .= _elbDnsName
-        , "StackId"                 .= _elbStackId
-        , "LayerId"                 .= _elbLayerId
-        , "VpcId"                   .= _elbVpcId
-        , "AvailabilityZones"       .= _elbAvailabilityZones
-        , "SubnetIds"               .= _elbSubnetIds
-        , "Ec2InstanceIds"          .= _elbEc2InstanceIds
-        ]
-
-newtype LifecycleEventConfiguration = LifecycleEventConfiguration
-    { _lecShutdown :: Maybe ShutdownEventConfiguration
-    } deriving (Eq, Read, Show)
-
--- | 'LifecycleEventConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lecShutdown' @::@ 'Maybe' 'ShutdownEventConfiguration'
---
-lifecycleEventConfiguration :: LifecycleEventConfiguration
-lifecycleEventConfiguration = LifecycleEventConfiguration
-    { _lecShutdown = Nothing
-    }
-
--- | A 'ShutdownEventConfiguration' object that specifies the Shutdown event
--- configuration.
-lecShutdown :: Lens' LifecycleEventConfiguration (Maybe ShutdownEventConfiguration)
-lecShutdown = lens _lecShutdown (\s a -> s { _lecShutdown = a })
-
-instance FromJSON LifecycleEventConfiguration where
-    parseJSON = withObject "LifecycleEventConfiguration" $ \o -> LifecycleEventConfiguration
-        <$> o .:? "Shutdown"
-
-instance ToJSON LifecycleEventConfiguration where
-    toJSON LifecycleEventConfiguration{..} = object
-        [ "Shutdown" .= _lecShutdown
-        ]
-
-data RdsDbInstance = RdsDbInstance
-    { _rdiAddress              :: Maybe Text
-    , _rdiDbInstanceIdentifier :: Maybe Text
-    , _rdiDbPassword           :: Maybe Text
-    , _rdiDbUser               :: Maybe Text
-    , _rdiEngine               :: Maybe Text
-    , _rdiMissingOnRds         :: Maybe Bool
-    , _rdiRdsDbInstanceArn     :: Maybe Text
-    , _rdiRegion               :: Maybe Text
-    , _rdiStackId              :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'RdsDbInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rdiAddress' @::@ 'Maybe' 'Text'
---
--- * 'rdiDbInstanceIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'rdiDbPassword' @::@ 'Maybe' 'Text'
---
--- * 'rdiDbUser' @::@ 'Maybe' 'Text'
---
--- * 'rdiEngine' @::@ 'Maybe' 'Text'
---
--- * 'rdiMissingOnRds' @::@ 'Maybe' 'Bool'
---
--- * 'rdiRdsDbInstanceArn' @::@ 'Maybe' 'Text'
---
--- * 'rdiRegion' @::@ 'Maybe' 'Text'
---
--- * 'rdiStackId' @::@ 'Maybe' 'Text'
---
-rdsDbInstance :: RdsDbInstance
-rdsDbInstance = RdsDbInstance
-    { _rdiRdsDbInstanceArn     = Nothing
-    , _rdiDbInstanceIdentifier = Nothing
-    , _rdiDbUser               = Nothing
-    , _rdiDbPassword           = Nothing
-    , _rdiRegion               = Nothing
-    , _rdiAddress              = Nothing
-    , _rdiEngine               = Nothing
-    , _rdiStackId              = Nothing
-    , _rdiMissingOnRds         = Nothing
-    }
-
--- | The instance's address.
-rdiAddress :: Lens' RdsDbInstance (Maybe Text)
-rdiAddress = lens _rdiAddress (\s a -> s { _rdiAddress = a })
-
--- | The DB instance identifier.
-rdiDbInstanceIdentifier :: Lens' RdsDbInstance (Maybe Text)
-rdiDbInstanceIdentifier =
-    lens _rdiDbInstanceIdentifier (\s a -> s { _rdiDbInstanceIdentifier = a })
-
--- | AWS OpsWorks returns '*****FILTERED*****' instead of the actual value.
-rdiDbPassword :: Lens' RdsDbInstance (Maybe Text)
-rdiDbPassword = lens _rdiDbPassword (\s a -> s { _rdiDbPassword = a })
-
--- | The master user name.
-rdiDbUser :: Lens' RdsDbInstance (Maybe Text)
-rdiDbUser = lens _rdiDbUser (\s a -> s { _rdiDbUser = a })
-
--- | The instance's database engine.
-rdiEngine :: Lens' RdsDbInstance (Maybe Text)
-rdiEngine = lens _rdiEngine (\s a -> s { _rdiEngine = a })
-
--- | Set to 'true' if AWS OpsWorks was unable to discover the Amazon RDS instance.
--- AWS OpsWorks attempts to discover the instance only once. If this value is
--- set to 'true', you must deregister the instance and then register it again.
-rdiMissingOnRds :: Lens' RdsDbInstance (Maybe Bool)
-rdiMissingOnRds = lens _rdiMissingOnRds (\s a -> s { _rdiMissingOnRds = a })
-
--- | The instance's ARN.
-rdiRdsDbInstanceArn :: Lens' RdsDbInstance (Maybe Text)
-rdiRdsDbInstanceArn =
-    lens _rdiRdsDbInstanceArn (\s a -> s { _rdiRdsDbInstanceArn = a })
-
--- | The instance's AWS region.
-rdiRegion :: Lens' RdsDbInstance (Maybe Text)
-rdiRegion = lens _rdiRegion (\s a -> s { _rdiRegion = a })
-
--- | The ID of the stack that the instance is registered with.
-rdiStackId :: Lens' RdsDbInstance (Maybe Text)
-rdiStackId = lens _rdiStackId (\s a -> s { _rdiStackId = a })
-
-instance FromJSON RdsDbInstance where
-    parseJSON = withObject "RdsDbInstance" $ \o -> RdsDbInstance
-        <$> o .:? "Address"
-        <*> o .:? "DbInstanceIdentifier"
-        <*> o .:? "DbPassword"
-        <*> o .:? "DbUser"
-        <*> o .:? "Engine"
-        <*> o .:? "MissingOnRds"
-        <*> o .:? "RdsDbInstanceArn"
-        <*> o .:? "Region"
-        <*> o .:? "StackId"
-
-instance ToJSON RdsDbInstance where
-    toJSON RdsDbInstance{..} = object
-        [ "RdsDbInstanceArn"     .= _rdiRdsDbInstanceArn
-        , "DbInstanceIdentifier" .= _rdiDbInstanceIdentifier
-        , "DbUser"               .= _rdiDbUser
-        , "DbPassword"           .= _rdiDbPassword
-        , "Region"               .= _rdiRegion
-        , "Address"              .= _rdiAddress
-        , "Engine"               .= _rdiEngine
-        , "StackId"              .= _rdiStackId
-        , "MissingOnRds"         .= _rdiMissingOnRds
-        ]
-
-data AppAttributesKeys
-    = AutoBundleOnDeploy -- ^ AutoBundleOnDeploy
-    | DocumentRoot       -- ^ DocumentRoot
-    | RailsEnv           -- ^ RailsEnv
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable AppAttributesKeys
-
-instance FromText AppAttributesKeys where
-    parser = takeLowerText >>= \case
-        "autobundleondeploy" -> pure AutoBundleOnDeploy
-        "documentroot"       -> pure DocumentRoot
-        "railsenv"           -> pure RailsEnv
-        e                    -> fail $
-            "Failure parsing AppAttributesKeys from " ++ show e
-
-instance ToText AppAttributesKeys where
-    toText = \case
-        AutoBundleOnDeploy -> "AutoBundleOnDeploy"
-        DocumentRoot       -> "DocumentRoot"
-        RailsEnv           -> "RailsEnv"
-
-instance ToByteString AppAttributesKeys
-instance ToHeader     AppAttributesKeys
-instance ToQuery      AppAttributesKeys
-
-instance FromJSON AppAttributesKeys where
-    parseJSON = parseJSONText "AppAttributesKeys"
-
-instance ToJSON AppAttributesKeys where
-    toJSON = toJSONText
-
-data ServiceError' = ServiceError'
-    { _seCreatedAt      :: Maybe Text
-    , _seInstanceId     :: Maybe Text
-    , _seMessage        :: Maybe Text
-    , _seServiceErrorId :: Maybe Text
-    , _seStackId        :: Maybe Text
-    , _seType           :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ServiceError'' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'seCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'seInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'seMessage' @::@ 'Maybe' 'Text'
---
--- * 'seServiceErrorId' @::@ 'Maybe' 'Text'
---
--- * 'seStackId' @::@ 'Maybe' 'Text'
---
--- * 'seType' @::@ 'Maybe' 'Text'
---
-serviceError' :: ServiceError'
-serviceError' = ServiceError'
-    { _seServiceErrorId = Nothing
-    , _seStackId        = Nothing
-    , _seInstanceId     = Nothing
-    , _seType           = Nothing
-    , _seMessage        = Nothing
-    , _seCreatedAt      = Nothing
-    }
-
--- | When the error occurred.
-seCreatedAt :: Lens' ServiceError' (Maybe Text)
-seCreatedAt = lens _seCreatedAt (\s a -> s { _seCreatedAt = a })
-
--- | The instance ID.
-seInstanceId :: Lens' ServiceError' (Maybe Text)
-seInstanceId = lens _seInstanceId (\s a -> s { _seInstanceId = a })
-
--- | A message that describes the error.
-seMessage :: Lens' ServiceError' (Maybe Text)
-seMessage = lens _seMessage (\s a -> s { _seMessage = a })
-
--- | The error ID.
-seServiceErrorId :: Lens' ServiceError' (Maybe Text)
-seServiceErrorId = lens _seServiceErrorId (\s a -> s { _seServiceErrorId = a })
-
--- | The stack ID.
-seStackId :: Lens' ServiceError' (Maybe Text)
-seStackId = lens _seStackId (\s a -> s { _seStackId = a })
-
--- | The error type.
-seType :: Lens' ServiceError' (Maybe Text)
-seType = lens _seType (\s a -> s { _seType = a })
-
-instance FromJSON ServiceError' where
-    parseJSON = withObject "ServiceError'" $ \o -> ServiceError'
-        <$> o .:? "CreatedAt"
-        <*> o .:? "InstanceId"
-        <*> o .:? "Message"
-        <*> o .:? "ServiceErrorId"
-        <*> o .:? "StackId"
-        <*> o .:? "Type"
-
-instance ToJSON ServiceError' where
-    toJSON ServiceError'{..} = object
-        [ "ServiceErrorId" .= _seServiceErrorId
-        , "StackId"        .= _seStackId
-        , "InstanceId"     .= _seInstanceId
-        , "Type"           .= _seType
-        , "Message"        .= _seMessage
-        , "CreatedAt"      .= _seCreatedAt
-        ]
-
-data StackSummary = StackSummary
-    { _ssAppsCount      :: Maybe Int
-    , _ssArn            :: Maybe Text
-    , _ssInstancesCount :: Maybe InstancesCount
-    , _ssLayersCount    :: Maybe Int
-    , _ssName           :: Maybe Text
-    , _ssStackId        :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'StackSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ssAppsCount' @::@ 'Maybe' 'Int'
---
--- * 'ssArn' @::@ 'Maybe' 'Text'
---
--- * 'ssInstancesCount' @::@ 'Maybe' 'InstancesCount'
---
--- * 'ssLayersCount' @::@ 'Maybe' 'Int'
---
--- * 'ssName' @::@ 'Maybe' 'Text'
---
--- * 'ssStackId' @::@ 'Maybe' 'Text'
---
-stackSummary :: StackSummary
-stackSummary = StackSummary
-    { _ssStackId        = Nothing
-    , _ssName           = Nothing
-    , _ssArn            = Nothing
-    , _ssLayersCount    = Nothing
-    , _ssAppsCount      = Nothing
-    , _ssInstancesCount = Nothing
-    }
-
--- | The number of apps.
-ssAppsCount :: Lens' StackSummary (Maybe Int)
-ssAppsCount = lens _ssAppsCount (\s a -> s { _ssAppsCount = a })
-
--- | The stack's ARN.
-ssArn :: Lens' StackSummary (Maybe Text)
-ssArn = lens _ssArn (\s a -> s { _ssArn = a })
-
--- | An 'InstancesCount' object with the number of instances in each status.
-ssInstancesCount :: Lens' StackSummary (Maybe InstancesCount)
-ssInstancesCount = lens _ssInstancesCount (\s a -> s { _ssInstancesCount = a })
-
--- | The number of layers.
-ssLayersCount :: Lens' StackSummary (Maybe Int)
-ssLayersCount = lens _ssLayersCount (\s a -> s { _ssLayersCount = a })
-
--- | The stack name.
-ssName :: Lens' StackSummary (Maybe Text)
-ssName = lens _ssName (\s a -> s { _ssName = a })
-
--- | The stack ID.
-ssStackId :: Lens' StackSummary (Maybe Text)
-ssStackId = lens _ssStackId (\s a -> s { _ssStackId = a })
-
-instance FromJSON StackSummary where
-    parseJSON = withObject "StackSummary" $ \o -> StackSummary
-        <$> o .:? "AppsCount"
-        <*> o .:? "Arn"
-        <*> o .:? "InstancesCount"
-        <*> o .:? "LayersCount"
-        <*> o .:? "Name"
-        <*> o .:? "StackId"
-
-instance ToJSON StackSummary where
-    toJSON StackSummary{..} = object
-        [ "StackId"        .= _ssStackId
-        , "Name"           .= _ssName
-        , "Arn"            .= _ssArn
-        , "LayersCount"    .= _ssLayersCount
-        , "AppsCount"      .= _ssAppsCount
-        , "InstancesCount" .= _ssInstancesCount
-        ]
-
-data BlockDeviceMapping = BlockDeviceMapping
-    { _bdmDeviceName  :: Maybe Text
-    , _bdmEbs         :: Maybe EbsBlockDevice
-    , _bdmNoDevice    :: Maybe Text
-    , _bdmVirtualName :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'BlockDeviceMapping' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'bdmDeviceName' @::@ 'Maybe' 'Text'
---
--- * 'bdmEbs' @::@ 'Maybe' 'EbsBlockDevice'
---
--- * 'bdmNoDevice' @::@ 'Maybe' 'Text'
---
--- * 'bdmVirtualName' @::@ 'Maybe' 'Text'
---
-blockDeviceMapping :: BlockDeviceMapping
-blockDeviceMapping = BlockDeviceMapping
-    { _bdmDeviceName  = Nothing
-    , _bdmNoDevice    = Nothing
-    , _bdmVirtualName = Nothing
-    , _bdmEbs         = Nothing
-    }
-
--- | The device name that is exposed to the instance, such as '/dev/sdh'. For the
--- root device, you can use the explicit device name or you can set this
--- parameter to 'ROOT_DEVICE' and AWS OpsWorks will provide the correct device
--- name.
-bdmDeviceName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmDeviceName = lens _bdmDeviceName (\s a -> s { _bdmDeviceName = a })
-
--- | An 'EBSBlockDevice' that defines how to configure an Amazon EBS volume when the
--- instance is launched.
-bdmEbs :: Lens' BlockDeviceMapping (Maybe EbsBlockDevice)
-bdmEbs = lens _bdmEbs (\s a -> s { _bdmEbs = a })
-
--- | Suppresses the specified device included in the AMI's block device mapping.
-bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
-bdmNoDevice = lens _bdmNoDevice (\s a -> s { _bdmNoDevice = a })
-
--- | The virtual device name. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping>.
-bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
-bdmVirtualName = lens _bdmVirtualName (\s a -> s { _bdmVirtualName = a })
-
-instance FromJSON BlockDeviceMapping where
-    parseJSON = withObject "BlockDeviceMapping" $ \o -> BlockDeviceMapping
-        <$> o .:? "DeviceName"
-        <*> o .:? "Ebs"
-        <*> o .:? "NoDevice"
-        <*> o .:? "VirtualName"
-
-instance ToJSON BlockDeviceMapping where
-    toJSON BlockDeviceMapping{..} = object
-        [ "DeviceName"  .= _bdmDeviceName
-        , "NoDevice"    .= _bdmNoDevice
-        , "VirtualName" .= _bdmVirtualName
-        , "Ebs"         .= _bdmEbs
-        ]
-
-data StackAttributesKeys
-    = Color -- ^ Color
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable StackAttributesKeys
-
-instance FromText StackAttributesKeys where
-    parser = takeLowerText >>= \case
-        "color" -> pure Color
-        e       -> fail $
-            "Failure parsing StackAttributesKeys from " ++ show e
-
-instance ToText StackAttributesKeys where
-    toText Color = "Color"
-
-instance ToByteString StackAttributesKeys
-instance ToHeader     StackAttributesKeys
-instance ToQuery      StackAttributesKeys
-
-instance FromJSON StackAttributesKeys where
-    parseJSON = parseJSONText "StackAttributesKeys"
-
-instance ToJSON StackAttributesKeys where
-    toJSON = toJSONText
-
-data LoadBasedAutoScalingConfiguration = LoadBasedAutoScalingConfiguration
-    { _lbascDownScaling :: Maybe AutoScalingThresholds
-    , _lbascEnable      :: Maybe Bool
-    , _lbascLayerId     :: Maybe Text
-    , _lbascUpScaling   :: Maybe AutoScalingThresholds
-    } deriving (Eq, Read, Show)
-
--- | 'LoadBasedAutoScalingConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lbascDownScaling' @::@ 'Maybe' 'AutoScalingThresholds'
---
--- * 'lbascEnable' @::@ 'Maybe' 'Bool'
---
--- * 'lbascLayerId' @::@ 'Maybe' 'Text'
---
--- * 'lbascUpScaling' @::@ 'Maybe' 'AutoScalingThresholds'
---
-loadBasedAutoScalingConfiguration :: LoadBasedAutoScalingConfiguration
-loadBasedAutoScalingConfiguration = LoadBasedAutoScalingConfiguration
-    { _lbascLayerId     = Nothing
-    , _lbascEnable      = Nothing
-    , _lbascUpScaling   = Nothing
-    , _lbascDownScaling = Nothing
-    }
-
--- | An 'AutoScalingThresholds' object that describes the downscaling configuration,
--- which defines how and when AWS OpsWorks reduces the number of instances.
-lbascDownScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
-lbascDownScaling = lens _lbascDownScaling (\s a -> s { _lbascDownScaling = a })
-
--- | Whether load-based auto scaling is enabled for the layer.
-lbascEnable :: Lens' LoadBasedAutoScalingConfiguration (Maybe Bool)
-lbascEnable = lens _lbascEnable (\s a -> s { _lbascEnable = a })
-
--- | The layer ID.
-lbascLayerId :: Lens' LoadBasedAutoScalingConfiguration (Maybe Text)
-lbascLayerId = lens _lbascLayerId (\s a -> s { _lbascLayerId = a })
-
--- | An 'AutoScalingThresholds' object that describes the upscaling configuration,
--- which defines how and when AWS OpsWorks increases the number of instances.
-lbascUpScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
-lbascUpScaling = lens _lbascUpScaling (\s a -> s { _lbascUpScaling = a })
-
-instance FromJSON LoadBasedAutoScalingConfiguration where
-    parseJSON = withObject "LoadBasedAutoScalingConfiguration" $ \o -> LoadBasedAutoScalingConfiguration
-        <$> o .:? "DownScaling"
-        <*> o .:? "Enable"
-        <*> o .:? "LayerId"
-        <*> o .:? "UpScaling"
-
-instance ToJSON LoadBasedAutoScalingConfiguration where
-    toJSON LoadBasedAutoScalingConfiguration{..} = object
-        [ "LayerId"     .= _lbascLayerId
-        , "Enable"      .= _lbascEnable
-        , "UpScaling"   .= _lbascUpScaling
-        , "DownScaling" .= _lbascDownScaling
-        ]
-
-data SourceType
-    = Archive -- ^ archive
-    | Git     -- ^ git
-    | S3      -- ^ s3
-    | Svn     -- ^ svn
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable SourceType
-
-instance FromText SourceType where
-    parser = takeLowerText >>= \case
-        "archive" -> pure Archive
-        "git"     -> pure Git
-        "s3"      -> pure S3
-        "svn"     -> pure Svn
-        e         -> fail $
-            "Failure parsing SourceType from " ++ show e
-
-instance ToText SourceType where
-    toText = \case
-        Archive -> "archive"
-        Git     -> "git"
-        S3      -> "s3"
-        Svn     -> "svn"
-
-instance ToByteString SourceType
-instance ToHeader     SourceType
-instance ToQuery      SourceType
-
-instance FromJSON SourceType where
-    parseJSON = parseJSONText "SourceType"
-
-instance ToJSON SourceType where
-    toJSON = toJSONText
-
-data Volume = Volume
-    { _vAvailabilityZone :: Maybe Text
-    , _vDevice           :: Maybe Text
-    , _vEc2VolumeId      :: Maybe Text
-    , _vInstanceId       :: Maybe Text
-    , _vIops             :: Maybe Int
-    , _vMountPoint       :: Maybe Text
-    , _vName             :: Maybe Text
-    , _vRaidArrayId      :: Maybe Text
-    , _vRegion           :: Maybe Text
-    , _vSize             :: Maybe Int
-    , _vStatus           :: Maybe Text
-    , _vVolumeId         :: Maybe Text
-    , _vVolumeType       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Volume' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'vDevice' @::@ 'Maybe' 'Text'
---
--- * 'vEc2VolumeId' @::@ 'Maybe' 'Text'
---
--- * 'vInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'vIops' @::@ 'Maybe' 'Int'
---
--- * 'vMountPoint' @::@ 'Maybe' 'Text'
---
--- * 'vName' @::@ 'Maybe' 'Text'
---
--- * 'vRaidArrayId' @::@ 'Maybe' 'Text'
---
--- * 'vRegion' @::@ 'Maybe' 'Text'
---
--- * 'vSize' @::@ 'Maybe' 'Int'
---
--- * 'vStatus' @::@ 'Maybe' 'Text'
---
--- * 'vVolumeId' @::@ 'Maybe' 'Text'
---
--- * 'vVolumeType' @::@ 'Maybe' 'Text'
---
-volume :: Volume
-volume = Volume
-    { _vVolumeId         = Nothing
-    , _vEc2VolumeId      = Nothing
-    , _vName             = Nothing
-    , _vRaidArrayId      = Nothing
-    , _vInstanceId       = Nothing
-    , _vStatus           = Nothing
-    , _vSize             = Nothing
-    , _vDevice           = Nothing
-    , _vMountPoint       = Nothing
-    , _vRegion           = Nothing
-    , _vAvailabilityZone = Nothing
-    , _vVolumeType       = Nothing
-    , _vIops             = Nothing
-    }
-
--- | The volume Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
-vAvailabilityZone :: Lens' Volume (Maybe Text)
-vAvailabilityZone =
-    lens _vAvailabilityZone (\s a -> s { _vAvailabilityZone = a })
-
--- | The device name.
-vDevice :: Lens' Volume (Maybe Text)
-vDevice = lens _vDevice (\s a -> s { _vDevice = a })
-
--- | The Amazon EC2 volume ID.
-vEc2VolumeId :: Lens' Volume (Maybe Text)
-vEc2VolumeId = lens _vEc2VolumeId (\s a -> s { _vEc2VolumeId = a })
-
--- | The instance ID.
-vInstanceId :: Lens' Volume (Maybe Text)
-vInstanceId = lens _vInstanceId (\s a -> s { _vInstanceId = a })
-
--- | For PIOPS volumes, the IOPS per disk.
-vIops :: Lens' Volume (Maybe Int)
-vIops = lens _vIops (\s a -> s { _vIops = a })
-
--- | The volume mount point. For example "/dev/sdh".
-vMountPoint :: Lens' Volume (Maybe Text)
-vMountPoint = lens _vMountPoint (\s a -> s { _vMountPoint = a })
-
--- | The volume name.
-vName :: Lens' Volume (Maybe Text)
-vName = lens _vName (\s a -> s { _vName = a })
-
--- | The RAID array ID.
-vRaidArrayId :: Lens' Volume (Maybe Text)
-vRaidArrayId = lens _vRaidArrayId (\s a -> s { _vRaidArrayId = a })
-
--- | The AWS region. For more information about AWS regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions andEndpoints>.
-vRegion :: Lens' Volume (Maybe Text)
-vRegion = lens _vRegion (\s a -> s { _vRegion = a })
-
--- | The volume size.
-vSize :: Lens' Volume (Maybe Int)
-vSize = lens _vSize (\s a -> s { _vSize = a })
-
--- | The value returned by <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes>.
-vStatus :: Lens' Volume (Maybe Text)
-vStatus = lens _vStatus (\s a -> s { _vStatus = a })
-
--- | The volume ID.
-vVolumeId :: Lens' Volume (Maybe Text)
-vVolumeId = lens _vVolumeId (\s a -> s { _vVolumeId = a })
-
--- | The volume type, standard or PIOPS.
-vVolumeType :: Lens' Volume (Maybe Text)
-vVolumeType = lens _vVolumeType (\s a -> s { _vVolumeType = a })
-
-instance FromJSON Volume where
-    parseJSON = withObject "Volume" $ \o -> Volume
-        <$> o .:? "AvailabilityZone"
-        <*> o .:? "Device"
-        <*> o .:? "Ec2VolumeId"
-        <*> o .:? "InstanceId"
-        <*> o .:? "Iops"
-        <*> o .:? "MountPoint"
-        <*> o .:? "Name"
-        <*> o .:? "RaidArrayId"
-        <*> o .:? "Region"
-        <*> o .:? "Size"
-        <*> o .:? "Status"
-        <*> o .:? "VolumeId"
-        <*> o .:? "VolumeType"
-
-instance ToJSON Volume where
-    toJSON Volume{..} = object
-        [ "VolumeId"         .= _vVolumeId
-        , "Ec2VolumeId"      .= _vEc2VolumeId
-        , "Name"             .= _vName
-        , "RaidArrayId"      .= _vRaidArrayId
-        , "InstanceId"       .= _vInstanceId
-        , "Status"           .= _vStatus
-        , "Size"             .= _vSize
-        , "Device"           .= _vDevice
-        , "MountPoint"       .= _vMountPoint
-        , "Region"           .= _vRegion
-        , "AvailabilityZone" .= _vAvailabilityZone
-        , "VolumeType"       .= _vVolumeType
-        , "Iops"             .= _vIops
-        ]
-
-data ChefConfiguration = ChefConfiguration
-    { _ccBerkshelfVersion :: Maybe Text
-    , _ccManageBerkshelf  :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ChefConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccBerkshelfVersion' @::@ 'Maybe' 'Text'
---
--- * 'ccManageBerkshelf' @::@ 'Maybe' 'Bool'
---
-chefConfiguration :: ChefConfiguration
-chefConfiguration = ChefConfiguration
-    { _ccManageBerkshelf  = Nothing
-    , _ccBerkshelfVersion = Nothing
-    }
-
--- | The Berkshelf version.
-ccBerkshelfVersion :: Lens' ChefConfiguration (Maybe Text)
-ccBerkshelfVersion =
-    lens _ccBerkshelfVersion (\s a -> s { _ccBerkshelfVersion = a })
-
--- | Whether to enable Berkshelf.
-ccManageBerkshelf :: Lens' ChefConfiguration (Maybe Bool)
-ccManageBerkshelf =
-    lens _ccManageBerkshelf (\s a -> s { _ccManageBerkshelf = a })
-
-instance FromJSON ChefConfiguration where
-    parseJSON = withObject "ChefConfiguration" $ \o -> ChefConfiguration
-        <$> o .:? "BerkshelfVersion"
-        <*> o .:? "ManageBerkshelf"
-
-instance ToJSON ChefConfiguration where
-    toJSON ChefConfiguration{..} = object
-        [ "ManageBerkshelf"  .= _ccManageBerkshelf
-        , "BerkshelfVersion" .= _ccBerkshelfVersion
-        ]
-
-data LayerType
-    = Custom           -- ^ custom
-    | DbMaster         -- ^ db-master
-    | JavaApp          -- ^ java-app
-    | Lb               -- ^ lb
-    | Memcached        -- ^ memcached
-    | MonitoringMaster -- ^ monitoring-master
-    | NodejsApp        -- ^ nodejs-app
-    | PhpApp           -- ^ php-app
-    | RailsApp         -- ^ rails-app
-    | Web              -- ^ web
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable LayerType
-
-instance FromText LayerType where
-    parser = takeLowerText >>= \case
-        "custom"            -> pure Custom
-        "db-master"         -> pure DbMaster
-        "java-app"          -> pure JavaApp
-        "lb"                -> pure Lb
-        "memcached"         -> pure Memcached
-        "monitoring-master" -> pure MonitoringMaster
-        "nodejs-app"        -> pure NodejsApp
-        "php-app"           -> pure PhpApp
-        "rails-app"         -> pure RailsApp
-        "web"               -> pure Web
-        e                   -> fail $
-            "Failure parsing LayerType from " ++ show e
-
-instance ToText LayerType where
-    toText = \case
-        Custom           -> "custom"
-        DbMaster         -> "db-master"
-        JavaApp          -> "java-app"
-        Lb               -> "lb"
-        Memcached        -> "memcached"
-        MonitoringMaster -> "monitoring-master"
-        NodejsApp        -> "nodejs-app"
-        PhpApp           -> "php-app"
-        RailsApp         -> "rails-app"
-        Web              -> "web"
-
-instance ToByteString LayerType
-instance ToHeader     LayerType
-instance ToQuery      LayerType
-
-instance FromJSON LayerType where
-    parseJSON = parseJSONText "LayerType"
-
-instance ToJSON LayerType where
-    toJSON = toJSONText
-
-data AutoScalingThresholds = AutoScalingThresholds
-    { _astAlarms             :: List "Alarms" Text
-    , _astCpuThreshold       :: Maybe Double
-    , _astIgnoreMetricsTime  :: Maybe Nat
-    , _astInstanceCount      :: Maybe Int
-    , _astLoadThreshold      :: Maybe Double
-    , _astMemoryThreshold    :: Maybe Double
-    , _astThresholdsWaitTime :: Maybe Nat
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AutoScalingThresholds' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'astAlarms' @::@ ['Text']
---
--- * 'astCpuThreshold' @::@ 'Maybe' 'Double'
---
--- * 'astIgnoreMetricsTime' @::@ 'Maybe' 'Natural'
---
--- * 'astInstanceCount' @::@ 'Maybe' 'Int'
---
--- * 'astLoadThreshold' @::@ 'Maybe' 'Double'
---
--- * 'astMemoryThreshold' @::@ 'Maybe' 'Double'
---
--- * 'astThresholdsWaitTime' @::@ 'Maybe' 'Natural'
---
-autoScalingThresholds :: AutoScalingThresholds
-autoScalingThresholds = AutoScalingThresholds
-    { _astInstanceCount      = Nothing
-    , _astThresholdsWaitTime = Nothing
-    , _astIgnoreMetricsTime  = Nothing
-    , _astCpuThreshold       = Nothing
-    , _astMemoryThreshold    = Nothing
-    , _astLoadThreshold      = Nothing
-    , _astAlarms             = mempty
-    }
-
--- | Custom Cloudwatch auto scaling alarms, to be used as thresholds. This
--- parameter takes a list of up to five alarm names, which are case sensitive
--- and must be in the same region as the stack.
---
--- To use custom alarms, you must update your service role to allow 'cloudwatch:DescribeAlarms'. You can either have AWS OpsWorks update the role for you when you first use
--- this feature or you can edit the role manually. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-servicerole.html Allowing AWS OpsWorks to Act on Your Behalf>.
-astAlarms :: Lens' AutoScalingThresholds [Text]
-astAlarms = lens _astAlarms (\s a -> s { _astAlarms = a }) . _List
-
--- | The CPU utilization threshold, as a percent of the available CPU.
-astCpuThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astCpuThreshold = lens _astCpuThreshold (\s a -> s { _astCpuThreshold = a })
-
--- | The amount of time (in minutes) after a scaling event occurs that AWS
--- OpsWorks should ignore metrics and suppress additional scaling events. For
--- example, AWS OpsWorks adds new instances following an upscaling event but the
--- instances won't start reducing the load until they have been booted and
--- configured. There is no point in raising additional scaling events during
--- that operation, which typically takes several minutes. 'IgnoreMetricsTime'
--- allows you to direct AWS OpsWorks to suppress scaling events long enough to
--- get the new instances online.
-astIgnoreMetricsTime :: Lens' AutoScalingThresholds (Maybe Natural)
-astIgnoreMetricsTime =
-    lens _astIgnoreMetricsTime (\s a -> s { _astIgnoreMetricsTime = a })
-        . mapping _Nat
-
--- | The number of instances to add or remove when the load exceeds a threshold.
-astInstanceCount :: Lens' AutoScalingThresholds (Maybe Int)
-astInstanceCount = lens _astInstanceCount (\s a -> s { _astInstanceCount = a })
-
--- | The load threshold. For more information about how load is computed, see <http://en.wikipedia.org/wiki/Load_%28computing%29 Load(computing)>.
-astLoadThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astLoadThreshold = lens _astLoadThreshold (\s a -> s { _astLoadThreshold = a })
-
--- | The memory utilization threshold, as a percent of the available memory.
-astMemoryThreshold :: Lens' AutoScalingThresholds (Maybe Double)
-astMemoryThreshold =
-    lens _astMemoryThreshold (\s a -> s { _astMemoryThreshold = a })
-
--- | The amount of time, in minutes, that the load must exceed a threshold before
--- more instances are added or removed.
-astThresholdsWaitTime :: Lens' AutoScalingThresholds (Maybe Natural)
-astThresholdsWaitTime =
-    lens _astThresholdsWaitTime (\s a -> s { _astThresholdsWaitTime = a })
-        . mapping _Nat
-
-instance FromJSON AutoScalingThresholds where
-    parseJSON = withObject "AutoScalingThresholds" $ \o -> AutoScalingThresholds
-        <$> o .:? "Alarms" .!= mempty
-        <*> o .:? "CpuThreshold"
-        <*> o .:? "IgnoreMetricsTime"
-        <*> o .:? "InstanceCount"
-        <*> o .:? "LoadThreshold"
-        <*> o .:? "MemoryThreshold"
-        <*> o .:? "ThresholdsWaitTime"
-
-instance ToJSON AutoScalingThresholds where
-    toJSON AutoScalingThresholds{..} = object
-        [ "InstanceCount"      .= _astInstanceCount
-        , "ThresholdsWaitTime" .= _astThresholdsWaitTime
-        , "IgnoreMetricsTime"  .= _astIgnoreMetricsTime
-        , "CpuThreshold"       .= _astCpuThreshold
-        , "MemoryThreshold"    .= _astMemoryThreshold
-        , "LoadThreshold"      .= _astLoadThreshold
-        , "Alarms"             .= _astAlarms
-        ]
-
-data App = App
-    { _appAppId            :: Maybe Text
-    , _appAppSource        :: Maybe Source
-    , _appAttributes       :: Map AppAttributesKeys Text
-    , _appCreatedAt        :: Maybe Text
-    , _appDataSources      :: List "DataSources" DataSource
-    , _appDescription      :: Maybe Text
-    , _appDomains          :: List "Domains" Text
-    , _appEnableSsl        :: Maybe Bool
-    , _appEnvironment      :: List "Environment" EnvironmentVariable
-    , _appName             :: Maybe Text
-    , _appShortname        :: Maybe Text
-    , _appSslConfiguration :: Maybe SslConfiguration
-    , _appStackId          :: Maybe Text
-    , _appType             :: Maybe AppType
-    } deriving (Eq, Read, Show)
-
--- | 'App' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'appAppId' @::@ 'Maybe' 'Text'
---
--- * 'appAppSource' @::@ 'Maybe' 'Source'
---
--- * 'appAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
---
--- * 'appCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'appDataSources' @::@ ['DataSource']
---
--- * 'appDescription' @::@ 'Maybe' 'Text'
---
--- * 'appDomains' @::@ ['Text']
---
--- * 'appEnableSsl' @::@ 'Maybe' 'Bool'
---
--- * 'appEnvironment' @::@ ['EnvironmentVariable']
---
--- * 'appName' @::@ 'Maybe' 'Text'
---
--- * 'appShortname' @::@ 'Maybe' 'Text'
---
--- * 'appSslConfiguration' @::@ 'Maybe' 'SslConfiguration'
---
--- * 'appStackId' @::@ 'Maybe' 'Text'
---
--- * 'appType' @::@ 'Maybe' 'AppType'
---
-app :: App
-app = App
-    { _appAppId            = Nothing
-    , _appStackId          = Nothing
-    , _appShortname        = Nothing
-    , _appName             = Nothing
-    , _appDescription      = Nothing
-    , _appDataSources      = mempty
-    , _appType             = Nothing
-    , _appAppSource        = Nothing
-    , _appDomains          = mempty
-    , _appEnableSsl        = Nothing
-    , _appSslConfiguration = Nothing
-    , _appAttributes       = mempty
-    , _appCreatedAt        = Nothing
-    , _appEnvironment      = mempty
-    }
-
--- | The app ID.
-appAppId :: Lens' App (Maybe Text)
-appAppId = lens _appAppId (\s a -> s { _appAppId = a })
-
--- | A 'Source' object that describes the app repository.
-appAppSource :: Lens' App (Maybe Source)
-appAppSource = lens _appAppSource (\s a -> s { _appAppSource = a })
-
--- | The stack attributes.
-appAttributes :: Lens' App (HashMap AppAttributesKeys Text)
-appAttributes = lens _appAttributes (\s a -> s { _appAttributes = a }) . _Map
-
--- | When the app was created.
-appCreatedAt :: Lens' App (Maybe Text)
-appCreatedAt = lens _appCreatedAt (\s a -> s { _appCreatedAt = a })
-
--- | The app's data sources.
-appDataSources :: Lens' App [DataSource]
-appDataSources = lens _appDataSources (\s a -> s { _appDataSources = a }) . _List
-
--- | A description of the app.
-appDescription :: Lens' App (Maybe Text)
-appDescription = lens _appDescription (\s a -> s { _appDescription = a })
-
--- | The app vhost settings with multiple domains separated by commas. For
--- example: ''www.example.com, example.com''
-appDomains :: Lens' App [Text]
-appDomains = lens _appDomains (\s a -> s { _appDomains = a }) . _List
-
--- | Whether to enable SSL for the app.
-appEnableSsl :: Lens' App (Maybe Bool)
-appEnableSsl = lens _appEnableSsl (\s a -> s { _appEnableSsl = a })
-
--- | An array of 'EnvironmentVariable' objects that specify environment variables to
--- be associated with the app. After you deploy the app, these variables are
--- defined on the associated app server instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
---
--- There is no specific limit on the number of environment variables. However,
--- the size of the associated data structure - which includes the variables'
--- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
--- This limit should accommodate most if not all use cases, but if you do exceed
--- it, you will cause an exception (API) with an "Environment: is too large
--- (maximum is 10KB)" message.
-appEnvironment :: Lens' App [EnvironmentVariable]
-appEnvironment = lens _appEnvironment (\s a -> s { _appEnvironment = a }) . _List
-
--- | The app name.
-appName :: Lens' App (Maybe Text)
-appName = lens _appName (\s a -> s { _appName = a })
-
--- | The app's short name.
-appShortname :: Lens' App (Maybe Text)
-appShortname = lens _appShortname (\s a -> s { _appShortname = a })
-
--- | An 'SslConfiguration' object with the SSL configuration.
-appSslConfiguration :: Lens' App (Maybe SslConfiguration)
-appSslConfiguration =
-    lens _appSslConfiguration (\s a -> s { _appSslConfiguration = a })
-
--- | The app stack ID.
-appStackId :: Lens' App (Maybe Text)
-appStackId = lens _appStackId (\s a -> s { _appStackId = a })
-
--- | The app type.
-appType :: Lens' App (Maybe AppType)
-appType = lens _appType (\s a -> s { _appType = a })
-
-instance FromJSON App where
-    parseJSON = withObject "App" $ \o -> App
-        <$> o .:? "AppId"
-        <*> o .:? "AppSource"
-        <*> o .:? "Attributes" .!= mempty
-        <*> o .:? "CreatedAt"
-        <*> o .:? "DataSources" .!= mempty
-        <*> o .:? "Description"
-        <*> o .:? "Domains" .!= mempty
-        <*> o .:? "EnableSsl"
-        <*> o .:? "Environment" .!= mempty
-        <*> o .:? "Name"
-        <*> o .:? "Shortname"
-        <*> o .:? "SslConfiguration"
-        <*> o .:? "StackId"
-        <*> o .:? "Type"
-
-instance ToJSON App where
-    toJSON App{..} = object
-        [ "AppId"            .= _appAppId
-        , "StackId"          .= _appStackId
-        , "Shortname"        .= _appShortname
-        , "Name"             .= _appName
-        , "Description"      .= _appDescription
-        , "DataSources"      .= _appDataSources
-        , "Type"             .= _appType
-        , "AppSource"        .= _appAppSource
-        , "Domains"          .= _appDomains
-        , "EnableSsl"        .= _appEnableSsl
-        , "SslConfiguration" .= _appSslConfiguration
-        , "Attributes"       .= _appAttributes
-        , "CreatedAt"        .= _appCreatedAt
-        , "Environment"      .= _appEnvironment
-        ]
-
-data ElasticIp = ElasticIp
-    { _eiDomain     :: Maybe Text
-    , _eiInstanceId :: Maybe Text
-    , _eiIp         :: Maybe Text
-    , _eiName       :: Maybe Text
-    , _eiRegion     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'eiDomain' @::@ 'Maybe' 'Text'
---
--- * 'eiInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'eiIp' @::@ 'Maybe' 'Text'
---
--- * 'eiName' @::@ 'Maybe' 'Text'
---
--- * 'eiRegion' @::@ 'Maybe' 'Text'
---
-elasticIp :: ElasticIp
-elasticIp = ElasticIp
-    { _eiIp         = Nothing
-    , _eiName       = Nothing
-    , _eiDomain     = Nothing
-    , _eiRegion     = Nothing
-    , _eiInstanceId = Nothing
-    }
-
--- | The domain.
-eiDomain :: Lens' ElasticIp (Maybe Text)
-eiDomain = lens _eiDomain (\s a -> s { _eiDomain = a })
-
--- | The ID of the instance that the address is attached to.
-eiInstanceId :: Lens' ElasticIp (Maybe Text)
-eiInstanceId = lens _eiInstanceId (\s a -> s { _eiInstanceId = a })
-
--- | The IP address.
-eiIp :: Lens' ElasticIp (Maybe Text)
-eiIp = lens _eiIp (\s a -> s { _eiIp = a })
-
--- | The name.
-eiName :: Lens' ElasticIp (Maybe Text)
-eiName = lens _eiName (\s a -> s { _eiName = a })
-
--- | The AWS region. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
-eiRegion :: Lens' ElasticIp (Maybe Text)
-eiRegion = lens _eiRegion (\s a -> s { _eiRegion = a })
-
-instance FromJSON ElasticIp where
-    parseJSON = withObject "ElasticIp" $ \o -> ElasticIp
-        <$> o .:? "Domain"
-        <*> o .:? "InstanceId"
-        <*> o .:? "Ip"
-        <*> o .:? "Name"
-        <*> o .:? "Region"
-
-instance ToJSON ElasticIp where
-    toJSON ElasticIp{..} = object
-        [ "Ip"         .= _eiIp
-        , "Name"       .= _eiName
-        , "Domain"     .= _eiDomain
-        , "Region"     .= _eiRegion
-        , "InstanceId" .= _eiInstanceId
-        ]
-
-data ShutdownEventConfiguration = ShutdownEventConfiguration
-    { _secDelayUntilElbConnectionsDrained :: Maybe Bool
-    , _secExecutionTimeout                :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ShutdownEventConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'secDelayUntilElbConnectionsDrained' @::@ 'Maybe' 'Bool'
---
--- * 'secExecutionTimeout' @::@ 'Maybe' 'Int'
---
-shutdownEventConfiguration :: ShutdownEventConfiguration
-shutdownEventConfiguration = ShutdownEventConfiguration
-    { _secExecutionTimeout                = Nothing
-    , _secDelayUntilElbConnectionsDrained = Nothing
-    }
-
--- | Whether to enable Elastic Load Balancing connection draining. For more
--- information, see <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
-secDelayUntilElbConnectionsDrained :: Lens' ShutdownEventConfiguration (Maybe Bool)
-secDelayUntilElbConnectionsDrained =
-    lens _secDelayUntilElbConnectionsDrained
-        (\s a -> s { _secDelayUntilElbConnectionsDrained = a })
-
--- | The time, in seconds, that AWS OpsWorks will wait after triggering a Shutdown
--- event before shutting down an instance.
-secExecutionTimeout :: Lens' ShutdownEventConfiguration (Maybe Int)
-secExecutionTimeout =
-    lens _secExecutionTimeout (\s a -> s { _secExecutionTimeout = a })
-
-instance FromJSON ShutdownEventConfiguration where
-    parseJSON = withObject "ShutdownEventConfiguration" $ \o -> ShutdownEventConfiguration
-        <$> o .:? "DelayUntilElbConnectionsDrained"
-        <*> o .:? "ExecutionTimeout"
-
-instance ToJSON ShutdownEventConfiguration where
-    toJSON ShutdownEventConfiguration{..} = object
-        [ "ExecutionTimeout"                .= _secExecutionTimeout
-        , "DelayUntilElbConnectionsDrained" .= _secDelayUntilElbConnectionsDrained
-        ]
-
-data InstanceIdentity = InstanceIdentity
-    { _iiDocument  :: Maybe Text
-    , _iiSignature :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'InstanceIdentity' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iiDocument' @::@ 'Maybe' 'Text'
---
--- * 'iiSignature' @::@ 'Maybe' 'Text'
---
-instanceIdentity :: InstanceIdentity
-instanceIdentity = InstanceIdentity
-    { _iiDocument  = Nothing
-    , _iiSignature = Nothing
-    }
-
--- | A JSON document that contains the metadata.
-iiDocument :: Lens' InstanceIdentity (Maybe Text)
-iiDocument = lens _iiDocument (\s a -> s { _iiDocument = a })
-
--- | A signature that can be used to verify the document's accuracy and
--- authenticity.
-iiSignature :: Lens' InstanceIdentity (Maybe Text)
-iiSignature = lens _iiSignature (\s a -> s { _iiSignature = a })
-
-instance FromJSON InstanceIdentity where
-    parseJSON = withObject "InstanceIdentity" $ \o -> InstanceIdentity
-        <$> o .:? "Document"
-        <*> o .:? "Signature"
-
-instance ToJSON InstanceIdentity where
-    toJSON InstanceIdentity{..} = object
-        [ "Document"  .= _iiDocument
-        , "Signature" .= _iiSignature
-        ]
-
-data UserProfile = UserProfile
-    { _upAllowSelfManagement :: Maybe Bool
-    , _upIamUserArn          :: Maybe Text
-    , _upName                :: Maybe Text
-    , _upSshPublicKey        :: Maybe Text
-    , _upSshUsername         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'UserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'upAllowSelfManagement' @::@ 'Maybe' 'Bool'
---
--- * 'upIamUserArn' @::@ 'Maybe' 'Text'
---
--- * 'upName' @::@ 'Maybe' 'Text'
---
--- * 'upSshPublicKey' @::@ 'Maybe' 'Text'
---
--- * 'upSshUsername' @::@ 'Maybe' 'Text'
---
-userProfile :: UserProfile
-userProfile = UserProfile
-    { _upIamUserArn          = Nothing
-    , _upName                = Nothing
-    , _upSshUsername         = Nothing
-    , _upSshPublicKey        = Nothing
-    , _upAllowSelfManagement = Nothing
-    }
-
--- | Whether users can specify their own SSH public key through the My Settings
--- page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions>.
-upAllowSelfManagement :: Lens' UserProfile (Maybe Bool)
-upAllowSelfManagement =
-    lens _upAllowSelfManagement (\s a -> s { _upAllowSelfManagement = a })
-
--- | The user's IAM ARN.
-upIamUserArn :: Lens' UserProfile (Maybe Text)
-upIamUserArn = lens _upIamUserArn (\s a -> s { _upIamUserArn = a })
-
--- | The user's name.
-upName :: Lens' UserProfile (Maybe Text)
-upName = lens _upName (\s a -> s { _upName = a })
-
--- | The user's SSH public key.
-upSshPublicKey :: Lens' UserProfile (Maybe Text)
-upSshPublicKey = lens _upSshPublicKey (\s a -> s { _upSshPublicKey = a })
-
--- | The user's SSH user name.
-upSshUsername :: Lens' UserProfile (Maybe Text)
-upSshUsername = lens _upSshUsername (\s a -> s { _upSshUsername = a })
-
-instance FromJSON UserProfile where
-    parseJSON = withObject "UserProfile" $ \o -> UserProfile
-        <$> o .:? "AllowSelfManagement"
-        <*> o .:? "IamUserArn"
-        <*> o .:? "Name"
-        <*> o .:? "SshPublicKey"
-        <*> o .:? "SshUsername"
-
-instance ToJSON UserProfile where
-    toJSON UserProfile{..} = object
-        [ "IamUserArn"          .= _upIamUserArn
-        , "Name"                .= _upName
-        , "SshUsername"         .= _upSshUsername
-        , "SshPublicKey"        .= _upSshPublicKey
-        , "AllowSelfManagement" .= _upAllowSelfManagement
-        ]
-
-data AutoScalingType
-    = Load  -- ^ load
-    | Timer -- ^ timer
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable AutoScalingType
-
-instance FromText AutoScalingType where
-    parser = takeLowerText >>= \case
-        "load"  -> pure Load
-        "timer" -> pure Timer
-        e       -> fail $
-            "Failure parsing AutoScalingType from " ++ show e
-
-instance ToText AutoScalingType where
-    toText = \case
-        Load  -> "load"
-        Timer -> "timer"
-
-instance ToByteString AutoScalingType
-instance ToHeader     AutoScalingType
-instance ToQuery      AutoScalingType
-
-instance FromJSON AutoScalingType where
-    parseJSON = parseJSONText "AutoScalingType"
-
-instance ToJSON AutoScalingType where
-    toJSON = toJSONText
-
-data Source = Source
-    { _sPassword :: Maybe Text
-    , _sRevision :: Maybe Text
-    , _sSshKey   :: Maybe Text
-    , _sType     :: Maybe SourceType
-    , _sUrl      :: Maybe Text
-    , _sUsername :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Source' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sPassword' @::@ 'Maybe' 'Text'
---
--- * 'sRevision' @::@ 'Maybe' 'Text'
---
--- * 'sSshKey' @::@ 'Maybe' 'Text'
---
--- * 'sType' @::@ 'Maybe' 'SourceType'
---
--- * 'sUrl' @::@ 'Maybe' 'Text'
---
--- * 'sUsername' @::@ 'Maybe' 'Text'
---
-source :: Source
-source = Source
-    { _sType     = Nothing
-    , _sUrl      = Nothing
-    , _sUsername = Nothing
-    , _sPassword = Nothing
-    , _sSshKey   = Nothing
-    , _sRevision = Nothing
-    }
-
--- | When included in a request, the parameter depends on the repository type.
---
--- For Amazon S3 bundles, set 'Password' to the appropriate IAM secret access
--- key. For HTTP bundles and Subversion repositories, set 'Password' to the
--- password.  For more information on how to safely handle IAM credentials, see <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html >.
---
--- In responses, AWS OpsWorks returns '*****FILTERED*****' instead of the actual
--- value.
-sPassword :: Lens' Source (Maybe Text)
-sPassword = lens _sPassword (\s a -> s { _sPassword = a })
-
--- | The application's version. AWS OpsWorks enables you to easily deploy new
--- versions of an application. One of the simplest approaches is to have
--- branches or revisions in your repository that represent different versions
--- that can potentially be deployed.
-sRevision :: Lens' Source (Maybe Text)
-sRevision = lens _sRevision (\s a -> s { _sRevision = a })
-
--- | In requests, the repository's SSH key.
---
--- In responses, AWS OpsWorks returns '*****FILTERED*****' instead of the actual
--- value.
-sSshKey :: Lens' Source (Maybe Text)
-sSshKey = lens _sSshKey (\s a -> s { _sSshKey = a })
-
--- | The repository type.
-sType :: Lens' Source (Maybe SourceType)
-sType = lens _sType (\s a -> s { _sType = a })
-
--- | The source URL.
-sUrl :: Lens' Source (Maybe Text)
-sUrl = lens _sUrl (\s a -> s { _sUrl = a })
-
--- | This parameter depends on the repository type.
---
--- For Amazon S3 bundles, set 'Username' to the appropriate IAM access key ID. For HTTP bundles, Git repositories, and Subversion repositories, set
--- 'Username' to the user name.
-sUsername :: Lens' Source (Maybe Text)
-sUsername = lens _sUsername (\s a -> s { _sUsername = a })
-
-instance FromJSON Source where
-    parseJSON = withObject "Source" $ \o -> Source
-        <$> o .:? "Password"
-        <*> o .:? "Revision"
-        <*> o .:? "SshKey"
-        <*> o .:? "Type"
-        <*> o .:? "Url"
-        <*> o .:? "Username"
-
-instance ToJSON Source where
-    toJSON Source{..} = object
-        [ "Type"     .= _sType
-        , "Url"      .= _sUrl
-        , "Username" .= _sUsername
-        , "Password" .= _sPassword
-        , "SshKey"   .= _sSshKey
-        , "Revision" .= _sRevision
-        ]
-
-data DataSource = DataSource
-    { _dsArn          :: Maybe Text
-    , _dsDatabaseName :: Maybe Text
-    , _dsType         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DataSource' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsArn' @::@ 'Maybe' 'Text'
---
--- * 'dsDatabaseName' @::@ 'Maybe' 'Text'
---
--- * 'dsType' @::@ 'Maybe' 'Text'
---
-dataSource :: DataSource
-dataSource = DataSource
-    { _dsType         = Nothing
-    , _dsArn          = Nothing
-    , _dsDatabaseName = Nothing
-    }
-
--- | The data source's ARN.
-dsArn :: Lens' DataSource (Maybe Text)
-dsArn = lens _dsArn (\s a -> s { _dsArn = a })
-
--- | The database name.
-dsDatabaseName :: Lens' DataSource (Maybe Text)
-dsDatabaseName = lens _dsDatabaseName (\s a -> s { _dsDatabaseName = a })
-
--- | The data source's type, 'AutoSelectOpsworksMysqlInstance', 'OpsworksMysqlInstance'
--- , or 'RdsDbInstance'.
-dsType :: Lens' DataSource (Maybe Text)
-dsType = lens _dsType (\s a -> s { _dsType = a })
-
-instance FromJSON DataSource where
-    parseJSON = withObject "DataSource" $ \o -> DataSource
-        <$> o .:? "Arn"
-        <*> o .:? "DatabaseName"
-        <*> o .:? "Type"
-
-instance ToJSON DataSource where
-    toJSON DataSource{..} = object
-        [ "Type"         .= _dsType
-        , "Arn"          .= _dsArn
-        , "DatabaseName" .= _dsDatabaseName
-        ]
-
-data Architecture
-    = I386  -- ^ i386
-    | X8664 -- ^ x86_64
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable Architecture
-
-instance FromText Architecture where
-    parser = takeLowerText >>= \case
-        "i386"   -> pure I386
-        "x86_64" -> pure X8664
-        e        -> fail $
-            "Failure parsing Architecture from " ++ show e
-
-instance ToText Architecture where
-    toText = \case
-        I386  -> "i386"
-        X8664 -> "x86_64"
-
-instance ToByteString Architecture
-instance ToHeader     Architecture
-instance ToQuery      Architecture
-
-instance FromJSON Architecture where
-    parseJSON = parseJSONText "Architecture"
-
-instance ToJSON Architecture where
-    toJSON = toJSONText
-
-data StackConfigurationManager = StackConfigurationManager
-    { _scmName    :: Maybe Text
-    , _scmVersion :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'StackConfigurationManager' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'scmName' @::@ 'Maybe' 'Text'
---
--- * 'scmVersion' @::@ 'Maybe' 'Text'
---
-stackConfigurationManager :: StackConfigurationManager
-stackConfigurationManager = StackConfigurationManager
-    { _scmName    = Nothing
-    , _scmVersion = Nothing
-    }
-
--- | The name. This parameter must be set to "Chef".
-scmName :: Lens' StackConfigurationManager (Maybe Text)
-scmName = lens _scmName (\s a -> s { _scmName = a })
-
--- | The Chef version. This parameter must be set to 0.9, 11.4, or 11.10. The
--- default value is 11.4.
-scmVersion :: Lens' StackConfigurationManager (Maybe Text)
-scmVersion = lens _scmVersion (\s a -> s { _scmVersion = a })
-
-instance FromJSON StackConfigurationManager where
-    parseJSON = withObject "StackConfigurationManager" $ \o -> StackConfigurationManager
-        <$> o .:? "Name"
-        <*> o .:? "Version"
-
-instance ToJSON StackConfigurationManager where
-    toJSON StackConfigurationManager{..} = object
-        [ "Name"    .= _scmName
-        , "Version" .= _scmVersion
-        ]
-
-data EbsBlockDevice = EbsBlockDevice
-    { _ebdDeleteOnTermination :: Maybe Bool
-    , _ebdIops                :: Maybe Int
-    , _ebdSnapshotId          :: Maybe Text
-    , _ebdVolumeSize          :: Maybe Int
-    , _ebdVolumeType          :: Maybe VolumeType
-    } deriving (Eq, Read, Show)
-
--- | 'EbsBlockDevice' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ebdDeleteOnTermination' @::@ 'Maybe' 'Bool'
---
--- * 'ebdIops' @::@ 'Maybe' 'Int'
---
--- * 'ebdSnapshotId' @::@ 'Maybe' 'Text'
---
--- * 'ebdVolumeSize' @::@ 'Maybe' 'Int'
---
--- * 'ebdVolumeType' @::@ 'Maybe' 'VolumeType'
---
-ebsBlockDevice :: EbsBlockDevice
-ebsBlockDevice = EbsBlockDevice
-    { _ebdSnapshotId          = Nothing
-    , _ebdIops                = Nothing
-    , _ebdVolumeSize          = Nothing
-    , _ebdVolumeType          = Nothing
-    , _ebdDeleteOnTermination = Nothing
-    }
-
--- | Whether the volume is deleted on instance termination.
-ebdDeleteOnTermination :: Lens' EbsBlockDevice (Maybe Bool)
-ebdDeleteOnTermination =
-    lens _ebdDeleteOnTermination (\s a -> s { _ebdDeleteOnTermination = a })
-
--- | The number of I/O operations per second (IOPS) that the volume supports. For
--- more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
-ebdIops :: Lens' EbsBlockDevice (Maybe Int)
-ebdIops = lens _ebdIops (\s a -> s { _ebdIops = a })
-
--- | The snapshot ID.
-ebdSnapshotId :: Lens' EbsBlockDevice (Maybe Text)
-ebdSnapshotId = lens _ebdSnapshotId (\s a -> s { _ebdSnapshotId = a })
-
--- | The volume size, in GiB. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
-ebdVolumeSize :: Lens' EbsBlockDevice (Maybe Int)
-ebdVolumeSize = lens _ebdVolumeSize (\s a -> s { _ebdVolumeSize = a })
-
--- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for Provisioned
--- IOPS (SSD) volumes, and 'standard' for Magnetic volumes.
-ebdVolumeType :: Lens' EbsBlockDevice (Maybe VolumeType)
-ebdVolumeType = lens _ebdVolumeType (\s a -> s { _ebdVolumeType = a })
-
-instance FromJSON EbsBlockDevice where
-    parseJSON = withObject "EbsBlockDevice" $ \o -> EbsBlockDevice
-        <$> o .:? "DeleteOnTermination"
-        <*> o .:? "Iops"
-        <*> o .:? "SnapshotId"
-        <*> o .:? "VolumeSize"
-        <*> o .:? "VolumeType"
-
-instance ToJSON EbsBlockDevice where
-    toJSON EbsBlockDevice{..} = object
-        [ "SnapshotId"          .= _ebdSnapshotId
-        , "Iops"                .= _ebdIops
-        , "VolumeSize"          .= _ebdVolumeSize
-        , "VolumeType"          .= _ebdVolumeType
-        , "DeleteOnTermination" .= _ebdDeleteOnTermination
-        ]
-
-data LayerAttributesKeys
-    = BundlerVersion              -- ^ BundlerVersion
-    | EnableHaproxyStats          -- ^ EnableHaproxyStats
-    | GangliaPassword             -- ^ GangliaPassword
-    | GangliaUrl                  -- ^ GangliaUrl
-    | GangliaUser                 -- ^ GangliaUser
-    | HaproxyHealthCheckMethod    -- ^ HaproxyHealthCheckMethod
-    | HaproxyHealthCheckUrl       -- ^ HaproxyHealthCheckUrl
-    | HaproxyStatsPassword        -- ^ HaproxyStatsPassword
-    | HaproxyStatsUrl             -- ^ HaproxyStatsUrl
-    | HaproxyStatsUser            -- ^ HaproxyStatsUser
-    | JavaAppServer               -- ^ JavaAppServer
-    | JavaAppServerVersion        -- ^ JavaAppServerVersion
-    | Jvm                         -- ^ Jvm
-    | JvmOptions                  -- ^ JvmOptions
-    | JvmVersion                  -- ^ JvmVersion
-    | ManageBundler               -- ^ ManageBundler
-    | MemcachedMemory             -- ^ MemcachedMemory
-    | MysqlRootPassword           -- ^ MysqlRootPassword
-    | MysqlRootPasswordUbiquitous -- ^ MysqlRootPasswordUbiquitous
-    | NodejsVersion               -- ^ NodejsVersion
-    | PassengerVersion            -- ^ PassengerVersion
-    | RailsStack                  -- ^ RailsStack
-    | RubyVersion                 -- ^ RubyVersion
-    | RubygemsVersion             -- ^ RubygemsVersion
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable LayerAttributesKeys
-
-instance FromText LayerAttributesKeys where
-    parser = takeLowerText >>= \case
-        "bundlerversion"              -> pure BundlerVersion
-        "enablehaproxystats"          -> pure EnableHaproxyStats
-        "gangliapassword"             -> pure GangliaPassword
-        "gangliaurl"                  -> pure GangliaUrl
-        "gangliauser"                 -> pure GangliaUser
-        "haproxyhealthcheckmethod"    -> pure HaproxyHealthCheckMethod
-        "haproxyhealthcheckurl"       -> pure HaproxyHealthCheckUrl
-        "haproxystatspassword"        -> pure HaproxyStatsPassword
-        "haproxystatsurl"             -> pure HaproxyStatsUrl
-        "haproxystatsuser"            -> pure HaproxyStatsUser
-        "javaappserver"               -> pure JavaAppServer
-        "javaappserverversion"        -> pure JavaAppServerVersion
-        "jvm"                         -> pure Jvm
-        "jvmoptions"                  -> pure JvmOptions
-        "jvmversion"                  -> pure JvmVersion
-        "managebundler"               -> pure ManageBundler
-        "memcachedmemory"             -> pure MemcachedMemory
-        "mysqlrootpassword"           -> pure MysqlRootPassword
-        "mysqlrootpasswordubiquitous" -> pure MysqlRootPasswordUbiquitous
-        "nodejsversion"               -> pure NodejsVersion
-        "passengerversion"            -> pure PassengerVersion
-        "railsstack"                  -> pure RailsStack
-        "rubyversion"                 -> pure RubyVersion
-        "rubygemsversion"             -> pure RubygemsVersion
-        e                             -> fail $
-            "Failure parsing LayerAttributesKeys from " ++ show e
-
-instance ToText LayerAttributesKeys where
-    toText = \case
-        BundlerVersion              -> "BundlerVersion"
-        EnableHaproxyStats          -> "EnableHaproxyStats"
-        GangliaPassword             -> "GangliaPassword"
-        GangliaUrl                  -> "GangliaUrl"
-        GangliaUser                 -> "GangliaUser"
-        HaproxyHealthCheckMethod    -> "HaproxyHealthCheckMethod"
-        HaproxyHealthCheckUrl       -> "HaproxyHealthCheckUrl"
-        HaproxyStatsPassword        -> "HaproxyStatsPassword"
-        HaproxyStatsUrl             -> "HaproxyStatsUrl"
-        HaproxyStatsUser            -> "HaproxyStatsUser"
-        JavaAppServer               -> "JavaAppServer"
-        JavaAppServerVersion        -> "JavaAppServerVersion"
-        Jvm                         -> "Jvm"
-        JvmOptions                  -> "JvmOptions"
-        JvmVersion                  -> "JvmVersion"
-        ManageBundler               -> "ManageBundler"
-        MemcachedMemory             -> "MemcachedMemory"
-        MysqlRootPassword           -> "MysqlRootPassword"
-        MysqlRootPasswordUbiquitous -> "MysqlRootPasswordUbiquitous"
-        NodejsVersion               -> "NodejsVersion"
-        PassengerVersion            -> "PassengerVersion"
-        RailsStack                  -> "RailsStack"
-        RubyVersion                 -> "RubyVersion"
-        RubygemsVersion             -> "RubygemsVersion"
-
-instance ToByteString LayerAttributesKeys
-instance ToHeader     LayerAttributesKeys
-instance ToQuery      LayerAttributesKeys
-
-instance FromJSON LayerAttributesKeys where
-    parseJSON = parseJSONText "LayerAttributesKeys"
-
-instance ToJSON LayerAttributesKeys where
-    toJSON = toJSONText
-
-data TemporaryCredential = TemporaryCredential
-    { _tcInstanceId        :: Maybe Text
-    , _tcPassword          :: Maybe Text
-    , _tcUsername          :: Maybe Text
-    , _tcValidForInMinutes :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TemporaryCredential' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tcInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'tcPassword' @::@ 'Maybe' 'Text'
---
--- * 'tcUsername' @::@ 'Maybe' 'Text'
---
--- * 'tcValidForInMinutes' @::@ 'Maybe' 'Int'
---
-temporaryCredential :: TemporaryCredential
-temporaryCredential = TemporaryCredential
-    { _tcUsername          = Nothing
-    , _tcPassword          = Nothing
-    , _tcValidForInMinutes = Nothing
-    , _tcInstanceId        = Nothing
-    }
-
--- | The instance's AWS OpsWorks ID.
-tcInstanceId :: Lens' TemporaryCredential (Maybe Text)
-tcInstanceId = lens _tcInstanceId (\s a -> s { _tcInstanceId = a })
-
--- | The password.
-tcPassword :: Lens' TemporaryCredential (Maybe Text)
-tcPassword = lens _tcPassword (\s a -> s { _tcPassword = a })
-
--- | The user name.
-tcUsername :: Lens' TemporaryCredential (Maybe Text)
-tcUsername = lens _tcUsername (\s a -> s { _tcUsername = a })
-
--- | The length of time (in minutes) that the grant is valid. When the grant
--- expires, at the end of this period, the user will no longer be able to use
--- the credentials to log in. If they are logged in at the time, they will be
--- automatically logged out.
-tcValidForInMinutes :: Lens' TemporaryCredential (Maybe Int)
-tcValidForInMinutes =
-    lens _tcValidForInMinutes (\s a -> s { _tcValidForInMinutes = a })
-
-instance FromJSON TemporaryCredential where
-    parseJSON = withObject "TemporaryCredential" $ \o -> TemporaryCredential
-        <$> o .:? "InstanceId"
-        <*> o .:? "Password"
-        <*> o .:? "Username"
-        <*> o .:? "ValidForInMinutes"
-
-instance ToJSON TemporaryCredential where
-    toJSON TemporaryCredential{..} = object
-        [ "Username"          .= _tcUsername
-        , "Password"          .= _tcPassword
-        , "ValidForInMinutes" .= _tcValidForInMinutes
-        , "InstanceId"        .= _tcInstanceId
-        ]
-
-data VolumeConfiguration = VolumeConfiguration
-    { _vcIops          :: Maybe Int
-    , _vcMountPoint    :: Text
-    , _vcNumberOfDisks :: Int
-    , _vcRaidLevel     :: Maybe Int
-    , _vcSize          :: Int
-    , _vcVolumeType    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VolumeConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vcIops' @::@ 'Maybe' 'Int'
---
--- * 'vcMountPoint' @::@ 'Text'
---
--- * 'vcNumberOfDisks' @::@ 'Int'
---
--- * 'vcRaidLevel' @::@ 'Maybe' 'Int'
---
--- * 'vcSize' @::@ 'Int'
---
--- * 'vcVolumeType' @::@ 'Maybe' 'Text'
---
-volumeConfiguration :: Text -- ^ 'vcMountPoint'
-                    -> Int -- ^ 'vcNumberOfDisks'
-                    -> Int -- ^ 'vcSize'
-                    -> VolumeConfiguration
-volumeConfiguration p1 p2 p3 = VolumeConfiguration
-    { _vcMountPoint    = p1
-    , _vcNumberOfDisks = p2
-    , _vcSize          = p3
-    , _vcRaidLevel     = Nothing
-    , _vcVolumeType    = Nothing
-    , _vcIops          = Nothing
-    }
-
--- | For PIOPS volumes, the IOPS per disk.
-vcIops :: Lens' VolumeConfiguration (Maybe Int)
-vcIops = lens _vcIops (\s a -> s { _vcIops = a })
-
--- | The volume mount point. For example "/dev/sdh".
-vcMountPoint :: Lens' VolumeConfiguration Text
-vcMountPoint = lens _vcMountPoint (\s a -> s { _vcMountPoint = a })
-
--- | The number of disks in the volume.
-vcNumberOfDisks :: Lens' VolumeConfiguration Int
-vcNumberOfDisks = lens _vcNumberOfDisks (\s a -> s { _vcNumberOfDisks = a })
-
--- | The volume <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level>.
-vcRaidLevel :: Lens' VolumeConfiguration (Maybe Int)
-vcRaidLevel = lens _vcRaidLevel (\s a -> s { _vcRaidLevel = a })
-
--- | The volume size.
-vcSize :: Lens' VolumeConfiguration Int
-vcSize = lens _vcSize (\s a -> s { _vcSize = a })
-
--- | The volume type:
---
--- 'standard' - Magnetic  'io1' - Provisioned IOPS (SSD)  'gp2' - General Purpose
--- (SSD)
-vcVolumeType :: Lens' VolumeConfiguration (Maybe Text)
-vcVolumeType = lens _vcVolumeType (\s a -> s { _vcVolumeType = a })
-
-instance FromJSON VolumeConfiguration where
-    parseJSON = withObject "VolumeConfiguration" $ \o -> VolumeConfiguration
-        <$> o .:? "Iops"
-        <*> o .:  "MountPoint"
-        <*> o .:  "NumberOfDisks"
-        <*> o .:? "RaidLevel"
-        <*> o .:  "Size"
-        <*> o .:? "VolumeType"
-
-instance ToJSON VolumeConfiguration where
-    toJSON VolumeConfiguration{..} = object
-        [ "MountPoint"    .= _vcMountPoint
-        , "RaidLevel"     .= _vcRaidLevel
-        , "NumberOfDisks" .= _vcNumberOfDisks
-        , "Size"          .= _vcSize
-        , "VolumeType"    .= _vcVolumeType
-        , "Iops"          .= _vcIops
-        ]
-
-data VolumeType
-    = Gp2      -- ^ gp2
-    | Io1      -- ^ io1
-    | Standard -- ^ standard
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable VolumeType
-
-instance FromText VolumeType where
-    parser = takeLowerText >>= \case
-        "gp2"      -> pure Gp2
-        "io1"      -> pure Io1
-        "standard" -> pure Standard
-        e          -> fail $
-            "Failure parsing VolumeType from " ++ show e
-
-instance ToText VolumeType where
-    toText = \case
-        Gp2      -> "gp2"
-        Io1      -> "io1"
-        Standard -> "standard"
-
-instance ToByteString VolumeType
-instance ToHeader     VolumeType
-instance ToQuery      VolumeType
-
-instance FromJSON VolumeType where
-    parseJSON = parseJSONText "VolumeType"
-
-instance ToJSON VolumeType where
-    toJSON = toJSONText
-
-data ReportedOs = ReportedOs
-    { _roFamily  :: Maybe Text
-    , _roName    :: Maybe Text
-    , _roVersion :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ReportedOs' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'roFamily' @::@ 'Maybe' 'Text'
---
--- * 'roName' @::@ 'Maybe' 'Text'
---
--- * 'roVersion' @::@ 'Maybe' 'Text'
---
-reportedOs :: ReportedOs
-reportedOs = ReportedOs
-    { _roFamily  = Nothing
-    , _roName    = Nothing
-    , _roVersion = Nothing
-    }
-
--- | The operating system family.
-roFamily :: Lens' ReportedOs (Maybe Text)
-roFamily = lens _roFamily (\s a -> s { _roFamily = a })
-
--- | The operating system name.
-roName :: Lens' ReportedOs (Maybe Text)
-roName = lens _roName (\s a -> s { _roName = a })
-
--- | The operating system version.
-roVersion :: Lens' ReportedOs (Maybe Text)
-roVersion = lens _roVersion (\s a -> s { _roVersion = a })
-
-instance FromJSON ReportedOs where
-    parseJSON = withObject "ReportedOs" $ \o -> ReportedOs
-        <$> o .:? "Family"
-        <*> o .:? "Name"
-        <*> o .:? "Version"
-
-instance ToJSON ReportedOs where
-    toJSON ReportedOs{..} = object
-        [ "Family"  .= _roFamily
-        , "Name"    .= _roName
-        , "Version" .= _roVersion
-        ]
-
-data Permission = Permission
-    { _pAllowSsh   :: Maybe Bool
-    , _pAllowSudo  :: Maybe Bool
-    , _pIamUserArn :: Maybe Text
-    , _pLevel      :: Maybe Text
-    , _pStackId    :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Permission' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'pAllowSsh' @::@ 'Maybe' 'Bool'
---
--- * 'pAllowSudo' @::@ 'Maybe' 'Bool'
---
--- * 'pIamUserArn' @::@ 'Maybe' 'Text'
---
--- * 'pLevel' @::@ 'Maybe' 'Text'
---
--- * 'pStackId' @::@ 'Maybe' 'Text'
---
-permission :: Permission
-permission = Permission
-    { _pStackId    = Nothing
-    , _pIamUserArn = Nothing
-    , _pAllowSsh   = Nothing
-    , _pAllowSudo  = Nothing
-    , _pLevel      = Nothing
-    }
-
--- | Whether the user can use SSH.
-pAllowSsh :: Lens' Permission (Maybe Bool)
-pAllowSsh = lens _pAllowSsh (\s a -> s { _pAllowSsh = a })
-
--- | Whether the user can use sudo.
-pAllowSudo :: Lens' Permission (Maybe Bool)
-pAllowSudo = lens _pAllowSudo (\s a -> s { _pAllowSudo = a })
-
--- | The Amazon Resource Name (ARN) for an AWS Identity and Access Management
--- (IAM) role. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-pIamUserArn :: Lens' Permission (Maybe Text)
-pIamUserArn = lens _pIamUserArn (\s a -> s { _pIamUserArn = a })
-
--- | The user's permission level, which must be the following:
---
--- 'deny'   'show'   'deploy'   'manage'   'iam_only'   For more information on the
--- permissions associated with these levels, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
-pLevel :: Lens' Permission (Maybe Text)
-pLevel = lens _pLevel (\s a -> s { _pLevel = a })
-
--- | A stack ID.
-pStackId :: Lens' Permission (Maybe Text)
-pStackId = lens _pStackId (\s a -> s { _pStackId = a })
-
-instance FromJSON Permission where
-    parseJSON = withObject "Permission" $ \o -> Permission
-        <$> o .:? "AllowSsh"
-        <*> o .:? "AllowSudo"
-        <*> o .:? "IamUserArn"
-        <*> o .:? "Level"
-        <*> o .:? "StackId"
-
-instance ToJSON Permission where
-    toJSON Permission{..} = object
-        [ "StackId"    .= _pStackId
-        , "IamUserArn" .= _pIamUserArn
-        , "AllowSsh"   .= _pAllowSsh
-        , "AllowSudo"  .= _pAllowSudo
-        , "Level"      .= _pLevel
-        ]
-
-data EnvironmentVariable = EnvironmentVariable
-    { _evKey    :: Text
-    , _evSecure :: Maybe Bool
-    , _evValue  :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'EnvironmentVariable' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'evKey' @::@ 'Text'
---
--- * 'evSecure' @::@ 'Maybe' 'Bool'
---
--- * 'evValue' @::@ 'Text'
---
-environmentVariable :: Text -- ^ 'evKey'
-                    -> Text -- ^ 'evValue'
-                    -> EnvironmentVariable
-environmentVariable p1 p2 = EnvironmentVariable
-    { _evKey    = p1
-    , _evValue  = p2
-    , _evSecure = Nothing
-    }
-
--- | (Required) The environment variable's name, which can consist of up to 64
--- characters and must be specified. The name can contain upper- and lowercase
--- letters, numbers, and underscores (_), but it must start with a letter or
--- underscore.
-evKey :: Lens' EnvironmentVariable Text
-evKey = lens _evKey (\s a -> s { _evKey = a })
-
--- | (Optional) Whether the variable's value will be returned by the 'DescribeApps'
--- action. To conceal an environment variable's value, set 'Secure' to 'true'. 'DescribeApps' then returns '*****FILTERED*****' instead of the actual value. The default
--- value for 'Secure' is 'false'.
-evSecure :: Lens' EnvironmentVariable (Maybe Bool)
-evSecure = lens _evSecure (\s a -> s { _evSecure = a })
-
--- | (Optional) The environment variable's value, which can be left empty. If you
--- specify a value, it can contain up to 256 characters, which must all be
--- printable.
-evValue :: Lens' EnvironmentVariable Text
-evValue = lens _evValue (\s a -> s { _evValue = a })
-
-instance FromJSON EnvironmentVariable where
-    parseJSON = withObject "EnvironmentVariable" $ \o -> EnvironmentVariable
-        <$> o .:  "Key"
-        <*> o .:? "Secure"
-        <*> o .:  "Value"
-
-instance ToJSON EnvironmentVariable where
-    toJSON EnvironmentVariable{..} = object
-        [ "Key"    .= _evKey
-        , "Value"  .= _evValue
-        , "Secure" .= _evSecure
-        ]
-
-data Layer = Layer
-    { _lAttributes                  :: Map LayerAttributesKeys Text
-    , _lAutoAssignElasticIps        :: Maybe Bool
-    , _lAutoAssignPublicIps         :: Maybe Bool
-    , _lCreatedAt                   :: Maybe Text
-    , _lCustomInstanceProfileArn    :: Maybe Text
-    , _lCustomRecipes               :: Maybe Recipes
-    , _lCustomSecurityGroupIds      :: List "CustomSecurityGroupIds" Text
-    , _lDefaultRecipes              :: Maybe Recipes
-    , _lDefaultSecurityGroupNames   :: List "DefaultSecurityGroupNames" Text
-    , _lEnableAutoHealing           :: Maybe Bool
-    , _lInstallUpdatesOnBoot        :: Maybe Bool
-    , _lLayerId                     :: Maybe Text
-    , _lLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
-    , _lName                        :: Maybe Text
-    , _lPackages                    :: List "Packages" Text
-    , _lShortname                   :: Maybe Text
-    , _lStackId                     :: Maybe Text
-    , _lType                        :: Maybe LayerType
-    , _lUseEbsOptimizedInstances    :: Maybe Bool
-    , _lVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
-    } deriving (Eq, Read, Show)
-
--- | 'Layer' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
---
--- * 'lAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
---
--- * 'lAutoAssignPublicIps' @::@ 'Maybe' 'Bool'
---
--- * 'lCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'lCustomInstanceProfileArn' @::@ 'Maybe' 'Text'
---
--- * 'lCustomRecipes' @::@ 'Maybe' 'Recipes'
---
--- * 'lCustomSecurityGroupIds' @::@ ['Text']
---
--- * 'lDefaultRecipes' @::@ 'Maybe' 'Recipes'
---
--- * 'lDefaultSecurityGroupNames' @::@ ['Text']
---
--- * 'lEnableAutoHealing' @::@ 'Maybe' 'Bool'
---
--- * 'lInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
---
--- * 'lLayerId' @::@ 'Maybe' 'Text'
---
--- * 'lLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
---
--- * 'lName' @::@ 'Maybe' 'Text'
---
--- * 'lPackages' @::@ ['Text']
---
--- * 'lShortname' @::@ 'Maybe' 'Text'
---
--- * 'lStackId' @::@ 'Maybe' 'Text'
---
--- * 'lType' @::@ 'Maybe' 'LayerType'
---
--- * 'lUseEbsOptimizedInstances' @::@ 'Maybe' 'Bool'
---
--- * 'lVolumeConfigurations' @::@ ['VolumeConfiguration']
---
-layer :: Layer
-layer = Layer
-    { _lStackId                     = Nothing
-    , _lLayerId                     = Nothing
-    , _lType                        = Nothing
-    , _lName                        = Nothing
-    , _lShortname                   = Nothing
-    , _lAttributes                  = mempty
-    , _lCustomInstanceProfileArn    = Nothing
-    , _lCustomSecurityGroupIds      = mempty
-    , _lDefaultSecurityGroupNames   = mempty
-    , _lPackages                    = mempty
-    , _lVolumeConfigurations        = mempty
-    , _lEnableAutoHealing           = Nothing
-    , _lAutoAssignElasticIps        = Nothing
-    , _lAutoAssignPublicIps         = Nothing
-    , _lDefaultRecipes              = Nothing
-    , _lCustomRecipes               = Nothing
-    , _lCreatedAt                   = Nothing
-    , _lInstallUpdatesOnBoot        = Nothing
-    , _lUseEbsOptimizedInstances    = Nothing
-    , _lLifecycleEventConfiguration = Nothing
-    }
-
--- | The layer attributes.
---
--- For the 'HaproxyStatsPassword', 'MysqlRootPassword', and 'GangliaPassword'
--- attributes, AWS OpsWorks returns '*****FILTERED*****' instead of the actual
--- value
-lAttributes :: Lens' Layer (HashMap LayerAttributesKeys Text)
-lAttributes = lens _lAttributes (\s a -> s { _lAttributes = a }) . _Map
-
--- | Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's
--- instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
-lAutoAssignElasticIps :: Lens' Layer (Maybe Bool)
-lAutoAssignElasticIps =
-    lens _lAutoAssignElasticIps (\s a -> s { _lAutoAssignElasticIps = a })
-
--- | For stacks that are running in a VPC, whether to automatically assign a
--- public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How toEdit a Layer>.
-lAutoAssignPublicIps :: Lens' Layer (Maybe Bool)
-lAutoAssignPublicIps =
-    lens _lAutoAssignPublicIps (\s a -> s { _lAutoAssignPublicIps = a })
-
--- | Date when the layer was created.
-lCreatedAt :: Lens' Layer (Maybe Text)
-lCreatedAt = lens _lCreatedAt (\s a -> s { _lCreatedAt = a })
-
--- | The ARN of the default IAM profile to be used for the layer's EC2 instances.
--- For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-lCustomInstanceProfileArn :: Lens' Layer (Maybe Text)
-lCustomInstanceProfileArn =
-    lens _lCustomInstanceProfileArn
-        (\s a -> s { _lCustomInstanceProfileArn = a })
-
--- | A 'LayerCustomRecipes' object that specifies the layer's custom recipes.
-lCustomRecipes :: Lens' Layer (Maybe Recipes)
-lCustomRecipes = lens _lCustomRecipes (\s a -> s { _lCustomRecipes = a })
-
--- | An array containing the layer's custom security group IDs.
-lCustomSecurityGroupIds :: Lens' Layer [Text]
-lCustomSecurityGroupIds =
-    lens _lCustomSecurityGroupIds (\s a -> s { _lCustomSecurityGroupIds = a })
-        . _List
-
-lDefaultRecipes :: Lens' Layer (Maybe Recipes)
-lDefaultRecipes = lens _lDefaultRecipes (\s a -> s { _lDefaultRecipes = a })
-
--- | An array containing the layer's security group names.
-lDefaultSecurityGroupNames :: Lens' Layer [Text]
-lDefaultSecurityGroupNames =
-    lens _lDefaultSecurityGroupNames
-        (\s a -> s { _lDefaultSecurityGroupNames = a })
-            . _List
-
--- | Whether auto healing is disabled for the layer.
-lEnableAutoHealing :: Lens' Layer (Maybe Bool)
-lEnableAutoHealing =
-    lens _lEnableAutoHealing (\s a -> s { _lEnableAutoHealing = a })
-
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. If this value is set to 'false', you must
--- then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon Linux) or 'apt-get' (Ubuntu) on
--- the instances.
---
--- We strongly recommend using the default value of 'true', to ensure that your
--- instances have the latest security updates.
---
---
-lInstallUpdatesOnBoot :: Lens' Layer (Maybe Bool)
-lInstallUpdatesOnBoot =
-    lens _lInstallUpdatesOnBoot (\s a -> s { _lInstallUpdatesOnBoot = a })
-
--- | The layer ID.
-lLayerId :: Lens' Layer (Maybe Text)
-lLayerId = lens _lLayerId (\s a -> s { _lLayerId = a })
-
--- | A 'LifeCycleEventConfiguration' object that specifies the Shutdown event
--- configuration.
-lLifecycleEventConfiguration :: Lens' Layer (Maybe LifecycleEventConfiguration)
-lLifecycleEventConfiguration =
-    lens _lLifecycleEventConfiguration
-        (\s a -> s { _lLifecycleEventConfiguration = a })
-
--- | The layer name.
-lName :: Lens' Layer (Maybe Text)
-lName = lens _lName (\s a -> s { _lName = a })
-
--- | An array of 'Package' objects that describe the layer's packages.
-lPackages :: Lens' Layer [Text]
-lPackages = lens _lPackages (\s a -> s { _lPackages = a }) . _List
-
--- | The layer short name.
-lShortname :: Lens' Layer (Maybe Text)
-lShortname = lens _lShortname (\s a -> s { _lShortname = a })
-
--- | The layer stack ID.
-lStackId :: Lens' Layer (Maybe Text)
-lStackId = lens _lStackId (\s a -> s { _lStackId = a })
-
--- | The layer type.
-lType :: Lens' Layer (Maybe LayerType)
-lType = lens _lType (\s a -> s { _lType = a })
-
--- | Whether the layer uses Amazon EBS-optimized instances.
-lUseEbsOptimizedInstances :: Lens' Layer (Maybe Bool)
-lUseEbsOptimizedInstances =
-    lens _lUseEbsOptimizedInstances
-        (\s a -> s { _lUseEbsOptimizedInstances = a })
-
--- | A 'VolumeConfigurations' object that describes the layer's Amazon EBS volumes.
-lVolumeConfigurations :: Lens' Layer [VolumeConfiguration]
-lVolumeConfigurations =
-    lens _lVolumeConfigurations (\s a -> s { _lVolumeConfigurations = a })
-        . _List
-
-instance FromJSON Layer where
-    parseJSON = withObject "Layer" $ \o -> Layer
-        <$> o .:? "Attributes" .!= mempty
-        <*> o .:? "AutoAssignElasticIps"
-        <*> o .:? "AutoAssignPublicIps"
-        <*> o .:? "CreatedAt"
-        <*> o .:? "CustomInstanceProfileArn"
-        <*> o .:? "CustomRecipes"
-        <*> o .:? "CustomSecurityGroupIds" .!= mempty
-        <*> o .:? "DefaultRecipes"
-        <*> o .:? "DefaultSecurityGroupNames" .!= mempty
-        <*> o .:? "EnableAutoHealing"
-        <*> o .:? "InstallUpdatesOnBoot"
-        <*> o .:? "LayerId"
-        <*> o .:? "LifecycleEventConfiguration"
-        <*> o .:? "Name"
-        <*> o .:? "Packages" .!= mempty
-        <*> o .:? "Shortname"
-        <*> o .:? "StackId"
-        <*> o .:? "Type"
-        <*> o .:? "UseEbsOptimizedInstances"
-        <*> o .:? "VolumeConfigurations" .!= mempty
-
-instance ToJSON Layer where
-    toJSON Layer{..} = object
-        [ "StackId"                     .= _lStackId
-        , "LayerId"                     .= _lLayerId
-        , "Type"                        .= _lType
-        , "Name"                        .= _lName
-        , "Shortname"                   .= _lShortname
-        , "Attributes"                  .= _lAttributes
-        , "CustomInstanceProfileArn"    .= _lCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"      .= _lCustomSecurityGroupIds
-        , "DefaultSecurityGroupNames"   .= _lDefaultSecurityGroupNames
-        , "Packages"                    .= _lPackages
-        , "VolumeConfigurations"        .= _lVolumeConfigurations
-        , "EnableAutoHealing"           .= _lEnableAutoHealing
-        , "AutoAssignElasticIps"        .= _lAutoAssignElasticIps
-        , "AutoAssignPublicIps"         .= _lAutoAssignPublicIps
-        , "DefaultRecipes"              .= _lDefaultRecipes
-        , "CustomRecipes"               .= _lCustomRecipes
-        , "CreatedAt"                   .= _lCreatedAt
-        , "InstallUpdatesOnBoot"        .= _lInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances"    .= _lUseEbsOptimizedInstances
-        , "LifecycleEventConfiguration" .= _lLifecycleEventConfiguration
-        ]
-
-data Recipes = Recipes
-    { _rConfigure :: List "Configure" Text
-    , _rDeploy    :: List "Deploy" Text
-    , _rSetup     :: List "Setup" Text
-    , _rShutdown  :: List "Shutdown" Text
-    , _rUndeploy  :: List "Undeploy" Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Recipes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rConfigure' @::@ ['Text']
---
--- * 'rDeploy' @::@ ['Text']
---
--- * 'rSetup' @::@ ['Text']
---
--- * 'rShutdown' @::@ ['Text']
---
--- * 'rUndeploy' @::@ ['Text']
---
-recipes :: Recipes
-recipes = Recipes
-    { _rSetup     = mempty
-    , _rConfigure = mempty
-    , _rDeploy    = mempty
-    , _rUndeploy  = mempty
-    , _rShutdown  = mempty
-    }
-
--- | An array of custom recipe names to be run following a 'configure' event.
-rConfigure :: Lens' Recipes [Text]
-rConfigure = lens _rConfigure (\s a -> s { _rConfigure = a }) . _List
-
--- | An array of custom recipe names to be run following a 'deploy' event.
-rDeploy :: Lens' Recipes [Text]
-rDeploy = lens _rDeploy (\s a -> s { _rDeploy = a }) . _List
-
--- | An array of custom recipe names to be run following a 'setup' event.
-rSetup :: Lens' Recipes [Text]
-rSetup = lens _rSetup (\s a -> s { _rSetup = a }) . _List
-
--- | An array of custom recipe names to be run following a 'shutdown' event.
-rShutdown :: Lens' Recipes [Text]
-rShutdown = lens _rShutdown (\s a -> s { _rShutdown = a }) . _List
-
--- | An array of custom recipe names to be run following a 'undeploy' event.
-rUndeploy :: Lens' Recipes [Text]
-rUndeploy = lens _rUndeploy (\s a -> s { _rUndeploy = a }) . _List
-
-instance FromJSON Recipes where
-    parseJSON = withObject "Recipes" $ \o -> Recipes
-        <$> o .:? "Configure" .!= mempty
-        <*> o .:? "Deploy" .!= mempty
-        <*> o .:? "Setup" .!= mempty
-        <*> o .:? "Shutdown" .!= mempty
-        <*> o .:? "Undeploy" .!= mempty
-
-instance ToJSON Recipes where
-    toJSON Recipes{..} = object
-        [ "Setup"     .= _rSetup
-        , "Configure" .= _rConfigure
-        , "Deploy"    .= _rDeploy
-        , "Undeploy"  .= _rUndeploy
-        , "Shutdown"  .= _rShutdown
-        ]
-
-data TimeBasedAutoScalingConfiguration = TimeBasedAutoScalingConfiguration
-    { _tbascAutoScalingSchedule :: Maybe WeeklyAutoScalingSchedule
-    , _tbascInstanceId          :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'TimeBasedAutoScalingConfiguration' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tbascAutoScalingSchedule' @::@ 'Maybe' 'WeeklyAutoScalingSchedule'
---
--- * 'tbascInstanceId' @::@ 'Maybe' 'Text'
---
-timeBasedAutoScalingConfiguration :: TimeBasedAutoScalingConfiguration
-timeBasedAutoScalingConfiguration = TimeBasedAutoScalingConfiguration
-    { _tbascInstanceId          = Nothing
-    , _tbascAutoScalingSchedule = Nothing
-    }
-
--- | A 'WeeklyAutoScalingSchedule' object with the instance schedule.
-tbascAutoScalingSchedule :: Lens' TimeBasedAutoScalingConfiguration (Maybe WeeklyAutoScalingSchedule)
-tbascAutoScalingSchedule =
-    lens _tbascAutoScalingSchedule
-        (\s a -> s { _tbascAutoScalingSchedule = a })
-
--- | The instance ID.
-tbascInstanceId :: Lens' TimeBasedAutoScalingConfiguration (Maybe Text)
-tbascInstanceId = lens _tbascInstanceId (\s a -> s { _tbascInstanceId = a })
-
-instance FromJSON TimeBasedAutoScalingConfiguration where
-    parseJSON = withObject "TimeBasedAutoScalingConfiguration" $ \o -> TimeBasedAutoScalingConfiguration
-        <$> o .:? "AutoScalingSchedule"
-        <*> o .:? "InstanceId"
-
-instance ToJSON TimeBasedAutoScalingConfiguration where
-    toJSON TimeBasedAutoScalingConfiguration{..} = object
-        [ "InstanceId"          .= _tbascInstanceId
-        , "AutoScalingSchedule" .= _tbascAutoScalingSchedule
-        ]
-
-data SelfUserProfile = SelfUserProfile
-    { _supIamUserArn   :: Maybe Text
-    , _supName         :: Maybe Text
-    , _supSshPublicKey :: Maybe Text
-    , _supSshUsername  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SelfUserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'supIamUserArn' @::@ 'Maybe' 'Text'
---
--- * 'supName' @::@ 'Maybe' 'Text'
---
--- * 'supSshPublicKey' @::@ 'Maybe' 'Text'
---
--- * 'supSshUsername' @::@ 'Maybe' 'Text'
---
-selfUserProfile :: SelfUserProfile
-selfUserProfile = SelfUserProfile
-    { _supIamUserArn   = Nothing
-    , _supName         = Nothing
-    , _supSshUsername  = Nothing
-    , _supSshPublicKey = Nothing
-    }
-
--- | The user's IAM ARN.
-supIamUserArn :: Lens' SelfUserProfile (Maybe Text)
-supIamUserArn = lens _supIamUserArn (\s a -> s { _supIamUserArn = a })
-
--- | The user's name.
-supName :: Lens' SelfUserProfile (Maybe Text)
-supName = lens _supName (\s a -> s { _supName = a })
-
--- | The user's SSH public key.
-supSshPublicKey :: Lens' SelfUserProfile (Maybe Text)
-supSshPublicKey = lens _supSshPublicKey (\s a -> s { _supSshPublicKey = a })
-
--- | The user's SSH user name.
-supSshUsername :: Lens' SelfUserProfile (Maybe Text)
-supSshUsername = lens _supSshUsername (\s a -> s { _supSshUsername = a })
-
-instance FromJSON SelfUserProfile where
-    parseJSON = withObject "SelfUserProfile" $ \o -> SelfUserProfile
-        <$> o .:? "IamUserArn"
-        <*> o .:? "Name"
-        <*> o .:? "SshPublicKey"
-        <*> o .:? "SshUsername"
-
-instance ToJSON SelfUserProfile where
-    toJSON SelfUserProfile{..} = object
-        [ "IamUserArn"   .= _supIamUserArn
-        , "Name"         .= _supName
-        , "SshUsername"  .= _supSshUsername
-        , "SshPublicKey" .= _supSshPublicKey
-        ]
-
-data RootDeviceType
-    = Ebs           -- ^ ebs
-    | InstanceStore -- ^ instance-store
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable RootDeviceType
-
-instance FromText RootDeviceType where
-    parser = takeLowerText >>= \case
-        "ebs"            -> pure Ebs
-        "instance-store" -> pure InstanceStore
-        e                -> fail $
-            "Failure parsing RootDeviceType from " ++ show e
-
-instance ToText RootDeviceType where
-    toText = \case
-        Ebs           -> "ebs"
-        InstanceStore -> "instance-store"
-
-instance ToByteString RootDeviceType
-instance ToHeader     RootDeviceType
-instance ToQuery      RootDeviceType
-
-instance FromJSON RootDeviceType where
-    parseJSON = parseJSONText "RootDeviceType"
-
-instance ToJSON RootDeviceType where
-    toJSON = toJSONText
-
-data Stack = Stack
-    { _sArn                       :: Maybe Text
-    , _sAttributes                :: Map StackAttributesKeys Text
-    , _sChefConfiguration         :: Maybe ChefConfiguration
-    , _sConfigurationManager      :: Maybe StackConfigurationManager
-    , _sCreatedAt                 :: Maybe Text
-    , _sCustomCookbooksSource     :: Maybe Source
-    , _sCustomJson                :: Maybe Text
-    , _sDefaultAvailabilityZone   :: Maybe Text
-    , _sDefaultInstanceProfileArn :: Maybe Text
-    , _sDefaultOs                 :: Maybe Text
-    , _sDefaultRootDeviceType     :: Maybe RootDeviceType
-    , _sDefaultSshKeyName         :: Maybe Text
-    , _sDefaultSubnetId           :: Maybe Text
-    , _sHostnameTheme             :: Maybe Text
-    , _sName                      :: Maybe Text
-    , _sRegion                    :: Maybe Text
-    , _sServiceRoleArn            :: Maybe Text
-    , _sStackId                   :: Maybe Text
-    , _sUseCustomCookbooks        :: Maybe Bool
-    , _sUseOpsworksSecurityGroups :: Maybe Bool
-    , _sVpcId                     :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Stack' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sArn' @::@ 'Maybe' 'Text'
---
--- * 'sAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
---
--- * 'sChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
---
--- * 'sConfigurationManager' @::@ 'Maybe' 'StackConfigurationManager'
---
--- * 'sCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'sCustomCookbooksSource' @::@ 'Maybe' 'Source'
---
--- * 'sCustomJson' @::@ 'Maybe' 'Text'
---
--- * 'sDefaultAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'sDefaultInstanceProfileArn' @::@ 'Maybe' 'Text'
---
--- * 'sDefaultOs' @::@ 'Maybe' 'Text'
---
--- * 'sDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
---
--- * 'sDefaultSshKeyName' @::@ 'Maybe' 'Text'
---
--- * 'sDefaultSubnetId' @::@ 'Maybe' 'Text'
---
--- * 'sHostnameTheme' @::@ 'Maybe' 'Text'
---
--- * 'sName' @::@ 'Maybe' 'Text'
---
--- * 'sRegion' @::@ 'Maybe' 'Text'
---
--- * 'sServiceRoleArn' @::@ 'Maybe' 'Text'
---
--- * 'sStackId' @::@ 'Maybe' 'Text'
---
--- * 'sUseCustomCookbooks' @::@ 'Maybe' 'Bool'
---
--- * 'sUseOpsworksSecurityGroups' @::@ 'Maybe' 'Bool'
---
--- * 'sVpcId' @::@ 'Maybe' 'Text'
---
-stack :: Stack
-stack = Stack
-    { _sStackId                   = Nothing
-    , _sName                      = Nothing
-    , _sArn                       = Nothing
-    , _sRegion                    = Nothing
-    , _sVpcId                     = Nothing
-    , _sAttributes                = mempty
-    , _sServiceRoleArn            = Nothing
-    , _sDefaultInstanceProfileArn = Nothing
-    , _sDefaultOs                 = Nothing
-    , _sHostnameTheme             = Nothing
-    , _sDefaultAvailabilityZone   = Nothing
-    , _sDefaultSubnetId           = Nothing
-    , _sCustomJson                = Nothing
-    , _sConfigurationManager      = Nothing
-    , _sChefConfiguration         = Nothing
-    , _sUseCustomCookbooks        = Nothing
-    , _sUseOpsworksSecurityGroups = Nothing
-    , _sCustomCookbooksSource     = Nothing
-    , _sDefaultSshKeyName         = Nothing
-    , _sCreatedAt                 = Nothing
-    , _sDefaultRootDeviceType     = Nothing
-    }
-
--- | The stack's ARN.
-sArn :: Lens' Stack (Maybe Text)
-sArn = lens _sArn (\s a -> s { _sArn = a })
-
--- | The stack's attributes.
-sAttributes :: Lens' Stack (HashMap StackAttributesKeys Text)
-sAttributes = lens _sAttributes (\s a -> s { _sAttributes = a }) . _Map
-
--- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf and the
--- Berkshelf version. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
-sChefConfiguration :: Lens' Stack (Maybe ChefConfiguration)
-sChefConfiguration =
-    lens _sChefConfiguration (\s a -> s { _sChefConfiguration = a })
-
--- | The configuration manager.
-sConfigurationManager :: Lens' Stack (Maybe StackConfigurationManager)
-sConfigurationManager =
-    lens _sConfigurationManager (\s a -> s { _sConfigurationManager = a })
-
--- | Date when the stack was created.
-sCreatedAt :: Lens' Stack (Maybe Text)
-sCreatedAt = lens _sCreatedAt (\s a -> s { _sCreatedAt = a })
-
-sCustomCookbooksSource :: Lens' Stack (Maybe Source)
-sCustomCookbooksSource =
-    lens _sCustomCookbooksSource (\s a -> s { _sCustomCookbooksSource = a })
-
--- | A string that contains user-defined, custom JSON. It can be used to override
--- the corresponding default stack configuration JSON values or to pass data to
--- recipes. The string should be in the following format and must escape
--- characters such as '"'.:
---
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
---
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>.
-sCustomJson :: Lens' Stack (Maybe Text)
-sCustomJson = lens _sCustomJson (\s a -> s { _sCustomJson = a })
-
--- | The stack's default Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions andEndpoints>.
-sDefaultAvailabilityZone :: Lens' Stack (Maybe Text)
-sDefaultAvailabilityZone =
-    lens _sDefaultAvailabilityZone
-        (\s a -> s { _sDefaultAvailabilityZone = a })
-
--- | The ARN of an IAM profile that is the default profile for all of the stack's
--- EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-sDefaultInstanceProfileArn :: Lens' Stack (Maybe Text)
-sDefaultInstanceProfileArn =
-    lens _sDefaultInstanceProfileArn
-        (\s a -> s { _sDefaultInstanceProfileArn = a })
-
--- | The stack's default operating system.
-sDefaultOs :: Lens' Stack (Maybe Text)
-sDefaultOs = lens _sDefaultOs (\s a -> s { _sDefaultOs = a })
-
--- | The default root device type. This value is used by default for all instances
--- in the stack, but you can override it when you create an instance. For more
--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
-sDefaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
-sDefaultRootDeviceType =
-    lens _sDefaultRootDeviceType (\s a -> s { _sDefaultRootDeviceType = a })
-
--- | A default Amazon EC2 key pair for the stack's instances. You can override
--- this value when you create or update an instance.
-sDefaultSshKeyName :: Lens' Stack (Maybe Text)
-sDefaultSshKeyName =
-    lens _sDefaultSshKeyName (\s a -> s { _sDefaultSshKeyName = a })
-
--- | The default subnet ID, if the stack is running in a VPC.
-sDefaultSubnetId :: Lens' Stack (Maybe Text)
-sDefaultSubnetId = lens _sDefaultSubnetId (\s a -> s { _sDefaultSubnetId = a })
-
--- | The stack host name theme, with spaces replaced by underscores.
-sHostnameTheme :: Lens' Stack (Maybe Text)
-sHostnameTheme = lens _sHostnameTheme (\s a -> s { _sHostnameTheme = a })
-
--- | The stack name.
-sName :: Lens' Stack (Maybe Text)
-sName = lens _sName (\s a -> s { _sName = a })
-
--- | The stack AWS region, such as "us-east-1". For more information about AWS
--- regions, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
-sRegion :: Lens' Stack (Maybe Text)
-sRegion = lens _sRegion (\s a -> s { _sRegion = a })
-
--- | The stack AWS Identity and Access Management (IAM) role.
-sServiceRoleArn :: Lens' Stack (Maybe Text)
-sServiceRoleArn = lens _sServiceRoleArn (\s a -> s { _sServiceRoleArn = a })
-
--- | The stack ID.
-sStackId :: Lens' Stack (Maybe Text)
-sStackId = lens _sStackId (\s a -> s { _sStackId = a })
-
--- | Whether the stack uses custom cookbooks.
-sUseCustomCookbooks :: Lens' Stack (Maybe Bool)
-sUseCustomCookbooks =
-    lens _sUseCustomCookbooks (\s a -> s { _sUseCustomCookbooks = a })
-
--- | Whether the stack automatically associates the AWS OpsWorks built-in security
--- groups with the stack's layers.
-sUseOpsworksSecurityGroups :: Lens' Stack (Maybe Bool)
-sUseOpsworksSecurityGroups =
-    lens _sUseOpsworksSecurityGroups
-        (\s a -> s { _sUseOpsworksSecurityGroups = a })
-
--- | The VPC ID, if the stack is running in a VPC.
-sVpcId :: Lens' Stack (Maybe Text)
-sVpcId = lens _sVpcId (\s a -> s { _sVpcId = a })
-
-instance FromJSON Stack where
-    parseJSON = withObject "Stack" $ \o -> Stack
-        <$> o .:? "Arn"
-        <*> o .:? "Attributes" .!= mempty
-        <*> o .:? "ChefConfiguration"
-        <*> o .:? "ConfigurationManager"
-        <*> o .:? "CreatedAt"
-        <*> o .:? "CustomCookbooksSource"
-        <*> o .:? "CustomJson"
-        <*> o .:? "DefaultAvailabilityZone"
-        <*> o .:? "DefaultInstanceProfileArn"
-        <*> o .:? "DefaultOs"
-        <*> o .:? "DefaultRootDeviceType"
-        <*> o .:? "DefaultSshKeyName"
-        <*> o .:? "DefaultSubnetId"
-        <*> o .:? "HostnameTheme"
-        <*> o .:? "Name"
-        <*> o .:? "Region"
-        <*> o .:? "ServiceRoleArn"
-        <*> o .:? "StackId"
-        <*> o .:? "UseCustomCookbooks"
-        <*> o .:? "UseOpsworksSecurityGroups"
-        <*> o .:? "VpcId"
-
-instance ToJSON Stack where
-    toJSON Stack{..} = object
-        [ "StackId"                   .= _sStackId
-        , "Name"                      .= _sName
-        , "Arn"                       .= _sArn
-        , "Region"                    .= _sRegion
-        , "VpcId"                     .= _sVpcId
-        , "Attributes"                .= _sAttributes
-        , "ServiceRoleArn"            .= _sServiceRoleArn
-        , "DefaultInstanceProfileArn" .= _sDefaultInstanceProfileArn
-        , "DefaultOs"                 .= _sDefaultOs
-        , "HostnameTheme"             .= _sHostnameTheme
-        , "DefaultAvailabilityZone"   .= _sDefaultAvailabilityZone
-        , "DefaultSubnetId"           .= _sDefaultSubnetId
-        , "CustomJson"                .= _sCustomJson
-        , "ConfigurationManager"      .= _sConfigurationManager
-        , "ChefConfiguration"         .= _sChefConfiguration
-        , "UseCustomCookbooks"        .= _sUseCustomCookbooks
-        , "UseOpsworksSecurityGroups" .= _sUseOpsworksSecurityGroups
-        , "CustomCookbooksSource"     .= _sCustomCookbooksSource
-        , "DefaultSshKeyName"         .= _sDefaultSshKeyName
-        , "CreatedAt"                 .= _sCreatedAt
-        , "DefaultRootDeviceType"     .= _sDefaultRootDeviceType
-        ]
-
-data DeploymentCommand = DeploymentCommand
-    { _dcArgs :: Map Text (List "Args" Text)
-    , _dcName :: DeploymentCommandName
-    } deriving (Eq, Read, Show)
-
--- | 'DeploymentCommand' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcArgs' @::@ 'HashMap' 'Text' ['Text']
---
--- * 'dcName' @::@ 'DeploymentCommandName'
---
-deploymentCommand :: DeploymentCommandName -- ^ 'dcName'
-                  -> DeploymentCommand
-deploymentCommand p1 = DeploymentCommand
-    { _dcName = p1
-    , _dcArgs = mempty
-    }
-
--- | The arguments of those commands that take arguments. It should be set to a
--- JSON object with the following format:
---
--- '{"arg_name1" : ["value1", "value2", ...], "arg_name2" : ["value1","value2", ...], ...}'
---
--- The 'update_dependencies' command takes two arguments:
---
--- 'upgrade_os_to' - Specifies the desired Amazon Linux version for instances
--- whose OS you want to upgrade, such as 'Amazon Linux 2014.09'. You must also set
--- the 'allow_reboot' argument to true.  'allow_reboot' - Specifies whether to allow
--- AWS OpsWorks to reboot the instances if necessary, after installing the
--- updates. This argument can be set to either 'true' or 'false'. The default value
--- is 'false'.  For example, to upgrade an instance to Amazon Linux 2014.09, set 'Args' to the following.
---
--- ' { "upgrade_os_to":["Amazon Linux 2014.09"], "allow_reboot":["true"] } '
-dcArgs :: Lens' DeploymentCommand (HashMap Text [Text])
-dcArgs = lens _dcArgs (\s a -> s { _dcArgs = a }) . _Map
-
--- | Specifies the operation. You can specify only one command.
---
--- For stacks, the following commands are available:
---
--- 'execute_recipes': Execute one or more recipes. To specify the recipes, set
--- an 'Args' parameter named 'recipes' to the list of recipes to be executed. For
--- example, to execute 'phpapp::appsetup', set 'Args' to '{"recipes":["phpapp::appsetup"]}'.  'install_dependencies': Install the stack's dependencies.  'update_custom_cookbooks': Update the stack's custom cookbooks.  'update_dependencies': Update the
--- stack's dependencies.  The update_dependencies and install_dependencies
--- commands are supported only for Linux instances. You can run the commands
--- successfully on Windows instances, but they do nothing. For apps, the
--- following commands are available:
---
--- 'deploy': Deploy an app. Ruby on Rails apps have an optional 'Args' parameter
--- named 'migrate'. Set 'Args' to {"migrate":["true"]} to migrate the database. The
--- default setting is {"migrate":["false"]}.  'rollback' Roll the app back to the
--- previous version. When you update an app, AWS OpsWorks stores the previous
--- version, up to a maximum of five versions. You can use this command to roll
--- an app back as many as four versions.  'start': Start the app's web or
--- application server.  'stop': Stop the app's web or application server.  'restart': Restart the app's web or application server.
--- 'undeploy': Undeploy the app.
-dcName :: Lens' DeploymentCommand DeploymentCommandName
-dcName = lens _dcName (\s a -> s { _dcName = a })
-
-instance FromJSON DeploymentCommand where
-    parseJSON = withObject "DeploymentCommand" $ \o -> DeploymentCommand
-        <$> o .:? "Args" .!= mempty
-        <*> o .:  "Name"
-
-instance ToJSON DeploymentCommand where
-    toJSON DeploymentCommand{..} = object
-        [ "Name" .= _dcName
-        , "Args" .= _dcArgs
-        ]
-
-data WeeklyAutoScalingSchedule = WeeklyAutoScalingSchedule
-    { _wassFriday    :: Map Text Text
-    , _wassMonday    :: Map Text Text
-    , _wassSaturday  :: Map Text Text
-    , _wassSunday    :: Map Text Text
-    , _wassThursday  :: Map Text Text
-    , _wassTuesday   :: Map Text Text
-    , _wassWednesday :: Map Text Text
-    } deriving (Eq, Read, Show)
-
--- | 'WeeklyAutoScalingSchedule' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'wassFriday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassMonday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassSaturday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassSunday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassThursday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassTuesday' @::@ 'HashMap' 'Text' 'Text'
---
--- * 'wassWednesday' @::@ 'HashMap' 'Text' 'Text'
---
-weeklyAutoScalingSchedule :: WeeklyAutoScalingSchedule
-weeklyAutoScalingSchedule = WeeklyAutoScalingSchedule
-    { _wassMonday    = mempty
-    , _wassTuesday   = mempty
-    , _wassWednesday = mempty
-    , _wassThursday  = mempty
-    , _wassFriday    = mempty
-    , _wassSaturday  = mempty
-    , _wassSunday    = mempty
-    }
-
--- | The schedule for Friday.
-wassFriday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassFriday = lens _wassFriday (\s a -> s { _wassFriday = a }) . _Map
-
--- | The schedule for Monday.
-wassMonday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassMonday = lens _wassMonday (\s a -> s { _wassMonday = a }) . _Map
-
--- | The schedule for Saturday.
-wassSaturday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassSaturday = lens _wassSaturday (\s a -> s { _wassSaturday = a }) . _Map
-
--- | The schedule for Sunday.
-wassSunday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassSunday = lens _wassSunday (\s a -> s { _wassSunday = a }) . _Map
-
--- | The schedule for Thursday.
-wassThursday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassThursday = lens _wassThursday (\s a -> s { _wassThursday = a }) . _Map
-
--- | The schedule for Tuesday.
-wassTuesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassTuesday = lens _wassTuesday (\s a -> s { _wassTuesday = a }) . _Map
-
--- | The schedule for Wednesday.
-wassWednesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
-wassWednesday = lens _wassWednesday (\s a -> s { _wassWednesday = a }) . _Map
-
-instance FromJSON WeeklyAutoScalingSchedule where
-    parseJSON = withObject "WeeklyAutoScalingSchedule" $ \o -> WeeklyAutoScalingSchedule
-        <$> o .:? "Friday" .!= mempty
-        <*> o .:? "Monday" .!= mempty
-        <*> o .:? "Saturday" .!= mempty
-        <*> o .:? "Sunday" .!= mempty
-        <*> o .:? "Thursday" .!= mempty
-        <*> o .:? "Tuesday" .!= mempty
-        <*> o .:? "Wednesday" .!= mempty
-
-instance ToJSON WeeklyAutoScalingSchedule where
-    toJSON WeeklyAutoScalingSchedule{..} = object
-        [ "Monday"    .= _wassMonday
-        , "Tuesday"   .= _wassTuesday
-        , "Wednesday" .= _wassWednesday
-        , "Thursday"  .= _wassThursday
-        , "Friday"    .= _wassFriday
-        , "Saturday"  .= _wassSaturday
-        , "Sunday"    .= _wassSunday
-        ]
-
-data DeploymentCommandName
-    = Deploy                -- ^ deploy
-    | ExecuteRecipes        -- ^ execute_recipes
-    | InstallDependencies   -- ^ install_dependencies
-    | Restart               -- ^ restart
-    | Rollback              -- ^ rollback
-    | Start                 -- ^ start
-    | Stop                  -- ^ stop
-    | Undeploy              -- ^ undeploy
-    | UpdateCustomCookbooks -- ^ update_custom_cookbooks
-    | UpdateDependencies    -- ^ update_dependencies
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable DeploymentCommandName
-
-instance FromText DeploymentCommandName where
-    parser = takeLowerText >>= \case
-        "deploy"                  -> pure Deploy
-        "execute_recipes"         -> pure ExecuteRecipes
-        "install_dependencies"    -> pure InstallDependencies
-        "restart"                 -> pure Restart
-        "rollback"                -> pure Rollback
-        "start"                   -> pure Start
-        "stop"                    -> pure Stop
-        "undeploy"                -> pure Undeploy
-        "update_custom_cookbooks" -> pure UpdateCustomCookbooks
-        "update_dependencies"     -> pure UpdateDependencies
-        e                         -> fail $
-            "Failure parsing DeploymentCommandName from " ++ show e
-
-instance ToText DeploymentCommandName where
-    toText = \case
-        Deploy                -> "deploy"
-        ExecuteRecipes        -> "execute_recipes"
-        InstallDependencies   -> "install_dependencies"
-        Restart               -> "restart"
-        Rollback              -> "rollback"
-        Start                 -> "start"
-        Stop                  -> "stop"
-        Undeploy              -> "undeploy"
-        UpdateCustomCookbooks -> "update_custom_cookbooks"
-        UpdateDependencies    -> "update_dependencies"
-
-instance ToByteString DeploymentCommandName
-instance ToHeader     DeploymentCommandName
-instance ToQuery      DeploymentCommandName
-
-instance FromJSON DeploymentCommandName where
-    parseJSON = parseJSONText "DeploymentCommandName"
-
-instance ToJSON DeploymentCommandName where
-    toJSON = toJSONText
-
-data Instance = Instance
-    { _iAmiId                    :: Maybe Text
-    , _iArchitecture             :: Maybe Architecture
-    , _iAutoScalingType          :: Maybe AutoScalingType
-    , _iAvailabilityZone         :: Maybe Text
-    , _iBlockDeviceMappings      :: List "BlockDeviceMappings" BlockDeviceMapping
-    , _iCreatedAt                :: Maybe Text
-    , _iEbsOptimized             :: Maybe Bool
-    , _iEc2InstanceId            :: Maybe Text
-    , _iElasticIp                :: Maybe Text
-    , _iHostname                 :: Maybe Text
-    , _iInfrastructureClass      :: Maybe Text
-    , _iInstallUpdatesOnBoot     :: Maybe Bool
-    , _iInstanceId               :: Maybe Text
-    , _iInstanceProfileArn       :: Maybe Text
-    , _iInstanceType             :: Maybe Text
-    , _iLastServiceErrorId       :: Maybe Text
-    , _iLayerIds                 :: List "LayerIds" Text
-    , _iOs                       :: Maybe Text
-    , _iPrivateDns               :: Maybe Text
-    , _iPrivateIp                :: Maybe Text
-    , _iPublicDns                :: Maybe Text
-    , _iPublicIp                 :: Maybe Text
-    , _iRegisteredBy             :: Maybe Text
-    , _iReportedAgentVersion     :: Maybe Text
-    , _iReportedOs               :: Maybe ReportedOs
-    , _iRootDeviceType           :: Maybe RootDeviceType
-    , _iRootDeviceVolumeId       :: Maybe Text
-    , _iSecurityGroupIds         :: List "SecurityGroupIds" Text
-    , _iSshHostDsaKeyFingerprint :: Maybe Text
-    , _iSshHostRsaKeyFingerprint :: Maybe Text
-    , _iSshKeyName               :: Maybe Text
-    , _iStackId                  :: Maybe Text
-    , _iStatus                   :: Maybe Text
-    , _iSubnetId                 :: Maybe Text
-    , _iVirtualizationType       :: Maybe VirtualizationType
-    } deriving (Eq, Read, Show)
-
--- | 'Instance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'iAmiId' @::@ 'Maybe' 'Text'
---
--- * 'iArchitecture' @::@ 'Maybe' 'Architecture'
---
--- * 'iAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
---
--- * 'iAvailabilityZone' @::@ 'Maybe' 'Text'
---
--- * 'iBlockDeviceMappings' @::@ ['BlockDeviceMapping']
---
--- * 'iCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'iEbsOptimized' @::@ 'Maybe' 'Bool'
---
--- * 'iEc2InstanceId' @::@ 'Maybe' 'Text'
---
--- * 'iElasticIp' @::@ 'Maybe' 'Text'
---
--- * 'iHostname' @::@ 'Maybe' 'Text'
---
--- * 'iInfrastructureClass' @::@ 'Maybe' 'Text'
---
--- * 'iInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
---
--- * 'iInstanceId' @::@ 'Maybe' 'Text'
---
--- * 'iInstanceProfileArn' @::@ 'Maybe' 'Text'
---
--- * 'iInstanceType' @::@ 'Maybe' 'Text'
---
--- * 'iLastServiceErrorId' @::@ 'Maybe' 'Text'
---
--- * 'iLayerIds' @::@ ['Text']
---
--- * 'iOs' @::@ 'Maybe' 'Text'
---
--- * 'iPrivateDns' @::@ 'Maybe' 'Text'
---
--- * 'iPrivateIp' @::@ 'Maybe' 'Text'
---
--- * 'iPublicDns' @::@ 'Maybe' 'Text'
---
--- * 'iPublicIp' @::@ 'Maybe' 'Text'
---
--- * 'iRegisteredBy' @::@ 'Maybe' 'Text'
---
--- * 'iReportedAgentVersion' @::@ 'Maybe' 'Text'
---
--- * 'iReportedOs' @::@ 'Maybe' 'ReportedOs'
---
--- * 'iRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
---
--- * 'iRootDeviceVolumeId' @::@ 'Maybe' 'Text'
---
--- * 'iSecurityGroupIds' @::@ ['Text']
---
--- * 'iSshHostDsaKeyFingerprint' @::@ 'Maybe' 'Text'
---
--- * 'iSshHostRsaKeyFingerprint' @::@ 'Maybe' 'Text'
---
--- * 'iSshKeyName' @::@ 'Maybe' 'Text'
---
--- * 'iStackId' @::@ 'Maybe' 'Text'
---
--- * 'iStatus' @::@ 'Maybe' 'Text'
---
--- * 'iSubnetId' @::@ 'Maybe' 'Text'
---
--- * 'iVirtualizationType' @::@ 'Maybe' 'VirtualizationType'
---
-instance' :: Instance
-instance' = Instance
-    { _iInstanceId               = Nothing
-    , _iEc2InstanceId            = Nothing
-    , _iVirtualizationType       = Nothing
-    , _iHostname                 = Nothing
-    , _iStackId                  = Nothing
-    , _iLayerIds                 = mempty
-    , _iSecurityGroupIds         = mempty
-    , _iInstanceType             = Nothing
-    , _iInstanceProfileArn       = Nothing
-    , _iStatus                   = Nothing
-    , _iOs                       = Nothing
-    , _iAmiId                    = Nothing
-    , _iAvailabilityZone         = Nothing
-    , _iSubnetId                 = Nothing
-    , _iPublicDns                = Nothing
-    , _iPrivateDns               = Nothing
-    , _iPublicIp                 = Nothing
-    , _iPrivateIp                = Nothing
-    , _iElasticIp                = Nothing
-    , _iAutoScalingType          = Nothing
-    , _iSshKeyName               = Nothing
-    , _iSshHostRsaKeyFingerprint = Nothing
-    , _iSshHostDsaKeyFingerprint = Nothing
-    , _iCreatedAt                = Nothing
-    , _iLastServiceErrorId       = Nothing
-    , _iArchitecture             = Nothing
-    , _iRootDeviceType           = Nothing
-    , _iRootDeviceVolumeId       = Nothing
-    , _iBlockDeviceMappings      = mempty
-    , _iInstallUpdatesOnBoot     = Nothing
-    , _iEbsOptimized             = Nothing
-    , _iReportedAgentVersion     = Nothing
-    , _iReportedOs               = Nothing
-    , _iInfrastructureClass      = Nothing
-    , _iRegisteredBy             = Nothing
-    }
-
--- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks APIs: Amazon Linux, Ubuntu 12.04 LTS, or
--- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
-iAmiId :: Lens' Instance (Maybe Text)
-iAmiId = lens _iAmiId (\s a -> s { _iAmiId = a })
-
--- | The instance architecture, "i386" or "x86_64".
-iArchitecture :: Lens' Instance (Maybe Architecture)
-iArchitecture = lens _iArchitecture (\s a -> s { _iArchitecture = a })
-
--- | For load-based or time-based instances, the type.
-iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
-iAutoScalingType = lens _iAutoScalingType (\s a -> s { _iAutoScalingType = a })
-
--- | The instance Availability Zone. For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions andEndpoints>.
-iAvailabilityZone :: Lens' Instance (Maybe Text)
-iAvailabilityZone =
-    lens _iAvailabilityZone (\s a -> s { _iAvailabilityZone = a })
-
--- | An array of 'BlockDeviceMapping' objects that specify the instance's block
--- device mappings.
-iBlockDeviceMappings :: Lens' Instance [BlockDeviceMapping]
-iBlockDeviceMappings =
-    lens _iBlockDeviceMappings (\s a -> s { _iBlockDeviceMappings = a })
-        . _List
-
--- | The time that the instance was created.
-iCreatedAt :: Lens' Instance (Maybe Text)
-iCreatedAt = lens _iCreatedAt (\s a -> s { _iCreatedAt = a })
-
--- | Whether this is an Amazon EBS-optimized instance.
-iEbsOptimized :: Lens' Instance (Maybe Bool)
-iEbsOptimized = lens _iEbsOptimized (\s a -> s { _iEbsOptimized = a })
-
--- | The ID of the associated Amazon EC2 instance.
-iEc2InstanceId :: Lens' Instance (Maybe Text)
-iEc2InstanceId = lens _iEc2InstanceId (\s a -> s { _iEc2InstanceId = a })
-
--- | The instance <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address >.
-iElasticIp :: Lens' Instance (Maybe Text)
-iElasticIp = lens _iElasticIp (\s a -> s { _iElasticIp = a })
-
--- | The instance host name.
-iHostname :: Lens' Instance (Maybe Text)
-iHostname = lens _iHostname (\s a -> s { _iHostname = a })
-
--- | For registered instances, the infrastructure class: 'ec2' or 'on-premises'
-iInfrastructureClass :: Lens' Instance (Maybe Text)
-iInfrastructureClass =
-    lens _iInfrastructureClass (\s a -> s { _iInfrastructureClass = a })
-
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. If this value is set to 'false', you must
--- then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon Linux) or 'apt-get' (Ubuntu) on
--- the instances.
---
--- We strongly recommend using the default value of 'true', to ensure that your
--- instances have the latest security updates.
---
---
-iInstallUpdatesOnBoot :: Lens' Instance (Maybe Bool)
-iInstallUpdatesOnBoot =
-    lens _iInstallUpdatesOnBoot (\s a -> s { _iInstallUpdatesOnBoot = a })
-
--- | The instance ID.
-iInstanceId :: Lens' Instance (Maybe Text)
-iInstanceId = lens _iInstanceId (\s a -> s { _iInstanceId = a })
-
--- | The ARN of the instance's IAM profile. For more information about IAM ARNs,
--- see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-iInstanceProfileArn :: Lens' Instance (Maybe Text)
-iInstanceProfileArn =
-    lens _iInstanceProfileArn (\s a -> s { _iInstanceProfileArn = a })
-
--- | The instance type. AWS OpsWorks supports all instance types except Cluster
--- Compute, Cluster GPU, and High Memory Cluster. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>. The parameter values that specify the various types are in the API Name
--- column of the Available Instance Types table.
-iInstanceType :: Lens' Instance (Maybe Text)
-iInstanceType = lens _iInstanceType (\s a -> s { _iInstanceType = a })
-
--- | The ID of the last service error. For more information, call 'DescribeServiceErrors'.
-iLastServiceErrorId :: Lens' Instance (Maybe Text)
-iLastServiceErrorId =
-    lens _iLastServiceErrorId (\s a -> s { _iLastServiceErrorId = a })
-
--- | An array containing the instance layer IDs.
-iLayerIds :: Lens' Instance [Text]
-iLayerIds = lens _iLayerIds (\s a -> s { _iLayerIds = a }) . _List
-
--- | The instance's operating system.
-iOs :: Lens' Instance (Maybe Text)
-iOs = lens _iOs (\s a -> s { _iOs = a })
-
--- | The instance private DNS name.
-iPrivateDns :: Lens' Instance (Maybe Text)
-iPrivateDns = lens _iPrivateDns (\s a -> s { _iPrivateDns = a })
-
--- | The instance private IP address.
-iPrivateIp :: Lens' Instance (Maybe Text)
-iPrivateIp = lens _iPrivateIp (\s a -> s { _iPrivateIp = a })
-
--- | The instance public DNS name.
-iPublicDns :: Lens' Instance (Maybe Text)
-iPublicDns = lens _iPublicDns (\s a -> s { _iPublicDns = a })
-
--- | The instance public IP address.
-iPublicIp :: Lens' Instance (Maybe Text)
-iPublicIp = lens _iPublicIp (\s a -> s { _iPublicIp = a })
-
--- | For registered instances, who performed the registration.
-iRegisteredBy :: Lens' Instance (Maybe Text)
-iRegisteredBy = lens _iRegisteredBy (\s a -> s { _iRegisteredBy = a })
-
--- | The instance's reported AWS OpsWorks agent version.
-iReportedAgentVersion :: Lens' Instance (Maybe Text)
-iReportedAgentVersion =
-    lens _iReportedAgentVersion (\s a -> s { _iReportedAgentVersion = a })
-
--- | For registered instances, the reported operating system.
-iReportedOs :: Lens' Instance (Maybe ReportedOs)
-iReportedOs = lens _iReportedOs (\s a -> s { _iReportedOs = a })
-
--- | The instance's root device type. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for theRoot Device>.
-iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
-iRootDeviceType = lens _iRootDeviceType (\s a -> s { _iRootDeviceType = a })
-
--- | The root device volume ID.
-iRootDeviceVolumeId :: Lens' Instance (Maybe Text)
-iRootDeviceVolumeId =
-    lens _iRootDeviceVolumeId (\s a -> s { _iRootDeviceVolumeId = a })
-
--- | An array containing the instance security group IDs.
-iSecurityGroupIds :: Lens' Instance [Text]
-iSecurityGroupIds =
-    lens _iSecurityGroupIds (\s a -> s { _iSecurityGroupIds = a })
-        . _List
-
--- | The SSH key's DSA fingerprint.
-iSshHostDsaKeyFingerprint :: Lens' Instance (Maybe Text)
-iSshHostDsaKeyFingerprint =
-    lens _iSshHostDsaKeyFingerprint
-        (\s a -> s { _iSshHostDsaKeyFingerprint = a })
-
--- | The SSH key's RSA fingerprint.
-iSshHostRsaKeyFingerprint :: Lens' Instance (Maybe Text)
-iSshHostRsaKeyFingerprint =
-    lens _iSshHostRsaKeyFingerprint
-        (\s a -> s { _iSshHostRsaKeyFingerprint = a })
-
--- | The instance's Amazon EC2 key pair name.
-iSshKeyName :: Lens' Instance (Maybe Text)
-iSshKeyName = lens _iSshKeyName (\s a -> s { _iSshKeyName = a })
-
--- | The stack ID.
-iStackId :: Lens' Instance (Maybe Text)
-iStackId = lens _iStackId (\s a -> s { _iStackId = a })
-
--- | The instance status:
---
--- 'booting'   'connection_lost'   'online'   'pending'   'rebooting'   'requested'   'running_setup'   'setup_failed'   'shutting_down'   'start_failed'   'stopped'   'stopping'   'terminated'   'terminating'
-iStatus :: Lens' Instance (Maybe Text)
-iStatus = lens _iStatus (\s a -> s { _iStatus = a })
-
--- | The instance's subnet ID, if the stack is running in a VPC.
-iSubnetId :: Lens' Instance (Maybe Text)
-iSubnetId = lens _iSubnetId (\s a -> s { _iSubnetId = a })
-
--- | The instance's virtualization type, 'paravirtual' or 'hvm'.
-iVirtualizationType :: Lens' Instance (Maybe VirtualizationType)
-iVirtualizationType =
-    lens _iVirtualizationType (\s a -> s { _iVirtualizationType = a })
-
-instance FromJSON Instance where
-    parseJSON = withObject "Instance" $ \o -> Instance
-        <$> o .:? "AmiId"
-        <*> o .:? "Architecture"
-        <*> o .:? "AutoScalingType"
-        <*> o .:? "AvailabilityZone"
-        <*> o .:? "BlockDeviceMappings" .!= mempty
-        <*> o .:? "CreatedAt"
-        <*> o .:? "EbsOptimized"
-        <*> o .:? "Ec2InstanceId"
-        <*> o .:? "ElasticIp"
-        <*> o .:? "Hostname"
-        <*> o .:? "InfrastructureClass"
-        <*> o .:? "InstallUpdatesOnBoot"
-        <*> o .:? "InstanceId"
-        <*> o .:? "InstanceProfileArn"
-        <*> o .:? "InstanceType"
-        <*> o .:? "LastServiceErrorId"
-        <*> o .:? "LayerIds" .!= mempty
-        <*> o .:? "Os"
-        <*> o .:? "PrivateDns"
-        <*> o .:? "PrivateIp"
-        <*> o .:? "PublicDns"
-        <*> o .:? "PublicIp"
-        <*> o .:? "RegisteredBy"
-        <*> o .:? "ReportedAgentVersion"
-        <*> o .:? "ReportedOs"
-        <*> o .:? "RootDeviceType"
-        <*> o .:? "RootDeviceVolumeId"
-        <*> o .:? "SecurityGroupIds" .!= mempty
-        <*> o .:? "SshHostDsaKeyFingerprint"
-        <*> o .:? "SshHostRsaKeyFingerprint"
-        <*> o .:? "SshKeyName"
-        <*> o .:? "StackId"
-        <*> o .:? "Status"
-        <*> o .:? "SubnetId"
-        <*> o .:? "VirtualizationType"
-
-instance ToJSON Instance where
-    toJSON Instance{..} = object
-        [ "InstanceId"               .= _iInstanceId
-        , "Ec2InstanceId"            .= _iEc2InstanceId
-        , "VirtualizationType"       .= _iVirtualizationType
-        , "Hostname"                 .= _iHostname
-        , "StackId"                  .= _iStackId
-        , "LayerIds"                 .= _iLayerIds
-        , "SecurityGroupIds"         .= _iSecurityGroupIds
-        , "InstanceType"             .= _iInstanceType
-        , "InstanceProfileArn"       .= _iInstanceProfileArn
-        , "Status"                   .= _iStatus
-        , "Os"                       .= _iOs
-        , "AmiId"                    .= _iAmiId
-        , "AvailabilityZone"         .= _iAvailabilityZone
-        , "SubnetId"                 .= _iSubnetId
-        , "PublicDns"                .= _iPublicDns
-        , "PrivateDns"               .= _iPrivateDns
-        , "PublicIp"                 .= _iPublicIp
-        , "PrivateIp"                .= _iPrivateIp
-        , "ElasticIp"                .= _iElasticIp
-        , "AutoScalingType"          .= _iAutoScalingType
-        , "SshKeyName"               .= _iSshKeyName
-        , "SshHostRsaKeyFingerprint" .= _iSshHostRsaKeyFingerprint
-        , "SshHostDsaKeyFingerprint" .= _iSshHostDsaKeyFingerprint
-        , "CreatedAt"                .= _iCreatedAt
-        , "LastServiceErrorId"       .= _iLastServiceErrorId
-        , "Architecture"             .= _iArchitecture
-        , "RootDeviceType"           .= _iRootDeviceType
-        , "RootDeviceVolumeId"       .= _iRootDeviceVolumeId
-        , "BlockDeviceMappings"      .= _iBlockDeviceMappings
-        , "InstallUpdatesOnBoot"     .= _iInstallUpdatesOnBoot
-        , "EbsOptimized"             .= _iEbsOptimized
-        , "ReportedAgentVersion"     .= _iReportedAgentVersion
-        , "ReportedOs"               .= _iReportedOs
-        , "InfrastructureClass"      .= _iInfrastructureClass
-        , "RegisteredBy"             .= _iRegisteredBy
-        ]
-
-data Deployment = Deployment
-    { _dAppId        :: Maybe Text
-    , _dCommand      :: Maybe DeploymentCommand
-    , _dComment      :: Maybe Text
-    , _dCompletedAt  :: Maybe Text
-    , _dCreatedAt    :: Maybe Text
-    , _dCustomJson   :: Maybe Text
-    , _dDeploymentId :: Maybe Text
-    , _dDuration     :: Maybe Int
-    , _dIamUserArn   :: Maybe Text
-    , _dInstanceIds  :: List "InstanceIds" Text
-    , _dStackId      :: Maybe Text
-    , _dStatus       :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Deployment' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dAppId' @::@ 'Maybe' 'Text'
---
--- * 'dCommand' @::@ 'Maybe' 'DeploymentCommand'
---
--- * 'dComment' @::@ 'Maybe' 'Text'
---
--- * 'dCompletedAt' @::@ 'Maybe' 'Text'
---
--- * 'dCreatedAt' @::@ 'Maybe' 'Text'
---
--- * 'dCustomJson' @::@ 'Maybe' 'Text'
---
--- * 'dDeploymentId' @::@ 'Maybe' 'Text'
---
--- * 'dDuration' @::@ 'Maybe' 'Int'
---
--- * 'dIamUserArn' @::@ 'Maybe' 'Text'
---
--- * 'dInstanceIds' @::@ ['Text']
---
--- * 'dStackId' @::@ 'Maybe' 'Text'
---
--- * 'dStatus' @::@ 'Maybe' 'Text'
---
-deployment :: Deployment
-deployment = Deployment
-    { _dDeploymentId = Nothing
-    , _dStackId      = Nothing
-    , _dAppId        = Nothing
-    , _dCreatedAt    = Nothing
-    , _dCompletedAt  = Nothing
-    , _dDuration     = Nothing
-    , _dIamUserArn   = Nothing
-    , _dComment      = Nothing
-    , _dCommand      = Nothing
-    , _dStatus       = Nothing
-    , _dCustomJson   = Nothing
-    , _dInstanceIds  = mempty
-    }
-
--- | The app ID.
-dAppId :: Lens' Deployment (Maybe Text)
-dAppId = lens _dAppId (\s a -> s { _dAppId = a })
-
-dCommand :: Lens' Deployment (Maybe DeploymentCommand)
-dCommand = lens _dCommand (\s a -> s { _dCommand = a })
-
--- | A user-defined comment.
-dComment :: Lens' Deployment (Maybe Text)
-dComment = lens _dComment (\s a -> s { _dComment = a })
-
--- | Date when the deployment completed.
-dCompletedAt :: Lens' Deployment (Maybe Text)
-dCompletedAt = lens _dCompletedAt (\s a -> s { _dCompletedAt = a })
-
--- | Date when the deployment was created.
-dCreatedAt :: Lens' Deployment (Maybe Text)
-dCreatedAt = lens _dCreatedAt (\s a -> s { _dCreatedAt = a })
-
--- | A string that contains user-defined custom JSON. It can be used to override
--- the corresponding default stack configuration attribute values for stack or
--- to pass data to recipes. The string should be in the following format and
--- must escape characters such as '"'.:
---
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
---
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>.
-dCustomJson :: Lens' Deployment (Maybe Text)
-dCustomJson = lens _dCustomJson (\s a -> s { _dCustomJson = a })
-
--- | The deployment ID.
-dDeploymentId :: Lens' Deployment (Maybe Text)
-dDeploymentId = lens _dDeploymentId (\s a -> s { _dDeploymentId = a })
-
--- | The deployment duration.
-dDuration :: Lens' Deployment (Maybe Int)
-dDuration = lens _dDuration (\s a -> s { _dDuration = a })
-
--- | The user's IAM ARN.
-dIamUserArn :: Lens' Deployment (Maybe Text)
-dIamUserArn = lens _dIamUserArn (\s a -> s { _dIamUserArn = a })
-
--- | The IDs of the target instances.
-dInstanceIds :: Lens' Deployment [Text]
-dInstanceIds = lens _dInstanceIds (\s a -> s { _dInstanceIds = a }) . _List
-
--- | The stack ID.
-dStackId :: Lens' Deployment (Maybe Text)
-dStackId = lens _dStackId (\s a -> s { _dStackId = a })
-
--- | The deployment status:
---
--- running successful failed
-dStatus :: Lens' Deployment (Maybe Text)
-dStatus = lens _dStatus (\s a -> s { _dStatus = a })
-
-instance FromJSON Deployment where
-    parseJSON = withObject "Deployment" $ \o -> Deployment
-        <$> o .:? "AppId"
-        <*> o .:? "Command"
-        <*> o .:? "Comment"
-        <*> o .:? "CompletedAt"
-        <*> o .:? "CreatedAt"
-        <*> o .:? "CustomJson"
-        <*> o .:? "DeploymentId"
-        <*> o .:? "Duration"
-        <*> o .:? "IamUserArn"
-        <*> o .:? "InstanceIds" .!= mempty
-        <*> o .:? "StackId"
-        <*> o .:? "Status"
-
-instance ToJSON Deployment where
-    toJSON Deployment{..} = object
-        [ "DeploymentId" .= _dDeploymentId
-        , "StackId"      .= _dStackId
-        , "AppId"        .= _dAppId
-        , "CreatedAt"    .= _dCreatedAt
-        , "CompletedAt"  .= _dCompletedAt
-        , "Duration"     .= _dDuration
-        , "IamUserArn"   .= _dIamUserArn
-        , "Comment"      .= _dComment
-        , "Command"      .= _dCommand
-        , "Status"       .= _dStatus
-        , "CustomJson"   .= _dCustomJson
-        , "InstanceIds"  .= _dInstanceIds
-        ]
-
-data InstancesCount = InstancesCount
-    { _icAssigning      :: Maybe Int
-    , _icBooting        :: Maybe Int
-    , _icConnectionLost :: Maybe Int
-    , _icDeregistering  :: Maybe Int
-    , _icOnline         :: Maybe Int
-    , _icPending        :: Maybe Int
-    , _icRebooting      :: Maybe Int
-    , _icRegistered     :: Maybe Int
-    , _icRegistering    :: Maybe Int
-    , _icRequested      :: Maybe Int
-    , _icRunningSetup   :: Maybe Int
-    , _icSetupFailed    :: Maybe Int
-    , _icShuttingDown   :: Maybe Int
-    , _icStartFailed    :: Maybe Int
-    , _icStopped        :: Maybe Int
-    , _icStopping       :: Maybe Int
-    , _icTerminated     :: Maybe Int
-    , _icTerminating    :: Maybe Int
-    , _icUnassigning    :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'InstancesCount' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'icAssigning' @::@ 'Maybe' 'Int'
---
--- * 'icBooting' @::@ 'Maybe' 'Int'
---
--- * 'icConnectionLost' @::@ 'Maybe' 'Int'
---
--- * 'icDeregistering' @::@ 'Maybe' 'Int'
---
--- * 'icOnline' @::@ 'Maybe' 'Int'
---
--- * 'icPending' @::@ 'Maybe' 'Int'
---
--- * 'icRebooting' @::@ 'Maybe' 'Int'
---
--- * 'icRegistered' @::@ 'Maybe' 'Int'
---
--- * 'icRegistering' @::@ 'Maybe' 'Int'
---
--- * 'icRequested' @::@ 'Maybe' 'Int'
---
--- * 'icRunningSetup' @::@ 'Maybe' 'Int'
---
--- * 'icSetupFailed' @::@ 'Maybe' 'Int'
---
--- * 'icShuttingDown' @::@ 'Maybe' 'Int'
---
--- * 'icStartFailed' @::@ 'Maybe' 'Int'
---
--- * 'icStopped' @::@ 'Maybe' 'Int'
---
--- * 'icStopping' @::@ 'Maybe' 'Int'
---
--- * 'icTerminated' @::@ 'Maybe' 'Int'
---
--- * 'icTerminating' @::@ 'Maybe' 'Int'
---
--- * 'icUnassigning' @::@ 'Maybe' 'Int'
---
-instancesCount :: InstancesCount
-instancesCount = InstancesCount
-    { _icAssigning      = Nothing
-    , _icBooting        = Nothing
-    , _icConnectionLost = Nothing
-    , _icDeregistering  = Nothing
-    , _icOnline         = Nothing
-    , _icPending        = Nothing
-    , _icRebooting      = Nothing
-    , _icRegistered     = Nothing
-    , _icRegistering    = Nothing
-    , _icRequested      = Nothing
-    , _icRunningSetup   = Nothing
-    , _icSetupFailed    = Nothing
-    , _icShuttingDown   = Nothing
-    , _icStartFailed    = Nothing
-    , _icStopped        = Nothing
-    , _icStopping       = Nothing
-    , _icTerminated     = Nothing
-    , _icTerminating    = Nothing
-    , _icUnassigning    = Nothing
-    }
-
--- | The number of instances in the Assigning state.
-icAssigning :: Lens' InstancesCount (Maybe Int)
-icAssigning = lens _icAssigning (\s a -> s { _icAssigning = a })
-
--- | The number of instances with 'booting' status.
-icBooting :: Lens' InstancesCount (Maybe Int)
-icBooting = lens _icBooting (\s a -> s { _icBooting = a })
-
--- | The number of instances with 'connection_lost' status.
-icConnectionLost :: Lens' InstancesCount (Maybe Int)
-icConnectionLost = lens _icConnectionLost (\s a -> s { _icConnectionLost = a })
-
--- | The number of instances in the Deregistering state.
-icDeregistering :: Lens' InstancesCount (Maybe Int)
-icDeregistering = lens _icDeregistering (\s a -> s { _icDeregistering = a })
-
--- | The number of instances with 'online' status.
-icOnline :: Lens' InstancesCount (Maybe Int)
-icOnline = lens _icOnline (\s a -> s { _icOnline = a })
-
--- | The number of instances with 'pending' status.
-icPending :: Lens' InstancesCount (Maybe Int)
-icPending = lens _icPending (\s a -> s { _icPending = a })
-
--- | The number of instances with 'rebooting' status.
-icRebooting :: Lens' InstancesCount (Maybe Int)
-icRebooting = lens _icRebooting (\s a -> s { _icRebooting = a })
-
--- | The number of instances in the Registered state.
-icRegistered :: Lens' InstancesCount (Maybe Int)
-icRegistered = lens _icRegistered (\s a -> s { _icRegistered = a })
-
--- | The number of instances in the Registering state.
-icRegistering :: Lens' InstancesCount (Maybe Int)
-icRegistering = lens _icRegistering (\s a -> s { _icRegistering = a })
-
--- | The number of instances with 'requested' status.
-icRequested :: Lens' InstancesCount (Maybe Int)
-icRequested = lens _icRequested (\s a -> s { _icRequested = a })
-
--- | The number of instances with 'running_setup' status.
-icRunningSetup :: Lens' InstancesCount (Maybe Int)
-icRunningSetup = lens _icRunningSetup (\s a -> s { _icRunningSetup = a })
-
--- | The number of instances with 'setup_failed' status.
-icSetupFailed :: Lens' InstancesCount (Maybe Int)
-icSetupFailed = lens _icSetupFailed (\s a -> s { _icSetupFailed = a })
-
--- | The number of instances with 'shutting_down' status.
-icShuttingDown :: Lens' InstancesCount (Maybe Int)
-icShuttingDown = lens _icShuttingDown (\s a -> s { _icShuttingDown = a })
-
--- | The number of instances with 'start_failed' status.
-icStartFailed :: Lens' InstancesCount (Maybe Int)
-icStartFailed = lens _icStartFailed (\s a -> s { _icStartFailed = a })
-
--- | The number of instances with 'stopped' status.
-icStopped :: Lens' InstancesCount (Maybe Int)
-icStopped = lens _icStopped (\s a -> s { _icStopped = a })
-
--- | The number of instances with 'stopping' status.
-icStopping :: Lens' InstancesCount (Maybe Int)
-icStopping = lens _icStopping (\s a -> s { _icStopping = a })
-
--- | The number of instances with 'terminated' status.
-icTerminated :: Lens' InstancesCount (Maybe Int)
-icTerminated = lens _icTerminated (\s a -> s { _icTerminated = a })
-
--- | The number of instances with 'terminating' status.
-icTerminating :: Lens' InstancesCount (Maybe Int)
-icTerminating = lens _icTerminating (\s a -> s { _icTerminating = a })
-
--- | The number of instances in the Unassigning state.
-icUnassigning :: Lens' InstancesCount (Maybe Int)
-icUnassigning = lens _icUnassigning (\s a -> s { _icUnassigning = a })
-
-instance FromJSON InstancesCount where
-    parseJSON = withObject "InstancesCount" $ \o -> InstancesCount
-        <$> o .:? "Assigning"
-        <*> o .:? "Booting"
-        <*> o .:? "ConnectionLost"
-        <*> o .:? "Deregistering"
-        <*> o .:? "Online"
-        <*> o .:? "Pending"
-        <*> o .:? "Rebooting"
-        <*> o .:? "Registered"
-        <*> o .:? "Registering"
-        <*> o .:? "Requested"
-        <*> o .:? "RunningSetup"
-        <*> o .:? "SetupFailed"
-        <*> o .:? "ShuttingDown"
-        <*> o .:? "StartFailed"
-        <*> o .:? "Stopped"
-        <*> o .:? "Stopping"
-        <*> o .:? "Terminated"
-        <*> o .:? "Terminating"
-        <*> o .:? "Unassigning"
-
-instance ToJSON InstancesCount where
-    toJSON InstancesCount{..} = object
-        [ "Assigning"      .= _icAssigning
-        , "Booting"        .= _icBooting
-        , "ConnectionLost" .= _icConnectionLost
-        , "Deregistering"  .= _icDeregistering
-        , "Online"         .= _icOnline
-        , "Pending"        .= _icPending
-        , "Rebooting"      .= _icRebooting
-        , "Registered"     .= _icRegistered
-        , "Registering"    .= _icRegistering
-        , "Requested"      .= _icRequested
-        , "RunningSetup"   .= _icRunningSetup
-        , "SetupFailed"    .= _icSetupFailed
-        , "ShuttingDown"   .= _icShuttingDown
-        , "StartFailed"    .= _icStartFailed
-        , "Stopped"        .= _icStopped
-        , "Stopping"       .= _icStopping
-        , "Terminated"     .= _icTerminated
-        , "Terminating"    .= _icTerminating
-        , "Unassigning"    .= _icUnassigning
-        ]
-
-data AppType
-    = Java   -- ^ java
-    | Nodejs -- ^ nodejs
-    | Other  -- ^ other
-    | Php    -- ^ php
-    | Rails  -- ^ rails
-    | Static -- ^ static
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable AppType
-
-instance FromText AppType where
-    parser = takeLowerText >>= \case
-        "java"   -> pure Java
-        "nodejs" -> pure Nodejs
-        "other"  -> pure Other
-        "php"    -> pure Php
-        "rails"  -> pure Rails
-        "static" -> pure Static
-        e        -> fail $
-            "Failure parsing AppType from " ++ show e
-
-instance ToText AppType where
-    toText = \case
-        Java   -> "java"
-        Nodejs -> "nodejs"
-        Other  -> "other"
-        Php    -> "php"
-        Rails  -> "rails"
-        Static -> "static"
-
-instance ToByteString AppType
-instance ToHeader     AppType
-instance ToQuery      AppType
-
-instance FromJSON AppType where
-    parseJSON = parseJSONText "AppType"
-
-instance ToJSON AppType where
-    toJSON = toJSONText
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.OpsWorks.Types
+-- Copyright   : (c) 2013-2015 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.OpsWorks.Types
+    (
+    -- * Service
+      OpsWorks
+
+    -- * Errors
+    , _ValidationException
+    , _ResourceNotFoundException
+
+    -- * AppAttributesKeys
+    , AppAttributesKeys (..)
+
+    -- * AppType
+    , AppType (..)
+
+    -- * Architecture
+    , Architecture (..)
+
+    -- * AutoScalingType
+    , AutoScalingType (..)
+
+    -- * DeploymentCommandName
+    , DeploymentCommandName (..)
+
+    -- * LayerAttributesKeys
+    , LayerAttributesKeys (..)
+
+    -- * LayerType
+    , LayerType (..)
+
+    -- * RootDeviceType
+    , RootDeviceType (..)
+
+    -- * SourceType
+    , SourceType (..)
+
+    -- * StackAttributesKeys
+    , StackAttributesKeys (..)
+
+    -- * VirtualizationType
+    , VirtualizationType (..)
+
+    -- * VolumeType
+    , VolumeType (..)
+
+    -- * AgentVersion
+    , AgentVersion
+    , agentVersion
+    , avVersion
+    , avConfigurationManager
+
+    -- * App
+    , App
+    , app
+    , appSSLConfiguration
+    , appShortname
+    , appEnableSSL
+    , appCreatedAt
+    , appEnvironment
+    , appDataSources
+    , appAppId
+    , appAppSource
+    , appName
+    , appAttributes
+    , appType
+    , appDomains
+    , appStackId
+    , appDescription
+
+    -- * AutoScalingThresholds
+    , AutoScalingThresholds
+    , autoScalingThresholds
+    , astInstanceCount
+    , astIgnoreMetricsTime
+    , astLoadThreshold
+    , astThresholdsWaitTime
+    , astAlarms
+    , astMemoryThreshold
+    , astCPUThreshold
+
+    -- * BlockDeviceMapping
+    , BlockDeviceMapping
+    , blockDeviceMapping
+    , bdmVirtualName
+    , bdmNoDevice
+    , bdmEBS
+    , bdmDeviceName
+
+    -- * ChefConfiguration
+    , ChefConfiguration
+    , chefConfiguration
+    , ccBerkshelfVersion
+    , ccManageBerkshelf
+
+    -- * Command
+    , Command
+    , command
+    , cInstanceId
+    , cDeploymentId
+    , cStatus
+    , cLogURL
+    , cCreatedAt
+    , cCommandId
+    , cExitCode
+    , cType
+    , cCompletedAt
+    , cAcknowledgedAt
+
+    -- * DataSource
+    , DataSource
+    , dataSource
+    , dsARN
+    , dsDatabaseName
+    , dsType
+
+    -- * Deployment
+    , Deployment
+    , deployment
+    , dDeploymentId
+    , dStatus
+    , dCommand
+    , dCreatedAt
+    , dCustomJSON
+    , dIAMUserARN
+    , dAppId
+    , dInstanceIds
+    , dCompletedAt
+    , dStackId
+    , dComment
+    , dDuration
+
+    -- * DeploymentCommand
+    , DeploymentCommand
+    , deploymentCommand
+    , dcArgs
+    , dcName
+
+    -- * EBSBlockDevice
+    , EBSBlockDevice
+    , ebsBlockDevice
+    , ebdDeleteOnTermination
+    , ebdVolumeSize
+    , ebdIOPS
+    , ebdVolumeType
+    , ebdSnapshotId
+
+    -- * EcsCluster
+    , EcsCluster
+    , ecsCluster
+    , ecEcsClusterARN
+    , ecEcsClusterName
+    , ecRegisteredAt
+    , ecStackId
+
+    -- * ElasticIP
+    , ElasticIP
+    , elasticIP
+    , eiInstanceId
+    , eiDomain
+    , eiIP
+    , eiName
+    , eiRegion
+
+    -- * ElasticLoadBalancer
+    , ElasticLoadBalancer
+    , elasticLoadBalancer
+    , elbSubnetIds
+    , elbVPCId
+    , elbAvailabilityZones
+    , elbRegion
+    , elbElasticLoadBalancerName
+    , elbEC2InstanceIds
+    , elbStackId
+    , elbLayerId
+    , elbDNSName
+
+    -- * EnvironmentVariable
+    , EnvironmentVariable
+    , environmentVariable
+    , evSecure
+    , evKey
+    , evValue
+
+    -- * Instance
+    , Instance
+    , instance'
+    , iInstanceId
+    , iPrivateIP
+    , iInstallUpdatesOnBoot
+    , iReportedAgentVersion
+    , iStatus
+    , iPrivateDNS
+    , iVirtualizationType
+    , iSecurityGroupIds
+    , iSSHHostRsaKeyFingerprint
+    , iInstanceProfileARN
+    , iPlatform
+    , iHostname
+    , iEcsClusterARN
+    , iCreatedAt
+    , iSSHKeyName
+    , iEC2InstanceId
+    , iAgentVersion
+    , iRootDeviceVolumeId
+    , iSubnetId
+    , iInstanceType
+    , iInfrastructureClass
+    , iEBSOptimized
+    , iSSHHostDsaKeyFingerprint
+    , iElasticIP
+    , iOS
+    , iAvailabilityZone
+    , iLastServiceErrorId
+    , iAutoScalingType
+    , iLayerIds
+    , iArchitecture
+    , iPublicDNS
+    , iPublicIP
+    , iAMIId
+    , iReportedOS
+    , iStackId
+    , iRegisteredBy
+    , iBlockDeviceMappings
+    , iEcsContainerInstanceARN
+    , iRootDeviceType
+
+    -- * InstanceIdentity
+    , InstanceIdentity
+    , instanceIdentity
+    , iiSignature
+    , iiDocument
+
+    -- * InstancesCount
+    , InstancesCount
+    , instancesCount
+    , icTerminating
+    , icPending
+    , icOnline
+    , icUnassigning
+    , icRequested
+    , icRunningSetup
+    , icDeregistering
+    , icBooting
+    , icStopped
+    , icRebooting
+    , icAssigning
+    , icShuttingDown
+    , icSetupFailed
+    , icConnectionLost
+    , icTerminated
+    , icStopping
+    , icRegistered
+    , icStartFailed
+    , icRegistering
+
+    -- * Layer
+    , Layer
+    , layer
+    , lCustomInstanceProfileARN
+    , lInstallUpdatesOnBoot
+    , lCustomSecurityGroupIds
+    , lLifecycleEventConfiguration
+    , lShortname
+    , lCreatedAt
+    , lDefaultRecipes
+    , lCustomRecipes
+    , lVolumeConfigurations
+    , lCustomJSON
+    , lEnableAutoHealing
+    , lPackages
+    , lName
+    , lAttributes
+    , lAutoAssignPublicIPs
+    , lUseEBSOptimizedInstances
+    , lType
+    , lStackId
+    , lLayerId
+    , lDefaultSecurityGroupNames
+    , lAutoAssignElasticIPs
+
+    -- * LifecycleEventConfiguration
+    , LifecycleEventConfiguration
+    , lifecycleEventConfiguration
+    , lecShutdown
+
+    -- * LoadBasedAutoScalingConfiguration
+    , LoadBasedAutoScalingConfiguration
+    , loadBasedAutoScalingConfiguration
+    , lbascUpScaling
+    , lbascEnable
+    , lbascDownScaling
+    , lbascLayerId
+
+    -- * Permission
+    , Permission
+    , permission
+    , pIAMUserARN
+    , pAllowSudo
+    , pStackId
+    , pLevel
+    , pAllowSSH
+
+    -- * RAIdArray
+    , RAIdArray
+    , rAIdArray
+    , raiaInstanceId
+    , raiaSize
+    , raiaCreatedAt
+    , raiaIOPS
+    , raiaRAIdLevel
+    , raiaDevice
+    , raiaNumberOfDisks
+    , raiaName
+    , raiaAvailabilityZone
+    , raiaRAIdArrayId
+    , raiaVolumeType
+    , raiaStackId
+    , raiaMountPoint
+
+    -- * RDSDBInstance
+    , RDSDBInstance
+    , rdsDBInstance
+    , rdiDBUser
+    , rdiRDSDBInstanceARN
+    , rdiMissingOnRDS
+    , rdiEngine
+    , rdiAddress
+    , rdiDBInstanceIdentifier
+    , rdiRegion
+    , rdiStackId
+    , rdiDBPassword
+
+    -- * Recipes
+    , Recipes
+    , recipes
+    , rSetup
+    , rUndeploy
+    , rShutdown
+    , rConfigure
+    , rDeploy
+
+    -- * ReportedOS
+    , ReportedOS
+    , reportedOS
+    , roFamily
+    , roName
+    , roVersion
+
+    -- * SSLConfiguration
+    , SSLConfiguration
+    , sslConfiguration
+    , scChain
+    , scCertificate
+    , scPrivateKey
+
+    -- * SelfUserProfile
+    , SelfUserProfile
+    , selfUserProfile
+    , supSSHUsername
+    , supSSHPublicKey
+    , supIAMUserARN
+    , supName
+
+    -- * ServiceError'
+    , ServiceError'
+    , serviceError'
+    , seInstanceId
+    , seCreatedAt
+    , seServiceErrorId
+    , seType
+    , seMessage
+    , seStackId
+
+    -- * ShutdownEventConfiguration
+    , ShutdownEventConfiguration
+    , shutdownEventConfiguration
+    , secExecutionTimeout
+    , secDelayUntilElbConnectionsDrained
+
+    -- * Source
+    , Source
+    , source
+    , sURL
+    , sUsername
+    , sSSHKey
+    , sPassword
+    , sType
+    , sRevision
+
+    -- * Stack
+    , Stack
+    , stack
+    , sDefaultInstanceProfileARN
+    , sServiceRoleARN
+    , sARN
+    , sDefaultRootDeviceType
+    , sCreatedAt
+    , sChefConfiguration
+    , sVPCId
+    , sAgentVersion
+    , sDefaultSSHKeyName
+    , sCustomJSON
+    , sCustomCookbooksSource
+    , sDefaultAvailabilityZone
+    , sName
+    , sUseOpsworksSecurityGroups
+    , sDefaultOS
+    , sAttributes
+    , sUseCustomCookbooks
+    , sDefaultSubnetId
+    , sRegion
+    , sConfigurationManager
+    , sStackId
+    , sHostnameTheme
+
+    -- * StackConfigurationManager
+    , StackConfigurationManager
+    , stackConfigurationManager
+    , scmName
+    , scmVersion
+
+    -- * StackSummary
+    , StackSummary
+    , stackSummary
+    , ssARN
+    , ssAppsCount
+    , ssName
+    , ssStackId
+    , ssLayersCount
+    , ssInstancesCount
+
+    -- * TemporaryCredential
+    , TemporaryCredential
+    , temporaryCredential
+    , tcInstanceId
+    , tcUsername
+    , tcPassword
+    , tcValidForInMinutes
+
+    -- * TimeBasedAutoScalingConfiguration
+    , TimeBasedAutoScalingConfiguration
+    , timeBasedAutoScalingConfiguration
+    , tbascInstanceId
+    , tbascAutoScalingSchedule
+
+    -- * UserProfile
+    , UserProfile
+    , userProfile
+    , upSSHUsername
+    , upSSHPublicKey
+    , upAllowSelfManagement
+    , upIAMUserARN
+    , upName
+
+    -- * Volume
+    , Volume
+    , volume
+    , vInstanceId
+    , vStatus
+    , vSize
+    , vIOPS
+    , vDevice
+    , vName
+    , vAvailabilityZone
+    , vRAIdArrayId
+    , vVolumeId
+    , vRegion
+    , vVolumeType
+    , vEC2VolumeId
+    , vMountPoint
+
+    -- * VolumeConfiguration
+    , VolumeConfiguration
+    , volumeConfiguration
+    , vcIOPS
+    , vcRAIdLevel
+    , vcVolumeType
+    , vcMountPoint
+    , vcNumberOfDisks
+    , vcSize
+
+    -- * WeeklyAutoScalingSchedule
+    , WeeklyAutoScalingSchedule
+    , weeklyAutoScalingSchedule
+    , wassThursday
+    , wassWednesday
+    , wassSaturday
+    , wassMonday
+    , wassFriday
+    , wassSunday
+    , wassTuesday
+    ) where
+
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.OpsWorks.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+
+-- | Version @2013-02-18@ of the Amazon OpsWorks SDK.
+data OpsWorks
+
+instance AWSService OpsWorks where
+    type Sg OpsWorks = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "OpsWorks"
+            , _svcPrefix = "opsworks"
+            , _svcVersion = "2013-02-18"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseJSONError
+            , _svcRetry = retry
+            }
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
+            , _retryAttempts = 5
+            , _retryCheck = check
+            }
+        check e
+          | has (hasCode "ThrottlingException" . hasStatus 400) e =
+              Just "throttling_exception"
+          | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
+          | has (hasStatus 503) e = Just "service_unavailable"
+          | has (hasStatus 500) e = Just "general_server_error"
+          | has (hasStatus 509) e = Just "limit_exceeded"
+          | otherwise = Nothing
+
+-- | Indicates that a request was invalid.
+_ValidationException :: AsError a => Getting (First ServiceError) a ServiceError
+_ValidationException = _ServiceError . hasCode "ValidationException"
+
+-- | Indicates that a resource was not found.
+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+_ResourceNotFoundException =
+    _ServiceError . hasCode "ResourceNotFoundException"
diff --git a/gen/Network/AWS/OpsWorks/Types/Product.hs b/gen/Network/AWS/OpsWorks/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/Types/Product.hs
@@ -0,0 +1,3859 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.OpsWorks.Types.Product
+-- Copyright   : (c) 2013-2015 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.OpsWorks.Types.Product where
+
+import           Network.AWS.OpsWorks.Types.Sum
+import           Network.AWS.Prelude
+
+-- | Describes an agent version.
+--
+-- /See:/ 'agentVersion' smart constructor.
+data AgentVersion = AgentVersion'
+    { _avVersion              :: !(Maybe Text)
+    , _avConfigurationManager :: !(Maybe StackConfigurationManager)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AgentVersion' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'avVersion'
+--
+-- * 'avConfigurationManager'
+agentVersion
+    :: AgentVersion
+agentVersion =
+    AgentVersion'
+    { _avVersion = Nothing
+    , _avConfigurationManager = Nothing
+    }
+
+-- | The agent version.
+avVersion :: Lens' AgentVersion (Maybe Text)
+avVersion = lens _avVersion (\ s a -> s{_avVersion = a});
+
+-- | The configuration manager.
+avConfigurationManager :: Lens' AgentVersion (Maybe StackConfigurationManager)
+avConfigurationManager = lens _avConfigurationManager (\ s a -> s{_avConfigurationManager = a});
+
+instance FromJSON AgentVersion where
+        parseJSON
+          = withObject "AgentVersion"
+              (\ x ->
+                 AgentVersion' <$>
+                   (x .:? "Version") <*> (x .:? "ConfigurationManager"))
+
+-- | A description of the app.
+--
+-- /See:/ 'app' smart constructor.
+data App = App'
+    { _appSSLConfiguration :: !(Maybe SSLConfiguration)
+    , _appShortname        :: !(Maybe Text)
+    , _appEnableSSL        :: !(Maybe Bool)
+    , _appCreatedAt        :: !(Maybe Text)
+    , _appEnvironment      :: !(Maybe [EnvironmentVariable])
+    , _appDataSources      :: !(Maybe [DataSource])
+    , _appAppId            :: !(Maybe Text)
+    , _appAppSource        :: !(Maybe Source)
+    , _appName             :: !(Maybe Text)
+    , _appAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+    , _appType             :: !(Maybe AppType)
+    , _appDomains          :: !(Maybe [Text])
+    , _appStackId          :: !(Maybe Text)
+    , _appDescription      :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'App' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'appSSLConfiguration'
+--
+-- * 'appShortname'
+--
+-- * 'appEnableSSL'
+--
+-- * 'appCreatedAt'
+--
+-- * 'appEnvironment'
+--
+-- * 'appDataSources'
+--
+-- * 'appAppId'
+--
+-- * 'appAppSource'
+--
+-- * 'appName'
+--
+-- * 'appAttributes'
+--
+-- * 'appType'
+--
+-- * 'appDomains'
+--
+-- * 'appStackId'
+--
+-- * 'appDescription'
+app
+    :: App
+app =
+    App'
+    { _appSSLConfiguration = Nothing
+    , _appShortname = Nothing
+    , _appEnableSSL = Nothing
+    , _appCreatedAt = Nothing
+    , _appEnvironment = Nothing
+    , _appDataSources = Nothing
+    , _appAppId = Nothing
+    , _appAppSource = Nothing
+    , _appName = Nothing
+    , _appAttributes = Nothing
+    , _appType = Nothing
+    , _appDomains = Nothing
+    , _appStackId = Nothing
+    , _appDescription = Nothing
+    }
+
+-- | An 'SslConfiguration' object with the SSL configuration.
+appSSLConfiguration :: Lens' App (Maybe SSLConfiguration)
+appSSLConfiguration = lens _appSSLConfiguration (\ s a -> s{_appSSLConfiguration = a});
+
+-- | The app\'s short name.
+appShortname :: Lens' App (Maybe Text)
+appShortname = lens _appShortname (\ s a -> s{_appShortname = a});
+
+-- | Whether to enable SSL for the app.
+appEnableSSL :: Lens' App (Maybe Bool)
+appEnableSSL = lens _appEnableSSL (\ s a -> s{_appEnableSSL = a});
+
+-- | When the app was created.
+appCreatedAt :: Lens' App (Maybe Text)
+appCreatedAt = lens _appCreatedAt (\ s a -> s{_appCreatedAt = a});
+
+-- | An array of 'EnvironmentVariable' objects that specify environment
+-- variables to be associated with the app. After you deploy the app, these
+-- variables are defined on the associated app server instances. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
+--
+-- There is no specific limit on the number of environment variables.
+-- However, the size of the associated data structure - which includes the
+-- variables\' names, values, and protected flag values - cannot exceed 10
+-- KB (10240 Bytes). This limit should accommodate most if not all use
+-- cases, but if you do exceed it, you will cause an exception (API) with
+-- an \"Environment: is too large (maximum is 10KB)\" message.
+appEnvironment :: Lens' App [EnvironmentVariable]
+appEnvironment = lens _appEnvironment (\ s a -> s{_appEnvironment = a}) . _Default . _Coerce;
+
+-- | The app\'s data sources.
+appDataSources :: Lens' App [DataSource]
+appDataSources = lens _appDataSources (\ s a -> s{_appDataSources = a}) . _Default . _Coerce;
+
+-- | The app ID.
+appAppId :: Lens' App (Maybe Text)
+appAppId = lens _appAppId (\ s a -> s{_appAppId = a});
+
+-- | A 'Source' object that describes the app repository.
+appAppSource :: Lens' App (Maybe Source)
+appAppSource = lens _appAppSource (\ s a -> s{_appAppSource = a});
+
+-- | The app name.
+appName :: Lens' App (Maybe Text)
+appName = lens _appName (\ s a -> s{_appName = a});
+
+-- | The stack attributes.
+appAttributes :: Lens' App (HashMap AppAttributesKeys Text)
+appAttributes = lens _appAttributes (\ s a -> s{_appAttributes = a}) . _Default . _Map;
+
+-- | The app type.
+appType :: Lens' App (Maybe AppType)
+appType = lens _appType (\ s a -> s{_appType = a});
+
+-- | The app vhost settings with multiple domains separated by commas. For
+-- example: '\'www.example.com, example.com\''
+appDomains :: Lens' App [Text]
+appDomains = lens _appDomains (\ s a -> s{_appDomains = a}) . _Default . _Coerce;
+
+-- | The app stack ID.
+appStackId :: Lens' App (Maybe Text)
+appStackId = lens _appStackId (\ s a -> s{_appStackId = a});
+
+-- | A description of the app.
+appDescription :: Lens' App (Maybe Text)
+appDescription = lens _appDescription (\ s a -> s{_appDescription = a});
+
+instance FromJSON App where
+        parseJSON
+          = withObject "App"
+              (\ x ->
+                 App' <$>
+                   (x .:? "SslConfiguration") <*> (x .:? "Shortname")
+                     <*> (x .:? "EnableSsl")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "Environment" .!= mempty)
+                     <*> (x .:? "DataSources" .!= mempty)
+                     <*> (x .:? "AppId")
+                     <*> (x .:? "AppSource")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Domains" .!= mempty)
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Description"))
+
+-- | Describes a load-based auto scaling upscaling or downscaling threshold
+-- configuration, which specifies when AWS OpsWorks starts or stops
+-- load-based instances.
+--
+-- /See:/ 'autoScalingThresholds' smart constructor.
+data AutoScalingThresholds = AutoScalingThresholds'
+    { _astInstanceCount      :: !(Maybe Int)
+    , _astIgnoreMetricsTime  :: !(Maybe Nat)
+    , _astLoadThreshold      :: !(Maybe Double)
+    , _astThresholdsWaitTime :: !(Maybe Nat)
+    , _astAlarms             :: !(Maybe [Text])
+    , _astMemoryThreshold    :: !(Maybe Double)
+    , _astCPUThreshold       :: !(Maybe Double)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AutoScalingThresholds' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'astInstanceCount'
+--
+-- * 'astIgnoreMetricsTime'
+--
+-- * 'astLoadThreshold'
+--
+-- * 'astThresholdsWaitTime'
+--
+-- * 'astAlarms'
+--
+-- * 'astMemoryThreshold'
+--
+-- * 'astCPUThreshold'
+autoScalingThresholds
+    :: AutoScalingThresholds
+autoScalingThresholds =
+    AutoScalingThresholds'
+    { _astInstanceCount = Nothing
+    , _astIgnoreMetricsTime = Nothing
+    , _astLoadThreshold = Nothing
+    , _astThresholdsWaitTime = Nothing
+    , _astAlarms = Nothing
+    , _astMemoryThreshold = Nothing
+    , _astCPUThreshold = Nothing
+    }
+
+-- | The number of instances to add or remove when the load exceeds a
+-- threshold.
+astInstanceCount :: Lens' AutoScalingThresholds (Maybe Int)
+astInstanceCount = lens _astInstanceCount (\ s a -> s{_astInstanceCount = a});
+
+-- | The amount of time (in minutes) after a scaling event occurs that AWS
+-- OpsWorks should ignore metrics and suppress additional scaling events.
+-- For example, AWS OpsWorks adds new instances following an upscaling
+-- event but the instances won\'t start reducing the load until they have
+-- been booted and configured. There is no point in raising additional
+-- scaling events during that operation, which typically takes several
+-- minutes. 'IgnoreMetricsTime' allows you to direct AWS OpsWorks to
+-- suppress scaling events long enough to get the new instances online.
+astIgnoreMetricsTime :: Lens' AutoScalingThresholds (Maybe Natural)
+astIgnoreMetricsTime = lens _astIgnoreMetricsTime (\ s a -> s{_astIgnoreMetricsTime = a}) . mapping _Nat;
+
+-- | The load threshold. For more information about how load is computed, see
+-- <http://en.wikipedia.org/wiki/Load_%28computing%29 Load (computing)>.
+astLoadThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astLoadThreshold = lens _astLoadThreshold (\ s a -> s{_astLoadThreshold = a});
+
+-- | The amount of time, in minutes, that the load must exceed a threshold
+-- before more instances are added or removed.
+astThresholdsWaitTime :: Lens' AutoScalingThresholds (Maybe Natural)
+astThresholdsWaitTime = lens _astThresholdsWaitTime (\ s a -> s{_astThresholdsWaitTime = a}) . mapping _Nat;
+
+-- | Custom Cloudwatch auto scaling alarms, to be used as thresholds. This
+-- parameter takes a list of up to five alarm names, which are case
+-- sensitive and must be in the same region as the stack.
+--
+-- To use custom alarms, you must update your service role to allow
+-- 'cloudwatch:DescribeAlarms'. You can either have AWS OpsWorks update the
+-- role for you when you first use this feature or you can edit the role
+-- manually. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-servicerole.html Allowing AWS OpsWorks to Act on Your Behalf>.
+astAlarms :: Lens' AutoScalingThresholds [Text]
+astAlarms = lens _astAlarms (\ s a -> s{_astAlarms = a}) . _Default . _Coerce;
+
+-- | The memory utilization threshold, as a percent of the available memory.
+astMemoryThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astMemoryThreshold = lens _astMemoryThreshold (\ s a -> s{_astMemoryThreshold = a});
+
+-- | The CPU utilization threshold, as a percent of the available CPU.
+astCPUThreshold :: Lens' AutoScalingThresholds (Maybe Double)
+astCPUThreshold = lens _astCPUThreshold (\ s a -> s{_astCPUThreshold = a});
+
+instance FromJSON AutoScalingThresholds where
+        parseJSON
+          = withObject "AutoScalingThresholds"
+              (\ x ->
+                 AutoScalingThresholds' <$>
+                   (x .:? "InstanceCount") <*>
+                     (x .:? "IgnoreMetricsTime")
+                     <*> (x .:? "LoadThreshold")
+                     <*> (x .:? "ThresholdsWaitTime")
+                     <*> (x .:? "Alarms" .!= mempty)
+                     <*> (x .:? "MemoryThreshold")
+                     <*> (x .:? "CpuThreshold"))
+
+instance ToJSON AutoScalingThresholds where
+        toJSON AutoScalingThresholds'{..}
+          = object
+              ["InstanceCount" .= _astInstanceCount,
+               "IgnoreMetricsTime" .= _astIgnoreMetricsTime,
+               "LoadThreshold" .= _astLoadThreshold,
+               "ThresholdsWaitTime" .= _astThresholdsWaitTime,
+               "Alarms" .= _astAlarms,
+               "MemoryThreshold" .= _astMemoryThreshold,
+               "CpuThreshold" .= _astCPUThreshold]
+
+-- | Describes a block device mapping. This data type maps directly to the
+-- Amazon EC2
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping>
+-- data type.
+--
+-- /See:/ 'blockDeviceMapping' smart constructor.
+data BlockDeviceMapping = BlockDeviceMapping'
+    { _bdmVirtualName :: !(Maybe Text)
+    , _bdmNoDevice    :: !(Maybe Text)
+    , _bdmEBS         :: !(Maybe EBSBlockDevice)
+    , _bdmDeviceName  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BlockDeviceMapping' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bdmVirtualName'
+--
+-- * 'bdmNoDevice'
+--
+-- * 'bdmEBS'
+--
+-- * 'bdmDeviceName'
+blockDeviceMapping
+    :: BlockDeviceMapping
+blockDeviceMapping =
+    BlockDeviceMapping'
+    { _bdmVirtualName = Nothing
+    , _bdmNoDevice = Nothing
+    , _bdmEBS = Nothing
+    , _bdmDeviceName = Nothing
+    }
+
+-- | The virtual device name. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_BlockDeviceMapping.html BlockDeviceMapping>.
+bdmVirtualName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmVirtualName = lens _bdmVirtualName (\ s a -> s{_bdmVirtualName = a});
+
+-- | Suppresses the specified device included in the AMI\'s block device
+-- mapping.
+bdmNoDevice :: Lens' BlockDeviceMapping (Maybe Text)
+bdmNoDevice = lens _bdmNoDevice (\ s a -> s{_bdmNoDevice = a});
+
+-- | An 'EBSBlockDevice' that defines how to configure an Amazon EBS volume
+-- when the instance is launched.
+bdmEBS :: Lens' BlockDeviceMapping (Maybe EBSBlockDevice)
+bdmEBS = lens _bdmEBS (\ s a -> s{_bdmEBS = a});
+
+-- | The device name that is exposed to the instance, such as '\/dev\/sdh'.
+-- For the root device, you can use the explicit device name or you can set
+-- this parameter to 'ROOT_DEVICE' and AWS OpsWorks will provide the
+-- correct device name.
+bdmDeviceName :: Lens' BlockDeviceMapping (Maybe Text)
+bdmDeviceName = lens _bdmDeviceName (\ s a -> s{_bdmDeviceName = a});
+
+instance FromJSON BlockDeviceMapping where
+        parseJSON
+          = withObject "BlockDeviceMapping"
+              (\ x ->
+                 BlockDeviceMapping' <$>
+                   (x .:? "VirtualName") <*> (x .:? "NoDevice") <*>
+                     (x .:? "Ebs")
+                     <*> (x .:? "DeviceName"))
+
+instance ToJSON BlockDeviceMapping where
+        toJSON BlockDeviceMapping'{..}
+          = object
+              ["VirtualName" .= _bdmVirtualName,
+               "NoDevice" .= _bdmNoDevice, "Ebs" .= _bdmEBS,
+               "DeviceName" .= _bdmDeviceName]
+
+-- | Describes the Chef configuration.
+--
+-- /See:/ 'chefConfiguration' smart constructor.
+data ChefConfiguration = ChefConfiguration'
+    { _ccBerkshelfVersion :: !(Maybe Text)
+    , _ccManageBerkshelf  :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ChefConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccBerkshelfVersion'
+--
+-- * 'ccManageBerkshelf'
+chefConfiguration
+    :: ChefConfiguration
+chefConfiguration =
+    ChefConfiguration'
+    { _ccBerkshelfVersion = Nothing
+    , _ccManageBerkshelf = Nothing
+    }
+
+-- | The Berkshelf version.
+ccBerkshelfVersion :: Lens' ChefConfiguration (Maybe Text)
+ccBerkshelfVersion = lens _ccBerkshelfVersion (\ s a -> s{_ccBerkshelfVersion = a});
+
+-- | Whether to enable Berkshelf.
+ccManageBerkshelf :: Lens' ChefConfiguration (Maybe Bool)
+ccManageBerkshelf = lens _ccManageBerkshelf (\ s a -> s{_ccManageBerkshelf = a});
+
+instance FromJSON ChefConfiguration where
+        parseJSON
+          = withObject "ChefConfiguration"
+              (\ x ->
+                 ChefConfiguration' <$>
+                   (x .:? "BerkshelfVersion") <*>
+                     (x .:? "ManageBerkshelf"))
+
+instance ToJSON ChefConfiguration where
+        toJSON ChefConfiguration'{..}
+          = object
+              ["BerkshelfVersion" .= _ccBerkshelfVersion,
+               "ManageBerkshelf" .= _ccManageBerkshelf]
+
+-- | Describes a command.
+--
+-- /See:/ 'command' smart constructor.
+data Command = Command'
+    { _cInstanceId     :: !(Maybe Text)
+    , _cDeploymentId   :: !(Maybe Text)
+    , _cStatus         :: !(Maybe Text)
+    , _cLogURL         :: !(Maybe Text)
+    , _cCreatedAt      :: !(Maybe Text)
+    , _cCommandId      :: !(Maybe Text)
+    , _cExitCode       :: !(Maybe Int)
+    , _cType           :: !(Maybe Text)
+    , _cCompletedAt    :: !(Maybe Text)
+    , _cAcknowledgedAt :: !(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:
+--
+-- * 'cInstanceId'
+--
+-- * 'cDeploymentId'
+--
+-- * 'cStatus'
+--
+-- * 'cLogURL'
+--
+-- * 'cCreatedAt'
+--
+-- * 'cCommandId'
+--
+-- * 'cExitCode'
+--
+-- * 'cType'
+--
+-- * 'cCompletedAt'
+--
+-- * 'cAcknowledgedAt'
+command
+    :: Command
+command =
+    Command'
+    { _cInstanceId = Nothing
+    , _cDeploymentId = Nothing
+    , _cStatus = Nothing
+    , _cLogURL = Nothing
+    , _cCreatedAt = Nothing
+    , _cCommandId = Nothing
+    , _cExitCode = Nothing
+    , _cType = Nothing
+    , _cCompletedAt = Nothing
+    , _cAcknowledgedAt = Nothing
+    }
+
+-- | The ID of the instance where the command was executed.
+cInstanceId :: Lens' Command (Maybe Text)
+cInstanceId = lens _cInstanceId (\ s a -> s{_cInstanceId = a});
+
+-- | The command deployment ID.
+cDeploymentId :: Lens' Command (Maybe Text)
+cDeploymentId = lens _cDeploymentId (\ s a -> s{_cDeploymentId = a});
+
+-- | The command status:
+--
+-- -   failed
+-- -   successful
+-- -   skipped
+-- -   pending
+cStatus :: Lens' Command (Maybe Text)
+cStatus = lens _cStatus (\ s a -> s{_cStatus = a});
+
+-- | The URL of the command log.
+cLogURL :: Lens' Command (Maybe Text)
+cLogURL = lens _cLogURL (\ s a -> s{_cLogURL = a});
+
+-- | Date and time when the command was run.
+cCreatedAt :: Lens' Command (Maybe Text)
+cCreatedAt = lens _cCreatedAt (\ s a -> s{_cCreatedAt = a});
+
+-- | The command ID.
+cCommandId :: Lens' Command (Maybe Text)
+cCommandId = lens _cCommandId (\ s a -> s{_cCommandId = a});
+
+-- | The command exit code.
+cExitCode :: Lens' Command (Maybe Int)
+cExitCode = lens _cExitCode (\ s a -> s{_cExitCode = a});
+
+-- | The command type:
+--
+-- -   'deploy'
+-- -   'rollback'
+-- -   'start'
+-- -   'stop'
+-- -   'restart'
+-- -   'undeploy'
+-- -   'update_dependencies'
+-- -   'install_dependencies'
+-- -   'update_custom_cookbooks'
+-- -   'execute_recipes'
+cType :: Lens' Command (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a});
+
+-- | Date when the command completed.
+cCompletedAt :: Lens' Command (Maybe Text)
+cCompletedAt = lens _cCompletedAt (\ s a -> s{_cCompletedAt = a});
+
+-- | Date and time when the command was acknowledged.
+cAcknowledgedAt :: Lens' Command (Maybe Text)
+cAcknowledgedAt = lens _cAcknowledgedAt (\ s a -> s{_cAcknowledgedAt = a});
+
+instance FromJSON Command where
+        parseJSON
+          = withObject "Command"
+              (\ x ->
+                 Command' <$>
+                   (x .:? "InstanceId") <*> (x .:? "DeploymentId") <*>
+                     (x .:? "Status")
+                     <*> (x .:? "LogUrl")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "CommandId")
+                     <*> (x .:? "ExitCode")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "CompletedAt")
+                     <*> (x .:? "AcknowledgedAt"))
+
+-- | Describes an app\'s data source.
+--
+-- /See:/ 'dataSource' smart constructor.
+data DataSource = DataSource'
+    { _dsARN          :: !(Maybe Text)
+    , _dsDatabaseName :: !(Maybe Text)
+    , _dsType         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DataSource' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsARN'
+--
+-- * 'dsDatabaseName'
+--
+-- * 'dsType'
+dataSource
+    :: DataSource
+dataSource =
+    DataSource'
+    { _dsARN = Nothing
+    , _dsDatabaseName = Nothing
+    , _dsType = Nothing
+    }
+
+-- | The data source\'s ARN.
+dsARN :: Lens' DataSource (Maybe Text)
+dsARN = lens _dsARN (\ s a -> s{_dsARN = a});
+
+-- | The database name.
+dsDatabaseName :: Lens' DataSource (Maybe Text)
+dsDatabaseName = lens _dsDatabaseName (\ s a -> s{_dsDatabaseName = a});
+
+-- | The data source\'s type, 'AutoSelectOpsworksMysqlInstance',
+-- 'OpsworksMysqlInstance', or 'RdsDbInstance'.
+dsType :: Lens' DataSource (Maybe Text)
+dsType = lens _dsType (\ s a -> s{_dsType = a});
+
+instance FromJSON DataSource where
+        parseJSON
+          = withObject "DataSource"
+              (\ x ->
+                 DataSource' <$>
+                   (x .:? "Arn") <*> (x .:? "DatabaseName") <*>
+                     (x .:? "Type"))
+
+instance ToJSON DataSource where
+        toJSON DataSource'{..}
+          = object
+              ["Arn" .= _dsARN, "DatabaseName" .= _dsDatabaseName,
+               "Type" .= _dsType]
+
+-- | Describes a deployment of a stack or app.
+--
+-- /See:/ 'deployment' smart constructor.
+data Deployment = Deployment'
+    { _dDeploymentId :: !(Maybe Text)
+    , _dStatus       :: !(Maybe Text)
+    , _dCommand      :: !(Maybe DeploymentCommand)
+    , _dCreatedAt    :: !(Maybe Text)
+    , _dCustomJSON   :: !(Maybe Text)
+    , _dIAMUserARN   :: !(Maybe Text)
+    , _dAppId        :: !(Maybe Text)
+    , _dInstanceIds  :: !(Maybe [Text])
+    , _dCompletedAt  :: !(Maybe Text)
+    , _dStackId      :: !(Maybe Text)
+    , _dComment      :: !(Maybe Text)
+    , _dDuration     :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Deployment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dDeploymentId'
+--
+-- * 'dStatus'
+--
+-- * 'dCommand'
+--
+-- * 'dCreatedAt'
+--
+-- * 'dCustomJSON'
+--
+-- * 'dIAMUserARN'
+--
+-- * 'dAppId'
+--
+-- * 'dInstanceIds'
+--
+-- * 'dCompletedAt'
+--
+-- * 'dStackId'
+--
+-- * 'dComment'
+--
+-- * 'dDuration'
+deployment
+    :: Deployment
+deployment =
+    Deployment'
+    { _dDeploymentId = Nothing
+    , _dStatus = Nothing
+    , _dCommand = Nothing
+    , _dCreatedAt = Nothing
+    , _dCustomJSON = Nothing
+    , _dIAMUserARN = Nothing
+    , _dAppId = Nothing
+    , _dInstanceIds = Nothing
+    , _dCompletedAt = Nothing
+    , _dStackId = Nothing
+    , _dComment = Nothing
+    , _dDuration = Nothing
+    }
+
+-- | The deployment ID.
+dDeploymentId :: Lens' Deployment (Maybe Text)
+dDeploymentId = lens _dDeploymentId (\ s a -> s{_dDeploymentId = a});
+
+-- | The deployment status:
+--
+-- -   running
+-- -   successful
+-- -   failed
+dStatus :: Lens' Deployment (Maybe Text)
+dStatus = lens _dStatus (\ s a -> s{_dStatus = a});
+
+-- | Undocumented member.
+dCommand :: Lens' Deployment (Maybe DeploymentCommand)
+dCommand = lens _dCommand (\ s a -> s{_dCommand = a});
+
+-- | Date when the deployment was created.
+dCreatedAt :: Lens' Deployment (Maybe Text)
+dCreatedAt = lens _dCreatedAt (\ s a -> s{_dCreatedAt = a});
+
+-- | A string that contains user-defined custom JSON. It can be used to
+-- override the corresponding default stack configuration attribute values
+-- for stack or to pass data to recipes. The string should be in the
+-- following format and must escape characters such as \'\"\':
+--
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
+--
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
+dCustomJSON :: Lens' Deployment (Maybe Text)
+dCustomJSON = lens _dCustomJSON (\ s a -> s{_dCustomJSON = a});
+
+-- | The user\'s IAM ARN.
+dIAMUserARN :: Lens' Deployment (Maybe Text)
+dIAMUserARN = lens _dIAMUserARN (\ s a -> s{_dIAMUserARN = a});
+
+-- | The app ID.
+dAppId :: Lens' Deployment (Maybe Text)
+dAppId = lens _dAppId (\ s a -> s{_dAppId = a});
+
+-- | The IDs of the target instances.
+dInstanceIds :: Lens' Deployment [Text]
+dInstanceIds = lens _dInstanceIds (\ s a -> s{_dInstanceIds = a}) . _Default . _Coerce;
+
+-- | Date when the deployment completed.
+dCompletedAt :: Lens' Deployment (Maybe Text)
+dCompletedAt = lens _dCompletedAt (\ s a -> s{_dCompletedAt = a});
+
+-- | The stack ID.
+dStackId :: Lens' Deployment (Maybe Text)
+dStackId = lens _dStackId (\ s a -> s{_dStackId = a});
+
+-- | A user-defined comment.
+dComment :: Lens' Deployment (Maybe Text)
+dComment = lens _dComment (\ s a -> s{_dComment = a});
+
+-- | The deployment duration.
+dDuration :: Lens' Deployment (Maybe Int)
+dDuration = lens _dDuration (\ s a -> s{_dDuration = a});
+
+instance FromJSON Deployment where
+        parseJSON
+          = withObject "Deployment"
+              (\ x ->
+                 Deployment' <$>
+                   (x .:? "DeploymentId") <*> (x .:? "Status") <*>
+                     (x .:? "Command")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "IamUserArn")
+                     <*> (x .:? "AppId")
+                     <*> (x .:? "InstanceIds" .!= mempty)
+                     <*> (x .:? "CompletedAt")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "Comment")
+                     <*> (x .:? "Duration"))
+
+-- | Used to specify a stack or deployment command.
+--
+-- /See:/ 'deploymentCommand' smart constructor.
+data DeploymentCommand = DeploymentCommand'
+    { _dcArgs :: !(Maybe (Map Text [Text]))
+    , _dcName :: !DeploymentCommandName
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeploymentCommand' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcArgs'
+--
+-- * 'dcName'
+deploymentCommand
+    :: DeploymentCommandName -- ^ 'dcName'
+    -> DeploymentCommand
+deploymentCommand pName_ =
+    DeploymentCommand'
+    { _dcArgs = Nothing
+    , _dcName = pName_
+    }
+
+-- | The arguments of those commands that take arguments. It should be set to
+-- a JSON object with the following format:
+--
+-- '{\"arg_name1\" : [\"value1\", \"value2\", ...], \"arg_name2\" : [\"value1\", \"value2\", ...], ...}'
+--
+-- The 'update_dependencies' command takes two arguments:
+--
+-- -   'upgrade_os_to' - Specifies the desired Amazon Linux version for
+--     instances whose OS you want to upgrade, such as
+--     'Amazon Linux 2014.09'. You must also set the 'allow_reboot'
+--     argument to true.
+-- -   'allow_reboot' - Specifies whether to allow AWS OpsWorks to reboot
+--     the instances if necessary, after installing the updates. This
+--     argument can be set to either 'true' or 'false'. The default value
+--     is 'false'.
+--
+-- For example, to upgrade an instance to Amazon Linux 2014.09, set 'Args'
+-- to the following.
+--
+-- ' { \"upgrade_os_to\":[\"Amazon Linux 2014.09\"], \"allow_reboot\":[\"true\"] } '
+dcArgs :: Lens' DeploymentCommand (HashMap Text [Text])
+dcArgs = lens _dcArgs (\ s a -> s{_dcArgs = a}) . _Default . _Map;
+
+-- | Specifies the operation. You can specify only one command.
+--
+-- For stacks, the following commands are available:
+--
+-- -   'execute_recipes': Execute one or more recipes. To specify the
+--     recipes, set an 'Args' parameter named 'recipes' to the list of
+--     recipes to be executed. For example, to execute 'phpapp::appsetup',
+--     set 'Args' to '{\"recipes\":[\"phpapp::appsetup\"]}'.
+-- -   'install_dependencies': Install the stack\'s dependencies.
+-- -   'update_custom_cookbooks': Update the stack\'s custom cookbooks.
+-- -   'update_dependencies': Update the stack\'s dependencies.
+--
+-- The update_dependencies and install_dependencies commands are supported
+-- only for Linux instances. You can run the commands successfully on
+-- Windows instances, but they do nothing.
+--
+-- For apps, the following commands are available:
+--
+-- -   'deploy': Deploy an app. Ruby on Rails apps have an optional 'Args'
+--     parameter named 'migrate'. Set 'Args' to {\"migrate\":[\"true\"]} to
+--     migrate the database. The default setting is
+--     {\"migrate\":[\"false\"]}.
+-- -   'rollback' Roll the app back to the previous version. When you
+--     update an app, AWS OpsWorks stores the previous version, up to a
+--     maximum of five versions. You can use this command to roll an app
+--     back as many as four versions.
+-- -   'start': Start the app\'s web or application server.
+-- -   'stop': Stop the app\'s web or application server.
+-- -   'restart': Restart the app\'s web or application server.
+-- -   'undeploy': Undeploy the app.
+dcName :: Lens' DeploymentCommand DeploymentCommandName
+dcName = lens _dcName (\ s a -> s{_dcName = a});
+
+instance FromJSON DeploymentCommand where
+        parseJSON
+          = withObject "DeploymentCommand"
+              (\ x ->
+                 DeploymentCommand' <$>
+                   (x .:? "Args" .!= mempty) <*> (x .: "Name"))
+
+instance ToJSON DeploymentCommand where
+        toJSON DeploymentCommand'{..}
+          = object ["Args" .= _dcArgs, "Name" .= _dcName]
+
+-- | Describes an Amazon EBS volume. This data type maps directly to the
+-- Amazon EC2
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>
+-- data type.
+--
+-- /See:/ 'ebsBlockDevice' smart constructor.
+data EBSBlockDevice = EBSBlockDevice'
+    { _ebdDeleteOnTermination :: !(Maybe Bool)
+    , _ebdVolumeSize          :: !(Maybe Int)
+    , _ebdIOPS                :: !(Maybe Int)
+    , _ebdVolumeType          :: !(Maybe VolumeType)
+    , _ebdSnapshotId          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EBSBlockDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ebdDeleteOnTermination'
+--
+-- * 'ebdVolumeSize'
+--
+-- * 'ebdIOPS'
+--
+-- * 'ebdVolumeType'
+--
+-- * 'ebdSnapshotId'
+ebsBlockDevice
+    :: EBSBlockDevice
+ebsBlockDevice =
+    EBSBlockDevice'
+    { _ebdDeleteOnTermination = Nothing
+    , _ebdVolumeSize = Nothing
+    , _ebdIOPS = Nothing
+    , _ebdVolumeType = Nothing
+    , _ebdSnapshotId = Nothing
+    }
+
+-- | Whether the volume is deleted on instance termination.
+ebdDeleteOnTermination :: Lens' EBSBlockDevice (Maybe Bool)
+ebdDeleteOnTermination = lens _ebdDeleteOnTermination (\ s a -> s{_ebdDeleteOnTermination = a});
+
+-- | The volume size, in GiB. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
+ebdVolumeSize :: Lens' EBSBlockDevice (Maybe Int)
+ebdVolumeSize = lens _ebdVolumeSize (\ s a -> s{_ebdVolumeSize = a});
+
+-- | The number of I\/O operations per second (IOPS) that the volume
+-- supports. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_EbsBlockDevice.html EbsBlockDevice>.
+ebdIOPS :: Lens' EBSBlockDevice (Maybe Int)
+ebdIOPS = lens _ebdIOPS (\ s a -> s{_ebdIOPS = a});
+
+-- | The volume type. 'gp2' for General Purpose (SSD) volumes, 'io1' for
+-- Provisioned IOPS (SSD) volumes, and 'standard' for Magnetic volumes.
+ebdVolumeType :: Lens' EBSBlockDevice (Maybe VolumeType)
+ebdVolumeType = lens _ebdVolumeType (\ s a -> s{_ebdVolumeType = a});
+
+-- | The snapshot ID.
+ebdSnapshotId :: Lens' EBSBlockDevice (Maybe Text)
+ebdSnapshotId = lens _ebdSnapshotId (\ s a -> s{_ebdSnapshotId = a});
+
+instance FromJSON EBSBlockDevice where
+        parseJSON
+          = withObject "EBSBlockDevice"
+              (\ x ->
+                 EBSBlockDevice' <$>
+                   (x .:? "DeleteOnTermination") <*>
+                     (x .:? "VolumeSize")
+                     <*> (x .:? "Iops")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "SnapshotId"))
+
+instance ToJSON EBSBlockDevice where
+        toJSON EBSBlockDevice'{..}
+          = object
+              ["DeleteOnTermination" .= _ebdDeleteOnTermination,
+               "VolumeSize" .= _ebdVolumeSize, "Iops" .= _ebdIOPS,
+               "VolumeType" .= _ebdVolumeType,
+               "SnapshotId" .= _ebdSnapshotId]
+
+-- | Describes a registered Amazon ECS cluster.
+--
+-- /See:/ 'ecsCluster' smart constructor.
+data EcsCluster = EcsCluster'
+    { _ecEcsClusterARN  :: !(Maybe Text)
+    , _ecEcsClusterName :: !(Maybe Text)
+    , _ecRegisteredAt   :: !(Maybe Text)
+    , _ecStackId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EcsCluster' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ecEcsClusterARN'
+--
+-- * 'ecEcsClusterName'
+--
+-- * 'ecRegisteredAt'
+--
+-- * 'ecStackId'
+ecsCluster
+    :: EcsCluster
+ecsCluster =
+    EcsCluster'
+    { _ecEcsClusterARN = Nothing
+    , _ecEcsClusterName = Nothing
+    , _ecRegisteredAt = Nothing
+    , _ecStackId = Nothing
+    }
+
+-- | The cluster\'s ARN.
+ecEcsClusterARN :: Lens' EcsCluster (Maybe Text)
+ecEcsClusterARN = lens _ecEcsClusterARN (\ s a -> s{_ecEcsClusterARN = a});
+
+-- | The cluster name.
+ecEcsClusterName :: Lens' EcsCluster (Maybe Text)
+ecEcsClusterName = lens _ecEcsClusterName (\ s a -> s{_ecEcsClusterName = a});
+
+-- | The time and date that the cluster was registered with the stack.
+ecRegisteredAt :: Lens' EcsCluster (Maybe Text)
+ecRegisteredAt = lens _ecRegisteredAt (\ s a -> s{_ecRegisteredAt = a});
+
+-- | The stack ID.
+ecStackId :: Lens' EcsCluster (Maybe Text)
+ecStackId = lens _ecStackId (\ s a -> s{_ecStackId = a});
+
+instance FromJSON EcsCluster where
+        parseJSON
+          = withObject "EcsCluster"
+              (\ x ->
+                 EcsCluster' <$>
+                   (x .:? "EcsClusterArn") <*> (x .:? "EcsClusterName")
+                     <*> (x .:? "RegisteredAt")
+                     <*> (x .:? "StackId"))
+
+-- | Describes an Elastic IP address.
+--
+-- /See:/ 'elasticIP' smart constructor.
+data ElasticIP = ElasticIP'
+    { _eiInstanceId :: !(Maybe Text)
+    , _eiDomain     :: !(Maybe Text)
+    , _eiIP         :: !(Maybe Text)
+    , _eiName       :: !(Maybe Text)
+    , _eiRegion     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'eiInstanceId'
+--
+-- * 'eiDomain'
+--
+-- * 'eiIP'
+--
+-- * 'eiName'
+--
+-- * 'eiRegion'
+elasticIP
+    :: ElasticIP
+elasticIP =
+    ElasticIP'
+    { _eiInstanceId = Nothing
+    , _eiDomain = Nothing
+    , _eiIP = Nothing
+    , _eiName = Nothing
+    , _eiRegion = Nothing
+    }
+
+-- | The ID of the instance that the address is attached to.
+eiInstanceId :: Lens' ElasticIP (Maybe Text)
+eiInstanceId = lens _eiInstanceId (\ s a -> s{_eiInstanceId = a});
+
+-- | The domain.
+eiDomain :: Lens' ElasticIP (Maybe Text)
+eiDomain = lens _eiDomain (\ s a -> s{_eiDomain = a});
+
+-- | The IP address.
+eiIP :: Lens' ElasticIP (Maybe Text)
+eiIP = lens _eiIP (\ s a -> s{_eiIP = a});
+
+-- | The name.
+eiName :: Lens' ElasticIP (Maybe Text)
+eiName = lens _eiName (\ s a -> s{_eiName = a});
+
+-- | The AWS region. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+eiRegion :: Lens' ElasticIP (Maybe Text)
+eiRegion = lens _eiRegion (\ s a -> s{_eiRegion = a});
+
+instance FromJSON ElasticIP where
+        parseJSON
+          = withObject "ElasticIP"
+              (\ x ->
+                 ElasticIP' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Domain") <*>
+                     (x .:? "Ip")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Region"))
+
+-- | Describes an Elastic Load Balancing instance.
+--
+-- /See:/ 'elasticLoadBalancer' smart constructor.
+data ElasticLoadBalancer = ElasticLoadBalancer'
+    { _elbSubnetIds               :: !(Maybe [Text])
+    , _elbVPCId                   :: !(Maybe Text)
+    , _elbAvailabilityZones       :: !(Maybe [Text])
+    , _elbRegion                  :: !(Maybe Text)
+    , _elbElasticLoadBalancerName :: !(Maybe Text)
+    , _elbEC2InstanceIds          :: !(Maybe [Text])
+    , _elbStackId                 :: !(Maybe Text)
+    , _elbLayerId                 :: !(Maybe Text)
+    , _elbDNSName                 :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ElasticLoadBalancer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'elbSubnetIds'
+--
+-- * 'elbVPCId'
+--
+-- * 'elbAvailabilityZones'
+--
+-- * 'elbRegion'
+--
+-- * 'elbElasticLoadBalancerName'
+--
+-- * 'elbEC2InstanceIds'
+--
+-- * 'elbStackId'
+--
+-- * 'elbLayerId'
+--
+-- * 'elbDNSName'
+elasticLoadBalancer
+    :: ElasticLoadBalancer
+elasticLoadBalancer =
+    ElasticLoadBalancer'
+    { _elbSubnetIds = Nothing
+    , _elbVPCId = Nothing
+    , _elbAvailabilityZones = Nothing
+    , _elbRegion = Nothing
+    , _elbElasticLoadBalancerName = Nothing
+    , _elbEC2InstanceIds = Nothing
+    , _elbStackId = Nothing
+    , _elbLayerId = Nothing
+    , _elbDNSName = Nothing
+    }
+
+-- | A list of subnet IDs, if the stack is running in a VPC.
+elbSubnetIds :: Lens' ElasticLoadBalancer [Text]
+elbSubnetIds = lens _elbSubnetIds (\ s a -> s{_elbSubnetIds = a}) . _Default . _Coerce;
+
+-- | The VPC ID.
+elbVPCId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbVPCId = lens _elbVPCId (\ s a -> s{_elbVPCId = a});
+
+-- | A list of Availability Zones.
+elbAvailabilityZones :: Lens' ElasticLoadBalancer [Text]
+elbAvailabilityZones = lens _elbAvailabilityZones (\ s a -> s{_elbAvailabilityZones = a}) . _Default . _Coerce;
+
+-- | The instance\'s AWS region.
+elbRegion :: Lens' ElasticLoadBalancer (Maybe Text)
+elbRegion = lens _elbRegion (\ s a -> s{_elbRegion = a});
+
+-- | The Elastic Load Balancing instance\'s name.
+elbElasticLoadBalancerName :: Lens' ElasticLoadBalancer (Maybe Text)
+elbElasticLoadBalancerName = lens _elbElasticLoadBalancerName (\ s a -> s{_elbElasticLoadBalancerName = a});
+
+-- | A list of the EC2 instances that the Elastic Load Balancing instance is
+-- managing traffic for.
+elbEC2InstanceIds :: Lens' ElasticLoadBalancer [Text]
+elbEC2InstanceIds = lens _elbEC2InstanceIds (\ s a -> s{_elbEC2InstanceIds = a}) . _Default . _Coerce;
+
+-- | The ID of the stack that the instance is associated with.
+elbStackId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbStackId = lens _elbStackId (\ s a -> s{_elbStackId = a});
+
+-- | The ID of the layer that the instance is attached to.
+elbLayerId :: Lens' ElasticLoadBalancer (Maybe Text)
+elbLayerId = lens _elbLayerId (\ s a -> s{_elbLayerId = a});
+
+-- | The instance\'s public DNS name.
+elbDNSName :: Lens' ElasticLoadBalancer (Maybe Text)
+elbDNSName = lens _elbDNSName (\ s a -> s{_elbDNSName = a});
+
+instance FromJSON ElasticLoadBalancer where
+        parseJSON
+          = withObject "ElasticLoadBalancer"
+              (\ x ->
+                 ElasticLoadBalancer' <$>
+                   (x .:? "SubnetIds" .!= mempty) <*> (x .:? "VpcId")
+                     <*> (x .:? "AvailabilityZones" .!= mempty)
+                     <*> (x .:? "Region")
+                     <*> (x .:? "ElasticLoadBalancerName")
+                     <*> (x .:? "Ec2InstanceIds" .!= mempty)
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "LayerId")
+                     <*> (x .:? "DnsName"))
+
+-- | Represents an app\'s environment variable.
+--
+-- /See:/ 'environmentVariable' smart constructor.
+data EnvironmentVariable = EnvironmentVariable'
+    { _evSecure :: !(Maybe Bool)
+    , _evKey    :: !Text
+    , _evValue  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'EnvironmentVariable' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'evSecure'
+--
+-- * 'evKey'
+--
+-- * 'evValue'
+environmentVariable
+    :: Text -- ^ 'evKey'
+    -> Text -- ^ 'evValue'
+    -> EnvironmentVariable
+environmentVariable pKey_ pValue_ =
+    EnvironmentVariable'
+    { _evSecure = Nothing
+    , _evKey = pKey_
+    , _evValue = pValue_
+    }
+
+-- | (Optional) Whether the variable\'s value will be returned by the
+-- DescribeApps action. To conceal an environment variable\'s value, set
+-- 'Secure' to 'true'. 'DescribeApps' then returns '*****FILTERED*****'
+-- instead of the actual value. The default value for 'Secure' is 'false'.
+evSecure :: Lens' EnvironmentVariable (Maybe Bool)
+evSecure = lens _evSecure (\ s a -> s{_evSecure = a});
+
+-- | (Required) The environment variable\'s name, which can consist of up to
+-- 64 characters and must be specified. The name can contain upper- and
+-- lowercase letters, numbers, and underscores (_), but it must start with
+-- a letter or underscore.
+evKey :: Lens' EnvironmentVariable Text
+evKey = lens _evKey (\ s a -> s{_evKey = a});
+
+-- | (Optional) The environment variable\'s value, which can be left empty.
+-- If you specify a value, it can contain up to 256 characters, which must
+-- all be printable.
+evValue :: Lens' EnvironmentVariable Text
+evValue = lens _evValue (\ s a -> s{_evValue = a});
+
+instance FromJSON EnvironmentVariable where
+        parseJSON
+          = withObject "EnvironmentVariable"
+              (\ x ->
+                 EnvironmentVariable' <$>
+                   (x .:? "Secure") <*> (x .: "Key") <*> (x .: "Value"))
+
+instance ToJSON EnvironmentVariable where
+        toJSON EnvironmentVariable'{..}
+          = object
+              ["Secure" .= _evSecure, "Key" .= _evKey,
+               "Value" .= _evValue]
+
+-- | Describes an instance.
+--
+-- /See:/ 'instance'' smart constructor.
+data Instance = Instance'
+    { _iInstanceId               :: !(Maybe Text)
+    , _iPrivateIP                :: !(Maybe Text)
+    , _iInstallUpdatesOnBoot     :: !(Maybe Bool)
+    , _iReportedAgentVersion     :: !(Maybe Text)
+    , _iStatus                   :: !(Maybe Text)
+    , _iPrivateDNS               :: !(Maybe Text)
+    , _iVirtualizationType       :: !(Maybe VirtualizationType)
+    , _iSecurityGroupIds         :: !(Maybe [Text])
+    , _iSSHHostRsaKeyFingerprint :: !(Maybe Text)
+    , _iInstanceProfileARN       :: !(Maybe Text)
+    , _iPlatform                 :: !(Maybe Text)
+    , _iHostname                 :: !(Maybe Text)
+    , _iEcsClusterARN            :: !(Maybe Text)
+    , _iCreatedAt                :: !(Maybe Text)
+    , _iSSHKeyName               :: !(Maybe Text)
+    , _iEC2InstanceId            :: !(Maybe Text)
+    , _iAgentVersion             :: !(Maybe Text)
+    , _iRootDeviceVolumeId       :: !(Maybe Text)
+    , _iSubnetId                 :: !(Maybe Text)
+    , _iInstanceType             :: !(Maybe Text)
+    , _iInfrastructureClass      :: !(Maybe Text)
+    , _iEBSOptimized             :: !(Maybe Bool)
+    , _iSSHHostDsaKeyFingerprint :: !(Maybe Text)
+    , _iElasticIP                :: !(Maybe Text)
+    , _iOS                       :: !(Maybe Text)
+    , _iAvailabilityZone         :: !(Maybe Text)
+    , _iLastServiceErrorId       :: !(Maybe Text)
+    , _iAutoScalingType          :: !(Maybe AutoScalingType)
+    , _iLayerIds                 :: !(Maybe [Text])
+    , _iArchitecture             :: !(Maybe Architecture)
+    , _iPublicDNS                :: !(Maybe Text)
+    , _iPublicIP                 :: !(Maybe Text)
+    , _iAMIId                    :: !(Maybe Text)
+    , _iReportedOS               :: !(Maybe ReportedOS)
+    , _iStackId                  :: !(Maybe Text)
+    , _iRegisteredBy             :: !(Maybe Text)
+    , _iBlockDeviceMappings      :: !(Maybe [BlockDeviceMapping])
+    , _iEcsContainerInstanceARN  :: !(Maybe Text)
+    , _iRootDeviceType           :: !(Maybe RootDeviceType)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Instance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iInstanceId'
+--
+-- * 'iPrivateIP'
+--
+-- * 'iInstallUpdatesOnBoot'
+--
+-- * 'iReportedAgentVersion'
+--
+-- * 'iStatus'
+--
+-- * 'iPrivateDNS'
+--
+-- * 'iVirtualizationType'
+--
+-- * 'iSecurityGroupIds'
+--
+-- * 'iSSHHostRsaKeyFingerprint'
+--
+-- * 'iInstanceProfileARN'
+--
+-- * 'iPlatform'
+--
+-- * 'iHostname'
+--
+-- * 'iEcsClusterARN'
+--
+-- * 'iCreatedAt'
+--
+-- * 'iSSHKeyName'
+--
+-- * 'iEC2InstanceId'
+--
+-- * 'iAgentVersion'
+--
+-- * 'iRootDeviceVolumeId'
+--
+-- * 'iSubnetId'
+--
+-- * 'iInstanceType'
+--
+-- * 'iInfrastructureClass'
+--
+-- * 'iEBSOptimized'
+--
+-- * 'iSSHHostDsaKeyFingerprint'
+--
+-- * 'iElasticIP'
+--
+-- * 'iOS'
+--
+-- * 'iAvailabilityZone'
+--
+-- * 'iLastServiceErrorId'
+--
+-- * 'iAutoScalingType'
+--
+-- * 'iLayerIds'
+--
+-- * 'iArchitecture'
+--
+-- * 'iPublicDNS'
+--
+-- * 'iPublicIP'
+--
+-- * 'iAMIId'
+--
+-- * 'iReportedOS'
+--
+-- * 'iStackId'
+--
+-- * 'iRegisteredBy'
+--
+-- * 'iBlockDeviceMappings'
+--
+-- * 'iEcsContainerInstanceARN'
+--
+-- * 'iRootDeviceType'
+instance'
+    :: Instance
+instance' =
+    Instance'
+    { _iInstanceId = Nothing
+    , _iPrivateIP = Nothing
+    , _iInstallUpdatesOnBoot = Nothing
+    , _iReportedAgentVersion = Nothing
+    , _iStatus = Nothing
+    , _iPrivateDNS = Nothing
+    , _iVirtualizationType = Nothing
+    , _iSecurityGroupIds = Nothing
+    , _iSSHHostRsaKeyFingerprint = Nothing
+    , _iInstanceProfileARN = Nothing
+    , _iPlatform = Nothing
+    , _iHostname = Nothing
+    , _iEcsClusterARN = Nothing
+    , _iCreatedAt = Nothing
+    , _iSSHKeyName = Nothing
+    , _iEC2InstanceId = Nothing
+    , _iAgentVersion = Nothing
+    , _iRootDeviceVolumeId = Nothing
+    , _iSubnetId = Nothing
+    , _iInstanceType = Nothing
+    , _iInfrastructureClass = Nothing
+    , _iEBSOptimized = Nothing
+    , _iSSHHostDsaKeyFingerprint = Nothing
+    , _iElasticIP = Nothing
+    , _iOS = Nothing
+    , _iAvailabilityZone = Nothing
+    , _iLastServiceErrorId = Nothing
+    , _iAutoScalingType = Nothing
+    , _iLayerIds = Nothing
+    , _iArchitecture = Nothing
+    , _iPublicDNS = Nothing
+    , _iPublicIP = Nothing
+    , _iAMIId = Nothing
+    , _iReportedOS = Nothing
+    , _iStackId = Nothing
+    , _iRegisteredBy = Nothing
+    , _iBlockDeviceMappings = Nothing
+    , _iEcsContainerInstanceARN = Nothing
+    , _iRootDeviceType = Nothing
+    }
+
+-- | The instance ID.
+iInstanceId :: Lens' Instance (Maybe Text)
+iInstanceId = lens _iInstanceId (\ s a -> s{_iInstanceId = a});
+
+-- | The instance\'s private IP address.
+iPrivateIP :: Lens' Instance (Maybe Text)
+iPrivateIP = lens _iPrivateIP (\ s a -> s{_iPrivateIP = a});
+
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. If this value is set to
+-- 'false', you must then update your instances manually by using
+-- CreateDeployment to run the 'update_dependencies' stack command or by
+-- manually running 'yum' (Amazon Linux) or 'apt-get' (Ubuntu) on the
+-- instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that
+-- your instances have the latest security updates.
+iInstallUpdatesOnBoot :: Lens' Instance (Maybe Bool)
+iInstallUpdatesOnBoot = lens _iInstallUpdatesOnBoot (\ s a -> s{_iInstallUpdatesOnBoot = a});
+
+-- | The instance\'s reported AWS OpsWorks agent version.
+iReportedAgentVersion :: Lens' Instance (Maybe Text)
+iReportedAgentVersion = lens _iReportedAgentVersion (\ s a -> s{_iReportedAgentVersion = a});
+
+-- | The instance status:
+--
+-- -   'booting'
+-- -   'connection_lost'
+-- -   'online'
+-- -   'pending'
+-- -   'rebooting'
+-- -   'requested'
+-- -   'running_setup'
+-- -   'setup_failed'
+-- -   'shutting_down'
+-- -   'start_failed'
+-- -   'stopped'
+-- -   'stopping'
+-- -   'terminated'
+-- -   'terminating'
+iStatus :: Lens' Instance (Maybe Text)
+iStatus = lens _iStatus (\ s a -> s{_iStatus = a});
+
+-- | The The instance\'s private DNS name.
+iPrivateDNS :: Lens' Instance (Maybe Text)
+iPrivateDNS = lens _iPrivateDNS (\ s a -> s{_iPrivateDNS = a});
+
+-- | The instance\'s virtualization type: 'paravirtual' or 'hvm'.
+iVirtualizationType :: Lens' Instance (Maybe VirtualizationType)
+iVirtualizationType = lens _iVirtualizationType (\ s a -> s{_iVirtualizationType = a});
+
+-- | An array containing the instance security group IDs.
+iSecurityGroupIds :: Lens' Instance [Text]
+iSecurityGroupIds = lens _iSecurityGroupIds (\ s a -> s{_iSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | The SSH key\'s RSA fingerprint.
+iSSHHostRsaKeyFingerprint :: Lens' Instance (Maybe Text)
+iSSHHostRsaKeyFingerprint = lens _iSSHHostRsaKeyFingerprint (\ s a -> s{_iSSHHostRsaKeyFingerprint = a});
+
+-- | The ARN of the instance\'s IAM profile. For more information about IAM
+-- ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+iInstanceProfileARN :: Lens' Instance (Maybe Text)
+iInstanceProfileARN = lens _iInstanceProfileARN (\ s a -> s{_iInstanceProfileARN = a});
+
+-- | The instance\'s platform.
+iPlatform :: Lens' Instance (Maybe Text)
+iPlatform = lens _iPlatform (\ s a -> s{_iPlatform = a});
+
+-- | The instance host name.
+iHostname :: Lens' Instance (Maybe Text)
+iHostname = lens _iHostname (\ s a -> s{_iHostname = a});
+
+-- | For container instances, the Amazon ECS cluster\'s ARN.
+iEcsClusterARN :: Lens' Instance (Maybe Text)
+iEcsClusterARN = lens _iEcsClusterARN (\ s a -> s{_iEcsClusterARN = a});
+
+-- | The time that the instance was created.
+iCreatedAt :: Lens' Instance (Maybe Text)
+iCreatedAt = lens _iCreatedAt (\ s a -> s{_iCreatedAt = a});
+
+-- | The instance\'s Amazon EC2 key-pair name.
+iSSHKeyName :: Lens' Instance (Maybe Text)
+iSSHKeyName = lens _iSSHKeyName (\ s a -> s{_iSSHKeyName = a});
+
+-- | The ID of the associated Amazon EC2 instance.
+iEC2InstanceId :: Lens' Instance (Maybe Text)
+iEC2InstanceId = lens _iEC2InstanceId (\ s a -> s{_iEC2InstanceId = a});
+
+-- | The agent version. This parameter is set to 'INHERIT' if the instance
+-- inherits the default stack setting or to a a version number for a fixed
+-- agent version.
+iAgentVersion :: Lens' Instance (Maybe Text)
+iAgentVersion = lens _iAgentVersion (\ s a -> s{_iAgentVersion = a});
+
+-- | The root device volume ID.
+iRootDeviceVolumeId :: Lens' Instance (Maybe Text)
+iRootDeviceVolumeId = lens _iRootDeviceVolumeId (\ s a -> s{_iRootDeviceVolumeId = a});
+
+-- | The instance\'s subnet ID; applicable only if the stack is running in a
+-- VPC.
+iSubnetId :: Lens' Instance (Maybe Text)
+iSubnetId = lens _iSubnetId (\ s a -> s{_iSubnetId = a});
+
+-- | The instance type, such as 't2.micro'.
+iInstanceType :: Lens' Instance (Maybe Text)
+iInstanceType = lens _iInstanceType (\ s a -> s{_iInstanceType = a});
+
+-- | For registered instances, the infrastructure class: 'ec2' or
+-- 'on-premises'.
+iInfrastructureClass :: Lens' Instance (Maybe Text)
+iInfrastructureClass = lens _iInfrastructureClass (\ s a -> s{_iInfrastructureClass = a});
+
+-- | Whether this is an Amazon EBS-optimized instance.
+iEBSOptimized :: Lens' Instance (Maybe Bool)
+iEBSOptimized = lens _iEBSOptimized (\ s a -> s{_iEBSOptimized = a});
+
+-- | The SSH key\'s Deep Security Agent (DSA) fingerprint.
+iSSHHostDsaKeyFingerprint :: Lens' Instance (Maybe Text)
+iSSHHostDsaKeyFingerprint = lens _iSSHHostDsaKeyFingerprint (\ s a -> s{_iSSHHostDsaKeyFingerprint = a});
+
+-- | The instance
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>.
+iElasticIP :: Lens' Instance (Maybe Text)
+iElasticIP = lens _iElasticIP (\ s a -> s{_iElasticIP = a});
+
+-- | The instance\'s operating system.
+iOS :: Lens' Instance (Maybe Text)
+iOS = lens _iOS (\ s a -> s{_iOS = a});
+
+-- | The instance Availability Zone. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+iAvailabilityZone :: Lens' Instance (Maybe Text)
+iAvailabilityZone = lens _iAvailabilityZone (\ s a -> s{_iAvailabilityZone = a});
+
+-- | The ID of the last service error. For more information, call
+-- DescribeServiceErrors.
+iLastServiceErrorId :: Lens' Instance (Maybe Text)
+iLastServiceErrorId = lens _iLastServiceErrorId (\ s a -> s{_iLastServiceErrorId = a});
+
+-- | For load-based or time-based instances, the type.
+iAutoScalingType :: Lens' Instance (Maybe AutoScalingType)
+iAutoScalingType = lens _iAutoScalingType (\ s a -> s{_iAutoScalingType = a});
+
+-- | An array containing the instance layer IDs.
+iLayerIds :: Lens' Instance [Text]
+iLayerIds = lens _iLayerIds (\ s a -> s{_iLayerIds = a}) . _Default . _Coerce;
+
+-- | The instance architecture: \"i386\" or \"x86_64\".
+iArchitecture :: Lens' Instance (Maybe Architecture)
+iArchitecture = lens _iArchitecture (\ s a -> s{_iArchitecture = a});
+
+-- | The instance public DNS name.
+iPublicDNS :: Lens' Instance (Maybe Text)
+iPublicDNS = lens _iPublicDNS (\ s a -> s{_iPublicDNS = a});
+
+-- | The instance public IP address.
+iPublicIP :: Lens' Instance (Maybe Text)
+iPublicIP = lens _iPublicIP (\ s a -> s{_iPublicIP = a});
+
+-- | A custom AMI ID to be used to create the instance. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
+iAMIId :: Lens' Instance (Maybe Text)
+iAMIId = lens _iAMIId (\ s a -> s{_iAMIId = a});
+
+-- | For registered instances, the reported operating system.
+iReportedOS :: Lens' Instance (Maybe ReportedOS)
+iReportedOS = lens _iReportedOS (\ s a -> s{_iReportedOS = a});
+
+-- | The stack ID.
+iStackId :: Lens' Instance (Maybe Text)
+iStackId = lens _iStackId (\ s a -> s{_iStackId = a});
+
+-- | For registered instances, who performed the registration.
+iRegisteredBy :: Lens' Instance (Maybe Text)
+iRegisteredBy = lens _iRegisteredBy (\ s a -> s{_iRegisteredBy = a});
+
+-- | An array of 'BlockDeviceMapping' objects that specify the instance\'s
+-- block device mappings.
+iBlockDeviceMappings :: Lens' Instance [BlockDeviceMapping]
+iBlockDeviceMappings = lens _iBlockDeviceMappings (\ s a -> s{_iBlockDeviceMappings = a}) . _Default . _Coerce;
+
+-- | For container instances, the instance\'s ARN.
+iEcsContainerInstanceARN :: Lens' Instance (Maybe Text)
+iEcsContainerInstanceARN = lens _iEcsContainerInstanceARN (\ s a -> s{_iEcsContainerInstanceARN = a});
+
+-- | The instance\'s root device type. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+iRootDeviceType :: Lens' Instance (Maybe RootDeviceType)
+iRootDeviceType = lens _iRootDeviceType (\ s a -> s{_iRootDeviceType = a});
+
+instance FromJSON Instance where
+        parseJSON
+          = withObject "Instance"
+              (\ x ->
+                 Instance' <$>
+                   (x .:? "InstanceId") <*> (x .:? "PrivateIp") <*>
+                     (x .:? "InstallUpdatesOnBoot")
+                     <*> (x .:? "ReportedAgentVersion")
+                     <*> (x .:? "Status")
+                     <*> (x .:? "PrivateDns")
+                     <*> (x .:? "VirtualizationType")
+                     <*> (x .:? "SecurityGroupIds" .!= mempty)
+                     <*> (x .:? "SshHostRsaKeyFingerprint")
+                     <*> (x .:? "InstanceProfileArn")
+                     <*> (x .:? "Platform")
+                     <*> (x .:? "Hostname")
+                     <*> (x .:? "EcsClusterArn")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "SshKeyName")
+                     <*> (x .:? "Ec2InstanceId")
+                     <*> (x .:? "AgentVersion")
+                     <*> (x .:? "RootDeviceVolumeId")
+                     <*> (x .:? "SubnetId")
+                     <*> (x .:? "InstanceType")
+                     <*> (x .:? "InfrastructureClass")
+                     <*> (x .:? "EbsOptimized")
+                     <*> (x .:? "SshHostDsaKeyFingerprint")
+                     <*> (x .:? "ElasticIp")
+                     <*> (x .:? "Os")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "LastServiceErrorId")
+                     <*> (x .:? "AutoScalingType")
+                     <*> (x .:? "LayerIds" .!= mempty)
+                     <*> (x .:? "Architecture")
+                     <*> (x .:? "PublicDns")
+                     <*> (x .:? "PublicIp")
+                     <*> (x .:? "AmiId")
+                     <*> (x .:? "ReportedOs")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "RegisteredBy")
+                     <*> (x .:? "BlockDeviceMappings" .!= mempty)
+                     <*> (x .:? "EcsContainerInstanceArn")
+                     <*> (x .:? "RootDeviceType"))
+
+-- | Contains a description of an Amazon EC2 instance from the Amazon EC2
+-- metadata service. For more information, see
+-- <http://docs.aws.amazon.com/sdkfornet/latest/apidocs/Index.html Instance Metadata and User Data>.
+--
+-- /See:/ 'instanceIdentity' smart constructor.
+data InstanceIdentity = InstanceIdentity'
+    { _iiSignature :: !(Maybe Text)
+    , _iiDocument  :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstanceIdentity' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'iiSignature'
+--
+-- * 'iiDocument'
+instanceIdentity
+    :: InstanceIdentity
+instanceIdentity =
+    InstanceIdentity'
+    { _iiSignature = Nothing
+    , _iiDocument = Nothing
+    }
+
+-- | A signature that can be used to verify the document\'s accuracy and
+-- authenticity.
+iiSignature :: Lens' InstanceIdentity (Maybe Text)
+iiSignature = lens _iiSignature (\ s a -> s{_iiSignature = a});
+
+-- | A JSON document that contains the metadata.
+iiDocument :: Lens' InstanceIdentity (Maybe Text)
+iiDocument = lens _iiDocument (\ s a -> s{_iiDocument = a});
+
+instance ToJSON InstanceIdentity where
+        toJSON InstanceIdentity'{..}
+          = object
+              ["Signature" .= _iiSignature,
+               "Document" .= _iiDocument]
+
+-- | Describes how many instances a stack has for each status.
+--
+-- /See:/ 'instancesCount' smart constructor.
+data InstancesCount = InstancesCount'
+    { _icTerminating    :: !(Maybe Int)
+    , _icPending        :: !(Maybe Int)
+    , _icOnline         :: !(Maybe Int)
+    , _icUnassigning    :: !(Maybe Int)
+    , _icRequested      :: !(Maybe Int)
+    , _icRunningSetup   :: !(Maybe Int)
+    , _icDeregistering  :: !(Maybe Int)
+    , _icBooting        :: !(Maybe Int)
+    , _icStopped        :: !(Maybe Int)
+    , _icRebooting      :: !(Maybe Int)
+    , _icAssigning      :: !(Maybe Int)
+    , _icShuttingDown   :: !(Maybe Int)
+    , _icSetupFailed    :: !(Maybe Int)
+    , _icConnectionLost :: !(Maybe Int)
+    , _icTerminated     :: !(Maybe Int)
+    , _icStopping       :: !(Maybe Int)
+    , _icRegistered     :: !(Maybe Int)
+    , _icStartFailed    :: !(Maybe Int)
+    , _icRegistering    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'InstancesCount' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'icTerminating'
+--
+-- * 'icPending'
+--
+-- * 'icOnline'
+--
+-- * 'icUnassigning'
+--
+-- * 'icRequested'
+--
+-- * 'icRunningSetup'
+--
+-- * 'icDeregistering'
+--
+-- * 'icBooting'
+--
+-- * 'icStopped'
+--
+-- * 'icRebooting'
+--
+-- * 'icAssigning'
+--
+-- * 'icShuttingDown'
+--
+-- * 'icSetupFailed'
+--
+-- * 'icConnectionLost'
+--
+-- * 'icTerminated'
+--
+-- * 'icStopping'
+--
+-- * 'icRegistered'
+--
+-- * 'icStartFailed'
+--
+-- * 'icRegistering'
+instancesCount
+    :: InstancesCount
+instancesCount =
+    InstancesCount'
+    { _icTerminating = Nothing
+    , _icPending = Nothing
+    , _icOnline = Nothing
+    , _icUnassigning = Nothing
+    , _icRequested = Nothing
+    , _icRunningSetup = Nothing
+    , _icDeregistering = Nothing
+    , _icBooting = Nothing
+    , _icStopped = Nothing
+    , _icRebooting = Nothing
+    , _icAssigning = Nothing
+    , _icShuttingDown = Nothing
+    , _icSetupFailed = Nothing
+    , _icConnectionLost = Nothing
+    , _icTerminated = Nothing
+    , _icStopping = Nothing
+    , _icRegistered = Nothing
+    , _icStartFailed = Nothing
+    , _icRegistering = Nothing
+    }
+
+-- | The number of instances with 'terminating' status.
+icTerminating :: Lens' InstancesCount (Maybe Int)
+icTerminating = lens _icTerminating (\ s a -> s{_icTerminating = a});
+
+-- | The number of instances with 'pending' status.
+icPending :: Lens' InstancesCount (Maybe Int)
+icPending = lens _icPending (\ s a -> s{_icPending = a});
+
+-- | The number of instances with 'online' status.
+icOnline :: Lens' InstancesCount (Maybe Int)
+icOnline = lens _icOnline (\ s a -> s{_icOnline = a});
+
+-- | The number of instances in the Unassigning state.
+icUnassigning :: Lens' InstancesCount (Maybe Int)
+icUnassigning = lens _icUnassigning (\ s a -> s{_icUnassigning = a});
+
+-- | The number of instances with 'requested' status.
+icRequested :: Lens' InstancesCount (Maybe Int)
+icRequested = lens _icRequested (\ s a -> s{_icRequested = a});
+
+-- | The number of instances with 'running_setup' status.
+icRunningSetup :: Lens' InstancesCount (Maybe Int)
+icRunningSetup = lens _icRunningSetup (\ s a -> s{_icRunningSetup = a});
+
+-- | The number of instances in the Deregistering state.
+icDeregistering :: Lens' InstancesCount (Maybe Int)
+icDeregistering = lens _icDeregistering (\ s a -> s{_icDeregistering = a});
+
+-- | The number of instances with 'booting' status.
+icBooting :: Lens' InstancesCount (Maybe Int)
+icBooting = lens _icBooting (\ s a -> s{_icBooting = a});
+
+-- | The number of instances with 'stopped' status.
+icStopped :: Lens' InstancesCount (Maybe Int)
+icStopped = lens _icStopped (\ s a -> s{_icStopped = a});
+
+-- | The number of instances with 'rebooting' status.
+icRebooting :: Lens' InstancesCount (Maybe Int)
+icRebooting = lens _icRebooting (\ s a -> s{_icRebooting = a});
+
+-- | The number of instances in the Assigning state.
+icAssigning :: Lens' InstancesCount (Maybe Int)
+icAssigning = lens _icAssigning (\ s a -> s{_icAssigning = a});
+
+-- | The number of instances with 'shutting_down' status.
+icShuttingDown :: Lens' InstancesCount (Maybe Int)
+icShuttingDown = lens _icShuttingDown (\ s a -> s{_icShuttingDown = a});
+
+-- | The number of instances with 'setup_failed' status.
+icSetupFailed :: Lens' InstancesCount (Maybe Int)
+icSetupFailed = lens _icSetupFailed (\ s a -> s{_icSetupFailed = a});
+
+-- | The number of instances with 'connection_lost' status.
+icConnectionLost :: Lens' InstancesCount (Maybe Int)
+icConnectionLost = lens _icConnectionLost (\ s a -> s{_icConnectionLost = a});
+
+-- | The number of instances with 'terminated' status.
+icTerminated :: Lens' InstancesCount (Maybe Int)
+icTerminated = lens _icTerminated (\ s a -> s{_icTerminated = a});
+
+-- | The number of instances with 'stopping' status.
+icStopping :: Lens' InstancesCount (Maybe Int)
+icStopping = lens _icStopping (\ s a -> s{_icStopping = a});
+
+-- | The number of instances in the Registered state.
+icRegistered :: Lens' InstancesCount (Maybe Int)
+icRegistered = lens _icRegistered (\ s a -> s{_icRegistered = a});
+
+-- | The number of instances with 'start_failed' status.
+icStartFailed :: Lens' InstancesCount (Maybe Int)
+icStartFailed = lens _icStartFailed (\ s a -> s{_icStartFailed = a});
+
+-- | The number of instances in the Registering state.
+icRegistering :: Lens' InstancesCount (Maybe Int)
+icRegistering = lens _icRegistering (\ s a -> s{_icRegistering = a});
+
+instance FromJSON InstancesCount where
+        parseJSON
+          = withObject "InstancesCount"
+              (\ x ->
+                 InstancesCount' <$>
+                   (x .:? "Terminating") <*> (x .:? "Pending") <*>
+                     (x .:? "Online")
+                     <*> (x .:? "Unassigning")
+                     <*> (x .:? "Requested")
+                     <*> (x .:? "RunningSetup")
+                     <*> (x .:? "Deregistering")
+                     <*> (x .:? "Booting")
+                     <*> (x .:? "Stopped")
+                     <*> (x .:? "Rebooting")
+                     <*> (x .:? "Assigning")
+                     <*> (x .:? "ShuttingDown")
+                     <*> (x .:? "SetupFailed")
+                     <*> (x .:? "ConnectionLost")
+                     <*> (x .:? "Terminated")
+                     <*> (x .:? "Stopping")
+                     <*> (x .:? "Registered")
+                     <*> (x .:? "StartFailed")
+                     <*> (x .:? "Registering"))
+
+-- | Describes a layer.
+--
+-- /See:/ 'layer' smart constructor.
+data Layer = Layer'
+    { _lCustomInstanceProfileARN    :: !(Maybe Text)
+    , _lInstallUpdatesOnBoot        :: !(Maybe Bool)
+    , _lCustomSecurityGroupIds      :: !(Maybe [Text])
+    , _lLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+    , _lShortname                   :: !(Maybe Text)
+    , _lCreatedAt                   :: !(Maybe Text)
+    , _lDefaultRecipes              :: !(Maybe Recipes)
+    , _lCustomRecipes               :: !(Maybe Recipes)
+    , _lVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
+    , _lCustomJSON                  :: !(Maybe Text)
+    , _lEnableAutoHealing           :: !(Maybe Bool)
+    , _lPackages                    :: !(Maybe [Text])
+    , _lName                        :: !(Maybe Text)
+    , _lAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
+    , _lAutoAssignPublicIPs         :: !(Maybe Bool)
+    , _lUseEBSOptimizedInstances    :: !(Maybe Bool)
+    , _lType                        :: !(Maybe LayerType)
+    , _lStackId                     :: !(Maybe Text)
+    , _lLayerId                     :: !(Maybe Text)
+    , _lDefaultSecurityGroupNames   :: !(Maybe [Text])
+    , _lAutoAssignElasticIPs        :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Layer' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lCustomInstanceProfileARN'
+--
+-- * 'lInstallUpdatesOnBoot'
+--
+-- * 'lCustomSecurityGroupIds'
+--
+-- * 'lLifecycleEventConfiguration'
+--
+-- * 'lShortname'
+--
+-- * 'lCreatedAt'
+--
+-- * 'lDefaultRecipes'
+--
+-- * 'lCustomRecipes'
+--
+-- * 'lVolumeConfigurations'
+--
+-- * 'lCustomJSON'
+--
+-- * 'lEnableAutoHealing'
+--
+-- * 'lPackages'
+--
+-- * 'lName'
+--
+-- * 'lAttributes'
+--
+-- * 'lAutoAssignPublicIPs'
+--
+-- * 'lUseEBSOptimizedInstances'
+--
+-- * 'lType'
+--
+-- * 'lStackId'
+--
+-- * 'lLayerId'
+--
+-- * 'lDefaultSecurityGroupNames'
+--
+-- * 'lAutoAssignElasticIPs'
+layer
+    :: Layer
+layer =
+    Layer'
+    { _lCustomInstanceProfileARN = Nothing
+    , _lInstallUpdatesOnBoot = Nothing
+    , _lCustomSecurityGroupIds = Nothing
+    , _lLifecycleEventConfiguration = Nothing
+    , _lShortname = Nothing
+    , _lCreatedAt = Nothing
+    , _lDefaultRecipes = Nothing
+    , _lCustomRecipes = Nothing
+    , _lVolumeConfigurations = Nothing
+    , _lCustomJSON = Nothing
+    , _lEnableAutoHealing = Nothing
+    , _lPackages = Nothing
+    , _lName = Nothing
+    , _lAttributes = Nothing
+    , _lAutoAssignPublicIPs = Nothing
+    , _lUseEBSOptimizedInstances = Nothing
+    , _lType = Nothing
+    , _lStackId = Nothing
+    , _lLayerId = Nothing
+    , _lDefaultSecurityGroupNames = Nothing
+    , _lAutoAssignElasticIPs = Nothing
+    }
+
+-- | The ARN of the default IAM profile to be used for the layer\'s EC2
+-- instances. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+lCustomInstanceProfileARN :: Lens' Layer (Maybe Text)
+lCustomInstanceProfileARN = lens _lCustomInstanceProfileARN (\ s a -> s{_lCustomInstanceProfileARN = a});
+
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. If this value is set to
+-- 'false', you must then update your instances manually by using
+-- CreateDeployment to run the 'update_dependencies' stack command or
+-- manually running 'yum' (Amazon Linux) or 'apt-get' (Ubuntu) on the
+-- instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that
+-- your instances have the latest security updates.
+lInstallUpdatesOnBoot :: Lens' Layer (Maybe Bool)
+lInstallUpdatesOnBoot = lens _lInstallUpdatesOnBoot (\ s a -> s{_lInstallUpdatesOnBoot = a});
+
+-- | An array containing the layer\'s custom security group IDs.
+lCustomSecurityGroupIds :: Lens' Layer [Text]
+lCustomSecurityGroupIds = lens _lCustomSecurityGroupIds (\ s a -> s{_lCustomSecurityGroupIds = a}) . _Default . _Coerce;
+
+-- | A 'LifeCycleEventConfiguration' object that specifies the Shutdown event
+-- configuration.
+lLifecycleEventConfiguration :: Lens' Layer (Maybe LifecycleEventConfiguration)
+lLifecycleEventConfiguration = lens _lLifecycleEventConfiguration (\ s a -> s{_lLifecycleEventConfiguration = a});
+
+-- | The layer short name.
+lShortname :: Lens' Layer (Maybe Text)
+lShortname = lens _lShortname (\ s a -> s{_lShortname = a});
+
+-- | Date when the layer was created.
+lCreatedAt :: Lens' Layer (Maybe Text)
+lCreatedAt = lens _lCreatedAt (\ s a -> s{_lCreatedAt = a});
+
+-- | Undocumented member.
+lDefaultRecipes :: Lens' Layer (Maybe Recipes)
+lDefaultRecipes = lens _lDefaultRecipes (\ s a -> s{_lDefaultRecipes = a});
+
+-- | A 'LayerCustomRecipes' object that specifies the layer\'s custom
+-- recipes.
+lCustomRecipes :: Lens' Layer (Maybe Recipes)
+lCustomRecipes = lens _lCustomRecipes (\ s a -> s{_lCustomRecipes = a});
+
+-- | A 'VolumeConfigurations' object that describes the layer\'s Amazon EBS
+-- volumes.
+lVolumeConfigurations :: Lens' Layer [VolumeConfiguration]
+lVolumeConfigurations = lens _lVolumeConfigurations (\ s a -> s{_lVolumeConfigurations = a}) . _Default . _Coerce;
+
+-- | A JSON formatted string containing the layer\'s custom stack
+-- configuration and deployment attributes.
+lCustomJSON :: Lens' Layer (Maybe Text)
+lCustomJSON = lens _lCustomJSON (\ s a -> s{_lCustomJSON = a});
+
+-- | Whether auto healing is disabled for the layer.
+lEnableAutoHealing :: Lens' Layer (Maybe Bool)
+lEnableAutoHealing = lens _lEnableAutoHealing (\ s a -> s{_lEnableAutoHealing = a});
+
+-- | An array of 'Package' objects that describe the layer\'s packages.
+lPackages :: Lens' Layer [Text]
+lPackages = lens _lPackages (\ s a -> s{_lPackages = a}) . _Default . _Coerce;
+
+-- | The layer name.
+lName :: Lens' Layer (Maybe Text)
+lName = lens _lName (\ s a -> s{_lName = a});
+
+-- | The layer attributes.
+--
+-- For the 'HaproxyStatsPassword', 'MysqlRootPassword', and
+-- 'GangliaPassword' attributes, AWS OpsWorks returns '*****FILTERED*****'
+-- instead of the actual value
+--
+-- For an ECS Cluster layer, AWS OpsWorks the 'EcsClusterArn' attribute is
+-- set to the cluster\'s ARN.
+lAttributes :: Lens' Layer (HashMap LayerAttributesKeys Text)
+lAttributes = lens _lAttributes (\ s a -> s{_lAttributes = a}) . _Default . _Map;
+
+-- | For stacks that are running in a VPC, whether to automatically assign a
+-- public IP address to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+lAutoAssignPublicIPs :: Lens' Layer (Maybe Bool)
+lAutoAssignPublicIPs = lens _lAutoAssignPublicIPs (\ s a -> s{_lAutoAssignPublicIPs = a});
+
+-- | Whether the layer uses Amazon EBS-optimized instances.
+lUseEBSOptimizedInstances :: Lens' Layer (Maybe Bool)
+lUseEBSOptimizedInstances = lens _lUseEBSOptimizedInstances (\ s a -> s{_lUseEBSOptimizedInstances = a});
+
+-- | The layer type.
+lType :: Lens' Layer (Maybe LayerType)
+lType = lens _lType (\ s a -> s{_lType = a});
+
+-- | The layer stack ID.
+lStackId :: Lens' Layer (Maybe Text)
+lStackId = lens _lStackId (\ s a -> s{_lStackId = a});
+
+-- | The layer ID.
+lLayerId :: Lens' Layer (Maybe Text)
+lLayerId = lens _lLayerId (\ s a -> s{_lLayerId = a});
+
+-- | An array containing the layer\'s security group names.
+lDefaultSecurityGroupNames :: Lens' Layer [Text]
+lDefaultSecurityGroupNames = lens _lDefaultSecurityGroupNames (\ s a -> s{_lDefaultSecurityGroupNames = a}) . _Default . _Coerce;
+
+-- | Whether to automatically assign an
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
+-- to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+lAutoAssignElasticIPs :: Lens' Layer (Maybe Bool)
+lAutoAssignElasticIPs = lens _lAutoAssignElasticIPs (\ s a -> s{_lAutoAssignElasticIPs = a});
+
+instance FromJSON Layer where
+        parseJSON
+          = withObject "Layer"
+              (\ x ->
+                 Layer' <$>
+                   (x .:? "CustomInstanceProfileArn") <*>
+                     (x .:? "InstallUpdatesOnBoot")
+                     <*> (x .:? "CustomSecurityGroupIds" .!= mempty)
+                     <*> (x .:? "LifecycleEventConfiguration")
+                     <*> (x .:? "Shortname")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "DefaultRecipes")
+                     <*> (x .:? "CustomRecipes")
+                     <*> (x .:? "VolumeConfigurations" .!= mempty)
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "EnableAutoHealing")
+                     <*> (x .:? "Packages" .!= mempty)
+                     <*> (x .:? "Name")
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "AutoAssignPublicIps")
+                     <*> (x .:? "UseEbsOptimizedInstances")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "LayerId")
+                     <*> (x .:? "DefaultSecurityGroupNames" .!= mempty)
+                     <*> (x .:? "AutoAssignElasticIps"))
+
+-- | Specifies the lifecycle event configuration
+--
+-- /See:/ 'lifecycleEventConfiguration' smart constructor.
+newtype LifecycleEventConfiguration = LifecycleEventConfiguration'
+    { _lecShutdown :: Maybe ShutdownEventConfiguration
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LifecycleEventConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lecShutdown'
+lifecycleEventConfiguration
+    :: LifecycleEventConfiguration
+lifecycleEventConfiguration =
+    LifecycleEventConfiguration'
+    { _lecShutdown = Nothing
+    }
+
+-- | A 'ShutdownEventConfiguration' object that specifies the Shutdown event
+-- configuration.
+lecShutdown :: Lens' LifecycleEventConfiguration (Maybe ShutdownEventConfiguration)
+lecShutdown = lens _lecShutdown (\ s a -> s{_lecShutdown = a});
+
+instance FromJSON LifecycleEventConfiguration where
+        parseJSON
+          = withObject "LifecycleEventConfiguration"
+              (\ x ->
+                 LifecycleEventConfiguration' <$> (x .:? "Shutdown"))
+
+instance ToJSON LifecycleEventConfiguration where
+        toJSON LifecycleEventConfiguration'{..}
+          = object ["Shutdown" .= _lecShutdown]
+
+-- | Describes a layer\'s load-based auto scaling configuration.
+--
+-- /See:/ 'loadBasedAutoScalingConfiguration' smart constructor.
+data LoadBasedAutoScalingConfiguration = LoadBasedAutoScalingConfiguration'
+    { _lbascUpScaling   :: !(Maybe AutoScalingThresholds)
+    , _lbascEnable      :: !(Maybe Bool)
+    , _lbascDownScaling :: !(Maybe AutoScalingThresholds)
+    , _lbascLayerId     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LoadBasedAutoScalingConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lbascUpScaling'
+--
+-- * 'lbascEnable'
+--
+-- * 'lbascDownScaling'
+--
+-- * 'lbascLayerId'
+loadBasedAutoScalingConfiguration
+    :: LoadBasedAutoScalingConfiguration
+loadBasedAutoScalingConfiguration =
+    LoadBasedAutoScalingConfiguration'
+    { _lbascUpScaling = Nothing
+    , _lbascEnable = Nothing
+    , _lbascDownScaling = Nothing
+    , _lbascLayerId = Nothing
+    }
+
+-- | An 'AutoScalingThresholds' object that describes the upscaling
+-- configuration, which defines how and when AWS OpsWorks increases the
+-- number of instances.
+lbascUpScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
+lbascUpScaling = lens _lbascUpScaling (\ s a -> s{_lbascUpScaling = a});
+
+-- | Whether load-based auto scaling is enabled for the layer.
+lbascEnable :: Lens' LoadBasedAutoScalingConfiguration (Maybe Bool)
+lbascEnable = lens _lbascEnable (\ s a -> s{_lbascEnable = a});
+
+-- | An 'AutoScalingThresholds' object that describes the downscaling
+-- configuration, which defines how and when AWS OpsWorks reduces the
+-- number of instances.
+lbascDownScaling :: Lens' LoadBasedAutoScalingConfiguration (Maybe AutoScalingThresholds)
+lbascDownScaling = lens _lbascDownScaling (\ s a -> s{_lbascDownScaling = a});
+
+-- | The layer ID.
+lbascLayerId :: Lens' LoadBasedAutoScalingConfiguration (Maybe Text)
+lbascLayerId = lens _lbascLayerId (\ s a -> s{_lbascLayerId = a});
+
+instance FromJSON LoadBasedAutoScalingConfiguration
+         where
+        parseJSON
+          = withObject "LoadBasedAutoScalingConfiguration"
+              (\ x ->
+                 LoadBasedAutoScalingConfiguration' <$>
+                   (x .:? "UpScaling") <*> (x .:? "Enable") <*>
+                     (x .:? "DownScaling")
+                     <*> (x .:? "LayerId"))
+
+-- | Describes stack or user permissions.
+--
+-- /See:/ 'permission' smart constructor.
+data Permission = Permission'
+    { _pIAMUserARN :: !(Maybe Text)
+    , _pAllowSudo  :: !(Maybe Bool)
+    , _pStackId    :: !(Maybe Text)
+    , _pLevel      :: !(Maybe Text)
+    , _pAllowSSH   :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Permission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pIAMUserARN'
+--
+-- * 'pAllowSudo'
+--
+-- * 'pStackId'
+--
+-- * 'pLevel'
+--
+-- * 'pAllowSSH'
+permission
+    :: Permission
+permission =
+    Permission'
+    { _pIAMUserARN = Nothing
+    , _pAllowSudo = Nothing
+    , _pStackId = Nothing
+    , _pLevel = Nothing
+    , _pAllowSSH = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) for an AWS Identity and Access Management
+-- (IAM) role. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+pIAMUserARN :: Lens' Permission (Maybe Text)
+pIAMUserARN = lens _pIAMUserARN (\ s a -> s{_pIAMUserARN = a});
+
+-- | Whether the user can use __sudo__.
+pAllowSudo :: Lens' Permission (Maybe Bool)
+pAllowSudo = lens _pAllowSudo (\ s a -> s{_pAllowSudo = a});
+
+-- | A stack ID.
+pStackId :: Lens' Permission (Maybe Text)
+pStackId = lens _pStackId (\ s a -> s{_pStackId = a});
+
+-- | The user\'s permission level, which must be the following:
+--
+-- -   'deny'
+-- -   'show'
+-- -   'deploy'
+-- -   'manage'
+-- -   'iam_only'
+--
+-- For more information on the permissions associated with these levels,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>
+pLevel :: Lens' Permission (Maybe Text)
+pLevel = lens _pLevel (\ s a -> s{_pLevel = a});
+
+-- | Whether the user can use SSH.
+pAllowSSH :: Lens' Permission (Maybe Bool)
+pAllowSSH = lens _pAllowSSH (\ s a -> s{_pAllowSSH = a});
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ x ->
+                 Permission' <$>
+                   (x .:? "IamUserArn") <*> (x .:? "AllowSudo") <*>
+                     (x .:? "StackId")
+                     <*> (x .:? "Level")
+                     <*> (x .:? "AllowSsh"))
+
+-- | Describes an instance\'s RAID array.
+--
+-- /See:/ 'rAIdArray' smart constructor.
+data RAIdArray = RAIdArray'
+    { _raiaInstanceId       :: !(Maybe Text)
+    , _raiaSize             :: !(Maybe Int)
+    , _raiaCreatedAt        :: !(Maybe Text)
+    , _raiaIOPS             :: !(Maybe Int)
+    , _raiaRAIdLevel        :: !(Maybe Int)
+    , _raiaDevice           :: !(Maybe Text)
+    , _raiaNumberOfDisks    :: !(Maybe Int)
+    , _raiaName             :: !(Maybe Text)
+    , _raiaAvailabilityZone :: !(Maybe Text)
+    , _raiaRAIdArrayId      :: !(Maybe Text)
+    , _raiaVolumeType       :: !(Maybe Text)
+    , _raiaStackId          :: !(Maybe Text)
+    , _raiaMountPoint       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RAIdArray' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raiaInstanceId'
+--
+-- * 'raiaSize'
+--
+-- * 'raiaCreatedAt'
+--
+-- * 'raiaIOPS'
+--
+-- * 'raiaRAIdLevel'
+--
+-- * 'raiaDevice'
+--
+-- * 'raiaNumberOfDisks'
+--
+-- * 'raiaName'
+--
+-- * 'raiaAvailabilityZone'
+--
+-- * 'raiaRAIdArrayId'
+--
+-- * 'raiaVolumeType'
+--
+-- * 'raiaStackId'
+--
+-- * 'raiaMountPoint'
+rAIdArray
+    :: RAIdArray
+rAIdArray =
+    RAIdArray'
+    { _raiaInstanceId = Nothing
+    , _raiaSize = Nothing
+    , _raiaCreatedAt = Nothing
+    , _raiaIOPS = Nothing
+    , _raiaRAIdLevel = Nothing
+    , _raiaDevice = Nothing
+    , _raiaNumberOfDisks = Nothing
+    , _raiaName = Nothing
+    , _raiaAvailabilityZone = Nothing
+    , _raiaRAIdArrayId = Nothing
+    , _raiaVolumeType = Nothing
+    , _raiaStackId = Nothing
+    , _raiaMountPoint = Nothing
+    }
+
+-- | The instance ID.
+raiaInstanceId :: Lens' RAIdArray (Maybe Text)
+raiaInstanceId = lens _raiaInstanceId (\ s a -> s{_raiaInstanceId = a});
+
+-- | The array\'s size.
+raiaSize :: Lens' RAIdArray (Maybe Int)
+raiaSize = lens _raiaSize (\ s a -> s{_raiaSize = a});
+
+-- | When the RAID array was created.
+raiaCreatedAt :: Lens' RAIdArray (Maybe Text)
+raiaCreatedAt = lens _raiaCreatedAt (\ s a -> s{_raiaCreatedAt = a});
+
+-- | For PIOPS volumes, the IOPS per disk.
+raiaIOPS :: Lens' RAIdArray (Maybe Int)
+raiaIOPS = lens _raiaIOPS (\ s a -> s{_raiaIOPS = a});
+
+-- | The <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level>.
+raiaRAIdLevel :: Lens' RAIdArray (Maybe Int)
+raiaRAIdLevel = lens _raiaRAIdLevel (\ s a -> s{_raiaRAIdLevel = a});
+
+-- | The array\'s Linux device. For example \/dev\/mdadm0.
+raiaDevice :: Lens' RAIdArray (Maybe Text)
+raiaDevice = lens _raiaDevice (\ s a -> s{_raiaDevice = a});
+
+-- | The number of disks in the array.
+raiaNumberOfDisks :: Lens' RAIdArray (Maybe Int)
+raiaNumberOfDisks = lens _raiaNumberOfDisks (\ s a -> s{_raiaNumberOfDisks = a});
+
+-- | The array name.
+raiaName :: Lens' RAIdArray (Maybe Text)
+raiaName = lens _raiaName (\ s a -> s{_raiaName = a});
+
+-- | The array\'s Availability Zone. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+raiaAvailabilityZone :: Lens' RAIdArray (Maybe Text)
+raiaAvailabilityZone = lens _raiaAvailabilityZone (\ s a -> s{_raiaAvailabilityZone = a});
+
+-- | The array ID.
+raiaRAIdArrayId :: Lens' RAIdArray (Maybe Text)
+raiaRAIdArrayId = lens _raiaRAIdArrayId (\ s a -> s{_raiaRAIdArrayId = a});
+
+-- | The volume type, standard or PIOPS.
+raiaVolumeType :: Lens' RAIdArray (Maybe Text)
+raiaVolumeType = lens _raiaVolumeType (\ s a -> s{_raiaVolumeType = a});
+
+-- | The stack ID.
+raiaStackId :: Lens' RAIdArray (Maybe Text)
+raiaStackId = lens _raiaStackId (\ s a -> s{_raiaStackId = a});
+
+-- | The array\'s mount point.
+raiaMountPoint :: Lens' RAIdArray (Maybe Text)
+raiaMountPoint = lens _raiaMountPoint (\ s a -> s{_raiaMountPoint = a});
+
+instance FromJSON RAIdArray where
+        parseJSON
+          = withObject "RAIdArray"
+              (\ x ->
+                 RAIdArray' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Size") <*>
+                     (x .:? "CreatedAt")
+                     <*> (x .:? "Iops")
+                     <*> (x .:? "RaidLevel")
+                     <*> (x .:? "Device")
+                     <*> (x .:? "NumberOfDisks")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "RaidArrayId")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "MountPoint"))
+
+-- | Describes an Amazon RDS instance.
+--
+-- /See:/ 'rdsDBInstance' smart constructor.
+data RDSDBInstance = RDSDBInstance'
+    { _rdiDBUser               :: !(Maybe Text)
+    , _rdiRDSDBInstanceARN     :: !(Maybe Text)
+    , _rdiMissingOnRDS         :: !(Maybe Bool)
+    , _rdiEngine               :: !(Maybe Text)
+    , _rdiAddress              :: !(Maybe Text)
+    , _rdiDBInstanceIdentifier :: !(Maybe Text)
+    , _rdiRegion               :: !(Maybe Text)
+    , _rdiStackId              :: !(Maybe Text)
+    , _rdiDBPassword           :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RDSDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdiDBUser'
+--
+-- * 'rdiRDSDBInstanceARN'
+--
+-- * 'rdiMissingOnRDS'
+--
+-- * 'rdiEngine'
+--
+-- * 'rdiAddress'
+--
+-- * 'rdiDBInstanceIdentifier'
+--
+-- * 'rdiRegion'
+--
+-- * 'rdiStackId'
+--
+-- * 'rdiDBPassword'
+rdsDBInstance
+    :: RDSDBInstance
+rdsDBInstance =
+    RDSDBInstance'
+    { _rdiDBUser = Nothing
+    , _rdiRDSDBInstanceARN = Nothing
+    , _rdiMissingOnRDS = Nothing
+    , _rdiEngine = Nothing
+    , _rdiAddress = Nothing
+    , _rdiDBInstanceIdentifier = Nothing
+    , _rdiRegion = Nothing
+    , _rdiStackId = Nothing
+    , _rdiDBPassword = Nothing
+    }
+
+-- | The master user name.
+rdiDBUser :: Lens' RDSDBInstance (Maybe Text)
+rdiDBUser = lens _rdiDBUser (\ s a -> s{_rdiDBUser = a});
+
+-- | The instance\'s ARN.
+rdiRDSDBInstanceARN :: Lens' RDSDBInstance (Maybe Text)
+rdiRDSDBInstanceARN = lens _rdiRDSDBInstanceARN (\ s a -> s{_rdiRDSDBInstanceARN = a});
+
+-- | Set to 'true' if AWS OpsWorks was unable to discover the Amazon RDS
+-- instance. AWS OpsWorks attempts to discover the instance only once. If
+-- this value is set to 'true', you must deregister the instance and then
+-- register it again.
+rdiMissingOnRDS :: Lens' RDSDBInstance (Maybe Bool)
+rdiMissingOnRDS = lens _rdiMissingOnRDS (\ s a -> s{_rdiMissingOnRDS = a});
+
+-- | The instance\'s database engine.
+rdiEngine :: Lens' RDSDBInstance (Maybe Text)
+rdiEngine = lens _rdiEngine (\ s a -> s{_rdiEngine = a});
+
+-- | The instance\'s address.
+rdiAddress :: Lens' RDSDBInstance (Maybe Text)
+rdiAddress = lens _rdiAddress (\ s a -> s{_rdiAddress = a});
+
+-- | The DB instance identifier.
+rdiDBInstanceIdentifier :: Lens' RDSDBInstance (Maybe Text)
+rdiDBInstanceIdentifier = lens _rdiDBInstanceIdentifier (\ s a -> s{_rdiDBInstanceIdentifier = a});
+
+-- | The instance\'s AWS region.
+rdiRegion :: Lens' RDSDBInstance (Maybe Text)
+rdiRegion = lens _rdiRegion (\ s a -> s{_rdiRegion = a});
+
+-- | The ID of the stack that the instance is registered with.
+rdiStackId :: Lens' RDSDBInstance (Maybe Text)
+rdiStackId = lens _rdiStackId (\ s a -> s{_rdiStackId = a});
+
+-- | AWS OpsWorks returns '*****FILTERED*****' instead of the actual value.
+rdiDBPassword :: Lens' RDSDBInstance (Maybe Text)
+rdiDBPassword = lens _rdiDBPassword (\ s a -> s{_rdiDBPassword = a});
+
+instance FromJSON RDSDBInstance where
+        parseJSON
+          = withObject "RDSDBInstance"
+              (\ x ->
+                 RDSDBInstance' <$>
+                   (x .:? "DbUser") <*> (x .:? "RdsDbInstanceArn") <*>
+                     (x .:? "MissingOnRds")
+                     <*> (x .:? "Engine")
+                     <*> (x .:? "Address")
+                     <*> (x .:? "DbInstanceIdentifier")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "DbPassword"))
+
+-- | AWS OpsWorks supports five lifecycle events: __setup__,
+-- __configuration__, __deploy__, __undeploy__, and __shutdown__. For each
+-- layer, AWS OpsWorks runs a set of standard recipes for each event. In
+-- addition, you can provide custom recipes for any or all layers and
+-- events. AWS OpsWorks runs custom event recipes after the standard
+-- recipes. 'LayerCustomRecipes' specifies the custom recipes for a
+-- particular layer to be run in response to each of the five events.
+--
+-- To specify a recipe, use the cookbook\'s directory name in the
+-- repository followed by two colons and the recipe name, which is the
+-- recipe\'s file name without the .rb extension. For example:
+-- phpapp2::dbsetup specifies the dbsetup.rb recipe in the repository\'s
+-- phpapp2 folder.
+--
+-- /See:/ 'recipes' smart constructor.
+data Recipes = Recipes'
+    { _rSetup     :: !(Maybe [Text])
+    , _rUndeploy  :: !(Maybe [Text])
+    , _rShutdown  :: !(Maybe [Text])
+    , _rConfigure :: !(Maybe [Text])
+    , _rDeploy    :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Recipes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rSetup'
+--
+-- * 'rUndeploy'
+--
+-- * 'rShutdown'
+--
+-- * 'rConfigure'
+--
+-- * 'rDeploy'
+recipes
+    :: Recipes
+recipes =
+    Recipes'
+    { _rSetup = Nothing
+    , _rUndeploy = Nothing
+    , _rShutdown = Nothing
+    , _rConfigure = Nothing
+    , _rDeploy = Nothing
+    }
+
+-- | An array of custom recipe names to be run following a 'setup' event.
+rSetup :: Lens' Recipes [Text]
+rSetup = lens _rSetup (\ s a -> s{_rSetup = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a 'undeploy' event.
+rUndeploy :: Lens' Recipes [Text]
+rUndeploy = lens _rUndeploy (\ s a -> s{_rUndeploy = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a 'shutdown' event.
+rShutdown :: Lens' Recipes [Text]
+rShutdown = lens _rShutdown (\ s a -> s{_rShutdown = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a 'configure' event.
+rConfigure :: Lens' Recipes [Text]
+rConfigure = lens _rConfigure (\ s a -> s{_rConfigure = a}) . _Default . _Coerce;
+
+-- | An array of custom recipe names to be run following a 'deploy' event.
+rDeploy :: Lens' Recipes [Text]
+rDeploy = lens _rDeploy (\ s a -> s{_rDeploy = a}) . _Default . _Coerce;
+
+instance FromJSON Recipes where
+        parseJSON
+          = withObject "Recipes"
+              (\ x ->
+                 Recipes' <$>
+                   (x .:? "Setup" .!= mempty) <*>
+                     (x .:? "Undeploy" .!= mempty)
+                     <*> (x .:? "Shutdown" .!= mempty)
+                     <*> (x .:? "Configure" .!= mempty)
+                     <*> (x .:? "Deploy" .!= mempty))
+
+instance ToJSON Recipes where
+        toJSON Recipes'{..}
+          = object
+              ["Setup" .= _rSetup, "Undeploy" .= _rUndeploy,
+               "Shutdown" .= _rShutdown, "Configure" .= _rConfigure,
+               "Deploy" .= _rDeploy]
+
+-- | A registered instance\'s reported operating system.
+--
+-- /See:/ 'reportedOS' smart constructor.
+data ReportedOS = ReportedOS'
+    { _roFamily  :: !(Maybe Text)
+    , _roName    :: !(Maybe Text)
+    , _roVersion :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReportedOS' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'roFamily'
+--
+-- * 'roName'
+--
+-- * 'roVersion'
+reportedOS
+    :: ReportedOS
+reportedOS =
+    ReportedOS'
+    { _roFamily = Nothing
+    , _roName = Nothing
+    , _roVersion = Nothing
+    }
+
+-- | The operating system family.
+roFamily :: Lens' ReportedOS (Maybe Text)
+roFamily = lens _roFamily (\ s a -> s{_roFamily = a});
+
+-- | The operating system name.
+roName :: Lens' ReportedOS (Maybe Text)
+roName = lens _roName (\ s a -> s{_roName = a});
+
+-- | The operating system version.
+roVersion :: Lens' ReportedOS (Maybe Text)
+roVersion = lens _roVersion (\ s a -> s{_roVersion = a});
+
+instance FromJSON ReportedOS where
+        parseJSON
+          = withObject "ReportedOS"
+              (\ x ->
+                 ReportedOS' <$>
+                   (x .:? "Family") <*> (x .:? "Name") <*>
+                     (x .:? "Version"))
+
+-- | Describes an app\'s SSL configuration.
+--
+-- /See:/ 'sslConfiguration' smart constructor.
+data SSLConfiguration = SSLConfiguration'
+    { _scChain       :: !(Maybe Text)
+    , _scCertificate :: !Text
+    , _scPrivateKey  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SSLConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scChain'
+--
+-- * 'scCertificate'
+--
+-- * 'scPrivateKey'
+sslConfiguration
+    :: Text -- ^ 'scCertificate'
+    -> Text -- ^ 'scPrivateKey'
+    -> SSLConfiguration
+sslConfiguration pCertificate_ pPrivateKey_ =
+    SSLConfiguration'
+    { _scChain = Nothing
+    , _scCertificate = pCertificate_
+    , _scPrivateKey = pPrivateKey_
+    }
+
+-- | Optional. Can be used to specify an intermediate certificate authority
+-- key or client authentication.
+scChain :: Lens' SSLConfiguration (Maybe Text)
+scChain = lens _scChain (\ s a -> s{_scChain = a});
+
+-- | The contents of the certificate\'s domain.crt file.
+scCertificate :: Lens' SSLConfiguration Text
+scCertificate = lens _scCertificate (\ s a -> s{_scCertificate = a});
+
+-- | The private key; the contents of the certificate\'s domain.kex file.
+scPrivateKey :: Lens' SSLConfiguration Text
+scPrivateKey = lens _scPrivateKey (\ s a -> s{_scPrivateKey = a});
+
+instance FromJSON SSLConfiguration where
+        parseJSON
+          = withObject "SSLConfiguration"
+              (\ x ->
+                 SSLConfiguration' <$>
+                   (x .:? "Chain") <*> (x .: "Certificate") <*>
+                     (x .: "PrivateKey"))
+
+instance ToJSON SSLConfiguration where
+        toJSON SSLConfiguration'{..}
+          = object
+              ["Chain" .= _scChain,
+               "Certificate" .= _scCertificate,
+               "PrivateKey" .= _scPrivateKey]
+
+-- | Describes a user\'s SSH information.
+--
+-- /See:/ 'selfUserProfile' smart constructor.
+data SelfUserProfile = SelfUserProfile'
+    { _supSSHUsername  :: !(Maybe Text)
+    , _supSSHPublicKey :: !(Maybe Text)
+    , _supIAMUserARN   :: !(Maybe Text)
+    , _supName         :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SelfUserProfile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'supSSHUsername'
+--
+-- * 'supSSHPublicKey'
+--
+-- * 'supIAMUserARN'
+--
+-- * 'supName'
+selfUserProfile
+    :: SelfUserProfile
+selfUserProfile =
+    SelfUserProfile'
+    { _supSSHUsername = Nothing
+    , _supSSHPublicKey = Nothing
+    , _supIAMUserARN = Nothing
+    , _supName = Nothing
+    }
+
+-- | The user\'s SSH user name.
+supSSHUsername :: Lens' SelfUserProfile (Maybe Text)
+supSSHUsername = lens _supSSHUsername (\ s a -> s{_supSSHUsername = a});
+
+-- | The user\'s SSH public key.
+supSSHPublicKey :: Lens' SelfUserProfile (Maybe Text)
+supSSHPublicKey = lens _supSSHPublicKey (\ s a -> s{_supSSHPublicKey = a});
+
+-- | The user\'s IAM ARN.
+supIAMUserARN :: Lens' SelfUserProfile (Maybe Text)
+supIAMUserARN = lens _supIAMUserARN (\ s a -> s{_supIAMUserARN = a});
+
+-- | The user\'s name.
+supName :: Lens' SelfUserProfile (Maybe Text)
+supName = lens _supName (\ s a -> s{_supName = a});
+
+instance FromJSON SelfUserProfile where
+        parseJSON
+          = withObject "SelfUserProfile"
+              (\ x ->
+                 SelfUserProfile' <$>
+                   (x .:? "SshUsername") <*> (x .:? "SshPublicKey") <*>
+                     (x .:? "IamUserArn")
+                     <*> (x .:? "Name"))
+
+-- | Describes an AWS OpsWorks service error.
+--
+-- /See:/ 'serviceError'' smart constructor.
+data ServiceError' = ServiceError''
+    { _seInstanceId     :: !(Maybe Text)
+    , _seCreatedAt      :: !(Maybe Text)
+    , _seServiceErrorId :: !(Maybe Text)
+    , _seType           :: !(Maybe Text)
+    , _seMessage        :: !(Maybe Text)
+    , _seStackId        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ServiceError'' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'seInstanceId'
+--
+-- * 'seCreatedAt'
+--
+-- * 'seServiceErrorId'
+--
+-- * 'seType'
+--
+-- * 'seMessage'
+--
+-- * 'seStackId'
+serviceError'
+    :: ServiceError'
+serviceError' =
+    ServiceError''
+    { _seInstanceId = Nothing
+    , _seCreatedAt = Nothing
+    , _seServiceErrorId = Nothing
+    , _seType = Nothing
+    , _seMessage = Nothing
+    , _seStackId = Nothing
+    }
+
+-- | The instance ID.
+seInstanceId :: Lens' ServiceError' (Maybe Text)
+seInstanceId = lens _seInstanceId (\ s a -> s{_seInstanceId = a});
+
+-- | When the error occurred.
+seCreatedAt :: Lens' ServiceError' (Maybe Text)
+seCreatedAt = lens _seCreatedAt (\ s a -> s{_seCreatedAt = a});
+
+-- | The error ID.
+seServiceErrorId :: Lens' ServiceError' (Maybe Text)
+seServiceErrorId = lens _seServiceErrorId (\ s a -> s{_seServiceErrorId = a});
+
+-- | The error type.
+seType :: Lens' ServiceError' (Maybe Text)
+seType = lens _seType (\ s a -> s{_seType = a});
+
+-- | A message that describes the error.
+seMessage :: Lens' ServiceError' (Maybe Text)
+seMessage = lens _seMessage (\ s a -> s{_seMessage = a});
+
+-- | The stack ID.
+seStackId :: Lens' ServiceError' (Maybe Text)
+seStackId = lens _seStackId (\ s a -> s{_seStackId = a});
+
+instance FromJSON ServiceError' where
+        parseJSON
+          = withObject "ServiceError'"
+              (\ x ->
+                 ServiceError'' <$>
+                   (x .:? "InstanceId") <*> (x .:? "CreatedAt") <*>
+                     (x .:? "ServiceErrorId")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Message")
+                     <*> (x .:? "StackId"))
+
+-- | The Shutdown event configuration.
+--
+-- /See:/ 'shutdownEventConfiguration' smart constructor.
+data ShutdownEventConfiguration = ShutdownEventConfiguration'
+    { _secExecutionTimeout                :: !(Maybe Int)
+    , _secDelayUntilElbConnectionsDrained :: !(Maybe Bool)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ShutdownEventConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'secExecutionTimeout'
+--
+-- * 'secDelayUntilElbConnectionsDrained'
+shutdownEventConfiguration
+    :: ShutdownEventConfiguration
+shutdownEventConfiguration =
+    ShutdownEventConfiguration'
+    { _secExecutionTimeout = Nothing
+    , _secDelayUntilElbConnectionsDrained = Nothing
+    }
+
+-- | The time, in seconds, that AWS OpsWorks will wait after triggering a
+-- Shutdown event before shutting down an instance.
+secExecutionTimeout :: Lens' ShutdownEventConfiguration (Maybe Int)
+secExecutionTimeout = lens _secExecutionTimeout (\ s a -> s{_secExecutionTimeout = a});
+
+-- | Whether to enable Elastic Load Balancing connection draining. For more
+-- information, see
+-- <http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/TerminologyandKeyConcepts.html#conn-drain Connection Draining>
+secDelayUntilElbConnectionsDrained :: Lens' ShutdownEventConfiguration (Maybe Bool)
+secDelayUntilElbConnectionsDrained = lens _secDelayUntilElbConnectionsDrained (\ s a -> s{_secDelayUntilElbConnectionsDrained = a});
+
+instance FromJSON ShutdownEventConfiguration where
+        parseJSON
+          = withObject "ShutdownEventConfiguration"
+              (\ x ->
+                 ShutdownEventConfiguration' <$>
+                   (x .:? "ExecutionTimeout") <*>
+                     (x .:? "DelayUntilElbConnectionsDrained"))
+
+instance ToJSON ShutdownEventConfiguration where
+        toJSON ShutdownEventConfiguration'{..}
+          = object
+              ["ExecutionTimeout" .= _secExecutionTimeout,
+               "DelayUntilElbConnectionsDrained" .=
+                 _secDelayUntilElbConnectionsDrained]
+
+-- | Contains the information required to retrieve an app or cookbook from a
+-- repository. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html Creating Apps>
+-- or
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook.html Custom Recipes and Cookbooks>.
+--
+-- /See:/ 'source' smart constructor.
+data Source = Source'
+    { _sURL      :: !(Maybe Text)
+    , _sUsername :: !(Maybe Text)
+    , _sSSHKey   :: !(Maybe Text)
+    , _sPassword :: !(Maybe Text)
+    , _sType     :: !(Maybe SourceType)
+    , _sRevision :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Source' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sURL'
+--
+-- * 'sUsername'
+--
+-- * 'sSSHKey'
+--
+-- * 'sPassword'
+--
+-- * 'sType'
+--
+-- * 'sRevision'
+source
+    :: Source
+source =
+    Source'
+    { _sURL = Nothing
+    , _sUsername = Nothing
+    , _sSSHKey = Nothing
+    , _sPassword = Nothing
+    , _sType = Nothing
+    , _sRevision = Nothing
+    }
+
+-- | The source URL.
+sURL :: Lens' Source (Maybe Text)
+sURL = lens _sURL (\ s a -> s{_sURL = a});
+
+-- | This parameter depends on the repository type.
+--
+-- -   For Amazon S3 bundles, set 'Username' to the appropriate IAM access
+--     key ID.
+-- -   For HTTP bundles, Git repositories, and Subversion repositories, set
+--     'Username' to the user name.
+sUsername :: Lens' Source (Maybe Text)
+sUsername = lens _sUsername (\ s a -> s{_sUsername = a});
+
+-- | In requests, the repository\'s SSH key.
+--
+-- In responses, AWS OpsWorks returns '*****FILTERED*****' instead of the
+-- actual value.
+sSSHKey :: Lens' Source (Maybe Text)
+sSSHKey = lens _sSSHKey (\ s a -> s{_sSSHKey = a});
+
+-- | When included in a request, the parameter depends on the repository
+-- type.
+--
+-- -   For Amazon S3 bundles, set 'Password' to the appropriate IAM secret
+--     access key.
+-- -   For HTTP bundles and Subversion repositories, set 'Password' to the
+--     password.
+--
+-- For more information on how to safely handle IAM credentials, see
+-- <http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html >.
+--
+-- In responses, AWS OpsWorks returns '*****FILTERED*****' instead of the
+-- actual value.
+sPassword :: Lens' Source (Maybe Text)
+sPassword = lens _sPassword (\ s a -> s{_sPassword = a});
+
+-- | The repository type.
+sType :: Lens' Source (Maybe SourceType)
+sType = lens _sType (\ s a -> s{_sType = a});
+
+-- | The application\'s version. AWS OpsWorks enables you to easily deploy
+-- new versions of an application. One of the simplest approaches is to
+-- have branches or revisions in your repository that represent different
+-- versions that can potentially be deployed.
+sRevision :: Lens' Source (Maybe Text)
+sRevision = lens _sRevision (\ s a -> s{_sRevision = a});
+
+instance FromJSON Source where
+        parseJSON
+          = withObject "Source"
+              (\ x ->
+                 Source' <$>
+                   (x .:? "Url") <*> (x .:? "Username") <*>
+                     (x .:? "SshKey")
+                     <*> (x .:? "Password")
+                     <*> (x .:? "Type")
+                     <*> (x .:? "Revision"))
+
+instance ToJSON Source where
+        toJSON Source'{..}
+          = object
+              ["Url" .= _sURL, "Username" .= _sUsername,
+               "SshKey" .= _sSSHKey, "Password" .= _sPassword,
+               "Type" .= _sType, "Revision" .= _sRevision]
+
+-- | Describes a stack.
+--
+-- /See:/ 'stack' smart constructor.
+data Stack = Stack'
+    { _sDefaultInstanceProfileARN :: !(Maybe Text)
+    , _sServiceRoleARN            :: !(Maybe Text)
+    , _sARN                       :: !(Maybe Text)
+    , _sDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+    , _sCreatedAt                 :: !(Maybe Text)
+    , _sChefConfiguration         :: !(Maybe ChefConfiguration)
+    , _sVPCId                     :: !(Maybe Text)
+    , _sAgentVersion              :: !(Maybe Text)
+    , _sDefaultSSHKeyName         :: !(Maybe Text)
+    , _sCustomJSON                :: !(Maybe Text)
+    , _sCustomCookbooksSource     :: !(Maybe Source)
+    , _sDefaultAvailabilityZone   :: !(Maybe Text)
+    , _sName                      :: !(Maybe Text)
+    , _sUseOpsworksSecurityGroups :: !(Maybe Bool)
+    , _sDefaultOS                 :: !(Maybe Text)
+    , _sAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+    , _sUseCustomCookbooks        :: !(Maybe Bool)
+    , _sDefaultSubnetId           :: !(Maybe Text)
+    , _sRegion                    :: !(Maybe Text)
+    , _sConfigurationManager      :: !(Maybe StackConfigurationManager)
+    , _sStackId                   :: !(Maybe Text)
+    , _sHostnameTheme             :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Stack' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sDefaultInstanceProfileARN'
+--
+-- * 'sServiceRoleARN'
+--
+-- * 'sARN'
+--
+-- * 'sDefaultRootDeviceType'
+--
+-- * 'sCreatedAt'
+--
+-- * 'sChefConfiguration'
+--
+-- * 'sVPCId'
+--
+-- * 'sAgentVersion'
+--
+-- * 'sDefaultSSHKeyName'
+--
+-- * 'sCustomJSON'
+--
+-- * 'sCustomCookbooksSource'
+--
+-- * 'sDefaultAvailabilityZone'
+--
+-- * 'sName'
+--
+-- * 'sUseOpsworksSecurityGroups'
+--
+-- * 'sDefaultOS'
+--
+-- * 'sAttributes'
+--
+-- * 'sUseCustomCookbooks'
+--
+-- * 'sDefaultSubnetId'
+--
+-- * 'sRegion'
+--
+-- * 'sConfigurationManager'
+--
+-- * 'sStackId'
+--
+-- * 'sHostnameTheme'
+stack
+    :: Stack
+stack =
+    Stack'
+    { _sDefaultInstanceProfileARN = Nothing
+    , _sServiceRoleARN = Nothing
+    , _sARN = Nothing
+    , _sDefaultRootDeviceType = Nothing
+    , _sCreatedAt = Nothing
+    , _sChefConfiguration = Nothing
+    , _sVPCId = Nothing
+    , _sAgentVersion = Nothing
+    , _sDefaultSSHKeyName = Nothing
+    , _sCustomJSON = Nothing
+    , _sCustomCookbooksSource = Nothing
+    , _sDefaultAvailabilityZone = Nothing
+    , _sName = Nothing
+    , _sUseOpsworksSecurityGroups = Nothing
+    , _sDefaultOS = Nothing
+    , _sAttributes = Nothing
+    , _sUseCustomCookbooks = Nothing
+    , _sDefaultSubnetId = Nothing
+    , _sRegion = Nothing
+    , _sConfigurationManager = Nothing
+    , _sStackId = Nothing
+    , _sHostnameTheme = Nothing
+    }
+
+-- | The ARN of an IAM profile that is the default profile for all of the
+-- stack\'s EC2 instances. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+sDefaultInstanceProfileARN :: Lens' Stack (Maybe Text)
+sDefaultInstanceProfileARN = lens _sDefaultInstanceProfileARN (\ s a -> s{_sDefaultInstanceProfileARN = a});
+
+-- | The stack AWS Identity and Access Management (IAM) role.
+sServiceRoleARN :: Lens' Stack (Maybe Text)
+sServiceRoleARN = lens _sServiceRoleARN (\ s a -> s{_sServiceRoleARN = a});
+
+-- | The stack\'s ARN.
+sARN :: Lens' Stack (Maybe Text)
+sARN = lens _sARN (\ s a -> s{_sARN = a});
+
+-- | The default root device type. This value is used by default for all
+-- instances in the stack, but you can override it when you create an
+-- instance. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+sDefaultRootDeviceType :: Lens' Stack (Maybe RootDeviceType)
+sDefaultRootDeviceType = lens _sDefaultRootDeviceType (\ s a -> s{_sDefaultRootDeviceType = a});
+
+-- | The date when the stack was created.
+sCreatedAt :: Lens' Stack (Maybe Text)
+sCreatedAt = lens _sCreatedAt (\ s a -> s{_sCreatedAt = a});
+
+-- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf
+-- and the Berkshelf version. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+sChefConfiguration :: Lens' Stack (Maybe ChefConfiguration)
+sChefConfiguration = lens _sChefConfiguration (\ s a -> s{_sChefConfiguration = a});
+
+-- | The VPC ID; applicable only if the stack is running in a VPC.
+sVPCId :: Lens' Stack (Maybe Text)
+sVPCId = lens _sVPCId (\ s a -> s{_sVPCId = a});
+
+-- | The agent version. This parameter is set to 'LATEST' for auto-update. or
+-- a version number for a fixed agent version.
+sAgentVersion :: Lens' Stack (Maybe Text)
+sAgentVersion = lens _sAgentVersion (\ s a -> s{_sAgentVersion = a});
+
+-- | A default Amazon EC2 key pair for the stack\'s instances. You can
+-- override this value when you create or update an instance.
+sDefaultSSHKeyName :: Lens' Stack (Maybe Text)
+sDefaultSSHKeyName = lens _sDefaultSSHKeyName (\ s a -> s{_sDefaultSSHKeyName = a});
+
+-- | A JSON object that contains user-defined attributes to be added to the
+-- stack configuration and deployment attributes. You can use custom JSON
+-- to override the corresponding default stack configuration attribute
+-- values or to pass data to recipes. The string should be in the following
+-- format and must escape characters such as \'\"\':
+--
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
+--
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
+sCustomJSON :: Lens' Stack (Maybe Text)
+sCustomJSON = lens _sCustomJSON (\ s a -> s{_sCustomJSON = a});
+
+-- | Undocumented member.
+sCustomCookbooksSource :: Lens' Stack (Maybe Source)
+sCustomCookbooksSource = lens _sCustomCookbooksSource (\ s a -> s{_sCustomCookbooksSource = a});
+
+-- | The stack\'s default Availability Zone. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+sDefaultAvailabilityZone :: Lens' Stack (Maybe Text)
+sDefaultAvailabilityZone = lens _sDefaultAvailabilityZone (\ s a -> s{_sDefaultAvailabilityZone = a});
+
+-- | The stack name.
+sName :: Lens' Stack (Maybe Text)
+sName = lens _sName (\ s a -> s{_sName = a});
+
+-- | Whether the stack automatically associates the AWS OpsWorks built-in
+-- security groups with the stack\'s layers.
+sUseOpsworksSecurityGroups :: Lens' Stack (Maybe Bool)
+sUseOpsworksSecurityGroups = lens _sUseOpsworksSecurityGroups (\ s a -> s{_sUseOpsworksSecurityGroups = a});
+
+-- | The stack\'s default operating system.
+sDefaultOS :: Lens' Stack (Maybe Text)
+sDefaultOS = lens _sDefaultOS (\ s a -> s{_sDefaultOS = a});
+
+-- | The stack\'s attributes.
+sAttributes :: Lens' Stack (HashMap StackAttributesKeys Text)
+sAttributes = lens _sAttributes (\ s a -> s{_sAttributes = a}) . _Default . _Map;
+
+-- | Whether the stack uses custom cookbooks.
+sUseCustomCookbooks :: Lens' Stack (Maybe Bool)
+sUseCustomCookbooks = lens _sUseCustomCookbooks (\ s a -> s{_sUseCustomCookbooks = a});
+
+-- | The default subnet ID; applicable only if the stack is running in a VPC.
+sDefaultSubnetId :: Lens' Stack (Maybe Text)
+sDefaultSubnetId = lens _sDefaultSubnetId (\ s a -> s{_sDefaultSubnetId = a});
+
+-- | The stack AWS region, such as \"us-east-1\". For more information about
+-- AWS regions, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+sRegion :: Lens' Stack (Maybe Text)
+sRegion = lens _sRegion (\ s a -> s{_sRegion = a});
+
+-- | The configuration manager.
+sConfigurationManager :: Lens' Stack (Maybe StackConfigurationManager)
+sConfigurationManager = lens _sConfigurationManager (\ s a -> s{_sConfigurationManager = a});
+
+-- | The stack ID.
+sStackId :: Lens' Stack (Maybe Text)
+sStackId = lens _sStackId (\ s a -> s{_sStackId = a});
+
+-- | The stack host name theme, with spaces replaced by underscores.
+sHostnameTheme :: Lens' Stack (Maybe Text)
+sHostnameTheme = lens _sHostnameTheme (\ s a -> s{_sHostnameTheme = a});
+
+instance FromJSON Stack where
+        parseJSON
+          = withObject "Stack"
+              (\ x ->
+                 Stack' <$>
+                   (x .:? "DefaultInstanceProfileArn") <*>
+                     (x .:? "ServiceRoleArn")
+                     <*> (x .:? "Arn")
+                     <*> (x .:? "DefaultRootDeviceType")
+                     <*> (x .:? "CreatedAt")
+                     <*> (x .:? "ChefConfiguration")
+                     <*> (x .:? "VpcId")
+                     <*> (x .:? "AgentVersion")
+                     <*> (x .:? "DefaultSshKeyName")
+                     <*> (x .:? "CustomJson")
+                     <*> (x .:? "CustomCookbooksSource")
+                     <*> (x .:? "DefaultAvailabilityZone")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "UseOpsworksSecurityGroups")
+                     <*> (x .:? "DefaultOs")
+                     <*> (x .:? "Attributes" .!= mempty)
+                     <*> (x .:? "UseCustomCookbooks")
+                     <*> (x .:? "DefaultSubnetId")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "ConfigurationManager")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "HostnameTheme"))
+
+-- | Describes the configuration manager.
+--
+-- /See:/ 'stackConfigurationManager' smart constructor.
+data StackConfigurationManager = StackConfigurationManager'
+    { _scmName    :: !(Maybe Text)
+    , _scmVersion :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StackConfigurationManager' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'scmName'
+--
+-- * 'scmVersion'
+stackConfigurationManager
+    :: StackConfigurationManager
+stackConfigurationManager =
+    StackConfigurationManager'
+    { _scmName = Nothing
+    , _scmVersion = Nothing
+    }
+
+-- | The name. This parameter must be set to \"Chef\".
+scmName :: Lens' StackConfigurationManager (Maybe Text)
+scmName = lens _scmName (\ s a -> s{_scmName = a});
+
+-- | The Chef version. This parameter must be set to 0.9, 11.4, or 11.10. The
+-- default value is 11.4.
+scmVersion :: Lens' StackConfigurationManager (Maybe Text)
+scmVersion = lens _scmVersion (\ s a -> s{_scmVersion = a});
+
+instance FromJSON StackConfigurationManager where
+        parseJSON
+          = withObject "StackConfigurationManager"
+              (\ x ->
+                 StackConfigurationManager' <$>
+                   (x .:? "Name") <*> (x .:? "Version"))
+
+instance ToJSON StackConfigurationManager where
+        toJSON StackConfigurationManager'{..}
+          = object
+              ["Name" .= _scmName, "Version" .= _scmVersion]
+
+-- | Summarizes the number of layers, instances, and apps in a stack.
+--
+-- /See:/ 'stackSummary' smart constructor.
+data StackSummary = StackSummary'
+    { _ssARN            :: !(Maybe Text)
+    , _ssAppsCount      :: !(Maybe Int)
+    , _ssName           :: !(Maybe Text)
+    , _ssStackId        :: !(Maybe Text)
+    , _ssLayersCount    :: !(Maybe Int)
+    , _ssInstancesCount :: !(Maybe InstancesCount)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StackSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssARN'
+--
+-- * 'ssAppsCount'
+--
+-- * 'ssName'
+--
+-- * 'ssStackId'
+--
+-- * 'ssLayersCount'
+--
+-- * 'ssInstancesCount'
+stackSummary
+    :: StackSummary
+stackSummary =
+    StackSummary'
+    { _ssARN = Nothing
+    , _ssAppsCount = Nothing
+    , _ssName = Nothing
+    , _ssStackId = Nothing
+    , _ssLayersCount = Nothing
+    , _ssInstancesCount = Nothing
+    }
+
+-- | The stack\'s ARN.
+ssARN :: Lens' StackSummary (Maybe Text)
+ssARN = lens _ssARN (\ s a -> s{_ssARN = a});
+
+-- | The number of apps.
+ssAppsCount :: Lens' StackSummary (Maybe Int)
+ssAppsCount = lens _ssAppsCount (\ s a -> s{_ssAppsCount = a});
+
+-- | The stack name.
+ssName :: Lens' StackSummary (Maybe Text)
+ssName = lens _ssName (\ s a -> s{_ssName = a});
+
+-- | The stack ID.
+ssStackId :: Lens' StackSummary (Maybe Text)
+ssStackId = lens _ssStackId (\ s a -> s{_ssStackId = a});
+
+-- | The number of layers.
+ssLayersCount :: Lens' StackSummary (Maybe Int)
+ssLayersCount = lens _ssLayersCount (\ s a -> s{_ssLayersCount = a});
+
+-- | An 'InstancesCount' object with the number of instances in each status.
+ssInstancesCount :: Lens' StackSummary (Maybe InstancesCount)
+ssInstancesCount = lens _ssInstancesCount (\ s a -> s{_ssInstancesCount = a});
+
+instance FromJSON StackSummary where
+        parseJSON
+          = withObject "StackSummary"
+              (\ x ->
+                 StackSummary' <$>
+                   (x .:? "Arn") <*> (x .:? "AppsCount") <*>
+                     (x .:? "Name")
+                     <*> (x .:? "StackId")
+                     <*> (x .:? "LayersCount")
+                     <*> (x .:? "InstancesCount"))
+
+-- | Contains the data needed by RDP clients such as the Microsoft Remote
+-- Desktop Connection to log in to the instance.
+--
+-- /See:/ 'temporaryCredential' smart constructor.
+data TemporaryCredential = TemporaryCredential'
+    { _tcInstanceId        :: !(Maybe Text)
+    , _tcUsername          :: !(Maybe Text)
+    , _tcPassword          :: !(Maybe Text)
+    , _tcValidForInMinutes :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TemporaryCredential' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tcInstanceId'
+--
+-- * 'tcUsername'
+--
+-- * 'tcPassword'
+--
+-- * 'tcValidForInMinutes'
+temporaryCredential
+    :: TemporaryCredential
+temporaryCredential =
+    TemporaryCredential'
+    { _tcInstanceId = Nothing
+    , _tcUsername = Nothing
+    , _tcPassword = Nothing
+    , _tcValidForInMinutes = Nothing
+    }
+
+-- | The instance\'s AWS OpsWorks ID.
+tcInstanceId :: Lens' TemporaryCredential (Maybe Text)
+tcInstanceId = lens _tcInstanceId (\ s a -> s{_tcInstanceId = a});
+
+-- | The user name.
+tcUsername :: Lens' TemporaryCredential (Maybe Text)
+tcUsername = lens _tcUsername (\ s a -> s{_tcUsername = a});
+
+-- | The password.
+tcPassword :: Lens' TemporaryCredential (Maybe Text)
+tcPassword = lens _tcPassword (\ s a -> s{_tcPassword = a});
+
+-- | The length of time (in minutes) that the grant is valid. When the grant
+-- expires, at the end of this period, the user will no longer be able to
+-- use the credentials to log in. If they are logged in at the time, they
+-- will be automatically logged out.
+tcValidForInMinutes :: Lens' TemporaryCredential (Maybe Int)
+tcValidForInMinutes = lens _tcValidForInMinutes (\ s a -> s{_tcValidForInMinutes = a});
+
+instance FromJSON TemporaryCredential where
+        parseJSON
+          = withObject "TemporaryCredential"
+              (\ x ->
+                 TemporaryCredential' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Username") <*>
+                     (x .:? "Password")
+                     <*> (x .:? "ValidForInMinutes"))
+
+-- | Describes an instance\'s time-based auto scaling configuration.
+--
+-- /See:/ 'timeBasedAutoScalingConfiguration' smart constructor.
+data TimeBasedAutoScalingConfiguration = TimeBasedAutoScalingConfiguration'
+    { _tbascInstanceId          :: !(Maybe Text)
+    , _tbascAutoScalingSchedule :: !(Maybe WeeklyAutoScalingSchedule)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TimeBasedAutoScalingConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tbascInstanceId'
+--
+-- * 'tbascAutoScalingSchedule'
+timeBasedAutoScalingConfiguration
+    :: TimeBasedAutoScalingConfiguration
+timeBasedAutoScalingConfiguration =
+    TimeBasedAutoScalingConfiguration'
+    { _tbascInstanceId = Nothing
+    , _tbascAutoScalingSchedule = Nothing
+    }
+
+-- | The instance ID.
+tbascInstanceId :: Lens' TimeBasedAutoScalingConfiguration (Maybe Text)
+tbascInstanceId = lens _tbascInstanceId (\ s a -> s{_tbascInstanceId = a});
+
+-- | A 'WeeklyAutoScalingSchedule' object with the instance schedule.
+tbascAutoScalingSchedule :: Lens' TimeBasedAutoScalingConfiguration (Maybe WeeklyAutoScalingSchedule)
+tbascAutoScalingSchedule = lens _tbascAutoScalingSchedule (\ s a -> s{_tbascAutoScalingSchedule = a});
+
+instance FromJSON TimeBasedAutoScalingConfiguration
+         where
+        parseJSON
+          = withObject "TimeBasedAutoScalingConfiguration"
+              (\ x ->
+                 TimeBasedAutoScalingConfiguration' <$>
+                   (x .:? "InstanceId") <*>
+                     (x .:? "AutoScalingSchedule"))
+
+-- | Describes a user\'s SSH information.
+--
+-- /See:/ 'userProfile' smart constructor.
+data UserProfile = UserProfile'
+    { _upSSHUsername         :: !(Maybe Text)
+    , _upSSHPublicKey        :: !(Maybe Text)
+    , _upAllowSelfManagement :: !(Maybe Bool)
+    , _upIAMUserARN          :: !(Maybe Text)
+    , _upName                :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UserProfile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'upSSHUsername'
+--
+-- * 'upSSHPublicKey'
+--
+-- * 'upAllowSelfManagement'
+--
+-- * 'upIAMUserARN'
+--
+-- * 'upName'
+userProfile
+    :: UserProfile
+userProfile =
+    UserProfile'
+    { _upSSHUsername = Nothing
+    , _upSSHPublicKey = Nothing
+    , _upAllowSelfManagement = Nothing
+    , _upIAMUserARN = Nothing
+    , _upName = Nothing
+    }
+
+-- | The user\'s SSH user name.
+upSSHUsername :: Lens' UserProfile (Maybe Text)
+upSSHUsername = lens _upSSHUsername (\ s a -> s{_upSSHUsername = a});
+
+-- | The user\'s SSH public key.
+upSSHPublicKey :: Lens' UserProfile (Maybe Text)
+upSSHPublicKey = lens _upSSHPublicKey (\ s a -> s{_upSSHPublicKey = a});
+
+-- | Whether users can specify their own SSH public key through the My
+-- Settings page. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions>.
+upAllowSelfManagement :: Lens' UserProfile (Maybe Bool)
+upAllowSelfManagement = lens _upAllowSelfManagement (\ s a -> s{_upAllowSelfManagement = a});
+
+-- | The user\'s IAM ARN.
+upIAMUserARN :: Lens' UserProfile (Maybe Text)
+upIAMUserARN = lens _upIAMUserARN (\ s a -> s{_upIAMUserARN = a});
+
+-- | The user\'s name.
+upName :: Lens' UserProfile (Maybe Text)
+upName = lens _upName (\ s a -> s{_upName = a});
+
+instance FromJSON UserProfile where
+        parseJSON
+          = withObject "UserProfile"
+              (\ x ->
+                 UserProfile' <$>
+                   (x .:? "SshUsername") <*> (x .:? "SshPublicKey") <*>
+                     (x .:? "AllowSelfManagement")
+                     <*> (x .:? "IamUserArn")
+                     <*> (x .:? "Name"))
+
+-- | Describes an instance\'s Amazon EBS volume.
+--
+-- /See:/ 'volume' smart constructor.
+data Volume = Volume'
+    { _vInstanceId       :: !(Maybe Text)
+    , _vStatus           :: !(Maybe Text)
+    , _vSize             :: !(Maybe Int)
+    , _vIOPS             :: !(Maybe Int)
+    , _vDevice           :: !(Maybe Text)
+    , _vName             :: !(Maybe Text)
+    , _vAvailabilityZone :: !(Maybe Text)
+    , _vRAIdArrayId      :: !(Maybe Text)
+    , _vVolumeId         :: !(Maybe Text)
+    , _vRegion           :: !(Maybe Text)
+    , _vVolumeType       :: !(Maybe Text)
+    , _vEC2VolumeId      :: !(Maybe Text)
+    , _vMountPoint       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Volume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vInstanceId'
+--
+-- * 'vStatus'
+--
+-- * 'vSize'
+--
+-- * 'vIOPS'
+--
+-- * 'vDevice'
+--
+-- * 'vName'
+--
+-- * 'vAvailabilityZone'
+--
+-- * 'vRAIdArrayId'
+--
+-- * 'vVolumeId'
+--
+-- * 'vRegion'
+--
+-- * 'vVolumeType'
+--
+-- * 'vEC2VolumeId'
+--
+-- * 'vMountPoint'
+volume
+    :: Volume
+volume =
+    Volume'
+    { _vInstanceId = Nothing
+    , _vStatus = Nothing
+    , _vSize = Nothing
+    , _vIOPS = Nothing
+    , _vDevice = Nothing
+    , _vName = Nothing
+    , _vAvailabilityZone = Nothing
+    , _vRAIdArrayId = Nothing
+    , _vVolumeId = Nothing
+    , _vRegion = Nothing
+    , _vVolumeType = Nothing
+    , _vEC2VolumeId = Nothing
+    , _vMountPoint = Nothing
+    }
+
+-- | The instance ID.
+vInstanceId :: Lens' Volume (Maybe Text)
+vInstanceId = lens _vInstanceId (\ s a -> s{_vInstanceId = a});
+
+-- | The value returned by
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeVolumes.html DescribeVolumes>.
+vStatus :: Lens' Volume (Maybe Text)
+vStatus = lens _vStatus (\ s a -> s{_vStatus = a});
+
+-- | The volume size.
+vSize :: Lens' Volume (Maybe Int)
+vSize = lens _vSize (\ s a -> s{_vSize = a});
+
+-- | For PIOPS volumes, the IOPS per disk.
+vIOPS :: Lens' Volume (Maybe Int)
+vIOPS = lens _vIOPS (\ s a -> s{_vIOPS = a});
+
+-- | The device name.
+vDevice :: Lens' Volume (Maybe Text)
+vDevice = lens _vDevice (\ s a -> s{_vDevice = a});
+
+-- | The volume name.
+vName :: Lens' Volume (Maybe Text)
+vName = lens _vName (\ s a -> s{_vName = a});
+
+-- | The volume Availability Zone. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+vAvailabilityZone :: Lens' Volume (Maybe Text)
+vAvailabilityZone = lens _vAvailabilityZone (\ s a -> s{_vAvailabilityZone = a});
+
+-- | The RAID array ID.
+vRAIdArrayId :: Lens' Volume (Maybe Text)
+vRAIdArrayId = lens _vRAIdArrayId (\ s a -> s{_vRAIdArrayId = a});
+
+-- | The volume ID.
+vVolumeId :: Lens' Volume (Maybe Text)
+vVolumeId = lens _vVolumeId (\ s a -> s{_vVolumeId = a});
+
+-- | The AWS region. For more information about AWS regions, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+vRegion :: Lens' Volume (Maybe Text)
+vRegion = lens _vRegion (\ s a -> s{_vRegion = a});
+
+-- | The volume type, standard or PIOPS.
+vVolumeType :: Lens' Volume (Maybe Text)
+vVolumeType = lens _vVolumeType (\ s a -> s{_vVolumeType = a});
+
+-- | The Amazon EC2 volume ID.
+vEC2VolumeId :: Lens' Volume (Maybe Text)
+vEC2VolumeId = lens _vEC2VolumeId (\ s a -> s{_vEC2VolumeId = a});
+
+-- | The volume mount point. For example \"\/dev\/sdh\".
+vMountPoint :: Lens' Volume (Maybe Text)
+vMountPoint = lens _vMountPoint (\ s a -> s{_vMountPoint = a});
+
+instance FromJSON Volume where
+        parseJSON
+          = withObject "Volume"
+              (\ x ->
+                 Volume' <$>
+                   (x .:? "InstanceId") <*> (x .:? "Status") <*>
+                     (x .:? "Size")
+                     <*> (x .:? "Iops")
+                     <*> (x .:? "Device")
+                     <*> (x .:? "Name")
+                     <*> (x .:? "AvailabilityZone")
+                     <*> (x .:? "RaidArrayId")
+                     <*> (x .:? "VolumeId")
+                     <*> (x .:? "Region")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "Ec2VolumeId")
+                     <*> (x .:? "MountPoint"))
+
+-- | Describes an Amazon EBS volume configuration.
+--
+-- /See:/ 'volumeConfiguration' smart constructor.
+data VolumeConfiguration = VolumeConfiguration'
+    { _vcIOPS          :: !(Maybe Int)
+    , _vcRAIdLevel     :: !(Maybe Int)
+    , _vcVolumeType    :: !(Maybe Text)
+    , _vcMountPoint    :: !Text
+    , _vcNumberOfDisks :: !Int
+    , _vcSize          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeConfiguration' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vcIOPS'
+--
+-- * 'vcRAIdLevel'
+--
+-- * 'vcVolumeType'
+--
+-- * 'vcMountPoint'
+--
+-- * 'vcNumberOfDisks'
+--
+-- * 'vcSize'
+volumeConfiguration
+    :: Text -- ^ 'vcMountPoint'
+    -> Int -- ^ 'vcNumberOfDisks'
+    -> Int -- ^ 'vcSize'
+    -> VolumeConfiguration
+volumeConfiguration pMountPoint_ pNumberOfDisks_ pSize_ =
+    VolumeConfiguration'
+    { _vcIOPS = Nothing
+    , _vcRAIdLevel = Nothing
+    , _vcVolumeType = Nothing
+    , _vcMountPoint = pMountPoint_
+    , _vcNumberOfDisks = pNumberOfDisks_
+    , _vcSize = pSize_
+    }
+
+-- | For PIOPS volumes, the IOPS per disk.
+vcIOPS :: Lens' VolumeConfiguration (Maybe Int)
+vcIOPS = lens _vcIOPS (\ s a -> s{_vcIOPS = a});
+
+-- | The volume
+-- <http://en.wikipedia.org/wiki/Standard_RAID_levels RAID level>.
+vcRAIdLevel :: Lens' VolumeConfiguration (Maybe Int)
+vcRAIdLevel = lens _vcRAIdLevel (\ s a -> s{_vcRAIdLevel = a});
+
+-- | The volume type:
+--
+-- -   'standard' - Magnetic
+-- -   'io1' - Provisioned IOPS (SSD)
+-- -   'gp2' - General Purpose (SSD)
+vcVolumeType :: Lens' VolumeConfiguration (Maybe Text)
+vcVolumeType = lens _vcVolumeType (\ s a -> s{_vcVolumeType = a});
+
+-- | The volume mount point. For example \"\/dev\/sdh\".
+vcMountPoint :: Lens' VolumeConfiguration Text
+vcMountPoint = lens _vcMountPoint (\ s a -> s{_vcMountPoint = a});
+
+-- | The number of disks in the volume.
+vcNumberOfDisks :: Lens' VolumeConfiguration Int
+vcNumberOfDisks = lens _vcNumberOfDisks (\ s a -> s{_vcNumberOfDisks = a});
+
+-- | The volume size.
+vcSize :: Lens' VolumeConfiguration Int
+vcSize = lens _vcSize (\ s a -> s{_vcSize = a});
+
+instance FromJSON VolumeConfiguration where
+        parseJSON
+          = withObject "VolumeConfiguration"
+              (\ x ->
+                 VolumeConfiguration' <$>
+                   (x .:? "Iops") <*> (x .:? "RaidLevel") <*>
+                     (x .:? "VolumeType")
+                     <*> (x .: "MountPoint")
+                     <*> (x .: "NumberOfDisks")
+                     <*> (x .: "Size"))
+
+instance ToJSON VolumeConfiguration where
+        toJSON VolumeConfiguration'{..}
+          = object
+              ["Iops" .= _vcIOPS, "RaidLevel" .= _vcRAIdLevel,
+               "VolumeType" .= _vcVolumeType,
+               "MountPoint" .= _vcMountPoint,
+               "NumberOfDisks" .= _vcNumberOfDisks,
+               "Size" .= _vcSize]
+
+-- | Describes a time-based instance\'s auto scaling schedule. The schedule
+-- consists of a set of key-value pairs.
+--
+-- -   The key is the time period (a UTC hour) and must be an integer from
+--     0 - 23.
+-- -   The value indicates whether the instance should be online or offline
+--     for the specified period, and must be set to \"on\" or \"off\"
+--
+-- The default setting for all time periods is off, so you use the
+-- following parameters primarily to specify the online periods. You don\'t
+-- have to explicitly specify offline periods unless you want to change an
+-- online period to an offline period.
+--
+-- The following example specifies that the instance should be online for
+-- four hours, from UTC 1200 - 1600. It will be off for the remainder of
+-- the day.
+--
+-- ' { \"12\":\"on\", \"13\":\"on\", \"14\":\"on\", \"15\":\"on\" } '
+--
+-- /See:/ 'weeklyAutoScalingSchedule' smart constructor.
+data WeeklyAutoScalingSchedule = WeeklyAutoScalingSchedule'
+    { _wassThursday  :: !(Maybe (Map Text Text))
+    , _wassWednesday :: !(Maybe (Map Text Text))
+    , _wassSaturday  :: !(Maybe (Map Text Text))
+    , _wassMonday    :: !(Maybe (Map Text Text))
+    , _wassFriday    :: !(Maybe (Map Text Text))
+    , _wassSunday    :: !(Maybe (Map Text Text))
+    , _wassTuesday   :: !(Maybe (Map Text Text))
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WeeklyAutoScalingSchedule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'wassThursday'
+--
+-- * 'wassWednesday'
+--
+-- * 'wassSaturday'
+--
+-- * 'wassMonday'
+--
+-- * 'wassFriday'
+--
+-- * 'wassSunday'
+--
+-- * 'wassTuesday'
+weeklyAutoScalingSchedule
+    :: WeeklyAutoScalingSchedule
+weeklyAutoScalingSchedule =
+    WeeklyAutoScalingSchedule'
+    { _wassThursday = Nothing
+    , _wassWednesday = Nothing
+    , _wassSaturday = Nothing
+    , _wassMonday = Nothing
+    , _wassFriday = Nothing
+    , _wassSunday = Nothing
+    , _wassTuesday = Nothing
+    }
+
+-- | The schedule for Thursday.
+wassThursday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassThursday = lens _wassThursday (\ s a -> s{_wassThursday = a}) . _Default . _Map;
+
+-- | The schedule for Wednesday.
+wassWednesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassWednesday = lens _wassWednesday (\ s a -> s{_wassWednesday = a}) . _Default . _Map;
+
+-- | The schedule for Saturday.
+wassSaturday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassSaturday = lens _wassSaturday (\ s a -> s{_wassSaturday = a}) . _Default . _Map;
+
+-- | The schedule for Monday.
+wassMonday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassMonday = lens _wassMonday (\ s a -> s{_wassMonday = a}) . _Default . _Map;
+
+-- | The schedule for Friday.
+wassFriday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassFriday = lens _wassFriday (\ s a -> s{_wassFriday = a}) . _Default . _Map;
+
+-- | The schedule for Sunday.
+wassSunday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassSunday = lens _wassSunday (\ s a -> s{_wassSunday = a}) . _Default . _Map;
+
+-- | The schedule for Tuesday.
+wassTuesday :: Lens' WeeklyAutoScalingSchedule (HashMap Text Text)
+wassTuesday = lens _wassTuesday (\ s a -> s{_wassTuesday = a}) . _Default . _Map;
+
+instance FromJSON WeeklyAutoScalingSchedule where
+        parseJSON
+          = withObject "WeeklyAutoScalingSchedule"
+              (\ x ->
+                 WeeklyAutoScalingSchedule' <$>
+                   (x .:? "Thursday" .!= mempty) <*>
+                     (x .:? "Wednesday" .!= mempty)
+                     <*> (x .:? "Saturday" .!= mempty)
+                     <*> (x .:? "Monday" .!= mempty)
+                     <*> (x .:? "Friday" .!= mempty)
+                     <*> (x .:? "Sunday" .!= mempty)
+                     <*> (x .:? "Tuesday" .!= mempty))
+
+instance ToJSON WeeklyAutoScalingSchedule where
+        toJSON WeeklyAutoScalingSchedule'{..}
+          = object
+              ["Thursday" .= _wassThursday,
+               "Wednesday" .= _wassWednesday,
+               "Saturday" .= _wassSaturday, "Monday" .= _wassMonday,
+               "Friday" .= _wassFriday, "Sunday" .= _wassSunday,
+               "Tuesday" .= _wassTuesday]
diff --git a/gen/Network/AWS/OpsWorks/Types/Sum.hs b/gen/Network/AWS/OpsWorks/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/Types/Sum.hs
@@ -0,0 +1,509 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE LambdaCase         #-}
+{-# LANGUAGE OverloadedStrings  #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.OpsWorks.Types.Sum
+-- Copyright   : (c) 2013-2015 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.OpsWorks.Types.Sum where
+
+import           Network.AWS.Prelude
+
+data AppAttributesKeys
+    = AWSFlowRubySettings
+    | AutoBundleOnDeploy
+    | DocumentRoot
+    | RailsEnv
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText AppAttributesKeys where
+    parser = takeLowerText >>= \case
+        "awsflowrubysettings" -> pure AWSFlowRubySettings
+        "autobundleondeploy" -> pure AutoBundleOnDeploy
+        "documentroot" -> pure DocumentRoot
+        "railsenv" -> pure RailsEnv
+        e -> fromTextError $ "Failure parsing AppAttributesKeys from value: '" <> e
+           <> "'. Accepted values: awsflowrubysettings, autobundleondeploy, documentroot, railsenv"
+
+instance ToText AppAttributesKeys where
+    toText = \case
+        AWSFlowRubySettings -> "awsflowrubysettings"
+        AutoBundleOnDeploy -> "autobundleondeploy"
+        DocumentRoot -> "documentroot"
+        RailsEnv -> "railsenv"
+
+instance Hashable     AppAttributesKeys
+instance ToByteString AppAttributesKeys
+instance ToQuery      AppAttributesKeys
+instance ToHeader     AppAttributesKeys
+
+instance ToJSON AppAttributesKeys where
+    toJSON = toJSONText
+
+instance FromJSON AppAttributesKeys where
+    parseJSON = parseJSONText "AppAttributesKeys"
+
+data AppType
+    = ATAWSFlowRuby
+    | ATJava
+    | ATNodejs
+    | ATOther
+    | ATPHP
+    | ATRails
+    | ATStatic
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText AppType where
+    parser = takeLowerText >>= \case
+        "aws-flow-ruby" -> pure ATAWSFlowRuby
+        "java" -> pure ATJava
+        "nodejs" -> pure ATNodejs
+        "other" -> pure ATOther
+        "php" -> pure ATPHP
+        "rails" -> pure ATRails
+        "static" -> pure ATStatic
+        e -> fromTextError $ "Failure parsing AppType from value: '" <> e
+           <> "'. Accepted values: aws-flow-ruby, java, nodejs, other, php, rails, static"
+
+instance ToText AppType where
+    toText = \case
+        ATAWSFlowRuby -> "aws-flow-ruby"
+        ATJava -> "java"
+        ATNodejs -> "nodejs"
+        ATOther -> "other"
+        ATPHP -> "php"
+        ATRails -> "rails"
+        ATStatic -> "static"
+
+instance Hashable     AppType
+instance ToByteString AppType
+instance ToQuery      AppType
+instance ToHeader     AppType
+
+instance ToJSON AppType where
+    toJSON = toJSONText
+
+instance FromJSON AppType where
+    parseJSON = parseJSONText "AppType"
+
+data Architecture
+    = I386
+    | X86_64
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText Architecture where
+    parser = takeLowerText >>= \case
+        "i386" -> pure I386
+        "x86_64" -> pure X86_64
+        e -> fromTextError $ "Failure parsing Architecture from value: '" <> e
+           <> "'. Accepted values: i386, x86_64"
+
+instance ToText Architecture where
+    toText = \case
+        I386 -> "i386"
+        X86_64 -> "x86_64"
+
+instance Hashable     Architecture
+instance ToByteString Architecture
+instance ToQuery      Architecture
+instance ToHeader     Architecture
+
+instance ToJSON Architecture where
+    toJSON = toJSONText
+
+instance FromJSON Architecture where
+    parseJSON = parseJSONText "Architecture"
+
+data AutoScalingType
+    = Load
+    | Timer
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText AutoScalingType where
+    parser = takeLowerText >>= \case
+        "load" -> pure Load
+        "timer" -> pure Timer
+        e -> fromTextError $ "Failure parsing AutoScalingType from value: '" <> e
+           <> "'. Accepted values: load, timer"
+
+instance ToText AutoScalingType where
+    toText = \case
+        Load -> "load"
+        Timer -> "timer"
+
+instance Hashable     AutoScalingType
+instance ToByteString AutoScalingType
+instance ToQuery      AutoScalingType
+instance ToHeader     AutoScalingType
+
+instance ToJSON AutoScalingType where
+    toJSON = toJSONText
+
+instance FromJSON AutoScalingType where
+    parseJSON = parseJSONText "AutoScalingType"
+
+data DeploymentCommandName
+    = Configure
+    | Deploy
+    | ExecuteRecipes
+    | InstallDependencies
+    | Restart
+    | Rollback
+    | Setup
+    | Start
+    | Stop
+    | Undeploy
+    | UpdateCustomCookbooks
+    | UpdateDependencies
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText DeploymentCommandName where
+    parser = takeLowerText >>= \case
+        "configure" -> pure Configure
+        "deploy" -> pure Deploy
+        "execute_recipes" -> pure ExecuteRecipes
+        "install_dependencies" -> pure InstallDependencies
+        "restart" -> pure Restart
+        "rollback" -> pure Rollback
+        "setup" -> pure Setup
+        "start" -> pure Start
+        "stop" -> pure Stop
+        "undeploy" -> pure Undeploy
+        "update_custom_cookbooks" -> pure UpdateCustomCookbooks
+        "update_dependencies" -> pure UpdateDependencies
+        e -> fromTextError $ "Failure parsing DeploymentCommandName from value: '" <> e
+           <> "'. Accepted values: configure, deploy, execute_recipes, install_dependencies, restart, rollback, setup, start, stop, undeploy, update_custom_cookbooks, update_dependencies"
+
+instance ToText DeploymentCommandName where
+    toText = \case
+        Configure -> "configure"
+        Deploy -> "deploy"
+        ExecuteRecipes -> "execute_recipes"
+        InstallDependencies -> "install_dependencies"
+        Restart -> "restart"
+        Rollback -> "rollback"
+        Setup -> "setup"
+        Start -> "start"
+        Stop -> "stop"
+        Undeploy -> "undeploy"
+        UpdateCustomCookbooks -> "update_custom_cookbooks"
+        UpdateDependencies -> "update_dependencies"
+
+instance Hashable     DeploymentCommandName
+instance ToByteString DeploymentCommandName
+instance ToQuery      DeploymentCommandName
+instance ToHeader     DeploymentCommandName
+
+instance ToJSON DeploymentCommandName where
+    toJSON = toJSONText
+
+instance FromJSON DeploymentCommandName where
+    parseJSON = parseJSONText "DeploymentCommandName"
+
+data LayerAttributesKeys
+    = BundlerVersion
+    | EcsClusterARN
+    | EnableHaproxyStats
+    | GangliaPassword
+    | GangliaURL
+    | GangliaUser
+    | HaproxyHealthCheckMethod
+    | HaproxyHealthCheckURL
+    | HaproxyStatsPassword
+    | HaproxyStatsURL
+    | HaproxyStatsUser
+    | JVM
+    | JVMOptions
+    | JVMVersion
+    | JavaAppServer
+    | JavaAppServerVersion
+    | ManageBundler
+    | MemcachedMemory
+    | MysqlRootPassword
+    | MysqlRootPasswordUbiquitous
+    | NodejsVersion
+    | PassengerVersion
+    | RailsStack
+    | RubyVersion
+    | RubygemsVersion
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText LayerAttributesKeys where
+    parser = takeLowerText >>= \case
+        "bundlerversion" -> pure BundlerVersion
+        "ecsclusterarn" -> pure EcsClusterARN
+        "enablehaproxystats" -> pure EnableHaproxyStats
+        "gangliapassword" -> pure GangliaPassword
+        "gangliaurl" -> pure GangliaURL
+        "gangliauser" -> pure GangliaUser
+        "haproxyhealthcheckmethod" -> pure HaproxyHealthCheckMethod
+        "haproxyhealthcheckurl" -> pure HaproxyHealthCheckURL
+        "haproxystatspassword" -> pure HaproxyStatsPassword
+        "haproxystatsurl" -> pure HaproxyStatsURL
+        "haproxystatsuser" -> pure HaproxyStatsUser
+        "jvm" -> pure JVM
+        "jvmoptions" -> pure JVMOptions
+        "jvmversion" -> pure JVMVersion
+        "javaappserver" -> pure JavaAppServer
+        "javaappserverversion" -> pure JavaAppServerVersion
+        "managebundler" -> pure ManageBundler
+        "memcachedmemory" -> pure MemcachedMemory
+        "mysqlrootpassword" -> pure MysqlRootPassword
+        "mysqlrootpasswordubiquitous" -> pure MysqlRootPasswordUbiquitous
+        "nodejsversion" -> pure NodejsVersion
+        "passengerversion" -> pure PassengerVersion
+        "railsstack" -> pure RailsStack
+        "rubyversion" -> pure RubyVersion
+        "rubygemsversion" -> pure RubygemsVersion
+        e -> fromTextError $ "Failure parsing LayerAttributesKeys from value: '" <> e
+           <> "'. Accepted values: bundlerversion, ecsclusterarn, enablehaproxystats, gangliapassword, gangliaurl, gangliauser, haproxyhealthcheckmethod, haproxyhealthcheckurl, haproxystatspassword, haproxystatsurl, haproxystatsuser, jvm, jvmoptions, jvmversion, javaappserver, javaappserverversion, managebundler, memcachedmemory, mysqlrootpassword, mysqlrootpasswordubiquitous, nodejsversion, passengerversion, railsstack, rubyversion, rubygemsversion"
+
+instance ToText LayerAttributesKeys where
+    toText = \case
+        BundlerVersion -> "bundlerversion"
+        EcsClusterARN -> "ecsclusterarn"
+        EnableHaproxyStats -> "enablehaproxystats"
+        GangliaPassword -> "gangliapassword"
+        GangliaURL -> "gangliaurl"
+        GangliaUser -> "gangliauser"
+        HaproxyHealthCheckMethod -> "haproxyhealthcheckmethod"
+        HaproxyHealthCheckURL -> "haproxyhealthcheckurl"
+        HaproxyStatsPassword -> "haproxystatspassword"
+        HaproxyStatsURL -> "haproxystatsurl"
+        HaproxyStatsUser -> "haproxystatsuser"
+        JVM -> "jvm"
+        JVMOptions -> "jvmoptions"
+        JVMVersion -> "jvmversion"
+        JavaAppServer -> "javaappserver"
+        JavaAppServerVersion -> "javaappserverversion"
+        ManageBundler -> "managebundler"
+        MemcachedMemory -> "memcachedmemory"
+        MysqlRootPassword -> "mysqlrootpassword"
+        MysqlRootPasswordUbiquitous -> "mysqlrootpasswordubiquitous"
+        NodejsVersion -> "nodejsversion"
+        PassengerVersion -> "passengerversion"
+        RailsStack -> "railsstack"
+        RubyVersion -> "rubyversion"
+        RubygemsVersion -> "rubygemsversion"
+
+instance Hashable     LayerAttributesKeys
+instance ToByteString LayerAttributesKeys
+instance ToQuery      LayerAttributesKeys
+instance ToHeader     LayerAttributesKeys
+
+instance ToJSON LayerAttributesKeys where
+    toJSON = toJSONText
+
+instance FromJSON LayerAttributesKeys where
+    parseJSON = parseJSONText "LayerAttributesKeys"
+
+data LayerType
+    = AWSFlowRuby
+    | Custom
+    | DBMaster
+    | EcsCluster
+    | JavaApp
+    | LB
+    | Memcached
+    | MonitoringMaster
+    | NodejsApp
+    | PHPApp
+    | RailsApp
+    | Web
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText LayerType where
+    parser = takeLowerText >>= \case
+        "aws-flow-ruby" -> pure AWSFlowRuby
+        "custom" -> pure Custom
+        "db-master" -> pure DBMaster
+        "ecs-cluster" -> pure EcsCluster
+        "java-app" -> pure JavaApp
+        "lb" -> pure LB
+        "memcached" -> pure Memcached
+        "monitoring-master" -> pure MonitoringMaster
+        "nodejs-app" -> pure NodejsApp
+        "php-app" -> pure PHPApp
+        "rails-app" -> pure RailsApp
+        "web" -> pure Web
+        e -> fromTextError $ "Failure parsing LayerType from value: '" <> e
+           <> "'. Accepted values: aws-flow-ruby, custom, db-master, ecs-cluster, java-app, lb, memcached, monitoring-master, nodejs-app, php-app, rails-app, web"
+
+instance ToText LayerType where
+    toText = \case
+        AWSFlowRuby -> "aws-flow-ruby"
+        Custom -> "custom"
+        DBMaster -> "db-master"
+        EcsCluster -> "ecs-cluster"
+        JavaApp -> "java-app"
+        LB -> "lb"
+        Memcached -> "memcached"
+        MonitoringMaster -> "monitoring-master"
+        NodejsApp -> "nodejs-app"
+        PHPApp -> "php-app"
+        RailsApp -> "rails-app"
+        Web -> "web"
+
+instance Hashable     LayerType
+instance ToByteString LayerType
+instance ToQuery      LayerType
+instance ToHeader     LayerType
+
+instance ToJSON LayerType where
+    toJSON = toJSONText
+
+instance FromJSON LayerType where
+    parseJSON = parseJSONText "LayerType"
+
+data RootDeviceType
+    = EBS
+    | InstanceStore
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText RootDeviceType where
+    parser = takeLowerText >>= \case
+        "ebs" -> pure EBS
+        "instance-store" -> pure InstanceStore
+        e -> fromTextError $ "Failure parsing RootDeviceType from value: '" <> e
+           <> "'. Accepted values: ebs, instance-store"
+
+instance ToText RootDeviceType where
+    toText = \case
+        EBS -> "ebs"
+        InstanceStore -> "instance-store"
+
+instance Hashable     RootDeviceType
+instance ToByteString RootDeviceType
+instance ToQuery      RootDeviceType
+instance ToHeader     RootDeviceType
+
+instance ToJSON RootDeviceType where
+    toJSON = toJSONText
+
+instance FromJSON RootDeviceType where
+    parseJSON = parseJSONText "RootDeviceType"
+
+data SourceType
+    = Archive
+    | Git
+    | S3
+    | SVN
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText SourceType where
+    parser = takeLowerText >>= \case
+        "archive" -> pure Archive
+        "git" -> pure Git
+        "s3" -> pure S3
+        "svn" -> pure SVN
+        e -> fromTextError $ "Failure parsing SourceType from value: '" <> e
+           <> "'. Accepted values: archive, git, s3, svn"
+
+instance ToText SourceType where
+    toText = \case
+        Archive -> "archive"
+        Git -> "git"
+        S3 -> "s3"
+        SVN -> "svn"
+
+instance Hashable     SourceType
+instance ToByteString SourceType
+instance ToQuery      SourceType
+instance ToHeader     SourceType
+
+instance ToJSON SourceType where
+    toJSON = toJSONText
+
+instance FromJSON SourceType where
+    parseJSON = parseJSONText "SourceType"
+
+data StackAttributesKeys =
+    Color
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText StackAttributesKeys where
+    parser = takeLowerText >>= \case
+        "color" -> pure Color
+        e -> fromTextError $ "Failure parsing StackAttributesKeys from value: '" <> e
+           <> "'. Accepted values: color"
+
+instance ToText StackAttributesKeys where
+    toText = \case
+        Color -> "color"
+
+instance Hashable     StackAttributesKeys
+instance ToByteString StackAttributesKeys
+instance ToQuery      StackAttributesKeys
+instance ToHeader     StackAttributesKeys
+
+instance ToJSON StackAttributesKeys where
+    toJSON = toJSONText
+
+instance FromJSON StackAttributesKeys where
+    parseJSON = parseJSONText "StackAttributesKeys"
+
+data VirtualizationType
+    = HVM
+    | Paravirtual
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText VirtualizationType where
+    parser = takeLowerText >>= \case
+        "hvm" -> pure HVM
+        "paravirtual" -> pure Paravirtual
+        e -> fromTextError $ "Failure parsing VirtualizationType from value: '" <> e
+           <> "'. Accepted values: hvm, paravirtual"
+
+instance ToText VirtualizationType where
+    toText = \case
+        HVM -> "hvm"
+        Paravirtual -> "paravirtual"
+
+instance Hashable     VirtualizationType
+instance ToByteString VirtualizationType
+instance ToQuery      VirtualizationType
+instance ToHeader     VirtualizationType
+
+instance FromJSON VirtualizationType where
+    parseJSON = parseJSONText "VirtualizationType"
+
+data VolumeType
+    = GP2
+    | IO1
+    | Standard
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText VolumeType where
+    parser = takeLowerText >>= \case
+        "gp2" -> pure GP2
+        "io1" -> pure IO1
+        "standard" -> pure Standard
+        e -> fromTextError $ "Failure parsing VolumeType from value: '" <> e
+           <> "'. Accepted values: gp2, io1, standard"
+
+instance ToText VolumeType where
+    toText = \case
+        GP2 -> "gp2"
+        IO1 -> "io1"
+        Standard -> "standard"
+
+instance Hashable     VolumeType
+instance ToByteString VolumeType
+instance ToQuery      VolumeType
+instance ToHeader     VolumeType
+
+instance ToJSON VolumeType where
+    toJSON = toJSONText
+
+instance FromJSON VolumeType where
+    parseJSON = parseJSONText "VolumeType"
diff --git a/gen/Network/AWS/OpsWorks/UnassignInstance.hs b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
--- a/gen/Network/AWS/OpsWorks/UnassignInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignInstance.hs
@@ -1,101 +1,108 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UnassignInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Unassigns a registered instance from all of it's layers. The instance remains
--- in the stack as an unassigned instance and can be assigned to another layer,
--- as needed. You cannot use this action with instances that were created with
--- AWS OpsWorks.
+-- Unassigns a registered instance from all of it\'s layers. The instance
+-- remains in the stack as an unassigned instance and can be assigned to
+-- another layer, as needed. You cannot use this action with instances that
+-- were created with AWS OpsWorks.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UnassignInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UnassignInstance.html AWS API Reference> for UnassignInstance.
 module Network.AWS.OpsWorks.UnassignInstance
     (
-    -- * Request
-      UnassignInstance
-    -- ** Request constructor
-    , unassignInstance
-    -- ** Request lenses
-    , ui1InstanceId
+    -- * Creating a Request
+      unassignInstance
+    , UnassignInstance
+    -- * Request Lenses
+    , uInstanceId
 
-    -- * Response
-    , UnassignInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , unassignInstanceResponse
+    , UnassignInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype UnassignInstance = UnassignInstance
-    { _ui1InstanceId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'unassignInstance' smart constructor.
+newtype UnassignInstance = UnassignInstance'
+    { _uInstanceId :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UnassignInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UnassignInstance' with the minimum fields required to make a request.
 --
--- * 'ui1InstanceId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-unassignInstance :: Text -- ^ 'ui1InstanceId'
-                 -> UnassignInstance
-unassignInstance p1 = UnassignInstance
-    { _ui1InstanceId = p1
+-- * 'uInstanceId'
+unassignInstance
+    :: Text -- ^ 'uInstanceId'
+    -> UnassignInstance
+unassignInstance pInstanceId_ =
+    UnassignInstance'
+    { _uInstanceId = pInstanceId_
     }
 
 -- | The instance ID.
-ui1InstanceId :: Lens' UnassignInstance Text
-ui1InstanceId = lens _ui1InstanceId (\s a -> s { _ui1InstanceId = a })
+uInstanceId :: Lens' UnassignInstance Text
+uInstanceId = lens _uInstanceId (\ s a -> s{_uInstanceId = a});
 
-data UnassignInstanceResponse = UnassignInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UnassignInstance where
+        type Sv UnassignInstance = OpsWorks
+        type Rs UnassignInstance = UnassignInstanceResponse
+        request = postJSON
+        response = receiveNull UnassignInstanceResponse'
 
--- | 'UnassignInstanceResponse' constructor.
-unassignInstanceResponse :: UnassignInstanceResponse
-unassignInstanceResponse = UnassignInstanceResponse
+instance ToHeaders UnassignInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UnassignInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UnassignInstance where
+        toJSON UnassignInstance'{..}
+          = object ["InstanceId" .= _uInstanceId]
+
 instance ToPath UnassignInstance where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UnassignInstance where
-    toQuery = const mempty
-
-instance ToHeaders UnassignInstance
-
-instance ToJSON UnassignInstance where
-    toJSON UnassignInstance{..} = object
-        [ "InstanceId" .= _ui1InstanceId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UnassignInstance where
-    type Sv UnassignInstance = OpsWorks
-    type Rs UnassignInstance = UnassignInstanceResponse
+-- | /See:/ 'unassignInstanceResponse' smart constructor.
+data UnassignInstanceResponse =
+    UnassignInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UnassignInstance"
-    response = nullResponse UnassignInstanceResponse
+-- | Creates a value of 'UnassignInstanceResponse' with the minimum fields required to make a request.
+--
+unassignInstanceResponse
+    :: UnassignInstanceResponse
+unassignInstanceResponse = UnassignInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/UnassignVolume.hs b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
--- a/gen/Network/AWS/OpsWorks/UnassignVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UnassignVolume.hs
@@ -1,99 +1,107 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UnassignVolume
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Unassigns an assigned Amazon EBS volume. The volume remains registered with
--- the stack. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+-- Unassigns an assigned Amazon EBS volume. The volume remains registered
+-- with the stack. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UnassignVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UnassignVolume.html AWS API Reference> for UnassignVolume.
 module Network.AWS.OpsWorks.UnassignVolume
     (
-    -- * Request
-      UnassignVolume
-    -- ** Request constructor
-    , unassignVolume
-    -- ** Request lenses
+    -- * Creating a Request
+      unassignVolume
+    , UnassignVolume
+    -- * Request Lenses
     , uvVolumeId
 
-    -- * Response
-    , UnassignVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , unassignVolumeResponse
+    , UnassignVolumeResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype UnassignVolume = UnassignVolume
+-- | /See:/ 'unassignVolume' smart constructor.
+newtype UnassignVolume = UnassignVolume'
     { _uvVolumeId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UnassignVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UnassignVolume' with the minimum fields required to make a request.
 --
--- * 'uvVolumeId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-unassignVolume :: Text -- ^ 'uvVolumeId'
-               -> UnassignVolume
-unassignVolume p1 = UnassignVolume
-    { _uvVolumeId = p1
+-- * 'uvVolumeId'
+unassignVolume
+    :: Text -- ^ 'uvVolumeId'
+    -> UnassignVolume
+unassignVolume pVolumeId_ =
+    UnassignVolume'
+    { _uvVolumeId = pVolumeId_
     }
 
 -- | The volume ID.
 uvVolumeId :: Lens' UnassignVolume Text
-uvVolumeId = lens _uvVolumeId (\s a -> s { _uvVolumeId = a })
+uvVolumeId = lens _uvVolumeId (\ s a -> s{_uvVolumeId = a});
 
-data UnassignVolumeResponse = UnassignVolumeResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UnassignVolume where
+        type Sv UnassignVolume = OpsWorks
+        type Rs UnassignVolume = UnassignVolumeResponse
+        request = postJSON
+        response = receiveNull UnassignVolumeResponse'
 
--- | 'UnassignVolumeResponse' constructor.
-unassignVolumeResponse :: UnassignVolumeResponse
-unassignVolumeResponse = UnassignVolumeResponse
+instance ToHeaders UnassignVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UnassignVolume" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UnassignVolume where
+        toJSON UnassignVolume'{..}
+          = object ["VolumeId" .= _uvVolumeId]
+
 instance ToPath UnassignVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UnassignVolume where
-    toQuery = const mempty
-
-instance ToHeaders UnassignVolume
-
-instance ToJSON UnassignVolume where
-    toJSON UnassignVolume{..} = object
-        [ "VolumeId" .= _uvVolumeId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UnassignVolume where
-    type Sv UnassignVolume = OpsWorks
-    type Rs UnassignVolume = UnassignVolumeResponse
+-- | /See:/ 'unassignVolumeResponse' smart constructor.
+data UnassignVolumeResponse =
+    UnassignVolumeResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UnassignVolume"
-    response = nullResponse UnassignVolumeResponse
+-- | Creates a value of 'UnassignVolumeResponse' with the minimum fields required to make a request.
+--
+unassignVolumeResponse
+    :: UnassignVolumeResponse
+unassignVolumeResponse = UnassignVolumeResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateApp.hs b/gen/Network/AWS/OpsWorks/UpdateApp.hs
--- a/gen/Network/AWS/OpsWorks/UpdateApp.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateApp.hs
@@ -1,213 +1,220 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateApp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a specified app.
+-- Updates a specified app.
 --
--- Required Permissions: To use this action, an IAM user must have a Deploy or
--- Manage permissions level for the stack, or an attached policy that explicitly
--- grants permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html ManagingUser Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Deploy or Manage permissions level for the stack, or an attached policy
+-- that explicitly grants permissions. For more information on user
+-- permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateApp.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateApp.html AWS API Reference> for UpdateApp.
 module Network.AWS.OpsWorks.UpdateApp
     (
-    -- * Request
-      UpdateApp
-    -- ** Request constructor
-    , updateApp
-    -- ** Request lenses
-    , uaAppId
-    , uaAppSource
-    , uaAttributes
-    , uaDataSources
-    , uaDescription
-    , uaDomains
-    , uaEnableSsl
+    -- * Creating a Request
+      updateApp
+    , UpdateApp
+    -- * Request Lenses
+    , uaSSLConfiguration
+    , uaEnableSSL
     , uaEnvironment
+    , uaDataSources
+    , uaAppSource
     , uaName
-    , uaSslConfiguration
+    , uaAttributes
     , uaType
+    , uaDomains
+    , uaDescription
+    , uaAppId
 
-    -- * Response
-    , UpdateAppResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateAppResponse
+    , UpdateAppResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateApp = UpdateApp
-    { _uaAppId            :: Text
-    , _uaAppSource        :: Maybe Source
-    , _uaAttributes       :: Map AppAttributesKeys Text
-    , _uaDataSources      :: List "DataSources" DataSource
-    , _uaDescription      :: Maybe Text
-    , _uaDomains          :: List "Domains" Text
-    , _uaEnableSsl        :: Maybe Bool
-    , _uaEnvironment      :: List "Environment" EnvironmentVariable
-    , _uaName             :: Maybe Text
-    , _uaSslConfiguration :: Maybe SslConfiguration
-    , _uaType             :: Maybe AppType
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'updateApp' smart constructor.
+data UpdateApp = UpdateApp'
+    { _uaSSLConfiguration :: !(Maybe SSLConfiguration)
+    , _uaEnableSSL        :: !(Maybe Bool)
+    , _uaEnvironment      :: !(Maybe [EnvironmentVariable])
+    , _uaDataSources      :: !(Maybe [DataSource])
+    , _uaAppSource        :: !(Maybe Source)
+    , _uaName             :: !(Maybe Text)
+    , _uaAttributes       :: !(Maybe (Map AppAttributesKeys Text))
+    , _uaType             :: !(Maybe AppType)
+    , _uaDomains          :: !(Maybe [Text])
+    , _uaDescription      :: !(Maybe Text)
+    , _uaAppId            :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateApp' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateApp' with the minimum fields required to make a request.
 --
--- * 'uaAppId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uaAppSource' @::@ 'Maybe' 'Source'
+-- * 'uaSSLConfiguration'
 --
--- * 'uaAttributes' @::@ 'HashMap' 'AppAttributesKeys' 'Text'
+-- * 'uaEnableSSL'
 --
--- * 'uaDataSources' @::@ ['DataSource']
+-- * 'uaEnvironment'
 --
--- * 'uaDescription' @::@ 'Maybe' 'Text'
+-- * 'uaDataSources'
 --
--- * 'uaDomains' @::@ ['Text']
+-- * 'uaAppSource'
 --
--- * 'uaEnableSsl' @::@ 'Maybe' 'Bool'
+-- * 'uaName'
 --
--- * 'uaEnvironment' @::@ ['EnvironmentVariable']
+-- * 'uaAttributes'
 --
--- * 'uaName' @::@ 'Maybe' 'Text'
+-- * 'uaType'
 --
--- * 'uaSslConfiguration' @::@ 'Maybe' 'SslConfiguration'
+-- * 'uaDomains'
 --
--- * 'uaType' @::@ 'Maybe' 'AppType'
+-- * 'uaDescription'
 --
-updateApp :: Text -- ^ 'uaAppId'
-          -> UpdateApp
-updateApp p1 = UpdateApp
-    { _uaAppId            = p1
-    , _uaName             = Nothing
-    , _uaDescription      = Nothing
-    , _uaDataSources      = mempty
-    , _uaType             = Nothing
-    , _uaAppSource        = Nothing
-    , _uaDomains          = mempty
-    , _uaEnableSsl        = Nothing
-    , _uaSslConfiguration = Nothing
-    , _uaAttributes       = mempty
-    , _uaEnvironment      = mempty
+-- * 'uaAppId'
+updateApp
+    :: Text -- ^ 'uaAppId'
+    -> UpdateApp
+updateApp pAppId_ =
+    UpdateApp'
+    { _uaSSLConfiguration = Nothing
+    , _uaEnableSSL = Nothing
+    , _uaEnvironment = Nothing
+    , _uaDataSources = Nothing
+    , _uaAppSource = Nothing
+    , _uaName = Nothing
+    , _uaAttributes = Nothing
+    , _uaType = Nothing
+    , _uaDomains = Nothing
+    , _uaDescription = Nothing
+    , _uaAppId = pAppId_
     }
 
--- | The app ID.
-uaAppId :: Lens' UpdateApp Text
-uaAppId = lens _uaAppId (\s a -> s { _uaAppId = a })
-
--- | A 'Source' object that specifies the app repository.
-uaAppSource :: Lens' UpdateApp (Maybe Source)
-uaAppSource = lens _uaAppSource (\s a -> s { _uaAppSource = a })
-
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-uaAttributes :: Lens' UpdateApp (HashMap AppAttributesKeys Text)
-uaAttributes = lens _uaAttributes (\s a -> s { _uaAttributes = a }) . _Map
-
--- | The app's data sources.
-uaDataSources :: Lens' UpdateApp [DataSource]
-uaDataSources = lens _uaDataSources (\s a -> s { _uaDataSources = a }) . _List
-
--- | A description of the app.
-uaDescription :: Lens' UpdateApp (Maybe Text)
-uaDescription = lens _uaDescription (\s a -> s { _uaDescription = a })
-
--- | The app's virtual host settings, with multiple domains separated by commas.
--- For example: ''www.example.com, example.com''
-uaDomains :: Lens' UpdateApp [Text]
-uaDomains = lens _uaDomains (\s a -> s { _uaDomains = a }) . _List
+-- | An 'SslConfiguration' object with the SSL configuration.
+uaSSLConfiguration :: Lens' UpdateApp (Maybe SSLConfiguration)
+uaSSLConfiguration = lens _uaSSLConfiguration (\ s a -> s{_uaSSLConfiguration = a});
 
 -- | Whether SSL is enabled for the app.
-uaEnableSsl :: Lens' UpdateApp (Maybe Bool)
-uaEnableSsl = lens _uaEnableSsl (\s a -> s { _uaEnableSsl = a })
+uaEnableSSL :: Lens' UpdateApp (Maybe Bool)
+uaEnableSSL = lens _uaEnableSSL (\ s a -> s{_uaEnableSSL = a});
 
--- | An array of 'EnvironmentVariable' objects that specify environment variables to
--- be associated with the app. After you deploy the app, these variables are
--- defined on the associated app server instances.For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
+-- | An array of 'EnvironmentVariable' objects that specify environment
+-- variables to be associated with the app. After you deploy the app, these
+-- variables are defined on the associated app server instances.For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingapps-creating.html#workingapps-creating-environment Environment Variables>.
 --
--- There is no specific limit on the number of environment variables. However,
--- the size of the associated data structure - which includes the variables'
--- names, values, and protected flag values - cannot exceed 10 KB (10240 Bytes).
--- This limit should accommodate most if not all use cases. Exceeding it will
--- cause an exception with the message, "Environment: is too large (maximum is
--- 10KB)."
+-- There is no specific limit on the number of environment variables.
+-- However, the size of the associated data structure - which includes the
+-- variables\' names, values, and protected flag values - cannot exceed 10
+-- KB (10240 Bytes). This limit should accommodate most if not all use
+-- cases. Exceeding it will cause an exception with the message,
+-- \"Environment: is too large (maximum is 10KB).\"
 --
--- This parameter is supported only by Chef 11.10 stacks. If you have specified
--- one or more environment variables, you cannot modify the stack's Chef
--- version.
+-- This parameter is supported only by Chef 11.10 stacks. If you have
+-- specified one or more environment variables, you cannot modify the
+-- stack\'s Chef version.
 uaEnvironment :: Lens' UpdateApp [EnvironmentVariable]
-uaEnvironment = lens _uaEnvironment (\s a -> s { _uaEnvironment = a }) . _List
+uaEnvironment = lens _uaEnvironment (\ s a -> s{_uaEnvironment = a}) . _Default . _Coerce;
 
+-- | The app\'s data sources.
+uaDataSources :: Lens' UpdateApp [DataSource]
+uaDataSources = lens _uaDataSources (\ s a -> s{_uaDataSources = a}) . _Default . _Coerce;
+
+-- | A 'Source' object that specifies the app repository.
+uaAppSource :: Lens' UpdateApp (Maybe Source)
+uaAppSource = lens _uaAppSource (\ s a -> s{_uaAppSource = a});
+
 -- | The app name.
 uaName :: Lens' UpdateApp (Maybe Text)
-uaName = lens _uaName (\s a -> s { _uaName = a })
+uaName = lens _uaName (\ s a -> s{_uaName = a});
 
--- | An 'SslConfiguration' object with the SSL configuration.
-uaSslConfiguration :: Lens' UpdateApp (Maybe SslConfiguration)
-uaSslConfiguration =
-    lens _uaSslConfiguration (\s a -> s { _uaSslConfiguration = a })
+-- | One or more user-defined key\/value pairs to be added to the stack
+-- attributes.
+uaAttributes :: Lens' UpdateApp (HashMap AppAttributesKeys Text)
+uaAttributes = lens _uaAttributes (\ s a -> s{_uaAttributes = a}) . _Default . _Map;
 
 -- | The app type.
 uaType :: Lens' UpdateApp (Maybe AppType)
-uaType = lens _uaType (\s a -> s { _uaType = a })
+uaType = lens _uaType (\ s a -> s{_uaType = a});
 
-data UpdateAppResponse = UpdateAppResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The app\'s virtual host settings, with multiple domains separated by
+-- commas. For example: '\'www.example.com, example.com\''
+uaDomains :: Lens' UpdateApp [Text]
+uaDomains = lens _uaDomains (\ s a -> s{_uaDomains = a}) . _Default . _Coerce;
 
--- | 'UpdateAppResponse' constructor.
-updateAppResponse :: UpdateAppResponse
-updateAppResponse = UpdateAppResponse
+-- | A description of the app.
+uaDescription :: Lens' UpdateApp (Maybe Text)
+uaDescription = lens _uaDescription (\ s a -> s{_uaDescription = a});
 
-instance ToPath UpdateApp where
-    toPath = const "/"
+-- | The app ID.
+uaAppId :: Lens' UpdateApp Text
+uaAppId = lens _uaAppId (\ s a -> s{_uaAppId = a});
 
-instance ToQuery UpdateApp where
-    toQuery = const mempty
+instance AWSRequest UpdateApp where
+        type Sv UpdateApp = OpsWorks
+        type Rs UpdateApp = UpdateAppResponse
+        request = postJSON
+        response = receiveNull UpdateAppResponse'
 
-instance ToHeaders UpdateApp
+instance ToHeaders UpdateApp where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateApp" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
 instance ToJSON UpdateApp where
-    toJSON UpdateApp{..} = object
-        [ "AppId"            .= _uaAppId
-        , "Name"             .= _uaName
-        , "Description"      .= _uaDescription
-        , "DataSources"      .= _uaDataSources
-        , "Type"             .= _uaType
-        , "AppSource"        .= _uaAppSource
-        , "Domains"          .= _uaDomains
-        , "EnableSsl"        .= _uaEnableSsl
-        , "SslConfiguration" .= _uaSslConfiguration
-        , "Attributes"       .= _uaAttributes
-        , "Environment"      .= _uaEnvironment
-        ]
+        toJSON UpdateApp'{..}
+          = object
+              ["SslConfiguration" .= _uaSSLConfiguration,
+               "EnableSsl" .= _uaEnableSSL,
+               "Environment" .= _uaEnvironment,
+               "DataSources" .= _uaDataSources,
+               "AppSource" .= _uaAppSource, "Name" .= _uaName,
+               "Attributes" .= _uaAttributes, "Type" .= _uaType,
+               "Domains" .= _uaDomains,
+               "Description" .= _uaDescription, "AppId" .= _uaAppId]
 
-instance AWSRequest UpdateApp where
-    type Sv UpdateApp = OpsWorks
-    type Rs UpdateApp = UpdateAppResponse
+instance ToPath UpdateApp where
+        toPath = const "/"
 
-    request  = post "UpdateApp"
-    response = nullResponse UpdateAppResponse
+instance ToQuery UpdateApp where
+        toQuery = const mempty
+
+-- | /See:/ 'updateAppResponse' smart constructor.
+data UpdateAppResponse =
+    UpdateAppResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateAppResponse' with the minimum fields required to make a request.
+--
+updateAppResponse
+    :: UpdateAppResponse
+updateAppResponse = UpdateAppResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs b/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/UpdateElasticIP.hs
@@ -0,0 +1,117 @@
+{-# 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.OpsWorks.UpdateElasticIP
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Updates a registered Elastic IP address\'s name. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateElasticIP.html AWS API Reference> for UpdateElasticIP.
+module Network.AWS.OpsWorks.UpdateElasticIP
+    (
+    -- * Creating a Request
+      updateElasticIP
+    , UpdateElasticIP
+    -- * Request Lenses
+    , ueiName
+    , ueiElasticIP
+
+    -- * Destructuring the Response
+    , updateElasticIPResponse
+    , UpdateElasticIPResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateElasticIP' smart constructor.
+data UpdateElasticIP = UpdateElasticIP'
+    { _ueiName      :: !(Maybe Text)
+    , _ueiElasticIP :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateElasticIP' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ueiName'
+--
+-- * 'ueiElasticIP'
+updateElasticIP
+    :: Text -- ^ 'ueiElasticIP'
+    -> UpdateElasticIP
+updateElasticIP pElasticIP_ =
+    UpdateElasticIP'
+    { _ueiName = Nothing
+    , _ueiElasticIP = pElasticIP_
+    }
+
+-- | The new name.
+ueiName :: Lens' UpdateElasticIP (Maybe Text)
+ueiName = lens _ueiName (\ s a -> s{_ueiName = a});
+
+-- | The address.
+ueiElasticIP :: Lens' UpdateElasticIP Text
+ueiElasticIP = lens _ueiElasticIP (\ s a -> s{_ueiElasticIP = a});
+
+instance AWSRequest UpdateElasticIP where
+        type Sv UpdateElasticIP = OpsWorks
+        type Rs UpdateElasticIP = UpdateElasticIPResponse
+        request = postJSON
+        response = receiveNull UpdateElasticIPResponse'
+
+instance ToHeaders UpdateElasticIP where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateElasticIp" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateElasticIP where
+        toJSON UpdateElasticIP'{..}
+          = object
+              ["Name" .= _ueiName, "ElasticIp" .= _ueiElasticIP]
+
+instance ToPath UpdateElasticIP where
+        toPath = const "/"
+
+instance ToQuery UpdateElasticIP where
+        toQuery = const mempty
+
+-- | /See:/ 'updateElasticIPResponse' smart constructor.
+data UpdateElasticIPResponse =
+    UpdateElasticIPResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateElasticIPResponse' with the minimum fields required to make a request.
+--
+updateElasticIPResponse
+    :: UpdateElasticIPResponse
+updateElasticIPResponse = UpdateElasticIPResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs b/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/UpdateElasticIp.hs
+++ /dev/null
@@ -1,108 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.UpdateElasticIp
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a registered Elastic IP address's name. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateElasticIp.html>
-module Network.AWS.OpsWorks.UpdateElasticIp
-    (
-    -- * Request
-      UpdateElasticIp
-    -- ** Request constructor
-    , updateElasticIp
-    -- ** Request lenses
-    , ueiElasticIp
-    , ueiName
-
-    -- * Response
-    , UpdateElasticIpResponse
-    -- ** Response constructor
-    , updateElasticIpResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data UpdateElasticIp = UpdateElasticIp
-    { _ueiElasticIp :: Text
-    , _ueiName      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'UpdateElasticIp' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ueiElasticIp' @::@ 'Text'
---
--- * 'ueiName' @::@ 'Maybe' 'Text'
---
-updateElasticIp :: Text -- ^ 'ueiElasticIp'
-                -> UpdateElasticIp
-updateElasticIp p1 = UpdateElasticIp
-    { _ueiElasticIp = p1
-    , _ueiName      = Nothing
-    }
-
--- | The address.
-ueiElasticIp :: Lens' UpdateElasticIp Text
-ueiElasticIp = lens _ueiElasticIp (\s a -> s { _ueiElasticIp = a })
-
--- | The new name.
-ueiName :: Lens' UpdateElasticIp (Maybe Text)
-ueiName = lens _ueiName (\s a -> s { _ueiName = a })
-
-data UpdateElasticIpResponse = UpdateElasticIpResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'UpdateElasticIpResponse' constructor.
-updateElasticIpResponse :: UpdateElasticIpResponse
-updateElasticIpResponse = UpdateElasticIpResponse
-
-instance ToPath UpdateElasticIp where
-    toPath = const "/"
-
-instance ToQuery UpdateElasticIp where
-    toQuery = const mempty
-
-instance ToHeaders UpdateElasticIp
-
-instance ToJSON UpdateElasticIp where
-    toJSON UpdateElasticIp{..} = object
-        [ "ElasticIp" .= _ueiElasticIp
-        , "Name"      .= _ueiName
-        ]
-
-instance AWSRequest UpdateElasticIp where
-    type Sv UpdateElasticIp = OpsWorks
-    type Rs UpdateElasticIp = UpdateElasticIpResponse
-
-    request  = post "UpdateElasticIp"
-    response = nullResponse UpdateElasticIpResponse
diff --git a/gen/Network/AWS/OpsWorks/UpdateInstance.hs b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
--- a/gen/Network/AWS/OpsWorks/UpdateInstance.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateInstance.hs
@@ -1,228 +1,269 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a specified instance.
+-- Updates a specified instance.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateInstance.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateInstance.html AWS API Reference> for UpdateInstance.
 module Network.AWS.OpsWorks.UpdateInstance
     (
-    -- * Request
-      UpdateInstance
-    -- ** Request constructor
-    , updateInstance
-    -- ** Request lenses
-    , uiAmiId
-    , uiArchitecture
-    , uiAutoScalingType
-    , uiEbsOptimized
-    , uiHostname
+    -- * Creating a Request
+      updateInstance
+    , UpdateInstance
+    -- * Request Lenses
     , uiInstallUpdatesOnBoot
-    , uiInstanceId
+    , uiHostname
+    , uiSSHKeyName
+    , uiAgentVersion
     , uiInstanceType
+    , uiEBSOptimized
+    , uiOS
+    , uiAutoScalingType
     , uiLayerIds
-    , uiOs
-    , uiSshKeyName
+    , uiArchitecture
+    , uiAMIId
+    , uiInstanceId
 
-    -- * Response
-    , UpdateInstanceResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateInstanceResponse
+    , UpdateInstanceResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateInstance = UpdateInstance
-    { _uiAmiId                :: Maybe Text
-    , _uiArchitecture         :: Maybe Architecture
-    , _uiAutoScalingType      :: Maybe AutoScalingType
-    , _uiEbsOptimized         :: Maybe Bool
-    , _uiHostname             :: Maybe Text
-    , _uiInstallUpdatesOnBoot :: Maybe Bool
-    , _uiInstanceId           :: Text
-    , _uiInstanceType         :: Maybe Text
-    , _uiLayerIds             :: List "LayerIds" Text
-    , _uiOs                   :: Maybe Text
-    , _uiSshKeyName           :: Maybe Text
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'updateInstance' smart constructor.
+data UpdateInstance = UpdateInstance'
+    { _uiInstallUpdatesOnBoot :: !(Maybe Bool)
+    , _uiHostname             :: !(Maybe Text)
+    , _uiSSHKeyName           :: !(Maybe Text)
+    , _uiAgentVersion         :: !(Maybe Text)
+    , _uiInstanceType         :: !(Maybe Text)
+    , _uiEBSOptimized         :: !(Maybe Bool)
+    , _uiOS                   :: !(Maybe Text)
+    , _uiAutoScalingType      :: !(Maybe AutoScalingType)
+    , _uiLayerIds             :: !(Maybe [Text])
+    , _uiArchitecture         :: !(Maybe Architecture)
+    , _uiAMIId                :: !(Maybe Text)
+    , _uiInstanceId           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateInstance' constructor.
+-- | Creates a value of 'UpdateInstance' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uiAmiId' @::@ 'Maybe' 'Text'
+-- * 'uiInstallUpdatesOnBoot'
 --
--- * 'uiArchitecture' @::@ 'Maybe' 'Architecture'
+-- * 'uiHostname'
 --
--- * 'uiAutoScalingType' @::@ 'Maybe' 'AutoScalingType'
+-- * 'uiSSHKeyName'
 --
--- * 'uiEbsOptimized' @::@ 'Maybe' 'Bool'
+-- * 'uiAgentVersion'
 --
--- * 'uiHostname' @::@ 'Maybe' 'Text'
+-- * 'uiInstanceType'
 --
--- * 'uiInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
+-- * 'uiEBSOptimized'
 --
--- * 'uiInstanceId' @::@ 'Text'
+-- * 'uiOS'
 --
--- * 'uiInstanceType' @::@ 'Maybe' 'Text'
+-- * 'uiAutoScalingType'
 --
--- * 'uiLayerIds' @::@ ['Text']
+-- * 'uiLayerIds'
 --
--- * 'uiOs' @::@ 'Maybe' 'Text'
+-- * 'uiArchitecture'
 --
--- * 'uiSshKeyName' @::@ 'Maybe' 'Text'
+-- * 'uiAMIId'
 --
-updateInstance :: Text -- ^ 'uiInstanceId'
-               -> UpdateInstance
-updateInstance p1 = UpdateInstance
-    { _uiInstanceId           = p1
-    , _uiLayerIds             = mempty
-    , _uiInstanceType         = Nothing
-    , _uiAutoScalingType      = Nothing
-    , _uiHostname             = Nothing
-    , _uiOs                   = Nothing
-    , _uiAmiId                = Nothing
-    , _uiSshKeyName           = Nothing
-    , _uiArchitecture         = Nothing
-    , _uiInstallUpdatesOnBoot = Nothing
-    , _uiEbsOptimized         = Nothing
+-- * 'uiInstanceId'
+updateInstance
+    :: Text -- ^ 'uiInstanceId'
+    -> UpdateInstance
+updateInstance pInstanceId_ =
+    UpdateInstance'
+    { _uiInstallUpdatesOnBoot = Nothing
+    , _uiHostname = Nothing
+    , _uiSSHKeyName = Nothing
+    , _uiAgentVersion = Nothing
+    , _uiInstanceType = Nothing
+    , _uiEBSOptimized = Nothing
+    , _uiOS = Nothing
+    , _uiAutoScalingType = Nothing
+    , _uiLayerIds = Nothing
+    , _uiArchitecture = Nothing
+    , _uiAMIId = Nothing
+    , _uiInstanceId = pInstanceId_
     }
 
--- | A custom AMI ID to be used to create the instance. The AMI should be based on
--- one of the standard AWS OpsWorks AMIs: Amazon Linux, Ubuntu 12.04 LTS, or
--- Ubuntu 14.04 LTS. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances.html Instances>
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. To control when updates are
+-- installed, set this value to 'false'. You must then update your
+-- instances manually by using CreateDeployment to run the
+-- 'update_dependencies' stack command or by manually running 'yum' (Amazon
+-- Linux) or 'apt-get' (Ubuntu) on the instances.
 --
--- If you specify a custom AMI, you must set 'Os' to 'Custom'.
-uiAmiId :: Lens' UpdateInstance (Maybe Text)
-uiAmiId = lens _uiAmiId (\s a -> s { _uiAmiId = a })
-
--- | The instance architecture. Instance types do not necessarily support both
--- architectures. For a list of the architectures that are supported by the
--- different instance types, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>.
-uiArchitecture :: Lens' UpdateInstance (Maybe Architecture)
-uiArchitecture = lens _uiArchitecture (\s a -> s { _uiArchitecture = a })
-
--- | For load-based or time-based instances, the type. Windows stacks can use only
--- time-based instances.
-uiAutoScalingType :: Lens' UpdateInstance (Maybe AutoScalingType)
-uiAutoScalingType =
-    lens _uiAutoScalingType (\s a -> s { _uiAutoScalingType = a })
-
--- | Whether this is an Amazon EBS-optimized instance.
-uiEbsOptimized :: Lens' UpdateInstance (Maybe Bool)
-uiEbsOptimized = lens _uiEbsOptimized (\s a -> s { _uiEbsOptimized = a })
+-- We strongly recommend using the default value of 'true', to ensure that
+-- your instances have the latest security updates.
+uiInstallUpdatesOnBoot :: Lens' UpdateInstance (Maybe Bool)
+uiInstallUpdatesOnBoot = lens _uiInstallUpdatesOnBoot (\ s a -> s{_uiInstallUpdatesOnBoot = a});
 
 -- | The instance host name.
 uiHostname :: Lens' UpdateInstance (Maybe Text)
-uiHostname = lens _uiHostname (\s a -> s { _uiHostname = a })
+uiHostname = lens _uiHostname (\ s a -> s{_uiHostname = a});
 
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. To control when updates are installed, set
--- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
--- Linux) or 'apt-get' (Ubuntu) on the instances.
---
--- We strongly recommend using the default value of 'true', to ensure that your
--- instances have the latest security updates.
+-- | The instance\'s Amazon EC2 key name.
+uiSSHKeyName :: Lens' UpdateInstance (Maybe Text)
+uiSSHKeyName = lens _uiSSHKeyName (\ s a -> s{_uiSSHKeyName = a});
+
+-- | The default AWS OpsWorks agent version. You have the following options:
 --
+-- -   'INHERIT' - Use the stack\'s default agent version setting.
+-- -   /version_number/ - Use the specified agent version. This value
+--     overrides the stack\'s default setting. To update the agent version,
+--     you must edit the instance configuration and specify a new version.
+--     AWS OpsWorks then automatically installs that version on the
+--     instance.
 --
-uiInstallUpdatesOnBoot :: Lens' UpdateInstance (Maybe Bool)
-uiInstallUpdatesOnBoot =
-    lens _uiInstallUpdatesOnBoot (\s a -> s { _uiInstallUpdatesOnBoot = a })
-
--- | The instance ID.
-uiInstanceId :: Lens' UpdateInstance Text
-uiInstanceId = lens _uiInstanceId (\s a -> s { _uiInstanceId = a })
+-- The default setting is 'INHERIT'. To specify an agent version, you must
+-- use the complete version number, not the abbreviated number shown on the
+-- console. For a list of available agent version numbers, call
+-- DescribeAgentVersions.
+uiAgentVersion :: Lens' UpdateInstance (Maybe Text)
+uiAgentVersion = lens _uiAgentVersion (\ s a -> s{_uiAgentVersion = a});
 
--- | The instance type. AWS OpsWorks supports all instance types except Cluster
--- Compute, Cluster GPU, and High Memory Cluster. For more information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>. The parameter values that you use to specify the various types are in the
--- API Name column of the Available Instance Types table.
+-- | The instance type, such as 't2.micro'. For a list of supported instance
+-- types, open the stack in the console, choose __Instances__, and choose
+-- __+ Instance__. The __Size__ list contains the currently supported
+-- types. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>.
+-- The parameter values that you use to specify the various types are in
+-- the __API Name__ column of the __Available Instance Types__ table.
 uiInstanceType :: Lens' UpdateInstance (Maybe Text)
-uiInstanceType = lens _uiInstanceType (\s a -> s { _uiInstanceType = a })
+uiInstanceType = lens _uiInstanceType (\ s a -> s{_uiInstanceType = a});
 
--- | The instance's layer IDs.
-uiLayerIds :: Lens' UpdateInstance [Text]
-uiLayerIds = lens _uiLayerIds (\s a -> s { _uiLayerIds = a }) . _List
+-- | This property cannot be updated.
+uiEBSOptimized :: Lens' UpdateInstance (Maybe Bool)
+uiEBSOptimized = lens _uiEBSOptimized (\ s a -> s{_uiEBSOptimized = a});
 
--- | The instance's operating system, which must be set to one of the following.
+-- | The instance\'s operating system, which must be set to one of the
+-- following.
 --
--- For Windows stacks: Microsoft Windows Server 2012 R2.
+-- -   A supported Linux operating system: An Amazon Linux version, such as
+--     'Amazon Linux 2015.03', 'Red Hat Enterprise Linux 7',
+--     'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'.
+-- -   'Microsoft Windows Server 2012 R2 Base'.
+-- -   A custom AMI: 'Custom'.
 --
--- For Linux stacks:
+-- For more information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems>.
 --
--- Standard operating systems: an Amazon Linux version such as 'Amazon Linux2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom AMIs: 'Custom'   The
--- default option is the current Amazon Linux version. If you set this parameter
--- to 'Custom', you must use the 'CreateInstance' action's AmiId parameter to
--- specify the custom AMI that you want to use. For more information on the
--- standard operating systems, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems>For more information on how
--- to use custom AMIs with OpsWorks, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
-uiOs :: Lens' UpdateInstance (Maybe Text)
-uiOs = lens _uiOs (\s a -> s { _uiOs = a })
+-- The default option is the current Amazon Linux version. If you set this
+-- parameter to 'Custom', you must use the AmiId parameter to specify the
+-- custom AMI that you want to use. For more information on the supported
+-- operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html Operating Systems>.
+-- For more information on how to use custom AMIs with OpsWorks, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
+--
+-- You can specify a different Linux operating system for the updated
+-- stack, but you cannot change from Linux to Windows or Windows to Linux.
+uiOS :: Lens' UpdateInstance (Maybe Text)
+uiOS = lens _uiOS (\ s a -> s{_uiOS = a});
 
--- | The instance's Amazon EC2 key name.
-uiSshKeyName :: Lens' UpdateInstance (Maybe Text)
-uiSshKeyName = lens _uiSshKeyName (\s a -> s { _uiSshKeyName = a })
+-- | For load-based or time-based instances, the type. Windows stacks can use
+-- only time-based instances.
+uiAutoScalingType :: Lens' UpdateInstance (Maybe AutoScalingType)
+uiAutoScalingType = lens _uiAutoScalingType (\ s a -> s{_uiAutoScalingType = a});
 
-data UpdateInstanceResponse = UpdateInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The instance\'s layer IDs.
+uiLayerIds :: Lens' UpdateInstance [Text]
+uiLayerIds = lens _uiLayerIds (\ s a -> s{_uiLayerIds = a}) . _Default . _Coerce;
 
--- | 'UpdateInstanceResponse' constructor.
-updateInstanceResponse :: UpdateInstanceResponse
-updateInstanceResponse = UpdateInstanceResponse
+-- | The instance architecture. Instance types do not necessarily support
+-- both architectures. For a list of the architectures that are supported
+-- by the different instance types, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-types.html Instance Families and Types>.
+uiArchitecture :: Lens' UpdateInstance (Maybe Architecture)
+uiArchitecture = lens _uiArchitecture (\ s a -> s{_uiArchitecture = a});
 
-instance ToPath UpdateInstance where
-    toPath = const "/"
+-- | A custom AMI ID to be used to create the instance. The AMI must be based
+-- on one of the supported operating systems. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Instances>
+--
+-- If you specify a custom AMI, you must set 'Os' to 'Custom'.
+uiAMIId :: Lens' UpdateInstance (Maybe Text)
+uiAMIId = lens _uiAMIId (\ s a -> s{_uiAMIId = a});
 
-instance ToQuery UpdateInstance where
-    toQuery = const mempty
+-- | The instance ID.
+uiInstanceId :: Lens' UpdateInstance Text
+uiInstanceId = lens _uiInstanceId (\ s a -> s{_uiInstanceId = a});
 
-instance ToHeaders UpdateInstance
+instance AWSRequest UpdateInstance where
+        type Sv UpdateInstance = OpsWorks
+        type Rs UpdateInstance = UpdateInstanceResponse
+        request = postJSON
+        response = receiveNull UpdateInstanceResponse'
 
+instance ToHeaders UpdateInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateInstance" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
 instance ToJSON UpdateInstance where
-    toJSON UpdateInstance{..} = object
-        [ "InstanceId"           .= _uiInstanceId
-        , "LayerIds"             .= _uiLayerIds
-        , "InstanceType"         .= _uiInstanceType
-        , "AutoScalingType"      .= _uiAutoScalingType
-        , "Hostname"             .= _uiHostname
-        , "Os"                   .= _uiOs
-        , "AmiId"                .= _uiAmiId
-        , "SshKeyName"           .= _uiSshKeyName
-        , "Architecture"         .= _uiArchitecture
-        , "InstallUpdatesOnBoot" .= _uiInstallUpdatesOnBoot
-        , "EbsOptimized"         .= _uiEbsOptimized
-        ]
+        toJSON UpdateInstance'{..}
+          = object
+              ["InstallUpdatesOnBoot" .= _uiInstallUpdatesOnBoot,
+               "Hostname" .= _uiHostname,
+               "SshKeyName" .= _uiSSHKeyName,
+               "AgentVersion" .= _uiAgentVersion,
+               "InstanceType" .= _uiInstanceType,
+               "EbsOptimized" .= _uiEBSOptimized, "Os" .= _uiOS,
+               "AutoScalingType" .= _uiAutoScalingType,
+               "LayerIds" .= _uiLayerIds,
+               "Architecture" .= _uiArchitecture,
+               "AmiId" .= _uiAMIId, "InstanceId" .= _uiInstanceId]
 
-instance AWSRequest UpdateInstance where
-    type Sv UpdateInstance = OpsWorks
-    type Rs UpdateInstance = UpdateInstanceResponse
+instance ToPath UpdateInstance where
+        toPath = const "/"
 
-    request  = post "UpdateInstance"
-    response = nullResponse UpdateInstanceResponse
+instance ToQuery UpdateInstance where
+        toQuery = const mempty
+
+-- | /See:/ 'updateInstanceResponse' smart constructor.
+data UpdateInstanceResponse =
+    UpdateInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateInstanceResponse' with the minimum fields required to make a request.
+--
+updateInstanceResponse
+    :: UpdateInstanceResponse
+updateInstanceResponse = UpdateInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateLayer.hs b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
--- a/gen/Network/AWS/OpsWorks/UpdateLayer.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateLayer.hs
@@ -1,271 +1,288 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateLayer
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a specified layer.
+-- Updates a specified layer.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateLayer.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateLayer.html AWS API Reference> for UpdateLayer.
 module Network.AWS.OpsWorks.UpdateLayer
     (
-    -- * Request
-      UpdateLayer
-    -- ** Request constructor
-    , updateLayer
-    -- ** Request lenses
-    , ulAttributes
-    , ulAutoAssignElasticIps
-    , ulAutoAssignPublicIps
-    , ulCustomInstanceProfileArn
-    , ulCustomRecipes
-    , ulCustomSecurityGroupIds
-    , ulEnableAutoHealing
+    -- * Creating a Request
+      updateLayer
+    , UpdateLayer
+    -- * Request Lenses
+    , ulCustomInstanceProfileARN
     , ulInstallUpdatesOnBoot
-    , ulLayerId
+    , ulCustomSecurityGroupIds
     , ulLifecycleEventConfiguration
-    , ulName
-    , ulPackages
     , ulShortname
-    , ulUseEbsOptimizedInstances
+    , ulCustomRecipes
     , ulVolumeConfigurations
+    , ulCustomJSON
+    , ulEnableAutoHealing
+    , ulPackages
+    , ulName
+    , ulAttributes
+    , ulAutoAssignPublicIPs
+    , ulUseEBSOptimizedInstances
+    , ulAutoAssignElasticIPs
+    , ulLayerId
 
-    -- * Response
-    , UpdateLayerResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateLayerResponse
+    , UpdateLayerResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateLayer = UpdateLayer
-    { _ulAttributes                  :: Map LayerAttributesKeys Text
-    , _ulAutoAssignElasticIps        :: Maybe Bool
-    , _ulAutoAssignPublicIps         :: Maybe Bool
-    , _ulCustomInstanceProfileArn    :: Maybe Text
-    , _ulCustomRecipes               :: Maybe Recipes
-    , _ulCustomSecurityGroupIds      :: List "CustomSecurityGroupIds" Text
-    , _ulEnableAutoHealing           :: Maybe Bool
-    , _ulInstallUpdatesOnBoot        :: Maybe Bool
-    , _ulLayerId                     :: Text
-    , _ulLifecycleEventConfiguration :: Maybe LifecycleEventConfiguration
-    , _ulName                        :: Maybe Text
-    , _ulPackages                    :: List "Packages" Text
-    , _ulShortname                   :: Maybe Text
-    , _ulUseEbsOptimizedInstances    :: Maybe Bool
-    , _ulVolumeConfigurations        :: List "VolumeConfigurations" VolumeConfiguration
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'updateLayer' smart constructor.
+data UpdateLayer = UpdateLayer'
+    { _ulCustomInstanceProfileARN    :: !(Maybe Text)
+    , _ulInstallUpdatesOnBoot        :: !(Maybe Bool)
+    , _ulCustomSecurityGroupIds      :: !(Maybe [Text])
+    , _ulLifecycleEventConfiguration :: !(Maybe LifecycleEventConfiguration)
+    , _ulShortname                   :: !(Maybe Text)
+    , _ulCustomRecipes               :: !(Maybe Recipes)
+    , _ulVolumeConfigurations        :: !(Maybe [VolumeConfiguration])
+    , _ulCustomJSON                  :: !(Maybe Text)
+    , _ulEnableAutoHealing           :: !(Maybe Bool)
+    , _ulPackages                    :: !(Maybe [Text])
+    , _ulName                        :: !(Maybe Text)
+    , _ulAttributes                  :: !(Maybe (Map LayerAttributesKeys Text))
+    , _ulAutoAssignPublicIPs         :: !(Maybe Bool)
+    , _ulUseEBSOptimizedInstances    :: !(Maybe Bool)
+    , _ulAutoAssignElasticIPs        :: !(Maybe Bool)
+    , _ulLayerId                     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateLayer' constructor.
+-- | Creates a value of 'UpdateLayer' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ulAttributes' @::@ 'HashMap' 'LayerAttributesKeys' 'Text'
+-- * 'ulCustomInstanceProfileARN'
 --
--- * 'ulAutoAssignElasticIps' @::@ 'Maybe' 'Bool'
+-- * 'ulInstallUpdatesOnBoot'
 --
--- * 'ulAutoAssignPublicIps' @::@ 'Maybe' 'Bool'
+-- * 'ulCustomSecurityGroupIds'
 --
--- * 'ulCustomInstanceProfileArn' @::@ 'Maybe' 'Text'
+-- * 'ulLifecycleEventConfiguration'
 --
--- * 'ulCustomRecipes' @::@ 'Maybe' 'Recipes'
+-- * 'ulShortname'
 --
--- * 'ulCustomSecurityGroupIds' @::@ ['Text']
+-- * 'ulCustomRecipes'
 --
--- * 'ulEnableAutoHealing' @::@ 'Maybe' 'Bool'
+-- * 'ulVolumeConfigurations'
 --
--- * 'ulInstallUpdatesOnBoot' @::@ 'Maybe' 'Bool'
+-- * 'ulCustomJSON'
 --
--- * 'ulLayerId' @::@ 'Text'
+-- * 'ulEnableAutoHealing'
 --
--- * 'ulLifecycleEventConfiguration' @::@ 'Maybe' 'LifecycleEventConfiguration'
+-- * 'ulPackages'
 --
--- * 'ulName' @::@ 'Maybe' 'Text'
+-- * 'ulName'
 --
--- * 'ulPackages' @::@ ['Text']
+-- * 'ulAttributes'
 --
--- * 'ulShortname' @::@ 'Maybe' 'Text'
+-- * 'ulAutoAssignPublicIPs'
 --
--- * 'ulUseEbsOptimizedInstances' @::@ 'Maybe' 'Bool'
+-- * 'ulUseEBSOptimizedInstances'
 --
--- * 'ulVolumeConfigurations' @::@ ['VolumeConfiguration']
+-- * 'ulAutoAssignElasticIPs'
 --
-updateLayer :: Text -- ^ 'ulLayerId'
-            -> UpdateLayer
-updateLayer p1 = UpdateLayer
-    { _ulLayerId                     = p1
-    , _ulName                        = Nothing
-    , _ulShortname                   = Nothing
-    , _ulAttributes                  = mempty
-    , _ulCustomInstanceProfileArn    = Nothing
-    , _ulCustomSecurityGroupIds      = mempty
-    , _ulPackages                    = mempty
-    , _ulVolumeConfigurations        = mempty
-    , _ulEnableAutoHealing           = Nothing
-    , _ulAutoAssignElasticIps        = Nothing
-    , _ulAutoAssignPublicIps         = Nothing
-    , _ulCustomRecipes               = Nothing
-    , _ulInstallUpdatesOnBoot        = Nothing
-    , _ulUseEbsOptimizedInstances    = Nothing
+-- * 'ulLayerId'
+updateLayer
+    :: Text -- ^ 'ulLayerId'
+    -> UpdateLayer
+updateLayer pLayerId_ =
+    UpdateLayer'
+    { _ulCustomInstanceProfileARN = Nothing
+    , _ulInstallUpdatesOnBoot = Nothing
+    , _ulCustomSecurityGroupIds = Nothing
     , _ulLifecycleEventConfiguration = Nothing
+    , _ulShortname = Nothing
+    , _ulCustomRecipes = Nothing
+    , _ulVolumeConfigurations = Nothing
+    , _ulCustomJSON = Nothing
+    , _ulEnableAutoHealing = Nothing
+    , _ulPackages = Nothing
+    , _ulName = Nothing
+    , _ulAttributes = Nothing
+    , _ulAutoAssignPublicIPs = Nothing
+    , _ulUseEBSOptimizedInstances = Nothing
+    , _ulAutoAssignElasticIPs = Nothing
+    , _ulLayerId = pLayerId_
     }
 
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-ulAttributes :: Lens' UpdateLayer (HashMap LayerAttributesKeys Text)
-ulAttributes = lens _ulAttributes (\s a -> s { _ulAttributes = a }) . _Map
+-- | The ARN of an IAM profile to be used for all of the layer\'s EC2
+-- instances. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+ulCustomInstanceProfileARN :: Lens' UpdateLayer (Maybe Text)
+ulCustomInstanceProfileARN = lens _ulCustomInstanceProfileARN (\ s a -> s{_ulCustomInstanceProfileARN = a});
 
--- | Whether to automatically assign an <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address> to the layer's
--- instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
-ulAutoAssignElasticIps :: Lens' UpdateLayer (Maybe Bool)
-ulAutoAssignElasticIps =
-    lens _ulAutoAssignElasticIps (\s a -> s { _ulAutoAssignElasticIps = a })
+-- | Whether to install operating system and package updates when the
+-- instance boots. The default value is 'true'. To control when updates are
+-- installed, set this value to 'false'. You must then update your
+-- instances manually by using CreateDeployment to run the
+-- 'update_dependencies' stack command or manually running 'yum' (Amazon
+-- Linux) or 'apt-get' (Ubuntu) on the instances.
+--
+-- We strongly recommend using the default value of 'true', to ensure that
+-- your instances have the latest security updates.
+ulInstallUpdatesOnBoot :: Lens' UpdateLayer (Maybe Bool)
+ulInstallUpdatesOnBoot = lens _ulInstallUpdatesOnBoot (\ s a -> s{_ulInstallUpdatesOnBoot = a});
 
--- | For stacks that are running in a VPC, whether to automatically assign a
--- public IP address to the layer's instances. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How toEdit a Layer>.
-ulAutoAssignPublicIps :: Lens' UpdateLayer (Maybe Bool)
-ulAutoAssignPublicIps =
-    lens _ulAutoAssignPublicIps (\s a -> s { _ulAutoAssignPublicIps = a })
+-- | An array containing the layer\'s custom security group IDs.
+ulCustomSecurityGroupIds :: Lens' UpdateLayer [Text]
+ulCustomSecurityGroupIds = lens _ulCustomSecurityGroupIds (\ s a -> s{_ulCustomSecurityGroupIds = a}) . _Default . _Coerce;
 
--- | The ARN of an IAM profile to be used for all of the layer's EC2 instances.
--- For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-ulCustomInstanceProfileArn :: Lens' UpdateLayer (Maybe Text)
-ulCustomInstanceProfileArn =
-    lens _ulCustomInstanceProfileArn
-        (\s a -> s { _ulCustomInstanceProfileArn = a })
+-- |
+ulLifecycleEventConfiguration :: Lens' UpdateLayer (Maybe LifecycleEventConfiguration)
+ulLifecycleEventConfiguration = lens _ulLifecycleEventConfiguration (\ s a -> s{_ulLifecycleEventConfiguration = a});
 
--- | A 'LayerCustomRecipes' object that specifies the layer's custom recipes.
+-- | For custom layers only, use this parameter to specify the layer\'s short
+-- name, which is used internally by AWS OpsWorksand by Chef. The short
+-- name is also used as the name for the directory where your app files are
+-- installed. It can have a maximum of 200 characters and must be in the
+-- following format: \/\\A[a-z0-9\\-\\_\\.]+\\Z\/.
+--
+-- The built-in layers\' short names are defined by AWS OpsWorks. For more
+-- information, see the
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
+ulShortname :: Lens' UpdateLayer (Maybe Text)
+ulShortname = lens _ulShortname (\ s a -> s{_ulShortname = a});
+
+-- | A 'LayerCustomRecipes' object that specifies the layer\'s custom
+-- recipes.
 ulCustomRecipes :: Lens' UpdateLayer (Maybe Recipes)
-ulCustomRecipes = lens _ulCustomRecipes (\s a -> s { _ulCustomRecipes = a })
+ulCustomRecipes = lens _ulCustomRecipes (\ s a -> s{_ulCustomRecipes = a});
 
--- | An array containing the layer's custom security group IDs.
-ulCustomSecurityGroupIds :: Lens' UpdateLayer [Text]
-ulCustomSecurityGroupIds =
-    lens _ulCustomSecurityGroupIds
-        (\s a -> s { _ulCustomSecurityGroupIds = a })
-            . _List
+-- | A 'VolumeConfigurations' object that describes the layer\'s Amazon EBS
+-- volumes.
+ulVolumeConfigurations :: Lens' UpdateLayer [VolumeConfiguration]
+ulVolumeConfigurations = lens _ulVolumeConfigurations (\ s a -> s{_ulVolumeConfigurations = a}) . _Default . _Coerce;
 
+-- | A JSON-formatted string containing custom stack configuration and
+-- deployment attributes to be installed on the layer\'s instances. For
+-- more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-json-override.html Using Custom JSON>.
+ulCustomJSON :: Lens' UpdateLayer (Maybe Text)
+ulCustomJSON = lens _ulCustomJSON (\ s a -> s{_ulCustomJSON = a});
+
 -- | Whether to disable auto healing for the layer.
 ulEnableAutoHealing :: Lens' UpdateLayer (Maybe Bool)
-ulEnableAutoHealing =
-    lens _ulEnableAutoHealing (\s a -> s { _ulEnableAutoHealing = a })
-
--- | Whether to install operating system and package updates when the instance
--- boots. The default value is 'true'. To control when updates are installed, set
--- this value to 'false'. You must then update your instances manually by using 'CreateDeployment' to run the 'update_dependencies' stack command or manually running 'yum' (Amazon
--- Linux) or 'apt-get' (Ubuntu) on the instances.
---
--- We strongly recommend using the default value of 'true', to ensure that your
--- instances have the latest security updates.
---
---
-ulInstallUpdatesOnBoot :: Lens' UpdateLayer (Maybe Bool)
-ulInstallUpdatesOnBoot =
-    lens _ulInstallUpdatesOnBoot (\s a -> s { _ulInstallUpdatesOnBoot = a })
-
--- | The layer ID.
-ulLayerId :: Lens' UpdateLayer Text
-ulLayerId = lens _ulLayerId (\s a -> s { _ulLayerId = a })
-
+ulEnableAutoHealing = lens _ulEnableAutoHealing (\ s a -> s{_ulEnableAutoHealing = a});
 
-ulLifecycleEventConfiguration :: Lens' UpdateLayer (Maybe LifecycleEventConfiguration)
-ulLifecycleEventConfiguration =
-    lens _ulLifecycleEventConfiguration
-        (\s a -> s { _ulLifecycleEventConfiguration = a })
+-- | An array of 'Package' objects that describe the layer\'s packages.
+ulPackages :: Lens' UpdateLayer [Text]
+ulPackages = lens _ulPackages (\ s a -> s{_ulPackages = a}) . _Default . _Coerce;
 
 -- | The layer name, which is used by the console.
 ulName :: Lens' UpdateLayer (Maybe Text)
-ulName = lens _ulName (\s a -> s { _ulName = a })
+ulName = lens _ulName (\ s a -> s{_ulName = a});
 
--- | An array of 'Package' objects that describe the layer's packages.
-ulPackages :: Lens' UpdateLayer [Text]
-ulPackages = lens _ulPackages (\s a -> s { _ulPackages = a }) . _List
+-- | One or more user-defined key\/value pairs to be added to the stack
+-- attributes.
+ulAttributes :: Lens' UpdateLayer (HashMap LayerAttributesKeys Text)
+ulAttributes = lens _ulAttributes (\ s a -> s{_ulAttributes = a}) . _Default . _Map;
 
--- | For custom layers only, use this parameter to specify the layer's short name,
--- which is used internally by AWS OpsWorksand by Chef. The short name is also
--- used as the name for the directory where your app files are installed. It can
--- have a maximum of 200 characters and must be in the following format:
--- /\A[a-z0-9\-\_\.]+\Z/.
---
--- The built-in layers' short names are defined by AWS OpsWorks. For more
--- information, see the <http://docs.aws.amazon.com/opsworks/latest/userguide/layers.html Layer Reference>
-ulShortname :: Lens' UpdateLayer (Maybe Text)
-ulShortname = lens _ulShortname (\s a -> s { _ulShortname = a })
+-- | For stacks that are running in a VPC, whether to automatically assign a
+-- public IP address to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+ulAutoAssignPublicIPs :: Lens' UpdateLayer (Maybe Bool)
+ulAutoAssignPublicIPs = lens _ulAutoAssignPublicIPs (\ s a -> s{_ulAutoAssignPublicIPs = a});
 
 -- | Whether to use Amazon EBS-optimized instances.
-ulUseEbsOptimizedInstances :: Lens' UpdateLayer (Maybe Bool)
-ulUseEbsOptimizedInstances =
-    lens _ulUseEbsOptimizedInstances
-        (\s a -> s { _ulUseEbsOptimizedInstances = a })
+ulUseEBSOptimizedInstances :: Lens' UpdateLayer (Maybe Bool)
+ulUseEBSOptimizedInstances = lens _ulUseEBSOptimizedInstances (\ s a -> s{_ulUseEBSOptimizedInstances = a});
 
--- | A 'VolumeConfigurations' object that describes the layer's Amazon EBS volumes.
-ulVolumeConfigurations :: Lens' UpdateLayer [VolumeConfiguration]
-ulVolumeConfigurations =
-    lens _ulVolumeConfigurations (\s a -> s { _ulVolumeConfigurations = a })
-        . _List
+-- | Whether to automatically assign an
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html Elastic IP address>
+-- to the layer\'s instances. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinglayers-basics-edit.html How to Edit a Layer>.
+ulAutoAssignElasticIPs :: Lens' UpdateLayer (Maybe Bool)
+ulAutoAssignElasticIPs = lens _ulAutoAssignElasticIPs (\ s a -> s{_ulAutoAssignElasticIPs = a});
 
-data UpdateLayerResponse = UpdateLayerResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The layer ID.
+ulLayerId :: Lens' UpdateLayer Text
+ulLayerId = lens _ulLayerId (\ s a -> s{_ulLayerId = a});
 
--- | 'UpdateLayerResponse' constructor.
-updateLayerResponse :: UpdateLayerResponse
-updateLayerResponse = UpdateLayerResponse
+instance AWSRequest UpdateLayer where
+        type Sv UpdateLayer = OpsWorks
+        type Rs UpdateLayer = UpdateLayerResponse
+        request = postJSON
+        response = receiveNull UpdateLayerResponse'
 
-instance ToPath UpdateLayer where
-    toPath = const "/"
+instance ToHeaders UpdateLayer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateLayer" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance ToQuery UpdateLayer where
-    toQuery = const mempty
+instance ToJSON UpdateLayer where
+        toJSON UpdateLayer'{..}
+          = object
+              ["CustomInstanceProfileArn" .=
+                 _ulCustomInstanceProfileARN,
+               "InstallUpdatesOnBoot" .= _ulInstallUpdatesOnBoot,
+               "CustomSecurityGroupIds" .=
+                 _ulCustomSecurityGroupIds,
+               "LifecycleEventConfiguration" .=
+                 _ulLifecycleEventConfiguration,
+               "Shortname" .= _ulShortname,
+               "CustomRecipes" .= _ulCustomRecipes,
+               "VolumeConfigurations" .= _ulVolumeConfigurations,
+               "CustomJson" .= _ulCustomJSON,
+               "EnableAutoHealing" .= _ulEnableAutoHealing,
+               "Packages" .= _ulPackages, "Name" .= _ulName,
+               "Attributes" .= _ulAttributes,
+               "AutoAssignPublicIps" .= _ulAutoAssignPublicIPs,
+               "UseEbsOptimizedInstances" .=
+                 _ulUseEBSOptimizedInstances,
+               "AutoAssignElasticIps" .= _ulAutoAssignElasticIPs,
+               "LayerId" .= _ulLayerId]
 
-instance ToHeaders UpdateLayer
+instance ToPath UpdateLayer where
+        toPath = const "/"
 
-instance ToJSON UpdateLayer where
-    toJSON UpdateLayer{..} = object
-        [ "LayerId"                     .= _ulLayerId
-        , "Name"                        .= _ulName
-        , "Shortname"                   .= _ulShortname
-        , "Attributes"                  .= _ulAttributes
-        , "CustomInstanceProfileArn"    .= _ulCustomInstanceProfileArn
-        , "CustomSecurityGroupIds"      .= _ulCustomSecurityGroupIds
-        , "Packages"                    .= _ulPackages
-        , "VolumeConfigurations"        .= _ulVolumeConfigurations
-        , "EnableAutoHealing"           .= _ulEnableAutoHealing
-        , "AutoAssignElasticIps"        .= _ulAutoAssignElasticIps
-        , "AutoAssignPublicIps"         .= _ulAutoAssignPublicIps
-        , "CustomRecipes"               .= _ulCustomRecipes
-        , "InstallUpdatesOnBoot"        .= _ulInstallUpdatesOnBoot
-        , "UseEbsOptimizedInstances"    .= _ulUseEbsOptimizedInstances
-        , "LifecycleEventConfiguration" .= _ulLifecycleEventConfiguration
-        ]
+instance ToQuery UpdateLayer where
+        toQuery = const mempty
 
-instance AWSRequest UpdateLayer where
-    type Sv UpdateLayer = OpsWorks
-    type Rs UpdateLayer = UpdateLayerResponse
+-- | /See:/ 'updateLayerResponse' smart constructor.
+data UpdateLayerResponse =
+    UpdateLayerResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateLayer"
-    response = nullResponse UpdateLayerResponse
+-- | Creates a value of 'UpdateLayerResponse' with the minimum fields required to make a request.
+--
+updateLayerResponse
+    :: UpdateLayerResponse
+updateLayerResponse = UpdateLayerResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateMyUserProfile.hs
@@ -1,97 +1,105 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateMyUserProfile
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a user's SSH public key.
+-- Updates a user\'s SSH public key.
 --
--- Required Permissions: To use this action, an IAM user must have
+-- __Required Permissions__: To use this action, an IAM user must have
 -- self-management enabled or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- permissions. For more information on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateMyUserProfile.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateMyUserProfile.html AWS API Reference> for UpdateMyUserProfile.
 module Network.AWS.OpsWorks.UpdateMyUserProfile
     (
-    -- * Request
-      UpdateMyUserProfile
-    -- ** Request constructor
-    , updateMyUserProfile
-    -- ** Request lenses
-    , umupSshPublicKey
+    -- * Creating a Request
+      updateMyUserProfile
+    , UpdateMyUserProfile
+    -- * Request Lenses
+    , umupSSHPublicKey
 
-    -- * Response
-    , UpdateMyUserProfileResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateMyUserProfileResponse
+    , UpdateMyUserProfileResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-newtype UpdateMyUserProfile = UpdateMyUserProfile
-    { _umupSshPublicKey :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | /See:/ 'updateMyUserProfile' smart constructor.
+newtype UpdateMyUserProfile = UpdateMyUserProfile'
+    { _umupSSHPublicKey :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateMyUserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateMyUserProfile' with the minimum fields required to make a request.
 --
--- * 'umupSshPublicKey' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-updateMyUserProfile :: UpdateMyUserProfile
-updateMyUserProfile = UpdateMyUserProfile
-    { _umupSshPublicKey = Nothing
+-- * 'umupSSHPublicKey'
+updateMyUserProfile
+    :: UpdateMyUserProfile
+updateMyUserProfile =
+    UpdateMyUserProfile'
+    { _umupSSHPublicKey = Nothing
     }
 
--- | The user's SSH public key.
-umupSshPublicKey :: Lens' UpdateMyUserProfile (Maybe Text)
-umupSshPublicKey = lens _umupSshPublicKey (\s a -> s { _umupSshPublicKey = a })
+-- | The user\'s SSH public key.
+umupSSHPublicKey :: Lens' UpdateMyUserProfile (Maybe Text)
+umupSSHPublicKey = lens _umupSSHPublicKey (\ s a -> s{_umupSSHPublicKey = a});
 
-data UpdateMyUserProfileResponse = UpdateMyUserProfileResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UpdateMyUserProfile where
+        type Sv UpdateMyUserProfile = OpsWorks
+        type Rs UpdateMyUserProfile =
+             UpdateMyUserProfileResponse
+        request = postJSON
+        response = receiveNull UpdateMyUserProfileResponse'
 
--- | 'UpdateMyUserProfileResponse' constructor.
-updateMyUserProfileResponse :: UpdateMyUserProfileResponse
-updateMyUserProfileResponse = UpdateMyUserProfileResponse
+instance ToHeaders UpdateMyUserProfile where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateMyUserProfile" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UpdateMyUserProfile where
+        toJSON UpdateMyUserProfile'{..}
+          = object ["SshPublicKey" .= _umupSSHPublicKey]
+
 instance ToPath UpdateMyUserProfile where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateMyUserProfile where
-    toQuery = const mempty
-
-instance ToHeaders UpdateMyUserProfile
-
-instance ToJSON UpdateMyUserProfile where
-    toJSON UpdateMyUserProfile{..} = object
-        [ "SshPublicKey" .= _umupSshPublicKey
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UpdateMyUserProfile where
-    type Sv UpdateMyUserProfile = OpsWorks
-    type Rs UpdateMyUserProfile = UpdateMyUserProfileResponse
+-- | /See:/ 'updateMyUserProfileResponse' smart constructor.
+data UpdateMyUserProfileResponse =
+    UpdateMyUserProfileResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateMyUserProfile"
-    response = nullResponse UpdateMyUserProfileResponse
+-- | Creates a value of 'UpdateMyUserProfileResponse' with the minimum fields required to make a request.
+--
+updateMyUserProfileResponse
+    :: UpdateMyUserProfileResponse
+updateMyUserProfileResponse = UpdateMyUserProfileResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs b/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/UpdateRDSDBInstance.hs
@@ -0,0 +1,128 @@
+{-# 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.OpsWorks.UpdateRDSDBInstance
+-- Copyright   : (c) 2013-2015 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)
+--
+-- Updates an Amazon RDS instance.
+--
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+--
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateRDSDBInstance.html AWS API Reference> for UpdateRDSDBInstance.
+module Network.AWS.OpsWorks.UpdateRDSDBInstance
+    (
+    -- * Creating a Request
+      updateRDSDBInstance
+    , UpdateRDSDBInstance
+    -- * Request Lenses
+    , urdiDBUser
+    , urdiDBPassword
+    , urdiRDSDBInstanceARN
+
+    -- * Destructuring the Response
+    , updateRDSDBInstanceResponse
+    , UpdateRDSDBInstanceResponse
+    ) where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+
+-- | /See:/ 'updateRDSDBInstance' smart constructor.
+data UpdateRDSDBInstance = UpdateRDSDBInstance'
+    { _urdiDBUser           :: !(Maybe Text)
+    , _urdiDBPassword       :: !(Maybe Text)
+    , _urdiRDSDBInstanceARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateRDSDBInstance' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urdiDBUser'
+--
+-- * 'urdiDBPassword'
+--
+-- * 'urdiRDSDBInstanceARN'
+updateRDSDBInstance
+    :: Text -- ^ 'urdiRDSDBInstanceARN'
+    -> UpdateRDSDBInstance
+updateRDSDBInstance pRDSDBInstanceARN_ =
+    UpdateRDSDBInstance'
+    { _urdiDBUser = Nothing
+    , _urdiDBPassword = Nothing
+    , _urdiRDSDBInstanceARN = pRDSDBInstanceARN_
+    }
+
+-- | The master user name.
+urdiDBUser :: Lens' UpdateRDSDBInstance (Maybe Text)
+urdiDBUser = lens _urdiDBUser (\ s a -> s{_urdiDBUser = a});
+
+-- | The database password.
+urdiDBPassword :: Lens' UpdateRDSDBInstance (Maybe Text)
+urdiDBPassword = lens _urdiDBPassword (\ s a -> s{_urdiDBPassword = a});
+
+-- | The Amazon RDS instance\'s ARN.
+urdiRDSDBInstanceARN :: Lens' UpdateRDSDBInstance Text
+urdiRDSDBInstanceARN = lens _urdiRDSDBInstanceARN (\ s a -> s{_urdiRDSDBInstanceARN = a});
+
+instance AWSRequest UpdateRDSDBInstance where
+        type Sv UpdateRDSDBInstance = OpsWorks
+        type Rs UpdateRDSDBInstance =
+             UpdateRDSDBInstanceResponse
+        request = postJSON
+        response = receiveNull UpdateRDSDBInstanceResponse'
+
+instance ToHeaders UpdateRDSDBInstance where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateRdsDbInstance" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON UpdateRDSDBInstance where
+        toJSON UpdateRDSDBInstance'{..}
+          = object
+              ["DbUser" .= _urdiDBUser,
+               "DbPassword" .= _urdiDBPassword,
+               "RdsDbInstanceArn" .= _urdiRDSDBInstanceARN]
+
+instance ToPath UpdateRDSDBInstance where
+        toPath = const "/"
+
+instance ToQuery UpdateRDSDBInstance where
+        toQuery = const mempty
+
+-- | /See:/ 'updateRDSDBInstanceResponse' smart constructor.
+data UpdateRDSDBInstanceResponse =
+    UpdateRDSDBInstanceResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateRDSDBInstanceResponse' with the minimum fields required to make a request.
+--
+updateRDSDBInstanceResponse
+    :: UpdateRDSDBInstanceResponse
+updateRDSDBInstanceResponse = UpdateRDSDBInstanceResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateRdsDbInstance.hs b/gen/Network/AWS/OpsWorks/UpdateRdsDbInstance.hs
deleted file mode 100644
--- a/gen/Network/AWS/OpsWorks/UpdateRdsDbInstance.hs
+++ /dev/null
@@ -1,119 +0,0 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Network.AWS.OpsWorks.UpdateRdsDbInstance
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
---
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates an Amazon RDS instance.
---
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
---
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateRdsDbInstance.html>
-module Network.AWS.OpsWorks.UpdateRdsDbInstance
-    (
-    -- * Request
-      UpdateRdsDbInstance
-    -- ** Request constructor
-    , updateRdsDbInstance
-    -- ** Request lenses
-    , urdiDbPassword
-    , urdiDbUser
-    , urdiRdsDbInstanceArn
-
-    -- * Response
-    , UpdateRdsDbInstanceResponse
-    -- ** Response constructor
-    , updateRdsDbInstanceResponse
-    ) where
-
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
-
-data UpdateRdsDbInstance = UpdateRdsDbInstance
-    { _urdiDbPassword       :: Maybe Text
-    , _urdiDbUser           :: Maybe Text
-    , _urdiRdsDbInstanceArn :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'UpdateRdsDbInstance' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'urdiDbPassword' @::@ 'Maybe' 'Text'
---
--- * 'urdiDbUser' @::@ 'Maybe' 'Text'
---
--- * 'urdiRdsDbInstanceArn' @::@ 'Text'
---
-updateRdsDbInstance :: Text -- ^ 'urdiRdsDbInstanceArn'
-                    -> UpdateRdsDbInstance
-updateRdsDbInstance p1 = UpdateRdsDbInstance
-    { _urdiRdsDbInstanceArn = p1
-    , _urdiDbUser           = Nothing
-    , _urdiDbPassword       = Nothing
-    }
-
--- | The database password.
-urdiDbPassword :: Lens' UpdateRdsDbInstance (Maybe Text)
-urdiDbPassword = lens _urdiDbPassword (\s a -> s { _urdiDbPassword = a })
-
--- | The master user name.
-urdiDbUser :: Lens' UpdateRdsDbInstance (Maybe Text)
-urdiDbUser = lens _urdiDbUser (\s a -> s { _urdiDbUser = a })
-
--- | The Amazon RDS instance's ARN.
-urdiRdsDbInstanceArn :: Lens' UpdateRdsDbInstance Text
-urdiRdsDbInstanceArn =
-    lens _urdiRdsDbInstanceArn (\s a -> s { _urdiRdsDbInstanceArn = a })
-
-data UpdateRdsDbInstanceResponse = UpdateRdsDbInstanceResponse
-    deriving (Eq, Ord, Read, Show, Generic)
-
--- | 'UpdateRdsDbInstanceResponse' constructor.
-updateRdsDbInstanceResponse :: UpdateRdsDbInstanceResponse
-updateRdsDbInstanceResponse = UpdateRdsDbInstanceResponse
-
-instance ToPath UpdateRdsDbInstance where
-    toPath = const "/"
-
-instance ToQuery UpdateRdsDbInstance where
-    toQuery = const mempty
-
-instance ToHeaders UpdateRdsDbInstance
-
-instance ToJSON UpdateRdsDbInstance where
-    toJSON UpdateRdsDbInstance{..} = object
-        [ "RdsDbInstanceArn" .= _urdiRdsDbInstanceArn
-        , "DbUser"           .= _urdiDbUser
-        , "DbPassword"       .= _urdiDbPassword
-        ]
-
-instance AWSRequest UpdateRdsDbInstance where
-    type Sv UpdateRdsDbInstance = OpsWorks
-    type Rs UpdateRdsDbInstance = UpdateRdsDbInstanceResponse
-
-    request  = post "UpdateRdsDbInstance"
-    response = nullResponse UpdateRdsDbInstanceResponse
diff --git a/gen/Network/AWS/OpsWorks/UpdateStack.hs b/gen/Network/AWS/OpsWorks/UpdateStack.hs
--- a/gen/Network/AWS/OpsWorks/UpdateStack.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateStack.hs
@@ -1,326 +1,386 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateStack
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a specified stack.
+-- Updates a specified stack.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateStack.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateStack.html AWS API Reference> for UpdateStack.
 module Network.AWS.OpsWorks.UpdateStack
     (
-    -- * Request
-      UpdateStack
-    -- ** Request constructor
-    , updateStack
-    -- ** Request lenses
-    , usAttributes
+    -- * Creating a Request
+      updateStack
+    , UpdateStack
+    -- * Request Lenses
+    , usDefaultInstanceProfileARN
+    , usServiceRoleARN
+    , usDefaultRootDeviceType
     , usChefConfiguration
-    , usConfigurationManager
+    , usAgentVersion
+    , usDefaultSSHKeyName
+    , usCustomJSON
     , usCustomCookbooksSource
-    , usCustomJson
     , usDefaultAvailabilityZone
-    , usDefaultInstanceProfileArn
-    , usDefaultOs
-    , usDefaultRootDeviceType
-    , usDefaultSshKeyName
+    , usName
+    , usUseOpsworksSecurityGroups
+    , usDefaultOS
+    , usAttributes
+    , usUseCustomCookbooks
     , usDefaultSubnetId
+    , usConfigurationManager
     , usHostnameTheme
-    , usName
-    , usServiceRoleArn
     , usStackId
-    , usUseCustomCookbooks
-    , usUseOpsworksSecurityGroups
 
-    -- * Response
-    , UpdateStackResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateStackResponse
+    , UpdateStackResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateStack = UpdateStack
-    { _usAttributes                :: Map StackAttributesKeys Text
-    , _usChefConfiguration         :: Maybe ChefConfiguration
-    , _usConfigurationManager      :: Maybe StackConfigurationManager
-    , _usCustomCookbooksSource     :: Maybe Source
-    , _usCustomJson                :: Maybe Text
-    , _usDefaultAvailabilityZone   :: Maybe Text
-    , _usDefaultInstanceProfileArn :: Maybe Text
-    , _usDefaultOs                 :: Maybe Text
-    , _usDefaultRootDeviceType     :: Maybe RootDeviceType
-    , _usDefaultSshKeyName         :: Maybe Text
-    , _usDefaultSubnetId           :: Maybe Text
-    , _usHostnameTheme             :: Maybe Text
-    , _usName                      :: Maybe Text
-    , _usServiceRoleArn            :: Maybe Text
-    , _usStackId                   :: Text
-    , _usUseCustomCookbooks        :: Maybe Bool
-    , _usUseOpsworksSecurityGroups :: Maybe Bool
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'updateStack' smart constructor.
+data UpdateStack = UpdateStack'
+    { _usDefaultInstanceProfileARN :: !(Maybe Text)
+    , _usServiceRoleARN            :: !(Maybe Text)
+    , _usDefaultRootDeviceType     :: !(Maybe RootDeviceType)
+    , _usChefConfiguration         :: !(Maybe ChefConfiguration)
+    , _usAgentVersion              :: !(Maybe Text)
+    , _usDefaultSSHKeyName         :: !(Maybe Text)
+    , _usCustomJSON                :: !(Maybe Text)
+    , _usCustomCookbooksSource     :: !(Maybe Source)
+    , _usDefaultAvailabilityZone   :: !(Maybe Text)
+    , _usName                      :: !(Maybe Text)
+    , _usUseOpsworksSecurityGroups :: !(Maybe Bool)
+    , _usDefaultOS                 :: !(Maybe Text)
+    , _usAttributes                :: !(Maybe (Map StackAttributesKeys Text))
+    , _usUseCustomCookbooks        :: !(Maybe Bool)
+    , _usDefaultSubnetId           :: !(Maybe Text)
+    , _usConfigurationManager      :: !(Maybe StackConfigurationManager)
+    , _usHostnameTheme             :: !(Maybe Text)
+    , _usStackId                   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateStack' constructor.
+-- | Creates a value of 'UpdateStack' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'usAttributes' @::@ 'HashMap' 'StackAttributesKeys' 'Text'
+-- * 'usDefaultInstanceProfileARN'
 --
--- * 'usChefConfiguration' @::@ 'Maybe' 'ChefConfiguration'
+-- * 'usServiceRoleARN'
 --
--- * 'usConfigurationManager' @::@ 'Maybe' 'StackConfigurationManager'
+-- * 'usDefaultRootDeviceType'
 --
--- * 'usCustomCookbooksSource' @::@ 'Maybe' 'Source'
+-- * 'usChefConfiguration'
 --
--- * 'usCustomJson' @::@ 'Maybe' 'Text'
+-- * 'usAgentVersion'
 --
--- * 'usDefaultAvailabilityZone' @::@ 'Maybe' 'Text'
+-- * 'usDefaultSSHKeyName'
 --
--- * 'usDefaultInstanceProfileArn' @::@ 'Maybe' 'Text'
+-- * 'usCustomJSON'
 --
--- * 'usDefaultOs' @::@ 'Maybe' 'Text'
+-- * 'usCustomCookbooksSource'
 --
--- * 'usDefaultRootDeviceType' @::@ 'Maybe' 'RootDeviceType'
+-- * 'usDefaultAvailabilityZone'
 --
--- * 'usDefaultSshKeyName' @::@ 'Maybe' 'Text'
+-- * 'usName'
 --
--- * 'usDefaultSubnetId' @::@ 'Maybe' 'Text'
+-- * 'usUseOpsworksSecurityGroups'
 --
--- * 'usHostnameTheme' @::@ 'Maybe' 'Text'
+-- * 'usDefaultOS'
 --
--- * 'usName' @::@ 'Maybe' 'Text'
+-- * 'usAttributes'
 --
--- * 'usServiceRoleArn' @::@ 'Maybe' 'Text'
+-- * 'usUseCustomCookbooks'
 --
--- * 'usStackId' @::@ 'Text'
+-- * 'usDefaultSubnetId'
 --
--- * 'usUseCustomCookbooks' @::@ 'Maybe' 'Bool'
+-- * 'usConfigurationManager'
 --
--- * 'usUseOpsworksSecurityGroups' @::@ 'Maybe' 'Bool'
+-- * 'usHostnameTheme'
 --
-updateStack :: Text -- ^ 'usStackId'
-            -> UpdateStack
-updateStack p1 = UpdateStack
-    { _usStackId                   = p1
-    , _usName                      = Nothing
-    , _usAttributes                = mempty
-    , _usServiceRoleArn            = Nothing
-    , _usDefaultInstanceProfileArn = Nothing
-    , _usDefaultOs                 = Nothing
-    , _usHostnameTheme             = Nothing
-    , _usDefaultAvailabilityZone   = Nothing
-    , _usDefaultSubnetId           = Nothing
-    , _usCustomJson                = Nothing
-    , _usConfigurationManager      = Nothing
-    , _usChefConfiguration         = Nothing
-    , _usUseCustomCookbooks        = Nothing
-    , _usCustomCookbooksSource     = Nothing
-    , _usDefaultSshKeyName         = Nothing
-    , _usDefaultRootDeviceType     = Nothing
+-- * 'usStackId'
+updateStack
+    :: Text -- ^ 'usStackId'
+    -> UpdateStack
+updateStack pStackId_ =
+    UpdateStack'
+    { _usDefaultInstanceProfileARN = Nothing
+    , _usServiceRoleARN = Nothing
+    , _usDefaultRootDeviceType = Nothing
+    , _usChefConfiguration = Nothing
+    , _usAgentVersion = Nothing
+    , _usDefaultSSHKeyName = Nothing
+    , _usCustomJSON = Nothing
+    , _usCustomCookbooksSource = Nothing
+    , _usDefaultAvailabilityZone = Nothing
+    , _usName = Nothing
     , _usUseOpsworksSecurityGroups = Nothing
+    , _usDefaultOS = Nothing
+    , _usAttributes = Nothing
+    , _usUseCustomCookbooks = Nothing
+    , _usDefaultSubnetId = Nothing
+    , _usConfigurationManager = Nothing
+    , _usHostnameTheme = Nothing
+    , _usStackId = pStackId_
     }
 
--- | One or more user-defined key/value pairs to be added to the stack attributes.
-usAttributes :: Lens' UpdateStack (HashMap StackAttributesKeys Text)
-usAttributes = lens _usAttributes (\s a -> s { _usAttributes = a }) . _Map
+-- | The ARN of an IAM profile that is the default profile for all of the
+-- stack\'s EC2 instances. For more information about IAM ARNs, see
+-- <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+usDefaultInstanceProfileARN :: Lens' UpdateStack (Maybe Text)
+usDefaultInstanceProfileARN = lens _usDefaultInstanceProfileARN (\ s a -> s{_usDefaultInstanceProfileARN = a});
 
--- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf and the
--- Berkshelf version on Chef 11.10 stacks. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create aNew Stack>.
-usChefConfiguration :: Lens' UpdateStack (Maybe ChefConfiguration)
-usChefConfiguration =
-    lens _usChefConfiguration (\s a -> s { _usChefConfiguration = a })
+-- | Do not use this parameter. You cannot update a stack\'s service role.
+usServiceRoleARN :: Lens' UpdateStack (Maybe Text)
+usServiceRoleARN = lens _usServiceRoleARN (\ s a -> s{_usServiceRoleARN = a});
 
--- | The configuration manager. When you clone a stack we recommend that you use
--- the configuration manager to specify the Chef version, 0.9, 11.4, or 11.10.
--- The default value is currently 11.4.
-usConfigurationManager :: Lens' UpdateStack (Maybe StackConfigurationManager)
-usConfigurationManager =
-    lens _usConfigurationManager (\s a -> s { _usConfigurationManager = a })
+-- | The default root device type. This value is used by default for all
+-- instances in the stack, but you can override it when you create an
+-- instance. For more information, see
+-- <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
+usDefaultRootDeviceType :: Lens' UpdateStack (Maybe RootDeviceType)
+usDefaultRootDeviceType = lens _usDefaultRootDeviceType (\ s a -> s{_usDefaultRootDeviceType = a});
 
-usCustomCookbooksSource :: Lens' UpdateStack (Maybe Source)
-usCustomCookbooksSource =
-    lens _usCustomCookbooksSource (\s a -> s { _usCustomCookbooksSource = a })
+-- | A 'ChefConfiguration' object that specifies whether to enable Berkshelf
+-- and the Berkshelf version on Chef 11.10 stacks. For more information,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+usChefConfiguration :: Lens' UpdateStack (Maybe ChefConfiguration)
+usChefConfiguration = lens _usChefConfiguration (\ s a -> s{_usChefConfiguration = a});
 
--- | A string that contains user-defined, custom JSON. It can be used to override
--- the corresponding default stack configuration JSON values or to pass data to
--- recipes. The string should be in the following format and must escape
--- characters such as '"'.:
+-- | The default AWS OpsWorks agent version. You have the following options:
 --
--- '"{\"key1\": \"value1\", \"key2\": \"value2\",...}"'
+-- -   Auto-update - Set this parameter to 'LATEST'. AWS OpsWorks
+--     automatically installs new agent versions on the stack\'s instances
+--     as soon as they are available.
+-- -   Fixed version - Set this parameter to your preferred agent version.
+--     To update the agent version, you must edit the stack configuration
+--     and specify a new version. AWS OpsWorks then automatically installs
+--     that version on the stack\'s instances.
 --
--- For more information on custom JSON, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the StackConfiguration Attributes>.
-usCustomJson :: Lens' UpdateStack (Maybe Text)
-usCustomJson = lens _usCustomJson (\s a -> s { _usCustomJson = a })
-
--- | The stack's default Availability Zone, which must be in the specified region.
--- For more information, see <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>. If you also specify a value
--- for 'DefaultSubnetId', the subnet must be in the same zone. For more
--- information, see 'CreateStack'.
-usDefaultAvailabilityZone :: Lens' UpdateStack (Maybe Text)
-usDefaultAvailabilityZone =
-    lens _usDefaultAvailabilityZone
-        (\s a -> s { _usDefaultAvailabilityZone = a })
-
--- | The ARN of an IAM profile that is the default profile for all of the stack's
--- EC2 instances. For more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
-usDefaultInstanceProfileArn :: Lens' UpdateStack (Maybe Text)
-usDefaultInstanceProfileArn =
-    lens _usDefaultInstanceProfileArn
-        (\s a -> s { _usDefaultInstanceProfileArn = a })
-
--- | The stack's operating system, which must be set to one of the following.
+-- The default setting is 'LATEST'. To specify an agent version, you must
+-- use the complete version number, not the abbreviated number shown on the
+-- console. For a list of available agent version numbers, call
+-- DescribeAgentVersions.
 --
--- Standard Linux operating systems: an Amazon Linux version such as 'AmazonLinux 2014.09', 'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'. Custom Linux AMIs: 'Custom'. You specify the custom AMI you want to use when you create instances. Microsoft Windows Server 2012 R2.
--- The default option is the current Amazon Linux version.
-usDefaultOs :: Lens' UpdateStack (Maybe Text)
-usDefaultOs = lens _usDefaultOs (\s a -> s { _usDefaultOs = a })
+-- You can also specify an agent version when you create or update an
+-- instance, which overrides the stack\'s default setting.
+usAgentVersion :: Lens' UpdateStack (Maybe Text)
+usAgentVersion = lens _usAgentVersion (\ s a -> s{_usAgentVersion = a});
 
--- | The default root device type. This value is used by default for all instances
--- in the stack, but you can override it when you create an instance. For more
--- information, see <http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ComponentsAMIs.html#storage-for-the-root-device Storage for the Root Device>.
-usDefaultRootDeviceType :: Lens' UpdateStack (Maybe RootDeviceType)
-usDefaultRootDeviceType =
-    lens _usDefaultRootDeviceType (\s a -> s { _usDefaultRootDeviceType = a })
+-- | A default Amazon EC2 key-pair name. The default value is 'none'. If you
+-- specify a key-pair name, AWS OpsWorks installs the public key on the
+-- instance and you can use the private key with an SSH client to log in to
+-- the instance. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html Using SSH to Communicate with an Instance>
+-- and
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>.
+-- You can override this setting by specifying a different key pair, or no
+-- key pair, when you
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html create an instance>.
+usDefaultSSHKeyName :: Lens' UpdateStack (Maybe Text)
+usDefaultSSHKeyName = lens _usDefaultSSHKeyName (\ s a -> s{_usDefaultSSHKeyName = a});
 
--- | A default Amazon EC2 key pair name. The default value is none. If you specify
--- a key pair name, AWS OpsWorks installs the public key on the instance and you
--- can use the private key with an SSH client to log in to the instance. For
--- more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-ssh.html  Using SSH to Communicate with an Instance> and <http://docs.aws.amazon.com/opsworks/latest/userguide/security-ssh-access.html Managing SSH Access>. You can override this setting by specifying a different
--- key pair, or no key pair, when you <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-add.html  create an instance>.
-usDefaultSshKeyName :: Lens' UpdateStack (Maybe Text)
-usDefaultSshKeyName =
-    lens _usDefaultSshKeyName (\s a -> s { _usDefaultSshKeyName = a })
+-- | A string that contains user-defined, custom JSON. It can be used to
+-- override the corresponding default stack configuration JSON values or to
+-- pass data to recipes. The string should be in the following format and
+-- escape characters such as \'\"\':
+--
+-- '\"{\\\"key1\\\": \\\"value1\\\", \\\"key2\\\": \\\"value2\\\",...}\"'
+--
+-- For more information on custom JSON, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-json.html Use Custom JSON to Modify the Stack Configuration Attributes>.
+usCustomJSON :: Lens' UpdateStack (Maybe Text)
+usCustomJSON = lens _usCustomJSON (\ s a -> s{_usCustomJSON = a});
 
--- | The stack's default VPC subnet ID. This parameter is required if you specify
--- a value for the 'VpcId' parameter. All instances are launched into this subnet
--- unless you specify otherwise when you create the instance. If you also
--- specify a value for 'DefaultAvailabilityZone', the subnet must be in that zone.
--- For information on default values and when this parameter is required, see
--- the 'VpcId' parameter description.
-usDefaultSubnetId :: Lens' UpdateStack (Maybe Text)
-usDefaultSubnetId =
-    lens _usDefaultSubnetId (\s a -> s { _usDefaultSubnetId = a })
+-- | Undocumented member.
+usCustomCookbooksSource :: Lens' UpdateStack (Maybe Source)
+usCustomCookbooksSource = lens _usCustomCookbooksSource (\ s a -> s{_usCustomCookbooksSource = a});
 
--- | The stack's new host name theme, with spaces are replaced by underscores. The
--- theme is used to generate host names for the stack's instances. By default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host names by appending integers to
--- the layer's short name. The other themes are:
---
--- 'Baked_Goods'   'Clouds'   'Europe_Cities'   'Fruits'   'Greek_Deities'   'Legendary_creatures_from_Japan'   'Planets_and_Moons'   'Roman_Deities'   'Scottish_Islands'   'US_Cities'   'Wild_Cats'   To obtain a generated host name, call 'GetHostNameSuggestion', which returns
--- a host name based on the current theme.
-usHostnameTheme :: Lens' UpdateStack (Maybe Text)
-usHostnameTheme = lens _usHostnameTheme (\s a -> s { _usHostnameTheme = a })
+-- | The stack\'s default Availability Zone, which must be in the stack\'s
+-- region. For more information, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html Regions and Endpoints>.
+-- If you also specify a value for 'DefaultSubnetId', the subnet must be in
+-- the same zone. For more information, see CreateStack.
+usDefaultAvailabilityZone :: Lens' UpdateStack (Maybe Text)
+usDefaultAvailabilityZone = lens _usDefaultAvailabilityZone (\ s a -> s{_usDefaultAvailabilityZone = a});
 
--- | The stack's new name.
+-- | The stack\'s new name.
 usName :: Lens' UpdateStack (Maybe Text)
-usName = lens _usName (\s a -> s { _usName = a })
+usName = lens _usName (\ s a -> s{_usName = a});
 
--- | The stack AWS Identity and Access Management (IAM) role, which allows AWS
--- OpsWorks to work with AWS resources on your behalf. You must set this
--- parameter to the Amazon Resource Name (ARN) for an existing IAM role. For
--- more information about IAM ARNs, see <http://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html Using Identifiers>.
+-- | Whether to associate the AWS OpsWorks built-in security groups with the
+-- stack\'s layers.
 --
--- You must set this parameter to a valid service role ARN or the action will
--- fail; there is no default value. You can specify the stack's current service
--- role ARN, if you prefer, but you must do so explicitly.
+-- AWS OpsWorks provides a standard set of built-in security groups, one
+-- for each layer, which are associated with layers by default.
+-- 'UseOpsworksSecurityGroups' allows you to provide your own custom
+-- security groups instead of using the built-in groups.
+-- 'UseOpsworksSecurityGroups' has the following settings:
 --
+-- -   True - AWS OpsWorks automatically associates the appropriate
+--     built-in security group with each layer (default setting). You can
+--     associate additional security groups with a layer after you create
+--     it, but you cannot delete the built-in security group.
+-- -   False - AWS OpsWorks does not associate built-in security groups
+--     with layers. You must create appropriate EC2 security groups and
+--     associate a security group with each layer that you create. However,
+--     you can still manually associate a built-in security group with a
+--     layer on. Custom security groups are required only for those layers
+--     that need custom settings.
 --
-usServiceRoleArn :: Lens' UpdateStack (Maybe Text)
-usServiceRoleArn = lens _usServiceRoleArn (\s a -> s { _usServiceRoleArn = a })
+-- For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a New Stack>.
+usUseOpsworksSecurityGroups :: Lens' UpdateStack (Maybe Bool)
+usUseOpsworksSecurityGroups = lens _usUseOpsworksSecurityGroups (\ s a -> s{_usUseOpsworksSecurityGroups = a});
 
--- | The stack ID.
-usStackId :: Lens' UpdateStack Text
-usStackId = lens _usStackId (\s a -> s { _usStackId = a })
+-- | The stack\'s operating system, which must be set to one of the
+-- following:
+--
+-- -   A supported Linux operating system: An Amazon Linux version, such as
+--     'Amazon Linux 2015.03', 'Red Hat Enterprise Linux 7',
+--     'Ubuntu 12.04 LTS', or 'Ubuntu 14.04 LTS'.
+-- -   'Microsoft Windows Server 2012 R2 Base'.
+-- -   A custom AMI: 'Custom'. You specify the custom AMI you want to use
+--     when you create instances. For more information on how to use custom
+--     AMIs with OpsWorks, see
+--     <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html Using Custom AMIs>.
+--
+-- The default option is the stack\'s current operating system. For more
+-- information on the supported operating systems, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-os.html AWS OpsWorks Operating Systems>.
+usDefaultOS :: Lens' UpdateStack (Maybe Text)
+usDefaultOS = lens _usDefaultOS (\ s a -> s{_usDefaultOS = a});
 
+-- | One or more user-defined key-value pairs to be added to the stack
+-- attributes.
+usAttributes :: Lens' UpdateStack (HashMap StackAttributesKeys Text)
+usAttributes = lens _usAttributes (\ s a -> s{_usAttributes = a}) . _Default . _Map;
+
 -- | Whether the stack uses custom cookbooks.
 usUseCustomCookbooks :: Lens' UpdateStack (Maybe Bool)
-usUseCustomCookbooks =
-    lens _usUseCustomCookbooks (\s a -> s { _usUseCustomCookbooks = a })
+usUseCustomCookbooks = lens _usUseCustomCookbooks (\ s a -> s{_usUseCustomCookbooks = a});
 
--- | Whether to associate the AWS OpsWorks built-in security groups with the
--- stack's layers.
+-- | The stack\'s default VPC subnet ID. This parameter is required if you
+-- specify a value for the 'VpcId' parameter. All instances are launched
+-- into this subnet unless you specify otherwise when you create the
+-- instance. If you also specify a value for 'DefaultAvailabilityZone', the
+-- subnet must be in that zone. For information on default values and when
+-- this parameter is required, see the 'VpcId' parameter description.
+usDefaultSubnetId :: Lens' UpdateStack (Maybe Text)
+usDefaultSubnetId = lens _usDefaultSubnetId (\ s a -> s{_usDefaultSubnetId = a});
+
+-- | The configuration manager. When you clone a stack, we recommend that you
+-- use the configuration manager to specify the Chef version: 0.9, 11.4, or
+-- 11.10. The default value is currently 11.4.
+usConfigurationManager :: Lens' UpdateStack (Maybe StackConfigurationManager)
+usConfigurationManager = lens _usConfigurationManager (\ s a -> s{_usConfigurationManager = a});
+
+-- | The stack\'s new host name theme, with spaces replaced by underscores.
+-- The theme is used to generate host names for the stack\'s instances. By
+-- default, 'HostnameTheme' is set to 'Layer_Dependent', which creates host
+-- names by appending integers to the layer\'s short name. The other themes
+-- are:
 --
--- AWS OpsWorks provides a standard set of built-in security groups, one for
--- each layer, which are associated with layers by default. 'UseOpsworksSecurityGroups' allows you to instead provide your own custom security groups. 'UseOpsworksSecurityGroups' has the following settings:
+-- -   'Baked_Goods'
+-- -   'Clouds'
+-- -   'Europe_Cities'
+-- -   'Fruits'
+-- -   'Greek_Deities'
+-- -   'Legendary_creatures_from_Japan'
+-- -   'Planets_and_Moons'
+-- -   'Roman_Deities'
+-- -   'Scottish_Islands'
+-- -   'US_Cities'
+-- -   'Wild_Cats'
 --
--- True - AWS OpsWorks automatically associates the appropriate built-in
--- security group with each layer (default setting). You can associate
--- additional security groups with a layer after you create it but you cannot
--- delete the built-in security group.  False - AWS OpsWorks does not associate
--- built-in security groups with layers. You must create appropriate EC2
--- security groups and associate a security group with each layer that you
--- create. However, you can still manually associate a built-in security group
--- with a layer on creation; custom security groups are required only for those
--- layers that need custom settings.   For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/workingstacks-creating.html Create a NewStack>.
-usUseOpsworksSecurityGroups :: Lens' UpdateStack (Maybe Bool)
-usUseOpsworksSecurityGroups =
-    lens _usUseOpsworksSecurityGroups
-        (\s a -> s { _usUseOpsworksSecurityGroups = a })
+-- To obtain a generated host name, call 'GetHostNameSuggestion', which
+-- returns a host name based on the current theme.
+usHostnameTheme :: Lens' UpdateStack (Maybe Text)
+usHostnameTheme = lens _usHostnameTheme (\ s a -> s{_usHostnameTheme = a});
 
-data UpdateStackResponse = UpdateStackResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+-- | The stack ID.
+usStackId :: Lens' UpdateStack Text
+usStackId = lens _usStackId (\ s a -> s{_usStackId = a});
 
--- | 'UpdateStackResponse' constructor.
-updateStackResponse :: UpdateStackResponse
-updateStackResponse = UpdateStackResponse
+instance AWSRequest UpdateStack where
+        type Sv UpdateStack = OpsWorks
+        type Rs UpdateStack = UpdateStackResponse
+        request = postJSON
+        response = receiveNull UpdateStackResponse'
 
-instance ToPath UpdateStack where
-    toPath = const "/"
+instance ToHeaders UpdateStack where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateStack" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance ToQuery UpdateStack where
-    toQuery = const mempty
+instance ToJSON UpdateStack where
+        toJSON UpdateStack'{..}
+          = object
+              ["DefaultInstanceProfileArn" .=
+                 _usDefaultInstanceProfileARN,
+               "ServiceRoleArn" .= _usServiceRoleARN,
+               "DefaultRootDeviceType" .= _usDefaultRootDeviceType,
+               "ChefConfiguration" .= _usChefConfiguration,
+               "AgentVersion" .= _usAgentVersion,
+               "DefaultSshKeyName" .= _usDefaultSSHKeyName,
+               "CustomJson" .= _usCustomJSON,
+               "CustomCookbooksSource" .= _usCustomCookbooksSource,
+               "DefaultAvailabilityZone" .=
+                 _usDefaultAvailabilityZone,
+               "Name" .= _usName,
+               "UseOpsworksSecurityGroups" .=
+                 _usUseOpsworksSecurityGroups,
+               "DefaultOs" .= _usDefaultOS,
+               "Attributes" .= _usAttributes,
+               "UseCustomCookbooks" .= _usUseCustomCookbooks,
+               "DefaultSubnetId" .= _usDefaultSubnetId,
+               "ConfigurationManager" .= _usConfigurationManager,
+               "HostnameTheme" .= _usHostnameTheme,
+               "StackId" .= _usStackId]
 
-instance ToHeaders UpdateStack
+instance ToPath UpdateStack where
+        toPath = const "/"
 
-instance ToJSON UpdateStack where
-    toJSON UpdateStack{..} = object
-        [ "StackId"                   .= _usStackId
-        , "Name"                      .= _usName
-        , "Attributes"                .= _usAttributes
-        , "ServiceRoleArn"            .= _usServiceRoleArn
-        , "DefaultInstanceProfileArn" .= _usDefaultInstanceProfileArn
-        , "DefaultOs"                 .= _usDefaultOs
-        , "HostnameTheme"             .= _usHostnameTheme
-        , "DefaultAvailabilityZone"   .= _usDefaultAvailabilityZone
-        , "DefaultSubnetId"           .= _usDefaultSubnetId
-        , "CustomJson"                .= _usCustomJson
-        , "ConfigurationManager"      .= _usConfigurationManager
-        , "ChefConfiguration"         .= _usChefConfiguration
-        , "UseCustomCookbooks"        .= _usUseCustomCookbooks
-        , "CustomCookbooksSource"     .= _usCustomCookbooksSource
-        , "DefaultSshKeyName"         .= _usDefaultSshKeyName
-        , "DefaultRootDeviceType"     .= _usDefaultRootDeviceType
-        , "UseOpsworksSecurityGroups" .= _usUseOpsworksSecurityGroups
-        ]
+instance ToQuery UpdateStack where
+        toQuery = const mempty
 
-instance AWSRequest UpdateStack where
-    type Sv UpdateStack = OpsWorks
-    type Rs UpdateStack = UpdateStackResponse
+-- | /See:/ 'updateStackResponse' smart constructor.
+data UpdateStackResponse =
+    UpdateStackResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateStack"
-    response = nullResponse UpdateStackResponse
+-- | Creates a value of 'UpdateStackResponse' with the minimum fields required to make a request.
+--
+updateStackResponse
+    :: UpdateStackResponse
+updateStackResponse = UpdateStackResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
--- a/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateUserProfile.hs
@@ -1,134 +1,142 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateUserProfile
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates a specified user profile.
+-- Updates a specified user profile.
 --
--- Required Permissions: To use this action, an IAM user must have an attached
--- policy that explicitly grants permissions. For more information on user
--- permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
+-- __Required Permissions__: To use this action, an IAM user must have an
+-- attached policy that explicitly grants permissions. For more information
+-- on user permissions, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateUserProfile.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateUserProfile.html AWS API Reference> for UpdateUserProfile.
 module Network.AWS.OpsWorks.UpdateUserProfile
     (
-    -- * Request
-      UpdateUserProfile
-    -- ** Request constructor
-    , updateUserProfile
-    -- ** Request lenses
+    -- * Creating a Request
+      updateUserProfile
+    , UpdateUserProfile
+    -- * Request Lenses
+    , uupSSHUsername
+    , uupSSHPublicKey
     , uupAllowSelfManagement
-    , uupIamUserArn
-    , uupSshPublicKey
-    , uupSshUsername
+    , uupIAMUserARN
 
-    -- * Response
-    , UpdateUserProfileResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateUserProfileResponse
+    , UpdateUserProfileResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateUserProfile = UpdateUserProfile
-    { _uupAllowSelfManagement :: Maybe Bool
-    , _uupIamUserArn          :: Text
-    , _uupSshPublicKey        :: Maybe Text
-    , _uupSshUsername         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'updateUserProfile' smart constructor.
+data UpdateUserProfile = UpdateUserProfile'
+    { _uupSSHUsername         :: !(Maybe Text)
+    , _uupSSHPublicKey        :: !(Maybe Text)
+    , _uupAllowSelfManagement :: !(Maybe Bool)
+    , _uupIAMUserARN          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateUserProfile' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateUserProfile' with the minimum fields required to make a request.
 --
--- * 'uupAllowSelfManagement' @::@ 'Maybe' 'Bool'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uupIamUserArn' @::@ 'Text'
+-- * 'uupSSHUsername'
 --
--- * 'uupSshPublicKey' @::@ 'Maybe' 'Text'
+-- * 'uupSSHPublicKey'
 --
--- * 'uupSshUsername' @::@ 'Maybe' 'Text'
+-- * 'uupAllowSelfManagement'
 --
-updateUserProfile :: Text -- ^ 'uupIamUserArn'
-                  -> UpdateUserProfile
-updateUserProfile p1 = UpdateUserProfile
-    { _uupIamUserArn          = p1
-    , _uupSshUsername         = Nothing
-    , _uupSshPublicKey        = Nothing
+-- * 'uupIAMUserARN'
+updateUserProfile
+    :: Text -- ^ 'uupIAMUserARN'
+    -> UpdateUserProfile
+updateUserProfile pIAMUserARN_ =
+    UpdateUserProfile'
+    { _uupSSHUsername = Nothing
+    , _uupSSHPublicKey = Nothing
     , _uupAllowSelfManagement = Nothing
+    , _uupIAMUserARN = pIAMUserARN_
     }
 
--- | Whether users can specify their own SSH public key through the My Settings
--- page. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions>.
+-- | The user\'s SSH user name. The allowable characters are [a-z], [A-Z],
+-- [0-9], \'-\', and \'_\'. If the specified name includes other
+-- punctuation marks, AWS OpsWorks removes them. For example, 'my.name'
+-- will be changed to 'myname'. If you do not specify an SSH user name, AWS
+-- OpsWorks generates one from the IAM user name.
+uupSSHUsername :: Lens' UpdateUserProfile (Maybe Text)
+uupSSHUsername = lens _uupSSHUsername (\ s a -> s{_uupSSHUsername = a});
+
+-- | The user\'s new SSH public key.
+uupSSHPublicKey :: Lens' UpdateUserProfile (Maybe Text)
+uupSSHPublicKey = lens _uupSSHPublicKey (\ s a -> s{_uupSSHPublicKey = a});
+
+-- | Whether users can specify their own SSH public key through the My
+-- Settings page. For more information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/security-settingsshkey.html Managing User Permissions>.
 uupAllowSelfManagement :: Lens' UpdateUserProfile (Maybe Bool)
-uupAllowSelfManagement =
-    lens _uupAllowSelfManagement (\s a -> s { _uupAllowSelfManagement = a })
+uupAllowSelfManagement = lens _uupAllowSelfManagement (\ s a -> s{_uupAllowSelfManagement = a});
 
 -- | The user IAM ARN.
-uupIamUserArn :: Lens' UpdateUserProfile Text
-uupIamUserArn = lens _uupIamUserArn (\s a -> s { _uupIamUserArn = a })
-
--- | The user's new SSH public key.
-uupSshPublicKey :: Lens' UpdateUserProfile (Maybe Text)
-uupSshPublicKey = lens _uupSshPublicKey (\s a -> s { _uupSshPublicKey = a })
+uupIAMUserARN :: Lens' UpdateUserProfile Text
+uupIAMUserARN = lens _uupIAMUserARN (\ s a -> s{_uupIAMUserARN = a});
 
--- | The user's SSH user name. The allowable characters are [a-z], [A-Z], [0-9],
--- '-', and '_'. If the specified name includes other punctuation marks, AWS
--- OpsWorks removes them. For example, 'my.name' will be changed to 'myname'. If you
--- do not specify an SSH user name, AWS OpsWorks generates one from the IAM user
--- name.
-uupSshUsername :: Lens' UpdateUserProfile (Maybe Text)
-uupSshUsername = lens _uupSshUsername (\s a -> s { _uupSshUsername = a })
+instance AWSRequest UpdateUserProfile where
+        type Sv UpdateUserProfile = OpsWorks
+        type Rs UpdateUserProfile = UpdateUserProfileResponse
+        request = postJSON
+        response = receiveNull UpdateUserProfileResponse'
 
-data UpdateUserProfileResponse = UpdateUserProfileResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance ToHeaders UpdateUserProfile where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateUserProfile" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'UpdateUserProfileResponse' constructor.
-updateUserProfileResponse :: UpdateUserProfileResponse
-updateUserProfileResponse = UpdateUserProfileResponse
+instance ToJSON UpdateUserProfile where
+        toJSON UpdateUserProfile'{..}
+          = object
+              ["SshUsername" .= _uupSSHUsername,
+               "SshPublicKey" .= _uupSSHPublicKey,
+               "AllowSelfManagement" .= _uupAllowSelfManagement,
+               "IamUserArn" .= _uupIAMUserARN]
 
 instance ToPath UpdateUserProfile where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateUserProfile where
-    toQuery = const mempty
-
-instance ToHeaders UpdateUserProfile
-
-instance ToJSON UpdateUserProfile where
-    toJSON UpdateUserProfile{..} = object
-        [ "IamUserArn"          .= _uupIamUserArn
-        , "SshUsername"         .= _uupSshUsername
-        , "SshPublicKey"        .= _uupSshPublicKey
-        , "AllowSelfManagement" .= _uupAllowSelfManagement
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UpdateUserProfile where
-    type Sv UpdateUserProfile = OpsWorks
-    type Rs UpdateUserProfile = UpdateUserProfileResponse
+-- | /See:/ 'updateUserProfileResponse' smart constructor.
+data UpdateUserProfileResponse =
+    UpdateUserProfileResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateUserProfile"
-    response = nullResponse UpdateUserProfileResponse
+-- | Creates a value of 'UpdateUserProfileResponse' with the minimum fields required to make a request.
+--
+updateUserProfileResponse
+    :: UpdateUserProfileResponse
+updateUserProfileResponse = UpdateUserProfileResponse'
diff --git a/gen/Network/AWS/OpsWorks/UpdateVolume.hs b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
--- a/gen/Network/AWS/OpsWorks/UpdateVolume.hs
+++ b/gen/Network/AWS/OpsWorks/UpdateVolume.hs
@@ -1,118 +1,127 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# 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.OpsWorks.UpdateVolume
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Updates an Amazon EBS volume's name or mount point. For more information, see <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
+-- Updates an Amazon EBS volume\'s name or mount point. For more
+-- information, see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/resources.html Resource Management>.
 --
--- Required Permissions: To use this action, an IAM user must have a Manage
--- permissions level for the stack, or an attached policy that explicitly grants
--- permissions. For more information on user permissions, see <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing UserPermissions>.
+-- __Required Permissions__: To use this action, an IAM user must have a
+-- Manage permissions level for the stack, or an attached policy that
+-- explicitly grants permissions. For more information on user permissions,
+-- see
+-- <http://docs.aws.amazon.com/opsworks/latest/userguide/opsworks-security-users.html Managing User Permissions>.
 --
--- <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/opsworks/latest/APIReference/API_UpdateVolume.html AWS API Reference> for UpdateVolume.
 module Network.AWS.OpsWorks.UpdateVolume
     (
-    -- * Request
-      UpdateVolume
-    -- ** Request constructor
-    , updateVolume
-    -- ** Request lenses
-    , uv1MountPoint
-    , uv1Name
-    , uv1VolumeId
+    -- * Creating a Request
+      updateVolume
+    , UpdateVolume
+    -- * Request Lenses
+    , uName
+    , uMountPoint
+    , uVolumeId
 
-    -- * Response
-    , UpdateVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateVolumeResponse
+    , UpdateVolumeResponse
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.OpsWorks.Types
-import qualified GHC.Exts
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.OpsWorks.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data UpdateVolume = UpdateVolume
-    { _uv1MountPoint :: Maybe Text
-    , _uv1Name       :: Maybe Text
-    , _uv1VolumeId   :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'updateVolume' smart constructor.
+data UpdateVolume = UpdateVolume'
+    { _uName       :: !(Maybe Text)
+    , _uMountPoint :: !(Maybe Text)
+    , _uVolumeId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateVolume' with the minimum fields required to make a request.
 --
--- * 'uv1MountPoint' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uv1Name' @::@ 'Maybe' 'Text'
+-- * 'uName'
 --
--- * 'uv1VolumeId' @::@ 'Text'
+-- * 'uMountPoint'
 --
-updateVolume :: Text -- ^ 'uv1VolumeId'
-             -> UpdateVolume
-updateVolume p1 = UpdateVolume
-    { _uv1VolumeId   = p1
-    , _uv1Name       = Nothing
-    , _uv1MountPoint = Nothing
+-- * 'uVolumeId'
+updateVolume
+    :: Text -- ^ 'uVolumeId'
+    -> UpdateVolume
+updateVolume pVolumeId_ =
+    UpdateVolume'
+    { _uName = Nothing
+    , _uMountPoint = Nothing
+    , _uVolumeId = pVolumeId_
     }
 
--- | The new mount point.
-uv1MountPoint :: Lens' UpdateVolume (Maybe Text)
-uv1MountPoint = lens _uv1MountPoint (\s a -> s { _uv1MountPoint = a })
-
 -- | The new name.
-uv1Name :: Lens' UpdateVolume (Maybe Text)
-uv1Name = lens _uv1Name (\s a -> s { _uv1Name = a })
+uName :: Lens' UpdateVolume (Maybe Text)
+uName = lens _uName (\ s a -> s{_uName = a});
 
+-- | The new mount point.
+uMountPoint :: Lens' UpdateVolume (Maybe Text)
+uMountPoint = lens _uMountPoint (\ s a -> s{_uMountPoint = a});
+
 -- | The volume ID.
-uv1VolumeId :: Lens' UpdateVolume Text
-uv1VolumeId = lens _uv1VolumeId (\s a -> s { _uv1VolumeId = a })
+uVolumeId :: Lens' UpdateVolume Text
+uVolumeId = lens _uVolumeId (\ s a -> s{_uVolumeId = a});
 
-data UpdateVolumeResponse = UpdateVolumeResponse
-    deriving (Eq, Ord, Read, Show, Generic)
+instance AWSRequest UpdateVolume where
+        type Sv UpdateVolume = OpsWorks
+        type Rs UpdateVolume = UpdateVolumeResponse
+        request = postJSON
+        response = receiveNull UpdateVolumeResponse'
 
--- | 'UpdateVolumeResponse' constructor.
-updateVolumeResponse :: UpdateVolumeResponse
-updateVolumeResponse = UpdateVolumeResponse
+instance ToHeaders UpdateVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("OpsWorks_20130218.UpdateVolume" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UpdateVolume where
+        toJSON UpdateVolume'{..}
+          = object
+              ["Name" .= _uName, "MountPoint" .= _uMountPoint,
+               "VolumeId" .= _uVolumeId]
+
 instance ToPath UpdateVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateVolume where
-    toQuery = const mempty
-
-instance ToHeaders UpdateVolume
-
-instance ToJSON UpdateVolume where
-    toJSON UpdateVolume{..} = object
-        [ "VolumeId"   .= _uv1VolumeId
-        , "Name"       .= _uv1Name
-        , "MountPoint" .= _uv1MountPoint
-        ]
+        toQuery = const mempty
 
-instance AWSRequest UpdateVolume where
-    type Sv UpdateVolume = OpsWorks
-    type Rs UpdateVolume = UpdateVolumeResponse
+-- | /See:/ 'updateVolumeResponse' smart constructor.
+data UpdateVolumeResponse =
+    UpdateVolumeResponse'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "UpdateVolume"
-    response = nullResponse UpdateVolumeResponse
+-- | Creates a value of 'UpdateVolumeResponse' with the minimum fields required to make a request.
+--
+updateVolumeResponse
+    :: UpdateVolumeResponse
+updateVolumeResponse = UpdateVolumeResponse'
diff --git a/gen/Network/AWS/OpsWorks/Waiters.hs b/gen/Network/AWS/OpsWorks/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/OpsWorks/Waiters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.OpsWorks.Waiters
+-- Copyright   : (c) 2013-2015 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.OpsWorks.Waiters where
+
+import           Network.AWS.OpsWorks.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 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 Main (main) where
+
+import Test.Tasty
+import Test.AWS.OpsWorks
+import Test.AWS.OpsWorks.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "OpsWorks"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/OpsWorks.hs b/test/Test/AWS/Gen/OpsWorks.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/OpsWorks.hs
@@ -0,0 +1,1229 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-orphans        #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.AWS.Gen.OpsWorks
+-- Copyright   : (c) 2013-2015 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 Test.AWS.Gen.OpsWorks where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.OpsWorks
+import Test.AWS.OpsWorks.Internal
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ testDescribeRDSDBInstances $
+--             describeRDSDBInstances
+--
+--         , testDeleteStack $
+--             deleteStack
+--
+--         , testUpdateStack $
+--             updateStack
+--
+--         , testCreateLayer $
+--             createLayer
+--
+--         , testSetLoadBasedAutoScaling $
+--             setLoadBasedAutoScaling
+--
+--         , testUnassignVolume $
+--             unassignVolume
+--
+--         , testDeregisterRDSDBInstance $
+--             deregisterRDSDBInstance
+--
+--         , testCreateInstance $
+--             createInstance
+--
+--         , testRegisterElasticIP $
+--             registerElasticIP
+--
+--         , testDescribeAgentVersions $
+--             describeAgentVersions
+--
+--         , testDescribeLayers $
+--             describeLayers
+--
+--         , testCreateDeployment $
+--             createDeployment
+--
+--         , testDeleteApp $
+--             deleteApp
+--
+--         , testUpdateApp $
+--             updateApp
+--
+--         , testDeleteInstance $
+--             deleteInstance
+--
+--         , testUpdateInstance $
+--             updateInstance
+--
+--         , testDescribeStacks $
+--             describeStacks
+--
+--         , testDeregisterVolume $
+--             deregisterVolume
+--
+--         , testAssignInstance $
+--             assignInstance
+--
+--         , testRebootInstance $
+--             rebootInstance
+--
+--         , testDescribeTimeBasedAutoScaling $
+--             describeTimeBasedAutoScaling
+--
+--         , testUpdateRDSDBInstance $
+--             updateRDSDBInstance
+--
+--         , testStopStack $
+--             stopStack
+--
+--         , testDescribeVolumes $
+--             describeVolumes
+--
+--         , testDisassociateElasticIP $
+--             disassociateElasticIP
+--
+--         , testRegisterEcsCluster $
+--             registerEcsCluster
+--
+--         , testStopInstance $
+--             stopInstance
+--
+--         , testRegisterVolume $
+--             registerVolume
+--
+--         , testSetTimeBasedAutoScaling $
+--             setTimeBasedAutoScaling
+--
+--         , testDeregisterElasticIP $
+--             deregisterElasticIP
+--
+--         , testAttachElasticLoadBalancer $
+--             attachElasticLoadBalancer
+--
+--         , testDescribeUserProfiles $
+--             describeUserProfiles
+--
+--         , testDescribeStackSummary $
+--             describeStackSummary
+--
+--         , testDeregisterEcsCluster $
+--             deregisterEcsCluster
+--
+--         , testDescribeApps $
+--             describeApps
+--
+--         , testUpdateMyUserProfile $
+--             updateMyUserProfile
+--
+--         , testDescribeInstances $
+--             describeInstances
+--
+--         , testDescribeDeployments $
+--             describeDeployments
+--
+--         , testCreateStack $
+--             createStack
+--
+--         , testGrantAccess $
+--             grantAccess
+--
+--         , testDescribeElasticIPs $
+--             describeElasticIPs
+--
+--         , testDeleteLayer $
+--             deleteLayer
+--
+--         , testUpdateLayer $
+--             updateLayer
+--
+--         , testCloneStack $
+--             cloneStack
+--
+--         , testGetHostnameSuggestion $
+--             getHostnameSuggestion
+--
+--         , testCreateApp $
+--             createApp
+--
+--         , testDescribePermissions $
+--             describePermissions
+--
+--         , testUpdateElasticIP $
+--             updateElasticIP
+--
+--         , testDescribeLoadBasedAutoScaling $
+--             describeLoadBasedAutoScaling
+--
+--         , testRegisterInstance $
+--             registerInstance
+--
+--         , testAssociateElasticIP $
+--             associateElasticIP
+--
+--         , testDetachElasticLoadBalancer $
+--             detachElasticLoadBalancer
+--
+--         , testDescribeStackProvisioningParameters $
+--             describeStackProvisioningParameters
+--
+--         , testDescribeMyUserProfile $
+--             describeMyUserProfile
+--
+--         , testUnassignInstance $
+--             unassignInstance
+--
+--         , testRegisterRDSDBInstance $
+--             registerRDSDBInstance
+--
+--         , testDeleteUserProfile $
+--             deleteUserProfile
+--
+--         , testUpdateUserProfile $
+--             updateUserProfile
+--
+--         , testDescribeServiceErrors $
+--             describeServiceErrors
+--
+--         , testStartStack $
+--             startStack
+--
+--         , testCreateUserProfile $
+--             createUserProfile
+--
+--         , testDescribeCommands $
+--             describeCommands
+--
+--         , testDescribeEcsClusters $
+--             describeEcsClusters
+--
+--         , testDescribeElasticLoadBalancers $
+--             describeElasticLoadBalancers
+--
+--         , testDeregisterInstance $
+--             deregisterInstance
+--
+--         , testDescribeRAIdArrays $
+--             describeRAIdArrays
+--
+--         , testSetPermission $
+--             setPermission
+--
+--         , testUpdateVolume $
+--             updateVolume
+--
+--         , testAssignVolume $
+--             assignVolume
+--
+--         , testStartInstance $
+--             startInstance
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testDescribeRDSDBInstancesResponse $
+--             describeRDSDBInstancesResponse
+--
+--         , testDeleteStackResponse $
+--             deleteStackResponse
+--
+--         , testUpdateStackResponse $
+--             updateStackResponse
+--
+--         , testCreateLayerResponse $
+--             createLayerResponse
+--
+--         , testSetLoadBasedAutoScalingResponse $
+--             setLoadBasedAutoScalingResponse
+--
+--         , testUnassignVolumeResponse $
+--             unassignVolumeResponse
+--
+--         , testDeregisterRDSDBInstanceResponse $
+--             deregisterRDSDBInstanceResponse
+--
+--         , testCreateInstanceResponse $
+--             createInstanceResponse
+--
+--         , testRegisterElasticIPResponse $
+--             registerElasticIPResponse
+--
+--         , testDescribeAgentVersionsResponse $
+--             describeAgentVersionsResponse
+--
+--         , testDescribeLayersResponse $
+--             describeLayersResponse
+--
+--         , testCreateDeploymentResponse $
+--             createDeploymentResponse
+--
+--         , testDeleteAppResponse $
+--             deleteAppResponse
+--
+--         , testUpdateAppResponse $
+--             updateAppResponse
+--
+--         , testDeleteInstanceResponse $
+--             deleteInstanceResponse
+--
+--         , testUpdateInstanceResponse $
+--             updateInstanceResponse
+--
+--         , testDescribeStacksResponse $
+--             describeStacksResponse
+--
+--         , testDeregisterVolumeResponse $
+--             deregisterVolumeResponse
+--
+--         , testAssignInstanceResponse $
+--             assignInstanceResponse
+--
+--         , testRebootInstanceResponse $
+--             rebootInstanceResponse
+--
+--         , testDescribeTimeBasedAutoScalingResponse $
+--             describeTimeBasedAutoScalingResponse
+--
+--         , testUpdateRDSDBInstanceResponse $
+--             updateRDSDBInstanceResponse
+--
+--         , testStopStackResponse $
+--             stopStackResponse
+--
+--         , testDescribeVolumesResponse $
+--             describeVolumesResponse
+--
+--         , testDisassociateElasticIPResponse $
+--             disassociateElasticIPResponse
+--
+--         , testRegisterEcsClusterResponse $
+--             registerEcsClusterResponse
+--
+--         , testStopInstanceResponse $
+--             stopInstanceResponse
+--
+--         , testRegisterVolumeResponse $
+--             registerVolumeResponse
+--
+--         , testSetTimeBasedAutoScalingResponse $
+--             setTimeBasedAutoScalingResponse
+--
+--         , testDeregisterElasticIPResponse $
+--             deregisterElasticIPResponse
+--
+--         , testAttachElasticLoadBalancerResponse $
+--             attachElasticLoadBalancerResponse
+--
+--         , testDescribeUserProfilesResponse $
+--             describeUserProfilesResponse
+--
+--         , testDescribeStackSummaryResponse $
+--             describeStackSummaryResponse
+--
+--         , testDeregisterEcsClusterResponse $
+--             deregisterEcsClusterResponse
+--
+--         , testDescribeAppsResponse $
+--             describeAppsResponse
+--
+--         , testUpdateMyUserProfileResponse $
+--             updateMyUserProfileResponse
+--
+--         , testDescribeInstancesResponse $
+--             describeInstancesResponse
+--
+--         , testDescribeDeploymentsResponse $
+--             describeDeploymentsResponse
+--
+--         , testCreateStackResponse $
+--             createStackResponse
+--
+--         , testGrantAccessResponse $
+--             grantAccessResponse
+--
+--         , testDescribeElasticIPsResponse $
+--             describeElasticIPsResponse
+--
+--         , testDeleteLayerResponse $
+--             deleteLayerResponse
+--
+--         , testUpdateLayerResponse $
+--             updateLayerResponse
+--
+--         , testCloneStackResponse $
+--             cloneStackResponse
+--
+--         , testGetHostnameSuggestionResponse $
+--             getHostnameSuggestionResponse
+--
+--         , testCreateAppResponse $
+--             createAppResponse
+--
+--         , testDescribePermissionsResponse $
+--             describePermissionsResponse
+--
+--         , testUpdateElasticIPResponse $
+--             updateElasticIPResponse
+--
+--         , testDescribeLoadBasedAutoScalingResponse $
+--             describeLoadBasedAutoScalingResponse
+--
+--         , testRegisterInstanceResponse $
+--             registerInstanceResponse
+--
+--         , testAssociateElasticIPResponse $
+--             associateElasticIPResponse
+--
+--         , testDetachElasticLoadBalancerResponse $
+--             detachElasticLoadBalancerResponse
+--
+--         , testDescribeStackProvisioningParametersResponse $
+--             describeStackProvisioningParametersResponse
+--
+--         , testDescribeMyUserProfileResponse $
+--             describeMyUserProfileResponse
+--
+--         , testUnassignInstanceResponse $
+--             unassignInstanceResponse
+--
+--         , testRegisterRDSDBInstanceResponse $
+--             registerRDSDBInstanceResponse
+--
+--         , testDeleteUserProfileResponse $
+--             deleteUserProfileResponse
+--
+--         , testUpdateUserProfileResponse $
+--             updateUserProfileResponse
+--
+--         , testDescribeServiceErrorsResponse $
+--             describeServiceErrorsResponse
+--
+--         , testStartStackResponse $
+--             startStackResponse
+--
+--         , testCreateUserProfileResponse $
+--             createUserProfileResponse
+--
+--         , testDescribeCommandsResponse $
+--             describeCommandsResponse
+--
+--         , testDescribeEcsClustersResponse $
+--             describeEcsClustersResponse
+--
+--         , testDescribeElasticLoadBalancersResponse $
+--             describeElasticLoadBalancersResponse
+--
+--         , testDeregisterInstanceResponse $
+--             deregisterInstanceResponse
+--
+--         , testDescribeRAIdArraysResponse $
+--             describeRAIdArraysResponse
+--
+--         , testSetPermissionResponse $
+--             setPermissionResponse
+--
+--         , testUpdateVolumeResponse $
+--             updateVolumeResponse
+--
+--         , testAssignVolumeResponse $
+--             assignVolumeResponse
+--
+--         , testStartInstanceResponse $
+--             startInstanceResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testDescribeRDSDBInstances :: DescribeRDSDBInstances -> TestTree
+testDescribeRDSDBInstances = req
+    "DescribeRDSDBInstances"
+    "fixture/DescribeRDSDBInstances"
+
+testDeleteStack :: DeleteStack -> TestTree
+testDeleteStack = req
+    "DeleteStack"
+    "fixture/DeleteStack"
+
+testUpdateStack :: UpdateStack -> TestTree
+testUpdateStack = req
+    "UpdateStack"
+    "fixture/UpdateStack"
+
+testCreateLayer :: CreateLayer -> TestTree
+testCreateLayer = req
+    "CreateLayer"
+    "fixture/CreateLayer"
+
+testSetLoadBasedAutoScaling :: SetLoadBasedAutoScaling -> TestTree
+testSetLoadBasedAutoScaling = req
+    "SetLoadBasedAutoScaling"
+    "fixture/SetLoadBasedAutoScaling"
+
+testUnassignVolume :: UnassignVolume -> TestTree
+testUnassignVolume = req
+    "UnassignVolume"
+    "fixture/UnassignVolume"
+
+testDeregisterRDSDBInstance :: DeregisterRDSDBInstance -> TestTree
+testDeregisterRDSDBInstance = req
+    "DeregisterRDSDBInstance"
+    "fixture/DeregisterRDSDBInstance"
+
+testCreateInstance :: CreateInstance -> TestTree
+testCreateInstance = req
+    "CreateInstance"
+    "fixture/CreateInstance"
+
+testRegisterElasticIP :: RegisterElasticIP -> TestTree
+testRegisterElasticIP = req
+    "RegisterElasticIP"
+    "fixture/RegisterElasticIP"
+
+testDescribeAgentVersions :: DescribeAgentVersions -> TestTree
+testDescribeAgentVersions = req
+    "DescribeAgentVersions"
+    "fixture/DescribeAgentVersions"
+
+testDescribeLayers :: DescribeLayers -> TestTree
+testDescribeLayers = req
+    "DescribeLayers"
+    "fixture/DescribeLayers"
+
+testCreateDeployment :: CreateDeployment -> TestTree
+testCreateDeployment = req
+    "CreateDeployment"
+    "fixture/CreateDeployment"
+
+testDeleteApp :: DeleteApp -> TestTree
+testDeleteApp = req
+    "DeleteApp"
+    "fixture/DeleteApp"
+
+testUpdateApp :: UpdateApp -> TestTree
+testUpdateApp = req
+    "UpdateApp"
+    "fixture/UpdateApp"
+
+testDeleteInstance :: DeleteInstance -> TestTree
+testDeleteInstance = req
+    "DeleteInstance"
+    "fixture/DeleteInstance"
+
+testUpdateInstance :: UpdateInstance -> TestTree
+testUpdateInstance = req
+    "UpdateInstance"
+    "fixture/UpdateInstance"
+
+testDescribeStacks :: DescribeStacks -> TestTree
+testDescribeStacks = req
+    "DescribeStacks"
+    "fixture/DescribeStacks"
+
+testDeregisterVolume :: DeregisterVolume -> TestTree
+testDeregisterVolume = req
+    "DeregisterVolume"
+    "fixture/DeregisterVolume"
+
+testAssignInstance :: AssignInstance -> TestTree
+testAssignInstance = req
+    "AssignInstance"
+    "fixture/AssignInstance"
+
+testRebootInstance :: RebootInstance -> TestTree
+testRebootInstance = req
+    "RebootInstance"
+    "fixture/RebootInstance"
+
+testDescribeTimeBasedAutoScaling :: DescribeTimeBasedAutoScaling -> TestTree
+testDescribeTimeBasedAutoScaling = req
+    "DescribeTimeBasedAutoScaling"
+    "fixture/DescribeTimeBasedAutoScaling"
+
+testUpdateRDSDBInstance :: UpdateRDSDBInstance -> TestTree
+testUpdateRDSDBInstance = req
+    "UpdateRDSDBInstance"
+    "fixture/UpdateRDSDBInstance"
+
+testStopStack :: StopStack -> TestTree
+testStopStack = req
+    "StopStack"
+    "fixture/StopStack"
+
+testDescribeVolumes :: DescribeVolumes -> TestTree
+testDescribeVolumes = req
+    "DescribeVolumes"
+    "fixture/DescribeVolumes"
+
+testDisassociateElasticIP :: DisassociateElasticIP -> TestTree
+testDisassociateElasticIP = req
+    "DisassociateElasticIP"
+    "fixture/DisassociateElasticIP"
+
+testRegisterEcsCluster :: RegisterEcsCluster -> TestTree
+testRegisterEcsCluster = req
+    "RegisterEcsCluster"
+    "fixture/RegisterEcsCluster"
+
+testStopInstance :: StopInstance -> TestTree
+testStopInstance = req
+    "StopInstance"
+    "fixture/StopInstance"
+
+testRegisterVolume :: RegisterVolume -> TestTree
+testRegisterVolume = req
+    "RegisterVolume"
+    "fixture/RegisterVolume"
+
+testSetTimeBasedAutoScaling :: SetTimeBasedAutoScaling -> TestTree
+testSetTimeBasedAutoScaling = req
+    "SetTimeBasedAutoScaling"
+    "fixture/SetTimeBasedAutoScaling"
+
+testDeregisterElasticIP :: DeregisterElasticIP -> TestTree
+testDeregisterElasticIP = req
+    "DeregisterElasticIP"
+    "fixture/DeregisterElasticIP"
+
+testAttachElasticLoadBalancer :: AttachElasticLoadBalancer -> TestTree
+testAttachElasticLoadBalancer = req
+    "AttachElasticLoadBalancer"
+    "fixture/AttachElasticLoadBalancer"
+
+testDescribeUserProfiles :: DescribeUserProfiles -> TestTree
+testDescribeUserProfiles = req
+    "DescribeUserProfiles"
+    "fixture/DescribeUserProfiles"
+
+testDescribeStackSummary :: DescribeStackSummary -> TestTree
+testDescribeStackSummary = req
+    "DescribeStackSummary"
+    "fixture/DescribeStackSummary"
+
+testDeregisterEcsCluster :: DeregisterEcsCluster -> TestTree
+testDeregisterEcsCluster = req
+    "DeregisterEcsCluster"
+    "fixture/DeregisterEcsCluster"
+
+testDescribeApps :: DescribeApps -> TestTree
+testDescribeApps = req
+    "DescribeApps"
+    "fixture/DescribeApps"
+
+testUpdateMyUserProfile :: UpdateMyUserProfile -> TestTree
+testUpdateMyUserProfile = req
+    "UpdateMyUserProfile"
+    "fixture/UpdateMyUserProfile"
+
+testDescribeInstances :: DescribeInstances -> TestTree
+testDescribeInstances = req
+    "DescribeInstances"
+    "fixture/DescribeInstances"
+
+testDescribeDeployments :: DescribeDeployments -> TestTree
+testDescribeDeployments = req
+    "DescribeDeployments"
+    "fixture/DescribeDeployments"
+
+testCreateStack :: CreateStack -> TestTree
+testCreateStack = req
+    "CreateStack"
+    "fixture/CreateStack"
+
+testGrantAccess :: GrantAccess -> TestTree
+testGrantAccess = req
+    "GrantAccess"
+    "fixture/GrantAccess"
+
+testDescribeElasticIPs :: DescribeElasticIPs -> TestTree
+testDescribeElasticIPs = req
+    "DescribeElasticIPs"
+    "fixture/DescribeElasticIPs"
+
+testDeleteLayer :: DeleteLayer -> TestTree
+testDeleteLayer = req
+    "DeleteLayer"
+    "fixture/DeleteLayer"
+
+testUpdateLayer :: UpdateLayer -> TestTree
+testUpdateLayer = req
+    "UpdateLayer"
+    "fixture/UpdateLayer"
+
+testCloneStack :: CloneStack -> TestTree
+testCloneStack = req
+    "CloneStack"
+    "fixture/CloneStack"
+
+testGetHostnameSuggestion :: GetHostnameSuggestion -> TestTree
+testGetHostnameSuggestion = req
+    "GetHostnameSuggestion"
+    "fixture/GetHostnameSuggestion"
+
+testCreateApp :: CreateApp -> TestTree
+testCreateApp = req
+    "CreateApp"
+    "fixture/CreateApp"
+
+testDescribePermissions :: DescribePermissions -> TestTree
+testDescribePermissions = req
+    "DescribePermissions"
+    "fixture/DescribePermissions"
+
+testUpdateElasticIP :: UpdateElasticIP -> TestTree
+testUpdateElasticIP = req
+    "UpdateElasticIP"
+    "fixture/UpdateElasticIP"
+
+testDescribeLoadBasedAutoScaling :: DescribeLoadBasedAutoScaling -> TestTree
+testDescribeLoadBasedAutoScaling = req
+    "DescribeLoadBasedAutoScaling"
+    "fixture/DescribeLoadBasedAutoScaling"
+
+testRegisterInstance :: RegisterInstance -> TestTree
+testRegisterInstance = req
+    "RegisterInstance"
+    "fixture/RegisterInstance"
+
+testAssociateElasticIP :: AssociateElasticIP -> TestTree
+testAssociateElasticIP = req
+    "AssociateElasticIP"
+    "fixture/AssociateElasticIP"
+
+testDetachElasticLoadBalancer :: DetachElasticLoadBalancer -> TestTree
+testDetachElasticLoadBalancer = req
+    "DetachElasticLoadBalancer"
+    "fixture/DetachElasticLoadBalancer"
+
+testDescribeStackProvisioningParameters :: DescribeStackProvisioningParameters -> TestTree
+testDescribeStackProvisioningParameters = req
+    "DescribeStackProvisioningParameters"
+    "fixture/DescribeStackProvisioningParameters"
+
+testDescribeMyUserProfile :: DescribeMyUserProfile -> TestTree
+testDescribeMyUserProfile = req
+    "DescribeMyUserProfile"
+    "fixture/DescribeMyUserProfile"
+
+testUnassignInstance :: UnassignInstance -> TestTree
+testUnassignInstance = req
+    "UnassignInstance"
+    "fixture/UnassignInstance"
+
+testRegisterRDSDBInstance :: RegisterRDSDBInstance -> TestTree
+testRegisterRDSDBInstance = req
+    "RegisterRDSDBInstance"
+    "fixture/RegisterRDSDBInstance"
+
+testDeleteUserProfile :: DeleteUserProfile -> TestTree
+testDeleteUserProfile = req
+    "DeleteUserProfile"
+    "fixture/DeleteUserProfile"
+
+testUpdateUserProfile :: UpdateUserProfile -> TestTree
+testUpdateUserProfile = req
+    "UpdateUserProfile"
+    "fixture/UpdateUserProfile"
+
+testDescribeServiceErrors :: DescribeServiceErrors -> TestTree
+testDescribeServiceErrors = req
+    "DescribeServiceErrors"
+    "fixture/DescribeServiceErrors"
+
+testStartStack :: StartStack -> TestTree
+testStartStack = req
+    "StartStack"
+    "fixture/StartStack"
+
+testCreateUserProfile :: CreateUserProfile -> TestTree
+testCreateUserProfile = req
+    "CreateUserProfile"
+    "fixture/CreateUserProfile"
+
+testDescribeCommands :: DescribeCommands -> TestTree
+testDescribeCommands = req
+    "DescribeCommands"
+    "fixture/DescribeCommands"
+
+testDescribeEcsClusters :: DescribeEcsClusters -> TestTree
+testDescribeEcsClusters = req
+    "DescribeEcsClusters"
+    "fixture/DescribeEcsClusters"
+
+testDescribeElasticLoadBalancers :: DescribeElasticLoadBalancers -> TestTree
+testDescribeElasticLoadBalancers = req
+    "DescribeElasticLoadBalancers"
+    "fixture/DescribeElasticLoadBalancers"
+
+testDeregisterInstance :: DeregisterInstance -> TestTree
+testDeregisterInstance = req
+    "DeregisterInstance"
+    "fixture/DeregisterInstance"
+
+testDescribeRAIdArrays :: DescribeRAIdArrays -> TestTree
+testDescribeRAIdArrays = req
+    "DescribeRAIdArrays"
+    "fixture/DescribeRAIdArrays"
+
+testSetPermission :: SetPermission -> TestTree
+testSetPermission = req
+    "SetPermission"
+    "fixture/SetPermission"
+
+testUpdateVolume :: UpdateVolume -> TestTree
+testUpdateVolume = req
+    "UpdateVolume"
+    "fixture/UpdateVolume"
+
+testAssignVolume :: AssignVolume -> TestTree
+testAssignVolume = req
+    "AssignVolume"
+    "fixture/AssignVolume"
+
+testStartInstance :: StartInstance -> TestTree
+testStartInstance = req
+    "StartInstance"
+    "fixture/StartInstance"
+
+-- Responses
+
+testDescribeRDSDBInstancesResponse :: DescribeRDSDBInstancesResponse -> TestTree
+testDescribeRDSDBInstancesResponse = res
+    "DescribeRDSDBInstancesResponse"
+    "fixture/DescribeRDSDBInstancesResponse"
+    (Proxy :: Proxy DescribeRDSDBInstances)
+
+testDeleteStackResponse :: DeleteStackResponse -> TestTree
+testDeleteStackResponse = res
+    "DeleteStackResponse"
+    "fixture/DeleteStackResponse"
+    (Proxy :: Proxy DeleteStack)
+
+testUpdateStackResponse :: UpdateStackResponse -> TestTree
+testUpdateStackResponse = res
+    "UpdateStackResponse"
+    "fixture/UpdateStackResponse"
+    (Proxy :: Proxy UpdateStack)
+
+testCreateLayerResponse :: CreateLayerResponse -> TestTree
+testCreateLayerResponse = res
+    "CreateLayerResponse"
+    "fixture/CreateLayerResponse"
+    (Proxy :: Proxy CreateLayer)
+
+testSetLoadBasedAutoScalingResponse :: SetLoadBasedAutoScalingResponse -> TestTree
+testSetLoadBasedAutoScalingResponse = res
+    "SetLoadBasedAutoScalingResponse"
+    "fixture/SetLoadBasedAutoScalingResponse"
+    (Proxy :: Proxy SetLoadBasedAutoScaling)
+
+testUnassignVolumeResponse :: UnassignVolumeResponse -> TestTree
+testUnassignVolumeResponse = res
+    "UnassignVolumeResponse"
+    "fixture/UnassignVolumeResponse"
+    (Proxy :: Proxy UnassignVolume)
+
+testDeregisterRDSDBInstanceResponse :: DeregisterRDSDBInstanceResponse -> TestTree
+testDeregisterRDSDBInstanceResponse = res
+    "DeregisterRDSDBInstanceResponse"
+    "fixture/DeregisterRDSDBInstanceResponse"
+    (Proxy :: Proxy DeregisterRDSDBInstance)
+
+testCreateInstanceResponse :: CreateInstanceResponse -> TestTree
+testCreateInstanceResponse = res
+    "CreateInstanceResponse"
+    "fixture/CreateInstanceResponse"
+    (Proxy :: Proxy CreateInstance)
+
+testRegisterElasticIPResponse :: RegisterElasticIPResponse -> TestTree
+testRegisterElasticIPResponse = res
+    "RegisterElasticIPResponse"
+    "fixture/RegisterElasticIPResponse"
+    (Proxy :: Proxy RegisterElasticIP)
+
+testDescribeAgentVersionsResponse :: DescribeAgentVersionsResponse -> TestTree
+testDescribeAgentVersionsResponse = res
+    "DescribeAgentVersionsResponse"
+    "fixture/DescribeAgentVersionsResponse"
+    (Proxy :: Proxy DescribeAgentVersions)
+
+testDescribeLayersResponse :: DescribeLayersResponse -> TestTree
+testDescribeLayersResponse = res
+    "DescribeLayersResponse"
+    "fixture/DescribeLayersResponse"
+    (Proxy :: Proxy DescribeLayers)
+
+testCreateDeploymentResponse :: CreateDeploymentResponse -> TestTree
+testCreateDeploymentResponse = res
+    "CreateDeploymentResponse"
+    "fixture/CreateDeploymentResponse"
+    (Proxy :: Proxy CreateDeployment)
+
+testDeleteAppResponse :: DeleteAppResponse -> TestTree
+testDeleteAppResponse = res
+    "DeleteAppResponse"
+    "fixture/DeleteAppResponse"
+    (Proxy :: Proxy DeleteApp)
+
+testUpdateAppResponse :: UpdateAppResponse -> TestTree
+testUpdateAppResponse = res
+    "UpdateAppResponse"
+    "fixture/UpdateAppResponse"
+    (Proxy :: Proxy UpdateApp)
+
+testDeleteInstanceResponse :: DeleteInstanceResponse -> TestTree
+testDeleteInstanceResponse = res
+    "DeleteInstanceResponse"
+    "fixture/DeleteInstanceResponse"
+    (Proxy :: Proxy DeleteInstance)
+
+testUpdateInstanceResponse :: UpdateInstanceResponse -> TestTree
+testUpdateInstanceResponse = res
+    "UpdateInstanceResponse"
+    "fixture/UpdateInstanceResponse"
+    (Proxy :: Proxy UpdateInstance)
+
+testDescribeStacksResponse :: DescribeStacksResponse -> TestTree
+testDescribeStacksResponse = res
+    "DescribeStacksResponse"
+    "fixture/DescribeStacksResponse"
+    (Proxy :: Proxy DescribeStacks)
+
+testDeregisterVolumeResponse :: DeregisterVolumeResponse -> TestTree
+testDeregisterVolumeResponse = res
+    "DeregisterVolumeResponse"
+    "fixture/DeregisterVolumeResponse"
+    (Proxy :: Proxy DeregisterVolume)
+
+testAssignInstanceResponse :: AssignInstanceResponse -> TestTree
+testAssignInstanceResponse = res
+    "AssignInstanceResponse"
+    "fixture/AssignInstanceResponse"
+    (Proxy :: Proxy AssignInstance)
+
+testRebootInstanceResponse :: RebootInstanceResponse -> TestTree
+testRebootInstanceResponse = res
+    "RebootInstanceResponse"
+    "fixture/RebootInstanceResponse"
+    (Proxy :: Proxy RebootInstance)
+
+testDescribeTimeBasedAutoScalingResponse :: DescribeTimeBasedAutoScalingResponse -> TestTree
+testDescribeTimeBasedAutoScalingResponse = res
+    "DescribeTimeBasedAutoScalingResponse"
+    "fixture/DescribeTimeBasedAutoScalingResponse"
+    (Proxy :: Proxy DescribeTimeBasedAutoScaling)
+
+testUpdateRDSDBInstanceResponse :: UpdateRDSDBInstanceResponse -> TestTree
+testUpdateRDSDBInstanceResponse = res
+    "UpdateRDSDBInstanceResponse"
+    "fixture/UpdateRDSDBInstanceResponse"
+    (Proxy :: Proxy UpdateRDSDBInstance)
+
+testStopStackResponse :: StopStackResponse -> TestTree
+testStopStackResponse = res
+    "StopStackResponse"
+    "fixture/StopStackResponse"
+    (Proxy :: Proxy StopStack)
+
+testDescribeVolumesResponse :: DescribeVolumesResponse -> TestTree
+testDescribeVolumesResponse = res
+    "DescribeVolumesResponse"
+    "fixture/DescribeVolumesResponse"
+    (Proxy :: Proxy DescribeVolumes)
+
+testDisassociateElasticIPResponse :: DisassociateElasticIPResponse -> TestTree
+testDisassociateElasticIPResponse = res
+    "DisassociateElasticIPResponse"
+    "fixture/DisassociateElasticIPResponse"
+    (Proxy :: Proxy DisassociateElasticIP)
+
+testRegisterEcsClusterResponse :: RegisterEcsClusterResponse -> TestTree
+testRegisterEcsClusterResponse = res
+    "RegisterEcsClusterResponse"
+    "fixture/RegisterEcsClusterResponse"
+    (Proxy :: Proxy RegisterEcsCluster)
+
+testStopInstanceResponse :: StopInstanceResponse -> TestTree
+testStopInstanceResponse = res
+    "StopInstanceResponse"
+    "fixture/StopInstanceResponse"
+    (Proxy :: Proxy StopInstance)
+
+testRegisterVolumeResponse :: RegisterVolumeResponse -> TestTree
+testRegisterVolumeResponse = res
+    "RegisterVolumeResponse"
+    "fixture/RegisterVolumeResponse"
+    (Proxy :: Proxy RegisterVolume)
+
+testSetTimeBasedAutoScalingResponse :: SetTimeBasedAutoScalingResponse -> TestTree
+testSetTimeBasedAutoScalingResponse = res
+    "SetTimeBasedAutoScalingResponse"
+    "fixture/SetTimeBasedAutoScalingResponse"
+    (Proxy :: Proxy SetTimeBasedAutoScaling)
+
+testDeregisterElasticIPResponse :: DeregisterElasticIPResponse -> TestTree
+testDeregisterElasticIPResponse = res
+    "DeregisterElasticIPResponse"
+    "fixture/DeregisterElasticIPResponse"
+    (Proxy :: Proxy DeregisterElasticIP)
+
+testAttachElasticLoadBalancerResponse :: AttachElasticLoadBalancerResponse -> TestTree
+testAttachElasticLoadBalancerResponse = res
+    "AttachElasticLoadBalancerResponse"
+    "fixture/AttachElasticLoadBalancerResponse"
+    (Proxy :: Proxy AttachElasticLoadBalancer)
+
+testDescribeUserProfilesResponse :: DescribeUserProfilesResponse -> TestTree
+testDescribeUserProfilesResponse = res
+    "DescribeUserProfilesResponse"
+    "fixture/DescribeUserProfilesResponse"
+    (Proxy :: Proxy DescribeUserProfiles)
+
+testDescribeStackSummaryResponse :: DescribeStackSummaryResponse -> TestTree
+testDescribeStackSummaryResponse = res
+    "DescribeStackSummaryResponse"
+    "fixture/DescribeStackSummaryResponse"
+    (Proxy :: Proxy DescribeStackSummary)
+
+testDeregisterEcsClusterResponse :: DeregisterEcsClusterResponse -> TestTree
+testDeregisterEcsClusterResponse = res
+    "DeregisterEcsClusterResponse"
+    "fixture/DeregisterEcsClusterResponse"
+    (Proxy :: Proxy DeregisterEcsCluster)
+
+testDescribeAppsResponse :: DescribeAppsResponse -> TestTree
+testDescribeAppsResponse = res
+    "DescribeAppsResponse"
+    "fixture/DescribeAppsResponse"
+    (Proxy :: Proxy DescribeApps)
+
+testUpdateMyUserProfileResponse :: UpdateMyUserProfileResponse -> TestTree
+testUpdateMyUserProfileResponse = res
+    "UpdateMyUserProfileResponse"
+    "fixture/UpdateMyUserProfileResponse"
+    (Proxy :: Proxy UpdateMyUserProfile)
+
+testDescribeInstancesResponse :: DescribeInstancesResponse -> TestTree
+testDescribeInstancesResponse = res
+    "DescribeInstancesResponse"
+    "fixture/DescribeInstancesResponse"
+    (Proxy :: Proxy DescribeInstances)
+
+testDescribeDeploymentsResponse :: DescribeDeploymentsResponse -> TestTree
+testDescribeDeploymentsResponse = res
+    "DescribeDeploymentsResponse"
+    "fixture/DescribeDeploymentsResponse"
+    (Proxy :: Proxy DescribeDeployments)
+
+testCreateStackResponse :: CreateStackResponse -> TestTree
+testCreateStackResponse = res
+    "CreateStackResponse"
+    "fixture/CreateStackResponse"
+    (Proxy :: Proxy CreateStack)
+
+testGrantAccessResponse :: GrantAccessResponse -> TestTree
+testGrantAccessResponse = res
+    "GrantAccessResponse"
+    "fixture/GrantAccessResponse"
+    (Proxy :: Proxy GrantAccess)
+
+testDescribeElasticIPsResponse :: DescribeElasticIPsResponse -> TestTree
+testDescribeElasticIPsResponse = res
+    "DescribeElasticIPsResponse"
+    "fixture/DescribeElasticIPsResponse"
+    (Proxy :: Proxy DescribeElasticIPs)
+
+testDeleteLayerResponse :: DeleteLayerResponse -> TestTree
+testDeleteLayerResponse = res
+    "DeleteLayerResponse"
+    "fixture/DeleteLayerResponse"
+    (Proxy :: Proxy DeleteLayer)
+
+testUpdateLayerResponse :: UpdateLayerResponse -> TestTree
+testUpdateLayerResponse = res
+    "UpdateLayerResponse"
+    "fixture/UpdateLayerResponse"
+    (Proxy :: Proxy UpdateLayer)
+
+testCloneStackResponse :: CloneStackResponse -> TestTree
+testCloneStackResponse = res
+    "CloneStackResponse"
+    "fixture/CloneStackResponse"
+    (Proxy :: Proxy CloneStack)
+
+testGetHostnameSuggestionResponse :: GetHostnameSuggestionResponse -> TestTree
+testGetHostnameSuggestionResponse = res
+    "GetHostnameSuggestionResponse"
+    "fixture/GetHostnameSuggestionResponse"
+    (Proxy :: Proxy GetHostnameSuggestion)
+
+testCreateAppResponse :: CreateAppResponse -> TestTree
+testCreateAppResponse = res
+    "CreateAppResponse"
+    "fixture/CreateAppResponse"
+    (Proxy :: Proxy CreateApp)
+
+testDescribePermissionsResponse :: DescribePermissionsResponse -> TestTree
+testDescribePermissionsResponse = res
+    "DescribePermissionsResponse"
+    "fixture/DescribePermissionsResponse"
+    (Proxy :: Proxy DescribePermissions)
+
+testUpdateElasticIPResponse :: UpdateElasticIPResponse -> TestTree
+testUpdateElasticIPResponse = res
+    "UpdateElasticIPResponse"
+    "fixture/UpdateElasticIPResponse"
+    (Proxy :: Proxy UpdateElasticIP)
+
+testDescribeLoadBasedAutoScalingResponse :: DescribeLoadBasedAutoScalingResponse -> TestTree
+testDescribeLoadBasedAutoScalingResponse = res
+    "DescribeLoadBasedAutoScalingResponse"
+    "fixture/DescribeLoadBasedAutoScalingResponse"
+    (Proxy :: Proxy DescribeLoadBasedAutoScaling)
+
+testRegisterInstanceResponse :: RegisterInstanceResponse -> TestTree
+testRegisterInstanceResponse = res
+    "RegisterInstanceResponse"
+    "fixture/RegisterInstanceResponse"
+    (Proxy :: Proxy RegisterInstance)
+
+testAssociateElasticIPResponse :: AssociateElasticIPResponse -> TestTree
+testAssociateElasticIPResponse = res
+    "AssociateElasticIPResponse"
+    "fixture/AssociateElasticIPResponse"
+    (Proxy :: Proxy AssociateElasticIP)
+
+testDetachElasticLoadBalancerResponse :: DetachElasticLoadBalancerResponse -> TestTree
+testDetachElasticLoadBalancerResponse = res
+    "DetachElasticLoadBalancerResponse"
+    "fixture/DetachElasticLoadBalancerResponse"
+    (Proxy :: Proxy DetachElasticLoadBalancer)
+
+testDescribeStackProvisioningParametersResponse :: DescribeStackProvisioningParametersResponse -> TestTree
+testDescribeStackProvisioningParametersResponse = res
+    "DescribeStackProvisioningParametersResponse"
+    "fixture/DescribeStackProvisioningParametersResponse"
+    (Proxy :: Proxy DescribeStackProvisioningParameters)
+
+testDescribeMyUserProfileResponse :: DescribeMyUserProfileResponse -> TestTree
+testDescribeMyUserProfileResponse = res
+    "DescribeMyUserProfileResponse"
+    "fixture/DescribeMyUserProfileResponse"
+    (Proxy :: Proxy DescribeMyUserProfile)
+
+testUnassignInstanceResponse :: UnassignInstanceResponse -> TestTree
+testUnassignInstanceResponse = res
+    "UnassignInstanceResponse"
+    "fixture/UnassignInstanceResponse"
+    (Proxy :: Proxy UnassignInstance)
+
+testRegisterRDSDBInstanceResponse :: RegisterRDSDBInstanceResponse -> TestTree
+testRegisterRDSDBInstanceResponse = res
+    "RegisterRDSDBInstanceResponse"
+    "fixture/RegisterRDSDBInstanceResponse"
+    (Proxy :: Proxy RegisterRDSDBInstance)
+
+testDeleteUserProfileResponse :: DeleteUserProfileResponse -> TestTree
+testDeleteUserProfileResponse = res
+    "DeleteUserProfileResponse"
+    "fixture/DeleteUserProfileResponse"
+    (Proxy :: Proxy DeleteUserProfile)
+
+testUpdateUserProfileResponse :: UpdateUserProfileResponse -> TestTree
+testUpdateUserProfileResponse = res
+    "UpdateUserProfileResponse"
+    "fixture/UpdateUserProfileResponse"
+    (Proxy :: Proxy UpdateUserProfile)
+
+testDescribeServiceErrorsResponse :: DescribeServiceErrorsResponse -> TestTree
+testDescribeServiceErrorsResponse = res
+    "DescribeServiceErrorsResponse"
+    "fixture/DescribeServiceErrorsResponse"
+    (Proxy :: Proxy DescribeServiceErrors)
+
+testStartStackResponse :: StartStackResponse -> TestTree
+testStartStackResponse = res
+    "StartStackResponse"
+    "fixture/StartStackResponse"
+    (Proxy :: Proxy StartStack)
+
+testCreateUserProfileResponse :: CreateUserProfileResponse -> TestTree
+testCreateUserProfileResponse = res
+    "CreateUserProfileResponse"
+    "fixture/CreateUserProfileResponse"
+    (Proxy :: Proxy CreateUserProfile)
+
+testDescribeCommandsResponse :: DescribeCommandsResponse -> TestTree
+testDescribeCommandsResponse = res
+    "DescribeCommandsResponse"
+    "fixture/DescribeCommandsResponse"
+    (Proxy :: Proxy DescribeCommands)
+
+testDescribeEcsClustersResponse :: DescribeEcsClustersResponse -> TestTree
+testDescribeEcsClustersResponse = res
+    "DescribeEcsClustersResponse"
+    "fixture/DescribeEcsClustersResponse"
+    (Proxy :: Proxy DescribeEcsClusters)
+
+testDescribeElasticLoadBalancersResponse :: DescribeElasticLoadBalancersResponse -> TestTree
+testDescribeElasticLoadBalancersResponse = res
+    "DescribeElasticLoadBalancersResponse"
+    "fixture/DescribeElasticLoadBalancersResponse"
+    (Proxy :: Proxy DescribeElasticLoadBalancers)
+
+testDeregisterInstanceResponse :: DeregisterInstanceResponse -> TestTree
+testDeregisterInstanceResponse = res
+    "DeregisterInstanceResponse"
+    "fixture/DeregisterInstanceResponse"
+    (Proxy :: Proxy DeregisterInstance)
+
+testDescribeRAIdArraysResponse :: DescribeRAIdArraysResponse -> TestTree
+testDescribeRAIdArraysResponse = res
+    "DescribeRAIdArraysResponse"
+    "fixture/DescribeRAIdArraysResponse"
+    (Proxy :: Proxy DescribeRAIdArrays)
+
+testSetPermissionResponse :: SetPermissionResponse -> TestTree
+testSetPermissionResponse = res
+    "SetPermissionResponse"
+    "fixture/SetPermissionResponse"
+    (Proxy :: Proxy SetPermission)
+
+testUpdateVolumeResponse :: UpdateVolumeResponse -> TestTree
+testUpdateVolumeResponse = res
+    "UpdateVolumeResponse"
+    "fixture/UpdateVolumeResponse"
+    (Proxy :: Proxy UpdateVolume)
+
+testAssignVolumeResponse :: AssignVolumeResponse -> TestTree
+testAssignVolumeResponse = res
+    "AssignVolumeResponse"
+    "fixture/AssignVolumeResponse"
+    (Proxy :: Proxy AssignVolume)
+
+testStartInstanceResponse :: StartInstanceResponse -> TestTree
+testStartInstanceResponse = res
+    "StartInstanceResponse"
+    "fixture/StartInstanceResponse"
+    (Proxy :: Proxy StartInstance)
diff --git a/test/Test/AWS/OpsWorks.hs b/test/Test/AWS/OpsWorks.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/OpsWorks.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.OpsWorks
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.OpsWorks
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.OpsWorks
+import           Test.AWS.Gen.OpsWorks
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/OpsWorks/Internal.hs b/test/Test/AWS/OpsWorks/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/OpsWorks/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.OpsWorks.Internal
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : This Source Code Form is subject to the terms of
+--               the Mozilla Public License, v. 2.0.
+--               A copy of the MPL can be found in the LICENSE file or
+--               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : experimental
+-- Portability : non-portable (GHC extensions)
+
+module Test.AWS.OpsWorks.Internal where
+
+import Test.AWS.Prelude
