diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,20 +1,57 @@
 # Amazon Storage Gateway 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 Storage Gateway is a service that connects an on-premises software
-appliance with cloud-based storage to provide seamless and secure integration
-between your on-premises IT environment and AWS's storage infrastructure.
+AWS Storage Gateway Service
 
+AWS Storage Gateway is the service that connects an on-premises software
+appliance with cloud-based storage to provide seamless and secure
+integration between an organization\'s on-premises IT environment and
+AWS\'s storage infrastructure. The service enables you to securely
+upload data to the AWS cloud for cost effective backup and rapid
+disaster recovery.
+
+Use the following links to get started using the /AWS Storage Gateway
+Service API Reference/:
+
+-   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayHTTPRequestsHeaders.html AWS Storage Gateway Required Request Headers>:
+    Describes the required headers that you must send with every POST
+    request to AWS Storage Gateway.
+-   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewaySigningRequests.html Signing Requests>:
+    AWS Storage Gateway requires that you authenticate every request you
+    send; this topic describes how sign such a request.
+-   <http://docs.aws.amazon.com/storagegateway/latest/userguide/APIErrorResponses.html Error Responses>:
+    Provides reference information about AWS Storage Gateway errors.
+-   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPIOperations.html Operations in AWS Storage Gateway>:
+    Contains detailed descriptions of all AWS Storage Gateway
+    operations, their request parameters, response elements, possible
+    errors, and examples of requests and responses.
+-   <http://docs.aws.amazon.com/general/latest/gr/index.html?rande.html AWS Storage Gateway Regions and Endpoints>:
+    Provides a list of each of the regions and endpoints available for
+    use with AWS Storage Gateway.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-storagegateway)
 and the [AWS API Reference](http://docs.aws.amazon.com/storagegateway/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-storagegateway.cabal b/amazonka-storagegateway.cabal
--- a/amazonka-storagegateway.cabal
+++ b/amazonka-storagegateway.cabal
@@ -1,27 +1,59 @@
 name:                  amazonka-storagegateway
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Storage Gateway 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 Storage Gateway is a service that connects an on-premises software
-    appliance with cloud-based storage to provide seamless and secure integration
-    between your on-premises IT environment and AWS's storage infrastructure.
+    AWS Storage Gateway Service
 
+    AWS Storage Gateway is the service that connects an on-premises software
+    appliance with cloud-based storage to provide seamless and secure
+    integration between an organization\'s on-premises IT environment and
+    AWS\'s storage infrastructure. The service enables you to securely
+    upload data to the AWS cloud for cost effective backup and rapid
+    disaster recovery.
+
+    Use the following links to get started using the /AWS Storage Gateway
+    Service API Reference/:
+
+    -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayHTTPRequestsHeaders.html AWS Storage Gateway Required Request Headers>:
+        Describes the required headers that you must send with every POST
+        request to AWS Storage Gateway.
+    -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewaySigningRequests.html Signing Requests>:
+        AWS Storage Gateway requires that you authenticate every request you
+        send; this topic describes how sign such a request.
+    -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/APIErrorResponses.html Error Responses>:
+        Provides reference information about AWS Storage Gateway errors.
+    -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPIOperations.html Operations in AWS Storage Gateway>:
+        Contains detailed descriptions of all AWS Storage Gateway
+        operations, their request parameters, response elements, possible
+        errors, and examples of requests and responses.
+    -   <http://docs.aws.amazon.com/general/latest/gr/index.html?rande.html AWS Storage Gateway Regions and Endpoints>:
+        Provides a list of each of the regions and endpoints available for
+        use with AWS Storage Gateway.
     .
-    /See:/ <http://docs.aws.amazon.com/storagegateway/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.StorageGateway" and the <http://docs.aws.amazon.com/storagegateway/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -70,6 +102,7 @@
         , Network.AWS.StorageGateway.DisableGateway
         , Network.AWS.StorageGateway.ListGateways
         , Network.AWS.StorageGateway.ListLocalDisks
+        , Network.AWS.StorageGateway.ListVolumeInitiators
         , Network.AWS.StorageGateway.ListVolumeRecoveryPoints
         , Network.AWS.StorageGateway.ListVolumes
         , Network.AWS.StorageGateway.ResetCache
@@ -85,9 +118,40 @@
         , Network.AWS.StorageGateway.UpdateMaintenanceStartTime
         , Network.AWS.StorageGateway.UpdateSnapshotSchedule
         , Network.AWS.StorageGateway.UpdateVTLDeviceType
+        , Network.AWS.StorageGateway.Waiters
 
     other-modules:
+          Network.AWS.StorageGateway.Types.Product
+        , Network.AWS.StorageGateway.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-storagegateway-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.StorageGateway
+        , Test.AWS.Gen.StorageGateway
+        , Test.AWS.StorageGateway.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-storagegateway == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/StorageGateway.hs b/gen/Network/AWS/StorageGateway.hs
--- a/gen/Network/AWS/StorageGateway.hs
+++ b/gen/Network/AWS/StorageGateway.hs
@@ -1,118 +1,424 @@
+{-# 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.StorageGateway
--- 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 Storage Gateway is a service that connects an on-premises software
--- appliance with cloud-based storage to provide seamless and secure integration
--- between your on-premises IT environment and AWS's storage infrastructure.
+-- AWS Storage Gateway Service
+--
+-- AWS Storage Gateway is the service that connects an on-premises software
+-- appliance with cloud-based storage to provide seamless and secure
+-- integration between an organization\'s on-premises IT environment and
+-- AWS\'s storage infrastructure. The service enables you to securely
+-- upload data to the AWS cloud for cost effective backup and rapid
+-- disaster recovery.
+--
+-- Use the following links to get started using the /AWS Storage Gateway
+-- Service API Reference/:
+--
+-- -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayHTTPRequestsHeaders.html AWS Storage Gateway Required Request Headers>:
+--     Describes the required headers that you must send with every POST
+--     request to AWS Storage Gateway.
+-- -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewaySigningRequests.html Signing Requests>:
+--     AWS Storage Gateway requires that you authenticate every request you
+--     send; this topic describes how sign such a request.
+-- -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/APIErrorResponses.html Error Responses>:
+--     Provides reference information about AWS Storage Gateway errors.
+-- -   <http://docs.aws.amazon.com/storagegateway/latest/userguide/AWSStorageGatewayAPIOperations.html Operations in AWS Storage Gateway>:
+--     Contains detailed descriptions of all AWS Storage Gateway
+--     operations, their request parameters, response elements, possible
+--     errors, and examples of requests and responses.
+-- -   <http://docs.aws.amazon.com/general/latest/gr/index.html?rande.html AWS Storage Gateway Regions and Endpoints>:
+--     Provides a list of each of the regions and endpoints available for
+--     use with AWS Storage Gateway.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.StorageGateway
-    ( module Network.AWS.StorageGateway.ActivateGateway
-    , module Network.AWS.StorageGateway.AddCache
-    , module Network.AWS.StorageGateway.AddUploadBuffer
-    , module Network.AWS.StorageGateway.AddWorkingStorage
+    (
+    -- * Service
+      StorageGateway
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidGatewayRequestException
+    , _InvalidGatewayRequestException
+
+    -- ** InternalServerError
+    , _InternalServerError
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CancelArchival
     , module Network.AWS.StorageGateway.CancelArchival
-    , module Network.AWS.StorageGateway.CancelRetrieval
-    , module Network.AWS.StorageGateway.CreateCachediSCSIVolume
-    , module Network.AWS.StorageGateway.CreateSnapshot
-    , module Network.AWS.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
+
+    -- ** CreateStorediSCSIVolume
     , module Network.AWS.StorageGateway.CreateStorediSCSIVolume
+
+    -- ** CreateTapes
     , module Network.AWS.StorageGateway.CreateTapes
-    , module Network.AWS.StorageGateway.DeleteBandwidthRateLimit
-    , module Network.AWS.StorageGateway.DeleteChapCredentials
-    , module Network.AWS.StorageGateway.DeleteGateway
-    , module Network.AWS.StorageGateway.DeleteSnapshotSchedule
-    , module Network.AWS.StorageGateway.DeleteTape
-    , module Network.AWS.StorageGateway.DeleteTapeArchive
-    , module Network.AWS.StorageGateway.DeleteVolume
-    , module Network.AWS.StorageGateway.DescribeBandwidthRateLimit
-    , module Network.AWS.StorageGateway.DescribeCache
-    , module Network.AWS.StorageGateway.DescribeCachediSCSIVolumes
+
+    -- ** CreateCachediSCSIVolume
+    , module Network.AWS.StorageGateway.CreateCachediSCSIVolume
+
+    -- ** UpdateVTLDeviceType
+    , module Network.AWS.StorageGateway.UpdateVTLDeviceType
+
+    -- ** DescribeChapCredentials
     , module Network.AWS.StorageGateway.DescribeChapCredentials
-    , module Network.AWS.StorageGateway.DescribeGatewayInformation
+
+    -- ** AddUploadBuffer
+    , module Network.AWS.StorageGateway.AddUploadBuffer
+
+    -- ** ListVolumeInitiators
+    , module Network.AWS.StorageGateway.ListVolumeInitiators
+
+    -- ** DescribeWorkingStorage
+    , module Network.AWS.StorageGateway.DescribeWorkingStorage
+
+    -- ** DescribeCachediSCSIVolumes
+    , module Network.AWS.StorageGateway.DescribeCachediSCSIVolumes
+
+    -- ** UpdateGatewayInformation
+    , module Network.AWS.StorageGateway.UpdateGatewayInformation
+
+    -- ** DescribeMaintenanceStartTime
     , module Network.AWS.StorageGateway.DescribeMaintenanceStartTime
-    , module Network.AWS.StorageGateway.DescribeSnapshotSchedule
+
+    -- ** AddCache
+    , module Network.AWS.StorageGateway.AddCache
+
+    -- ** StartGateway
+    , module Network.AWS.StorageGateway.StartGateway
+
+    -- ** ShutdownGateway
+    , module Network.AWS.StorageGateway.ShutdownGateway
+
+    -- ** UpdateGatewaySoftwareNow
+    , module Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
+
+    -- ** DeleteChapCredentials
+    , module Network.AWS.StorageGateway.DeleteChapCredentials
+
+    -- ** UpdateChapCredentials
+    , module Network.AWS.StorageGateway.UpdateChapCredentials
+
+    -- ** DescribeStorediSCSIVolumes
     , module Network.AWS.StorageGateway.DescribeStorediSCSIVolumes
-    , module Network.AWS.StorageGateway.DescribeTapeArchives
-    , module Network.AWS.StorageGateway.DescribeTapeRecoveryPoints
+
+    -- ** DescribeTapes (Paginated)
     , module Network.AWS.StorageGateway.DescribeTapes
+
+    -- ** DescribeUploadBuffer
     , module Network.AWS.StorageGateway.DescribeUploadBuffer
-    , module Network.AWS.StorageGateway.DescribeVTLDevices
-    , module Network.AWS.StorageGateway.DescribeWorkingStorage
+
+    -- ** CreateSnapshotFromVolumeRecoveryPoint
+    , module Network.AWS.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
+
+    -- ** DescribeGatewayInformation
+    , module Network.AWS.StorageGateway.DescribeGatewayInformation
+
+    -- ** RetrieveTapeRecoveryPoint
+    , module Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
+
+    -- ** UpdateMaintenanceStartTime
+    , module Network.AWS.StorageGateway.UpdateMaintenanceStartTime
+
+    -- ** DeleteGateway
+    , module Network.AWS.StorageGateway.DeleteGateway
+
+    -- ** DisableGateway
     , module Network.AWS.StorageGateway.DisableGateway
-    , module Network.AWS.StorageGateway.ListGateways
-    , module Network.AWS.StorageGateway.ListLocalDisks
+
+    -- ** DescribeSnapshotSchedule
+    , module Network.AWS.StorageGateway.DescribeSnapshotSchedule
+
+    -- ** DescribeTapeArchives (Paginated)
+    , module Network.AWS.StorageGateway.DescribeTapeArchives
+
+    -- ** RetrieveTapeArchive
+    , module Network.AWS.StorageGateway.RetrieveTapeArchive
+
+    -- ** DescribeBandwidthRateLimit
+    , module Network.AWS.StorageGateway.DescribeBandwidthRateLimit
+
+    -- ** DescribeVTLDevices (Paginated)
+    , module Network.AWS.StorageGateway.DescribeVTLDevices
+
+    -- ** CreateSnapshot
+    , module Network.AWS.StorageGateway.CreateSnapshot
+
+    -- ** UpdateSnapshotSchedule
+    , module Network.AWS.StorageGateway.UpdateSnapshotSchedule
+
+    -- ** CancelRetrieval
+    , module Network.AWS.StorageGateway.CancelRetrieval
+
+    -- ** DeleteSnapshotSchedule
+    , module Network.AWS.StorageGateway.DeleteSnapshotSchedule
+
+    -- ** DeleteTapeArchive
+    , module Network.AWS.StorageGateway.DeleteTapeArchive
+
+    -- ** ListVolumeRecoveryPoints
     , module Network.AWS.StorageGateway.ListVolumeRecoveryPoints
+
+    -- ** AddWorkingStorage
+    , module Network.AWS.StorageGateway.AddWorkingStorage
+
+    -- ** ListGateways (Paginated)
+    , module Network.AWS.StorageGateway.ListGateways
+
+    -- ** ListVolumes (Paginated)
     , module Network.AWS.StorageGateway.ListVolumes
+
+    -- ** DescribeTapeRecoveryPoints (Paginated)
+    , module Network.AWS.StorageGateway.DescribeTapeRecoveryPoints
+
+    -- ** DeleteVolume
+    , module Network.AWS.StorageGateway.DeleteVolume
+
+    -- ** ResetCache
     , module Network.AWS.StorageGateway.ResetCache
-    , module Network.AWS.StorageGateway.RetrieveTapeArchive
-    , module Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
-    , module Network.AWS.StorageGateway.ShutdownGateway
-    , module Network.AWS.StorageGateway.StartGateway
-    , module Network.AWS.StorageGateway.Types
+
+    -- ** ActivateGateway
+    , module Network.AWS.StorageGateway.ActivateGateway
+
+    -- ** DescribeCache
+    , module Network.AWS.StorageGateway.DescribeCache
+
+    -- ** UpdateBandwidthRateLimit
     , module Network.AWS.StorageGateway.UpdateBandwidthRateLimit
-    , module Network.AWS.StorageGateway.UpdateChapCredentials
-    , module Network.AWS.StorageGateway.UpdateGatewayInformation
-    , module Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
-    , module Network.AWS.StorageGateway.UpdateMaintenanceStartTime
-    , module Network.AWS.StorageGateway.UpdateSnapshotSchedule
-    , module Network.AWS.StorageGateway.UpdateVTLDeviceType
+
+    -- ** DeleteBandwidthRateLimit
+    , module Network.AWS.StorageGateway.DeleteBandwidthRateLimit
+
+    -- ** ListLocalDisks
+    , module Network.AWS.StorageGateway.ListLocalDisks
+
+    -- ** DeleteTape
+    , module Network.AWS.StorageGateway.DeleteTape
+
+    -- * Types
+
+    -- ** CachediSCSIVolume
+    , CachediSCSIVolume
+    , cachediSCSIVolume
+    , cscsivVolumeStatus
+    , cscsivVolumeiSCSIAttributes
+    , cscsivSourceSnapshotId
+    , cscsivVolumeARN
+    , cscsivVolumeProgress
+    , cscsivVolumeSizeInBytes
+    , cscsivVolumeId
+    , cscsivVolumeType
+
+    -- ** ChapInfo
+    , ChapInfo
+    , chapInfo
+    , ciTargetARN
+    , ciSecretToAuthenticateInitiator
+    , ciInitiatorName
+    , ciSecretToAuthenticateTarget
+
+    -- ** DeviceiSCSIAttributes
+    , DeviceiSCSIAttributes
+    , deviceiSCSIAttributes
+    , dscsiaTargetARN
+    , dscsiaChapEnabled
+    , dscsiaNetworkInterfaceId
+    , dscsiaNetworkInterfacePort
+
+    -- ** Disk
+    , Disk
+    , disk
+    , dDiskAllocationResource
+    , dDiskAllocationType
+    , dDiskNode
+    , dDiskPath
+    , dDiskSizeInBytes
+    , dDiskStatus
+    , dDiskId
+
+    -- ** GatewayInfo
+    , GatewayInfo
+    , gatewayInfo
+    , giGatewayARN
+    , giGatewayOperationalState
+    , giGatewayType
+
+    -- ** NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niIPv6Address
+    , niMACAddress
+    , niIPv4Address
+
+    -- ** StorediSCSIVolume
+    , StorediSCSIVolume
+    , storediSCSIVolume
+    , sscsivVolumeStatus
+    , sscsivVolumeiSCSIAttributes
+    , sscsivSourceSnapshotId
+    , sscsivPreservedExistingData
+    , sscsivVolumeARN
+    , sscsivVolumeProgress
+    , sscsivVolumeSizeInBytes
+    , sscsivVolumeId
+    , sscsivVolumeType
+    , sscsivVolumeDiskId
+
+    -- ** Tape
+    , Tape
+    , tape
+    , tTapeBarcode
+    , tTapeStatus
+    , tProgress
+    , tTapeARN
+    , tTapeSizeInBytes
+    , tVTLDevice
+
+    -- ** TapeArchive
+    , TapeArchive
+    , tapeArchive
+    , taTapeBarcode
+    , taTapeStatus
+    , taTapeARN
+    , taTapeSizeInBytes
+    , taCompletionTime
+    , taRetrievedTo
+
+    -- ** TapeRecoveryPointInfo
+    , TapeRecoveryPointInfo
+    , tapeRecoveryPointInfo
+    , trpiTapeStatus
+    , trpiTapeRecoveryPointTime
+    , trpiTapeARN
+    , trpiTapeSizeInBytes
+
+    -- ** VTLDevice
+    , VTLDevice
+    , vTLDevice
+    , vtldDeviceiSCSIAttributes
+    , vtldVTLDeviceVendor
+    , vtldVTLDeviceARN
+    , vtldVTLDeviceType
+    , vtldVTLDeviceProductIdentifier
+
+    -- ** VolumeInfo
+    , VolumeInfo
+    , volumeInfo
+    , viVolumeARN
+    , viVolumeType
+
+    -- ** VolumeRecoveryPointInfo
+    , VolumeRecoveryPointInfo
+    , volumeRecoveryPointInfo
+    , vrpiVolumeRecoveryPointTime
+    , vrpiVolumeARN
+    , vrpiVolumeSizeInBytes
+    , vrpiVolumeUsageInBytes
+
+    -- ** VolumeiSCSIAttributes
+    , VolumeiSCSIAttributes
+    , volumeiSCSIAttributes
+    , vscsiaLunNumber
+    , vscsiaTargetARN
+    , vscsiaChapEnabled
+    , vscsiaNetworkInterfaceId
+    , vscsiaNetworkInterfacePort
     ) where
 
-import Network.AWS.StorageGateway.ActivateGateway
-import Network.AWS.StorageGateway.AddCache
-import Network.AWS.StorageGateway.AddUploadBuffer
-import Network.AWS.StorageGateway.AddWorkingStorage
-import Network.AWS.StorageGateway.CancelArchival
-import Network.AWS.StorageGateway.CancelRetrieval
-import Network.AWS.StorageGateway.CreateCachediSCSIVolume
-import Network.AWS.StorageGateway.CreateSnapshot
-import Network.AWS.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
-import Network.AWS.StorageGateway.CreateStorediSCSIVolume
-import Network.AWS.StorageGateway.CreateTapes
-import Network.AWS.StorageGateway.DeleteBandwidthRateLimit
-import Network.AWS.StorageGateway.DeleteChapCredentials
-import Network.AWS.StorageGateway.DeleteGateway
-import Network.AWS.StorageGateway.DeleteSnapshotSchedule
-import Network.AWS.StorageGateway.DeleteTape
-import Network.AWS.StorageGateway.DeleteTapeArchive
-import Network.AWS.StorageGateway.DeleteVolume
-import Network.AWS.StorageGateway.DescribeBandwidthRateLimit
-import Network.AWS.StorageGateway.DescribeCache
-import Network.AWS.StorageGateway.DescribeCachediSCSIVolumes
-import Network.AWS.StorageGateway.DescribeChapCredentials
-import Network.AWS.StorageGateway.DescribeGatewayInformation
-import Network.AWS.StorageGateway.DescribeMaintenanceStartTime
-import Network.AWS.StorageGateway.DescribeSnapshotSchedule
-import Network.AWS.StorageGateway.DescribeStorediSCSIVolumes
-import Network.AWS.StorageGateway.DescribeTapeArchives
-import Network.AWS.StorageGateway.DescribeTapeRecoveryPoints
-import Network.AWS.StorageGateway.DescribeTapes
-import Network.AWS.StorageGateway.DescribeUploadBuffer
-import Network.AWS.StorageGateway.DescribeVTLDevices
-import Network.AWS.StorageGateway.DescribeWorkingStorage
-import Network.AWS.StorageGateway.DisableGateway
-import Network.AWS.StorageGateway.ListGateways
-import Network.AWS.StorageGateway.ListLocalDisks
-import Network.AWS.StorageGateway.ListVolumeRecoveryPoints
-import Network.AWS.StorageGateway.ListVolumes
-import Network.AWS.StorageGateway.ResetCache
-import Network.AWS.StorageGateway.RetrieveTapeArchive
-import Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
-import Network.AWS.StorageGateway.ShutdownGateway
-import Network.AWS.StorageGateway.StartGateway
-import Network.AWS.StorageGateway.Types
-import Network.AWS.StorageGateway.UpdateBandwidthRateLimit
-import Network.AWS.StorageGateway.UpdateChapCredentials
-import Network.AWS.StorageGateway.UpdateGatewayInformation
-import Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
-import Network.AWS.StorageGateway.UpdateMaintenanceStartTime
-import Network.AWS.StorageGateway.UpdateSnapshotSchedule
-import Network.AWS.StorageGateway.UpdateVTLDeviceType
+import           Network.AWS.StorageGateway.ActivateGateway
+import           Network.AWS.StorageGateway.AddCache
+import           Network.AWS.StorageGateway.AddUploadBuffer
+import           Network.AWS.StorageGateway.AddWorkingStorage
+import           Network.AWS.StorageGateway.CancelArchival
+import           Network.AWS.StorageGateway.CancelRetrieval
+import           Network.AWS.StorageGateway.CreateCachediSCSIVolume
+import           Network.AWS.StorageGateway.CreateSnapshot
+import           Network.AWS.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
+import           Network.AWS.StorageGateway.CreateStorediSCSIVolume
+import           Network.AWS.StorageGateway.CreateTapes
+import           Network.AWS.StorageGateway.DeleteBandwidthRateLimit
+import           Network.AWS.StorageGateway.DeleteChapCredentials
+import           Network.AWS.StorageGateway.DeleteGateway
+import           Network.AWS.StorageGateway.DeleteSnapshotSchedule
+import           Network.AWS.StorageGateway.DeleteTape
+import           Network.AWS.StorageGateway.DeleteTapeArchive
+import           Network.AWS.StorageGateway.DeleteVolume
+import           Network.AWS.StorageGateway.DescribeBandwidthRateLimit
+import           Network.AWS.StorageGateway.DescribeCache
+import           Network.AWS.StorageGateway.DescribeCachediSCSIVolumes
+import           Network.AWS.StorageGateway.DescribeChapCredentials
+import           Network.AWS.StorageGateway.DescribeGatewayInformation
+import           Network.AWS.StorageGateway.DescribeMaintenanceStartTime
+import           Network.AWS.StorageGateway.DescribeSnapshotSchedule
+import           Network.AWS.StorageGateway.DescribeStorediSCSIVolumes
+import           Network.AWS.StorageGateway.DescribeTapeArchives
+import           Network.AWS.StorageGateway.DescribeTapeRecoveryPoints
+import           Network.AWS.StorageGateway.DescribeTapes
+import           Network.AWS.StorageGateway.DescribeUploadBuffer
+import           Network.AWS.StorageGateway.DescribeVTLDevices
+import           Network.AWS.StorageGateway.DescribeWorkingStorage
+import           Network.AWS.StorageGateway.DisableGateway
+import           Network.AWS.StorageGateway.ListGateways
+import           Network.AWS.StorageGateway.ListLocalDisks
+import           Network.AWS.StorageGateway.ListVolumeInitiators
+import           Network.AWS.StorageGateway.ListVolumeRecoveryPoints
+import           Network.AWS.StorageGateway.ListVolumes
+import           Network.AWS.StorageGateway.ResetCache
+import           Network.AWS.StorageGateway.RetrieveTapeArchive
+import           Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
+import           Network.AWS.StorageGateway.ShutdownGateway
+import           Network.AWS.StorageGateway.StartGateway
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.UpdateBandwidthRateLimit
+import           Network.AWS.StorageGateway.UpdateChapCredentials
+import           Network.AWS.StorageGateway.UpdateGatewayInformation
+import           Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
+import           Network.AWS.StorageGateway.UpdateMaintenanceStartTime
+import           Network.AWS.StorageGateway.UpdateSnapshotSchedule
+import           Network.AWS.StorageGateway.UpdateVTLDeviceType
+import           Network.AWS.StorageGateway.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 'StorageGateway'.
+-}
+
+{- $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/StorageGateway/ActivateGateway.hs b/gen/Network/AWS/StorageGateway/ActivateGateway.hs
--- a/gen/Network/AWS/StorageGateway/ActivateGateway.hs
+++ b/gen/Network/AWS/StorageGateway/ActivateGateway.hs
@@ -1,206 +1,241 @@
-{-# 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.StorageGateway.ActivateGateway
--- 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 operation activates the gateway you previously deployed on your host.
--- For more information, see <http://docs.aws.amazon.com/storagegateway/latest/userguide/GettingStartedActivateGateway-common.html  Activate the AWS Storage Gateway>. In the
--- activation process, you specify information such as the region you want to
--- use for storing snapshots, the time zone for scheduled snapshots the gateway
--- snapshot schedule window, an activation key, and a name for your gateway. The
--- activation process also associates your gateway with your account; for more
--- information, see 'UpdateGatewayInformation'.
+-- This operation activates the gateway you previously deployed on your
+-- host. For more information, see
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/GettingStartedActivateGateway-common.html Activate the AWS Storage Gateway>.
+-- In the activation process, you specify information such as the region
+-- you want to use for storing snapshots, the time zone for scheduled
+-- snapshots the gateway snapshot schedule window, an activation key, and a
+-- name for your gateway. The activation process also associates your
+-- gateway with your account; for more information, see
+-- UpdateGatewayInformation.
 --
 -- You must turn on the gateway VM before you can activate your gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ActivateGateway.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ActivateGateway.html AWS API Reference> for ActivateGateway.
 module Network.AWS.StorageGateway.ActivateGateway
     (
-    -- * Request
-      ActivateGateway
-    -- ** Request constructor
-    , activateGateway
-    -- ** Request lenses
+    -- * Creating a Request
+      activateGateway
+    , ActivateGateway
+    -- * Request Lenses
+    , agMediumChangerType
+    , agTapeDriveType
+    , agGatewayType
     , agActivationKey
     , agGatewayName
-    , agGatewayRegion
     , agGatewayTimezone
-    , agGatewayType
-    , agMediumChangerType
-    , agTapeDriveType
+    , agGatewayRegion
 
-    -- * Response
-    , ActivateGatewayResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , activateGatewayResponse
-    -- ** Response lenses
-    , agrGatewayARN
+    , ActivateGatewayResponse
+    -- * Response Lenses
+    , agrsGatewayARN
+    , agrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data ActivateGateway = ActivateGateway
-    { _agActivationKey     :: Text
-    , _agGatewayName       :: Text
-    , _agGatewayRegion     :: Text
-    , _agGatewayTimezone   :: Text
-    , _agGatewayType       :: Maybe Text
-    , _agMediumChangerType :: Maybe Text
-    , _agTapeDriveType     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'ActivateGateway' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   ActivateGatewayInput$ActivationKey
+-- -   GatewayName
+-- -   ActivateGatewayInput$GatewayRegion
+-- -   ActivateGatewayInput$GatewayTimezone
+-- -   ActivateGatewayInput$GatewayType
+-- -   ActivateGatewayInput$TapeDriveType
+-- -   ActivateGatewayInput$MediumChangerType
 --
--- * 'agActivationKey' @::@ 'Text'
+-- /See:/ 'activateGateway' smart constructor.
+data ActivateGateway = ActivateGateway'
+    { _agMediumChangerType :: !(Maybe Text)
+    , _agTapeDriveType     :: !(Maybe Text)
+    , _agGatewayType       :: !(Maybe Text)
+    , _agActivationKey     :: !Text
+    , _agGatewayName       :: !Text
+    , _agGatewayTimezone   :: !Text
+    , _agGatewayRegion     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ActivateGateway' with the minimum fields required to make a request.
 --
--- * 'agGatewayName' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'agGatewayRegion' @::@ 'Text'
+-- * 'agMediumChangerType'
 --
--- * 'agGatewayTimezone' @::@ 'Text'
+-- * 'agTapeDriveType'
 --
--- * 'agGatewayType' @::@ 'Maybe' 'Text'
+-- * 'agGatewayType'
 --
--- * 'agMediumChangerType' @::@ 'Maybe' 'Text'
+-- * 'agActivationKey'
 --
--- * 'agTapeDriveType' @::@ 'Maybe' 'Text'
+-- * 'agGatewayName'
 --
-activateGateway :: Text -- ^ 'agActivationKey'
-                -> Text -- ^ 'agGatewayName'
-                -> Text -- ^ 'agGatewayTimezone'
-                -> Text -- ^ 'agGatewayRegion'
-                -> ActivateGateway
-activateGateway p1 p2 p3 p4 = ActivateGateway
-    { _agActivationKey     = p1
-    , _agGatewayName       = p2
-    , _agGatewayTimezone   = p3
-    , _agGatewayRegion     = p4
-    , _agGatewayType       = Nothing
-    , _agTapeDriveType     = Nothing
-    , _agMediumChangerType = Nothing
+-- * 'agGatewayTimezone'
+--
+-- * 'agGatewayRegion'
+activateGateway
+    :: Text -- ^ 'agActivationKey'
+    -> Text -- ^ 'agGatewayName'
+    -> Text -- ^ 'agGatewayTimezone'
+    -> Text -- ^ 'agGatewayRegion'
+    -> ActivateGateway
+activateGateway pActivationKey_ pGatewayName_ pGatewayTimezone_ pGatewayRegion_ =
+    ActivateGateway'
+    { _agMediumChangerType = Nothing
+    , _agTapeDriveType = Nothing
+    , _agGatewayType = Nothing
+    , _agActivationKey = pActivationKey_
+    , _agGatewayName = pGatewayName_
+    , _agGatewayTimezone = pGatewayTimezone_
+    , _agGatewayRegion = pGatewayRegion_
     }
 
--- | Your gateway activation key. You can obtain the activation key by sending an
--- HTTP GET request with redirects enabled to the gateway IP address (port 80).
--- The redirect URL returned in the response provides you the activation key for
--- your gateway in the query string parameter 'activationKey'. It may also include
--- other activation-related parameters, however, these are merely defaults --
--- the arguments you pass to the 'ActivateGateway' API call determine the actual
--- configuration of your gateway.
-agActivationKey :: Lens' ActivateGateway Text
-agActivationKey = lens _agActivationKey (\s a -> s { _agActivationKey = a })
-
-agGatewayName :: Lens' ActivateGateway Text
-agGatewayName = lens _agGatewayName (\s a -> s { _agGatewayName = a })
-
--- | One of the values that indicates the region where you want to store the
--- snapshot backups. The gateway region specified must be the same region as the
--- region in your 'Host' header in the request. For more information about
--- available regions and endpoints for AWS Storage Gateway, see <http://docs.aws.amazon.com/general/latest/gr/rande.html#sg_region Regions andEndpoints> in the /Amazon Web Services Glossary/.
+-- | The value that indicates the type of medium changer to use for
+-- gateway-VTL. This field is optional.
 --
--- /Valid Values/: "us-east-1", "us-west-1", "us-west-2", "eu-west-1",
--- "eu-central-1", "ap-northeast-1", "ap-southeast-1", "ap-southeast-2",
--- "sa-east-1"
-agGatewayRegion :: Lens' ActivateGateway Text
-agGatewayRegion = lens _agGatewayRegion (\s a -> s { _agGatewayRegion = a })
+-- /Valid Values/: \"STK-L700\", \"AWS-Gateway-VTL\"
+agMediumChangerType :: Lens' ActivateGateway (Maybe Text)
+agMediumChangerType = lens _agMediumChangerType (\ s a -> s{_agMediumChangerType = a});
 
--- | One of the values that indicates the time zone you want to set for the
--- gateway. The time zone is used, for example, for scheduling snapshots and
--- your gateway's maintenance schedule.
-agGatewayTimezone :: Lens' ActivateGateway Text
-agGatewayTimezone =
-    lens _agGatewayTimezone (\s a -> s { _agGatewayTimezone = a })
+-- | The value that indicates the type of tape drive to use for gateway-VTL.
+-- This field is optional.
+--
+-- /Valid Values/: \"IBM-ULT3580-TD5\"
+agTapeDriveType :: Lens' ActivateGateway (Maybe Text)
+agTapeDriveType = lens _agTapeDriveType (\ s a -> s{_agTapeDriveType = a});
 
 -- | One of the values that defines the type of gateway to activate. The type
--- specified is critical to all later functions of the gateway and cannot be
--- changed after activation. The default value is 'STORED'.
+-- specified is critical to all later functions of the gateway and cannot
+-- be changed after activation. The default value is 'STORED'.
 agGatewayType :: Lens' ActivateGateway (Maybe Text)
-agGatewayType = lens _agGatewayType (\s a -> s { _agGatewayType = a })
+agGatewayType = lens _agGatewayType (\ s a -> s{_agGatewayType = a});
 
--- | The value that indicates the type of medium changer to use for gateway-VTL.
--- This field is optional.
---
--- /Valid Values/: "STK-L700", "AWS-Gateway-VTL"
-agMediumChangerType :: Lens' ActivateGateway (Maybe Text)
-agMediumChangerType =
-    lens _agMediumChangerType (\s a -> s { _agMediumChangerType = a })
+-- | Your gateway activation key. You can obtain the activation key by
+-- sending an HTTP GET request with redirects enabled to the gateway IP
+-- address (port 80). The redirect URL returned in the response provides
+-- you the activation key for your gateway in the query string parameter
+-- 'activationKey'. It may also include other activation-related
+-- parameters, however, these are merely defaults -- the arguments you pass
+-- to the 'ActivateGateway' API call determine the actual configuration of
+-- your gateway.
+agActivationKey :: Lens' ActivateGateway Text
+agActivationKey = lens _agActivationKey (\ s a -> s{_agActivationKey = a});
 
--- | The value that indicates the type of tape drive to use for gateway-VTL. This
--- field is optional.
---
--- /Valid Values/: "IBM-ULT3580-TD5"
-agTapeDriveType :: Lens' ActivateGateway (Maybe Text)
-agTapeDriveType = lens _agTapeDriveType (\s a -> s { _agTapeDriveType = a })
+-- | Undocumented member.
+agGatewayName :: Lens' ActivateGateway Text
+agGatewayName = lens _agGatewayName (\ s a -> s{_agGatewayName = a});
 
-newtype ActivateGatewayResponse = ActivateGatewayResponse
-    { _agrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | One of the values that indicates the time zone you want to set for the
+-- gateway. The time zone is used, for example, for scheduling snapshots
+-- and your gateway\'s maintenance schedule.
+agGatewayTimezone :: Lens' ActivateGateway Text
+agGatewayTimezone = lens _agGatewayTimezone (\ s a -> s{_agGatewayTimezone = a});
 
--- | 'ActivateGatewayResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'agrGatewayARN' @::@ 'Maybe' 'Text'
+-- | One of the values that indicates the region where you want to store the
+-- snapshot backups. The gateway region specified must be the same region
+-- as the region in your 'Host' header in the request. For more information
+-- about available regions and endpoints for AWS Storage Gateway, see
+-- <http://docs.aws.amazon.com/general/latest/gr/rande.html#sg_region Regions and Endpoints>
+-- in the /Amazon Web Services Glossary/.
 --
-activateGatewayResponse :: ActivateGatewayResponse
-activateGatewayResponse = ActivateGatewayResponse
-    { _agrGatewayARN = Nothing
-    }
+-- /Valid Values/: \"us-east-1\", \"us-west-1\", \"us-west-2\",
+-- \"eu-west-1\", \"eu-central-1\", \"ap-northeast-1\", \"ap-southeast-1\",
+-- \"ap-southeast-2\", \"sa-east-1\"
+agGatewayRegion :: Lens' ActivateGateway Text
+agGatewayRegion = lens _agGatewayRegion (\ s a -> s{_agGatewayRegion = a});
 
-agrGatewayARN :: Lens' ActivateGatewayResponse (Maybe Text)
-agrGatewayARN = lens _agrGatewayARN (\s a -> s { _agrGatewayARN = a })
+instance AWSRequest ActivateGateway where
+        type Sv ActivateGateway = StorageGateway
+        type Rs ActivateGateway = ActivateGatewayResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ActivateGatewayResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
+instance ToHeaders ActivateGateway where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ActivateGateway" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ActivateGateway where
+        toJSON ActivateGateway'{..}
+          = object
+              ["MediumChangerType" .= _agMediumChangerType,
+               "TapeDriveType" .= _agTapeDriveType,
+               "GatewayType" .= _agGatewayType,
+               "ActivationKey" .= _agActivationKey,
+               "GatewayName" .= _agGatewayName,
+               "GatewayTimezone" .= _agGatewayTimezone,
+               "GatewayRegion" .= _agGatewayRegion]
+
 instance ToPath ActivateGateway where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ActivateGateway where
-    toQuery = const mempty
-
-instance ToHeaders ActivateGateway
+        toQuery = const mempty
 
-instance ToJSON ActivateGateway where
-    toJSON ActivateGateway{..} = object
-        [ "ActivationKey"     .= _agActivationKey
-        , "GatewayName"       .= _agGatewayName
-        , "GatewayTimezone"   .= _agGatewayTimezone
-        , "GatewayRegion"     .= _agGatewayRegion
-        , "GatewayType"       .= _agGatewayType
-        , "TapeDriveType"     .= _agTapeDriveType
-        , "MediumChangerType" .= _agMediumChangerType
-        ]
+-- | AWS Storage Gateway returns the Amazon Resource Name (ARN) of the
+-- activated gateway. It is a string made of information such as your
+-- account, gateway name, and region. This ARN is used to reference the
+-- gateway in other API operations as well as resource-based authorization.
+--
+-- /See:/ 'activateGatewayResponse' smart constructor.
+data ActivateGatewayResponse = ActivateGatewayResponse'
+    { _agrsGatewayARN :: !(Maybe Text)
+    , _agrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ActivateGateway where
-    type Sv ActivateGateway = StorageGateway
-    type Rs ActivateGateway = ActivateGatewayResponse
+-- | Creates a value of 'ActivateGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'agrsGatewayARN'
+--
+-- * 'agrsStatus'
+activateGatewayResponse
+    :: Int -- ^ 'agrsStatus'
+    -> ActivateGatewayResponse
+activateGatewayResponse pStatus_ =
+    ActivateGatewayResponse'
+    { _agrsGatewayARN = Nothing
+    , _agrsStatus = pStatus_
+    }
 
-    request  = post "ActivateGateway"
-    response = jsonResponse
+-- | Undocumented member.
+agrsGatewayARN :: Lens' ActivateGatewayResponse (Maybe Text)
+agrsGatewayARN = lens _agrsGatewayARN (\ s a -> s{_agrsGatewayARN = a});
 
-instance FromJSON ActivateGatewayResponse where
-    parseJSON = withObject "ActivateGatewayResponse" $ \o -> ActivateGatewayResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+agrsStatus :: Lens' ActivateGatewayResponse Int
+agrsStatus = lens _agrsStatus (\ s a -> s{_agrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/AddCache.hs b/gen/Network/AWS/StorageGateway/AddCache.hs
--- a/gen/Network/AWS/StorageGateway/AddCache.hs
+++ b/gen/Network/AWS/StorageGateway/AddCache.hs
@@ -1,125 +1,143 @@
-{-# 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.StorageGateway.AddCache
--- 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 operation configures one or more gateway local disks as cache for a
+-- This operation configures one or more gateway local disks as cache for a
 -- cached-volume gateway. This operation is supported only for the
--- gateway-cached volume architecture (see <http://docs.aws.amazon.com/storagegateway/latest/userguide/StorageGatewayConcepts.html Storage Gateway Concepts>).
+-- gateway-cached volume architecture (see
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/StorageGatewayConcepts.html Storage Gateway Concepts>).
 --
--- In the request, you specify the gateway Amazon Resource Name (ARN) to which
--- you want to add cache, and one or more disk IDs that you want to configure as
--- cache.
+-- In the request, you specify the gateway Amazon Resource Name (ARN) to
+-- which you want to add cache, and one or more disk IDs that you want to
+-- configure as cache.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddCache.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddCache.html AWS API Reference> for AddCache.
 module Network.AWS.StorageGateway.AddCache
     (
-    -- * Request
-      AddCache
-    -- ** Request constructor
-    , addCache
-    -- ** Request lenses
-    , acDiskIds
+    -- * Creating a Request
+      addCache
+    , AddCache
+    -- * Request Lenses
     , acGatewayARN
+    , acDiskIds
 
-    -- * Response
-    , AddCacheResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addCacheResponse
-    -- ** Response lenses
-    , acrGatewayARN
+    , AddCacheResponse
+    -- * Response Lenses
+    , acrsGatewayARN
+    , acrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data AddCache = AddCache
-    { _acDiskIds    :: List "DiskIds" Text
-    , _acGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'addCache' smart constructor.
+data AddCache = AddCache'
+    { _acGatewayARN :: !Text
+    , _acDiskIds    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AddCache' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AddCache' with the minimum fields required to make a request.
 --
--- * 'acDiskIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'acGatewayARN' @::@ 'Text'
+-- * 'acGatewayARN'
 --
-addCache :: Text -- ^ 'acGatewayARN'
-         -> AddCache
-addCache p1 = AddCache
-    { _acGatewayARN = p1
-    , _acDiskIds    = mempty
+-- * 'acDiskIds'
+addCache
+    :: Text -- ^ 'acGatewayARN'
+    -> AddCache
+addCache pGatewayARN_ =
+    AddCache'
+    { _acGatewayARN = pGatewayARN_
+    , _acDiskIds = mempty
     }
 
-acDiskIds :: Lens' AddCache [Text]
-acDiskIds = lens _acDiskIds (\s a -> s { _acDiskIds = a }) . _List
-
+-- | Undocumented member.
 acGatewayARN :: Lens' AddCache Text
-acGatewayARN = lens _acGatewayARN (\s a -> s { _acGatewayARN = a })
+acGatewayARN = lens _acGatewayARN (\ s a -> s{_acGatewayARN = a});
 
-newtype AddCacheResponse = AddCacheResponse
-    { _acrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | Undocumented member.
+acDiskIds :: Lens' AddCache [Text]
+acDiskIds = lens _acDiskIds (\ s a -> s{_acDiskIds = a}) . _Coerce;
 
--- | 'AddCacheResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'acrGatewayARN' @::@ 'Maybe' 'Text'
---
-addCacheResponse :: AddCacheResponse
-addCacheResponse = AddCacheResponse
-    { _acrGatewayARN = Nothing
-    }
+instance AWSRequest AddCache where
+        type Sv AddCache = StorageGateway
+        type Rs AddCache = AddCacheResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddCacheResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
-acrGatewayARN :: Lens' AddCacheResponse (Maybe Text)
-acrGatewayARN = lens _acrGatewayARN (\s a -> s { _acrGatewayARN = a })
+instance ToHeaders AddCache where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.AddCache" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AddCache where
+        toJSON AddCache'{..}
+          = object
+              ["GatewayARN" .= _acGatewayARN,
+               "DiskIds" .= _acDiskIds]
+
 instance ToPath AddCache where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddCache where
-    toQuery = const mempty
-
-instance ToHeaders AddCache
+        toQuery = const mempty
 
-instance ToJSON AddCache where
-    toJSON AddCache{..} = object
-        [ "GatewayARN" .= _acGatewayARN
-        , "DiskIds"    .= _acDiskIds
-        ]
+-- | /See:/ 'addCacheResponse' smart constructor.
+data AddCacheResponse = AddCacheResponse'
+    { _acrsGatewayARN :: !(Maybe Text)
+    , _acrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddCache where
-    type Sv AddCache = StorageGateway
-    type Rs AddCache = AddCacheResponse
+-- | Creates a value of 'AddCacheResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'acrsGatewayARN'
+--
+-- * 'acrsStatus'
+addCacheResponse
+    :: Int -- ^ 'acrsStatus'
+    -> AddCacheResponse
+addCacheResponse pStatus_ =
+    AddCacheResponse'
+    { _acrsGatewayARN = Nothing
+    , _acrsStatus = pStatus_
+    }
 
-    request  = post "AddCache"
-    response = jsonResponse
+-- | Undocumented member.
+acrsGatewayARN :: Lens' AddCacheResponse (Maybe Text)
+acrsGatewayARN = lens _acrsGatewayARN (\ s a -> s{_acrsGatewayARN = a});
 
-instance FromJSON AddCacheResponse where
-    parseJSON = withObject "AddCacheResponse" $ \o -> AddCacheResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+acrsStatus :: Lens' AddCacheResponse Int
+acrsStatus = lens _acrsStatus (\ s a -> s{_acrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/AddUploadBuffer.hs b/gen/Network/AWS/StorageGateway/AddUploadBuffer.hs
--- a/gen/Network/AWS/StorageGateway/AddUploadBuffer.hs
+++ b/gen/Network/AWS/StorageGateway/AddUploadBuffer.hs
@@ -1,125 +1,143 @@
-{-# 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.StorageGateway.AddUploadBuffer
--- 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 operation configures one or more gateway local disks as upload buffer
--- for a specified gateway. This operation is supported for both the
+-- This operation configures one or more gateway local disks as upload
+-- buffer for a specified gateway. This operation is supported for both the
 -- gateway-stored and gateway-cached volume architectures.
 --
--- In the request, you specify the gateway Amazon Resource Name (ARN) to which
--- you want to add upload buffer, and one or more disk IDs that you want to
--- configure as upload buffer.
+-- In the request, you specify the gateway Amazon Resource Name (ARN) to
+-- which you want to add upload buffer, and one or more disk IDs that you
+-- want to configure as upload buffer.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddUploadBuffer.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddUploadBuffer.html AWS API Reference> for AddUploadBuffer.
 module Network.AWS.StorageGateway.AddUploadBuffer
     (
-    -- * Request
-      AddUploadBuffer
-    -- ** Request constructor
-    , addUploadBuffer
-    -- ** Request lenses
-    , aubDiskIds
+    -- * Creating a Request
+      addUploadBuffer
+    , AddUploadBuffer
+    -- * Request Lenses
     , aubGatewayARN
+    , aubDiskIds
 
-    -- * Response
-    , AddUploadBufferResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addUploadBufferResponse
-    -- ** Response lenses
-    , aubrGatewayARN
+    , AddUploadBufferResponse
+    -- * Response Lenses
+    , aubrsGatewayARN
+    , aubrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data AddUploadBuffer = AddUploadBuffer
-    { _aubDiskIds    :: List "DiskIds" Text
-    , _aubGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'addUploadBuffer' smart constructor.
+data AddUploadBuffer = AddUploadBuffer'
+    { _aubGatewayARN :: !Text
+    , _aubDiskIds    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AddUploadBuffer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AddUploadBuffer' with the minimum fields required to make a request.
 --
--- * 'aubDiskIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'aubGatewayARN' @::@ 'Text'
+-- * 'aubGatewayARN'
 --
-addUploadBuffer :: Text -- ^ 'aubGatewayARN'
-                -> AddUploadBuffer
-addUploadBuffer p1 = AddUploadBuffer
-    { _aubGatewayARN = p1
-    , _aubDiskIds    = mempty
+-- * 'aubDiskIds'
+addUploadBuffer
+    :: Text -- ^ 'aubGatewayARN'
+    -> AddUploadBuffer
+addUploadBuffer pGatewayARN_ =
+    AddUploadBuffer'
+    { _aubGatewayARN = pGatewayARN_
+    , _aubDiskIds = mempty
     }
 
-aubDiskIds :: Lens' AddUploadBuffer [Text]
-aubDiskIds = lens _aubDiskIds (\s a -> s { _aubDiskIds = a }) . _List
-
+-- | Undocumented member.
 aubGatewayARN :: Lens' AddUploadBuffer Text
-aubGatewayARN = lens _aubGatewayARN (\s a -> s { _aubGatewayARN = a })
+aubGatewayARN = lens _aubGatewayARN (\ s a -> s{_aubGatewayARN = a});
 
-newtype AddUploadBufferResponse = AddUploadBufferResponse
-    { _aubrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | Undocumented member.
+aubDiskIds :: Lens' AddUploadBuffer [Text]
+aubDiskIds = lens _aubDiskIds (\ s a -> s{_aubDiskIds = a}) . _Coerce;
 
--- | 'AddUploadBufferResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aubrGatewayARN' @::@ 'Maybe' 'Text'
---
-addUploadBufferResponse :: AddUploadBufferResponse
-addUploadBufferResponse = AddUploadBufferResponse
-    { _aubrGatewayARN = Nothing
-    }
+instance AWSRequest AddUploadBuffer where
+        type Sv AddUploadBuffer = StorageGateway
+        type Rs AddUploadBuffer = AddUploadBufferResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddUploadBufferResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
-aubrGatewayARN :: Lens' AddUploadBufferResponse (Maybe Text)
-aubrGatewayARN = lens _aubrGatewayARN (\s a -> s { _aubrGatewayARN = a })
+instance ToHeaders AddUploadBuffer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.AddUploadBuffer" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AddUploadBuffer where
+        toJSON AddUploadBuffer'{..}
+          = object
+              ["GatewayARN" .= _aubGatewayARN,
+               "DiskIds" .= _aubDiskIds]
+
 instance ToPath AddUploadBuffer where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddUploadBuffer where
-    toQuery = const mempty
-
-instance ToHeaders AddUploadBuffer
+        toQuery = const mempty
 
-instance ToJSON AddUploadBuffer where
-    toJSON AddUploadBuffer{..} = object
-        [ "GatewayARN" .= _aubGatewayARN
-        , "DiskIds"    .= _aubDiskIds
-        ]
+-- | /See:/ 'addUploadBufferResponse' smart constructor.
+data AddUploadBufferResponse = AddUploadBufferResponse'
+    { _aubrsGatewayARN :: !(Maybe Text)
+    , _aubrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddUploadBuffer where
-    type Sv AddUploadBuffer = StorageGateway
-    type Rs AddUploadBuffer = AddUploadBufferResponse
+-- | Creates a value of 'AddUploadBufferResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aubrsGatewayARN'
+--
+-- * 'aubrsStatus'
+addUploadBufferResponse
+    :: Int -- ^ 'aubrsStatus'
+    -> AddUploadBufferResponse
+addUploadBufferResponse pStatus_ =
+    AddUploadBufferResponse'
+    { _aubrsGatewayARN = Nothing
+    , _aubrsStatus = pStatus_
+    }
 
-    request  = post "AddUploadBuffer"
-    response = jsonResponse
+-- | Undocumented member.
+aubrsGatewayARN :: Lens' AddUploadBufferResponse (Maybe Text)
+aubrsGatewayARN = lens _aubrsGatewayARN (\ s a -> s{_aubrsGatewayARN = a});
 
-instance FromJSON AddUploadBufferResponse where
-    parseJSON = withObject "AddUploadBufferResponse" $ \o -> AddUploadBufferResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+aubrsStatus :: Lens' AddUploadBufferResponse Int
+aubrsStatus = lens _aubrsStatus (\ s a -> s{_aubrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/AddWorkingStorage.hs b/gen/Network/AWS/StorageGateway/AddWorkingStorage.hs
--- a/gen/Network/AWS/StorageGateway/AddWorkingStorage.hs
+++ b/gen/Network/AWS/StorageGateway/AddWorkingStorage.hs
@@ -1,131 +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.StorageGateway.AddWorkingStorage
--- 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 operation configures one or more gateway local disks as working storage
--- for a gateway. This operation is supported only for the gateway-stored volume
--- architecture. This operation is deprecated method in cached-volumes API
--- version (20120630). Use AddUploadBuffer instead.
+-- This operation configures one or more gateway local disks as working
+-- storage for a gateway. This operation is supported only for the
+-- gateway-stored volume architecture. This operation is deprecated method
+-- in cached-volumes API version (20120630). Use AddUploadBuffer instead.
 --
--- Working storage is also referred to as upload buffer. You can also use the 'AddUploadBuffer' operation to add upload buffer to a stored-volume gateway.
+-- Working storage is also referred to as upload buffer. You can also use
+-- the AddUploadBuffer operation to add upload buffer to a stored-volume
+-- gateway.
 --
--- In the request, you specify the gateway Amazon Resource Name (ARN) to which
--- you want to add working storage, and one or more disk IDs that you want to
--- configure as working storage.
+-- In the request, you specify the gateway Amazon Resource Name (ARN) to
+-- which you want to add working storage, and one or more disk IDs that you
+-- want to configure as working storage.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddWorkingStorage.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_AddWorkingStorage.html AWS API Reference> for AddWorkingStorage.
 module Network.AWS.StorageGateway.AddWorkingStorage
     (
-    -- * Request
-      AddWorkingStorage
-    -- ** Request constructor
-    , addWorkingStorage
-    -- ** Request lenses
-    , awsDiskIds
+    -- * Creating a Request
+      addWorkingStorage
+    , AddWorkingStorage
+    -- * Request Lenses
     , awsGatewayARN
+    , awsDiskIds
 
-    -- * Response
-    , AddWorkingStorageResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addWorkingStorageResponse
-    -- ** Response lenses
-    , awsrGatewayARN
+    , AddWorkingStorageResponse
+    -- * Response Lenses
+    , awsrsGatewayARN
+    , awsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data AddWorkingStorage = AddWorkingStorage
-    { _awsDiskIds    :: List "DiskIds" Text
-    , _awsGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'AddWorkingStorage' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   AddWorkingStorageInput$DiskIds
 --
--- * 'awsDiskIds' @::@ ['Text']
+-- /See:/ 'addWorkingStorage' smart constructor.
+data AddWorkingStorage = AddWorkingStorage'
+    { _awsGatewayARN :: !Text
+    , _awsDiskIds    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddWorkingStorage' with the minimum fields required to make a request.
 --
--- * 'awsGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-addWorkingStorage :: Text -- ^ 'awsGatewayARN'
-                  -> AddWorkingStorage
-addWorkingStorage p1 = AddWorkingStorage
-    { _awsGatewayARN = p1
-    , _awsDiskIds    = mempty
+-- * 'awsGatewayARN'
+--
+-- * 'awsDiskIds'
+addWorkingStorage
+    :: Text -- ^ 'awsGatewayARN'
+    -> AddWorkingStorage
+addWorkingStorage pGatewayARN_ =
+    AddWorkingStorage'
+    { _awsGatewayARN = pGatewayARN_
+    , _awsDiskIds = mempty
     }
 
--- | An array of strings that identify disks that are to be configured as working
--- storage. Each string have a minimum length of 1 and maximum length of 300.
--- You can get the disk IDs from the 'ListLocalDisks' API.
-awsDiskIds :: Lens' AddWorkingStorage [Text]
-awsDiskIds = lens _awsDiskIds (\s a -> s { _awsDiskIds = a }) . _List
-
+-- | Undocumented member.
 awsGatewayARN :: Lens' AddWorkingStorage Text
-awsGatewayARN = lens _awsGatewayARN (\s a -> s { _awsGatewayARN = a })
+awsGatewayARN = lens _awsGatewayARN (\ s a -> s{_awsGatewayARN = a});
 
-newtype AddWorkingStorageResponse = AddWorkingStorageResponse
-    { _awsrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | An array of strings that identify disks that are to be configured as
+-- working storage. Each string have a minimum length of 1 and maximum
+-- length of 300. You can get the disk IDs from the ListLocalDisks API.
+awsDiskIds :: Lens' AddWorkingStorage [Text]
+awsDiskIds = lens _awsDiskIds (\ s a -> s{_awsDiskIds = a}) . _Coerce;
 
--- | 'AddWorkingStorageResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'awsrGatewayARN' @::@ 'Maybe' 'Text'
---
-addWorkingStorageResponse :: AddWorkingStorageResponse
-addWorkingStorageResponse = AddWorkingStorageResponse
-    { _awsrGatewayARN = Nothing
-    }
+instance AWSRequest AddWorkingStorage where
+        type Sv AddWorkingStorage = StorageGateway
+        type Rs AddWorkingStorage = AddWorkingStorageResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddWorkingStorageResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
-awsrGatewayARN :: Lens' AddWorkingStorageResponse (Maybe Text)
-awsrGatewayARN = lens _awsrGatewayARN (\s a -> s { _awsrGatewayARN = a })
+instance ToHeaders AddWorkingStorage where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.AddWorkingStorage" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON AddWorkingStorage where
+        toJSON AddWorkingStorage'{..}
+          = object
+              ["GatewayARN" .= _awsGatewayARN,
+               "DiskIds" .= _awsDiskIds]
+
 instance ToPath AddWorkingStorage where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddWorkingStorage where
-    toQuery = const mempty
-
-instance ToHeaders AddWorkingStorage
+        toQuery = const mempty
 
-instance ToJSON AddWorkingStorage where
-    toJSON AddWorkingStorage{..} = object
-        [ "GatewayARN" .= _awsGatewayARN
-        , "DiskIds"    .= _awsDiskIds
-        ]
+-- | A JSON object containing the of the gateway for which working storage
+-- was configured.
+--
+-- /See:/ 'addWorkingStorageResponse' smart constructor.
+data AddWorkingStorageResponse = AddWorkingStorageResponse'
+    { _awsrsGatewayARN :: !(Maybe Text)
+    , _awsrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddWorkingStorage where
-    type Sv AddWorkingStorage = StorageGateway
-    type Rs AddWorkingStorage = AddWorkingStorageResponse
+-- | Creates a value of 'AddWorkingStorageResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'awsrsGatewayARN'
+--
+-- * 'awsrsStatus'
+addWorkingStorageResponse
+    :: Int -- ^ 'awsrsStatus'
+    -> AddWorkingStorageResponse
+addWorkingStorageResponse pStatus_ =
+    AddWorkingStorageResponse'
+    { _awsrsGatewayARN = Nothing
+    , _awsrsStatus = pStatus_
+    }
 
-    request  = post "AddWorkingStorage"
-    response = jsonResponse
+-- | Undocumented member.
+awsrsGatewayARN :: Lens' AddWorkingStorageResponse (Maybe Text)
+awsrsGatewayARN = lens _awsrsGatewayARN (\ s a -> s{_awsrsGatewayARN = a});
 
-instance FromJSON AddWorkingStorageResponse where
-    parseJSON = withObject "AddWorkingStorageResponse" $ \o -> AddWorkingStorageResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+awsrsStatus :: Lens' AddWorkingStorageResponse Int
+awsrsStatus = lens _awsrsStatus (\ s a -> s{_awsrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CancelArchival.hs b/gen/Network/AWS/StorageGateway/CancelArchival.hs
--- a/gen/Network/AWS/StorageGateway/CancelArchival.hs
+++ b/gen/Network/AWS/StorageGateway/CancelArchival.hs
@@ -1,125 +1,145 @@
-{-# 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.StorageGateway.CancelArchival
--- 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.
-
--- | Cancels archiving of a virtual tape to the virtual tape shelf (VTS) after the
--- archiving process is initiated.
+-- Cancels archiving of a virtual tape to the virtual tape shelf (VTS)
+-- after the archiving process is initiated.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CancelArchival.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CancelArchival.html AWS API Reference> for CancelArchival.
 module Network.AWS.StorageGateway.CancelArchival
     (
-    -- * Request
-      CancelArchival
-    -- ** Request constructor
-    , cancelArchival
-    -- ** Request lenses
+    -- * Creating a Request
+      cancelArchival
+    , CancelArchival
+    -- * Request Lenses
     , caGatewayARN
     , caTapeARN
 
-    -- * Response
-    , CancelArchivalResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , cancelArchivalResponse
-    -- ** Response lenses
-    , carTapeARN
+    , CancelArchivalResponse
+    -- * Response Lenses
+    , carsTapeARN
+    , carsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data CancelArchival = CancelArchival
-    { _caGatewayARN :: Text
-    , _caTapeARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'CancelArchival' constructor.
+-- | CancelArchivalInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'cancelArchival' smart constructor.
+data CancelArchival = CancelArchival'
+    { _caGatewayARN :: !Text
+    , _caTapeARN    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelArchival' with the minimum fields required to make a request.
 --
--- * 'caGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'caTapeARN' @::@ 'Text'
+-- * 'caGatewayARN'
 --
-cancelArchival :: Text -- ^ 'caGatewayARN'
-               -> Text -- ^ 'caTapeARN'
-               -> CancelArchival
-cancelArchival p1 p2 = CancelArchival
-    { _caGatewayARN = p1
-    , _caTapeARN    = p2
+-- * 'caTapeARN'
+cancelArchival
+    :: Text -- ^ 'caGatewayARN'
+    -> Text -- ^ 'caTapeARN'
+    -> CancelArchival
+cancelArchival pGatewayARN_ pTapeARN_ =
+    CancelArchival'
+    { _caGatewayARN = pGatewayARN_
+    , _caTapeARN = pTapeARN_
     }
 
+-- | Undocumented member.
 caGatewayARN :: Lens' CancelArchival Text
-caGatewayARN = lens _caGatewayARN (\s a -> s { _caGatewayARN = a })
+caGatewayARN = lens _caGatewayARN (\ s a -> s{_caGatewayARN = a});
 
 -- | The Amazon Resource Name (ARN) of the virtual tape you want to cancel
 -- archiving for.
 caTapeARN :: Lens' CancelArchival Text
-caTapeARN = lens _caTapeARN (\s a -> s { _caTapeARN = a })
+caTapeARN = lens _caTapeARN (\ s a -> s{_caTapeARN = a});
 
-newtype CancelArchivalResponse = CancelArchivalResponse
-    { _carTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CancelArchival where
+        type Sv CancelArchival = StorageGateway
+        type Rs CancelArchival = CancelArchivalResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CancelArchivalResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | 'CancelArchivalResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'carTapeARN' @::@ 'Maybe' 'Text'
---
-cancelArchivalResponse :: CancelArchivalResponse
-cancelArchivalResponse = CancelArchivalResponse
-    { _carTapeARN = Nothing
-    }
+instance ToHeaders CancelArchival where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CancelArchival" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the virtual tape for which archiving was
--- canceled.
-carTapeARN :: Lens' CancelArchivalResponse (Maybe Text)
-carTapeARN = lens _carTapeARN (\s a -> s { _carTapeARN = a })
+instance ToJSON CancelArchival where
+        toJSON CancelArchival'{..}
+          = object
+              ["GatewayARN" .= _caGatewayARN,
+               "TapeARN" .= _caTapeARN]
 
 instance ToPath CancelArchival where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CancelArchival where
-    toQuery = const mempty
-
-instance ToHeaders CancelArchival
+        toQuery = const mempty
 
-instance ToJSON CancelArchival where
-    toJSON CancelArchival{..} = object
-        [ "GatewayARN" .= _caGatewayARN
-        , "TapeARN"    .= _caTapeARN
-        ]
+-- | CancelArchivalOutput
+--
+-- /See:/ 'cancelArchivalResponse' smart constructor.
+data CancelArchivalResponse = CancelArchivalResponse'
+    { _carsTapeARN :: !(Maybe Text)
+    , _carsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CancelArchival where
-    type Sv CancelArchival = StorageGateway
-    type Rs CancelArchival = CancelArchivalResponse
+-- | Creates a value of 'CancelArchivalResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'carsTapeARN'
+--
+-- * 'carsStatus'
+cancelArchivalResponse
+    :: Int -- ^ 'carsStatus'
+    -> CancelArchivalResponse
+cancelArchivalResponse pStatus_ =
+    CancelArchivalResponse'
+    { _carsTapeARN = Nothing
+    , _carsStatus = pStatus_
+    }
 
-    request  = post "CancelArchival"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the virtual tape for which archiving
+-- was canceled.
+carsTapeARN :: Lens' CancelArchivalResponse (Maybe Text)
+carsTapeARN = lens _carsTapeARN (\ s a -> s{_carsTapeARN = a});
 
-instance FromJSON CancelArchivalResponse where
-    parseJSON = withObject "CancelArchivalResponse" $ \o -> CancelArchivalResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+carsStatus :: Lens' CancelArchivalResponse Int
+carsStatus = lens _carsStatus (\ s a -> s{_carsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CancelRetrieval.hs b/gen/Network/AWS/StorageGateway/CancelRetrieval.hs
--- a/gen/Network/AWS/StorageGateway/CancelRetrieval.hs
+++ b/gen/Network/AWS/StorageGateway/CancelRetrieval.hs
@@ -1,126 +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.StorageGateway.CancelRetrieval
--- 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.
-
--- | Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to a
--- gateway after the retrieval process is initiated. The virtual tape is
+-- Cancels retrieval of a virtual tape from the virtual tape shelf (VTS) to
+-- a gateway after the retrieval process is initiated. The virtual tape is
 -- returned to the VTS.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CancelRetrieval.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CancelRetrieval.html AWS API Reference> for CancelRetrieval.
 module Network.AWS.StorageGateway.CancelRetrieval
     (
-    -- * Request
-      CancelRetrieval
-    -- ** Request constructor
-    , cancelRetrieval
-    -- ** Request lenses
+    -- * Creating a Request
+      cancelRetrieval
+    , CancelRetrieval
+    -- * Request Lenses
     , crGatewayARN
     , crTapeARN
 
-    -- * Response
-    , CancelRetrievalResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , cancelRetrievalResponse
-    -- ** Response lenses
-    , crrTapeARN
+    , CancelRetrievalResponse
+    -- * Response Lenses
+    , crrsTapeARN
+    , crrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data CancelRetrieval = CancelRetrieval
-    { _crGatewayARN :: Text
-    , _crTapeARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'CancelRetrieval' constructor.
+-- | CancelRetrievalInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'cancelRetrieval' smart constructor.
+data CancelRetrieval = CancelRetrieval'
+    { _crGatewayARN :: !Text
+    , _crTapeARN    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelRetrieval' with the minimum fields required to make a request.
 --
--- * 'crGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'crTapeARN' @::@ 'Text'
+-- * 'crGatewayARN'
 --
-cancelRetrieval :: Text -- ^ 'crGatewayARN'
-                -> Text -- ^ 'crTapeARN'
-                -> CancelRetrieval
-cancelRetrieval p1 p2 = CancelRetrieval
-    { _crGatewayARN = p1
-    , _crTapeARN    = p2
+-- * 'crTapeARN'
+cancelRetrieval
+    :: Text -- ^ 'crGatewayARN'
+    -> Text -- ^ 'crTapeARN'
+    -> CancelRetrieval
+cancelRetrieval pGatewayARN_ pTapeARN_ =
+    CancelRetrieval'
+    { _crGatewayARN = pGatewayARN_
+    , _crTapeARN = pTapeARN_
     }
 
+-- | Undocumented member.
 crGatewayARN :: Lens' CancelRetrieval Text
-crGatewayARN = lens _crGatewayARN (\s a -> s { _crGatewayARN = a })
+crGatewayARN = lens _crGatewayARN (\ s a -> s{_crGatewayARN = a});
 
 -- | The Amazon Resource Name (ARN) of the virtual tape you want to cancel
 -- retrieval for.
 crTapeARN :: Lens' CancelRetrieval Text
-crTapeARN = lens _crTapeARN (\s a -> s { _crTapeARN = a })
+crTapeARN = lens _crTapeARN (\ s a -> s{_crTapeARN = a});
 
-newtype CancelRetrievalResponse = CancelRetrievalResponse
-    { _crrTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest CancelRetrieval where
+        type Sv CancelRetrieval = StorageGateway
+        type Rs CancelRetrieval = CancelRetrievalResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CancelRetrievalResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | 'CancelRetrievalResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'crrTapeARN' @::@ 'Maybe' 'Text'
---
-cancelRetrievalResponse :: CancelRetrievalResponse
-cancelRetrievalResponse = CancelRetrievalResponse
-    { _crrTapeARN = Nothing
-    }
+instance ToHeaders CancelRetrieval where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CancelRetrieval" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the virtual tape for which retrieval was
--- canceled.
-crrTapeARN :: Lens' CancelRetrievalResponse (Maybe Text)
-crrTapeARN = lens _crrTapeARN (\s a -> s { _crrTapeARN = a })
+instance ToJSON CancelRetrieval where
+        toJSON CancelRetrieval'{..}
+          = object
+              ["GatewayARN" .= _crGatewayARN,
+               "TapeARN" .= _crTapeARN]
 
 instance ToPath CancelRetrieval where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CancelRetrieval where
-    toQuery = const mempty
-
-instance ToHeaders CancelRetrieval
+        toQuery = const mempty
 
-instance ToJSON CancelRetrieval where
-    toJSON CancelRetrieval{..} = object
-        [ "GatewayARN" .= _crGatewayARN
-        , "TapeARN"    .= _crTapeARN
-        ]
+-- | CancelRetrievalOutput
+--
+-- /See:/ 'cancelRetrievalResponse' smart constructor.
+data CancelRetrievalResponse = CancelRetrievalResponse'
+    { _crrsTapeARN :: !(Maybe Text)
+    , _crrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CancelRetrieval where
-    type Sv CancelRetrieval = StorageGateway
-    type Rs CancelRetrieval = CancelRetrievalResponse
+-- | Creates a value of 'CancelRetrievalResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crrsTapeARN'
+--
+-- * 'crrsStatus'
+cancelRetrievalResponse
+    :: Int -- ^ 'crrsStatus'
+    -> CancelRetrievalResponse
+cancelRetrievalResponse pStatus_ =
+    CancelRetrievalResponse'
+    { _crrsTapeARN = Nothing
+    , _crrsStatus = pStatus_
+    }
 
-    request  = post "CancelRetrieval"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the virtual tape for which retrieval
+-- was canceled.
+crrsTapeARN :: Lens' CancelRetrievalResponse (Maybe Text)
+crrsTapeARN = lens _crrsTapeARN (\ s a -> s{_crrsTapeARN = a});
 
-instance FromJSON CancelRetrievalResponse where
-    parseJSON = withObject "CancelRetrievalResponse" $ \o -> CancelRetrievalResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+crrsStatus :: Lens' CancelRetrievalResponse Int
+crrsStatus = lens _crrsStatus (\ s a -> s{_crrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateCachediSCSIVolume.hs b/gen/Network/AWS/StorageGateway/CreateCachediSCSIVolume.hs
--- a/gen/Network/AWS/StorageGateway/CreateCachediSCSIVolume.hs
+++ b/gen/Network/AWS/StorageGateway/CreateCachediSCSIVolume.hs
@@ -1,188 +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.StorageGateway.CreateCachediSCSIVolume
--- 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 operation creates a cached volume on a specified cached gateway. This
--- operation is supported only for the gateway-cached volume architecture.
+-- This operation creates a cached volume on a specified cached gateway.
+-- This operation is supported only for the gateway-cached volume
+-- architecture.
 --
 -- Cache storage must be allocated to the gateway before you can create a
--- cached volume. Use the 'AddCache' operation to add cache storage to a gateway.
--- In the request, you must specify the gateway, size of the volume in bytes,
--- the iSCSI target name, an IP address on which to expose the target, and a
--- unique client token. In response, AWS Storage Gateway creates the volume and
--- returns information about it such as the volume Amazon Resource Name (ARN),
--- its size, and the iSCSI target ARN that initiators can use to connect to the
--- volume target.
+-- cached volume. Use the AddCache operation to add cache storage to a
+-- gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateCachediSCSIVolume.html>
+-- In the request, you must specify the gateway, size of the volume in
+-- bytes, the iSCSI target name, an IP address on which to expose the
+-- target, and a unique client token. In response, AWS Storage Gateway
+-- creates the volume and returns information about it such as the volume
+-- Amazon Resource Name (ARN), its size, and the iSCSI target ARN that
+-- initiators can use to connect to the volume target.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateCachediSCSIVolume.html AWS API Reference> for CreateCachediSCSIVolume.
 module Network.AWS.StorageGateway.CreateCachediSCSIVolume
     (
-    -- * Request
-      CreateCachediSCSIVolume
-    -- ** Request constructor
-    , createCachediSCSIVolume
-    -- ** Request lenses
-    , ccscsivClientToken
-    , ccscsivGatewayARN
-    , ccscsivNetworkInterfaceId
+    -- * Creating a Request
+      createCachediSCSIVolume
+    , CreateCachediSCSIVolume
+    -- * Request Lenses
     , ccscsivSnapshotId
-    , ccscsivTargetName
+    , ccscsivGatewayARN
     , ccscsivVolumeSizeInBytes
+    , ccscsivTargetName
+    , ccscsivNetworkInterfaceId
+    , ccscsivClientToken
 
-    -- * Response
-    , CreateCachediSCSIVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createCachediSCSIVolumeResponse
-    -- ** Response lenses
-    , ccscsivrTargetARN
-    , ccscsivrVolumeARN
+    , CreateCachediSCSIVolumeResponse
+    -- * Response Lenses
+    , ccscsivrsTargetARN
+    , ccscsivrsVolumeARN
+    , ccscsivrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data CreateCachediSCSIVolume = CreateCachediSCSIVolume
-    { _ccscsivClientToken        :: Text
-    , _ccscsivGatewayARN         :: Text
-    , _ccscsivNetworkInterfaceId :: Text
-    , _ccscsivSnapshotId         :: Maybe Text
-    , _ccscsivTargetName         :: Text
-    , _ccscsivVolumeSizeInBytes  :: Integer
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createCachediSCSIVolume' smart constructor.
+data CreateCachediSCSIVolume = CreateCachediSCSIVolume'
+    { _ccscsivSnapshotId         :: !(Maybe Text)
+    , _ccscsivGatewayARN         :: !Text
+    , _ccscsivVolumeSizeInBytes  :: !Integer
+    , _ccscsivTargetName         :: !Text
+    , _ccscsivNetworkInterfaceId :: !Text
+    , _ccscsivClientToken        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateCachediSCSIVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateCachediSCSIVolume' with the minimum fields required to make a request.
 --
--- * 'ccscsivClientToken' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccscsivGatewayARN' @::@ 'Text'
+-- * 'ccscsivSnapshotId'
 --
--- * 'ccscsivNetworkInterfaceId' @::@ 'Text'
+-- * 'ccscsivGatewayARN'
 --
--- * 'ccscsivSnapshotId' @::@ 'Maybe' 'Text'
+-- * 'ccscsivVolumeSizeInBytes'
 --
--- * 'ccscsivTargetName' @::@ 'Text'
+-- * 'ccscsivTargetName'
 --
--- * 'ccscsivVolumeSizeInBytes' @::@ 'Integer'
+-- * 'ccscsivNetworkInterfaceId'
 --
-createCachediSCSIVolume :: Text -- ^ 'ccscsivGatewayARN'
-                        -> Integer -- ^ 'ccscsivVolumeSizeInBytes'
-                        -> Text -- ^ 'ccscsivTargetName'
-                        -> Text -- ^ 'ccscsivNetworkInterfaceId'
-                        -> Text -- ^ 'ccscsivClientToken'
-                        -> CreateCachediSCSIVolume
-createCachediSCSIVolume p1 p2 p3 p4 p5 = CreateCachediSCSIVolume
-    { _ccscsivGatewayARN         = p1
-    , _ccscsivVolumeSizeInBytes  = p2
-    , _ccscsivTargetName         = p3
-    , _ccscsivNetworkInterfaceId = p4
-    , _ccscsivClientToken        = p5
-    , _ccscsivSnapshotId         = Nothing
+-- * 'ccscsivClientToken'
+createCachediSCSIVolume
+    :: Text -- ^ 'ccscsivGatewayARN'
+    -> Integer -- ^ 'ccscsivVolumeSizeInBytes'
+    -> Text -- ^ 'ccscsivTargetName'
+    -> Text -- ^ 'ccscsivNetworkInterfaceId'
+    -> Text -- ^ 'ccscsivClientToken'
+    -> CreateCachediSCSIVolume
+createCachediSCSIVolume pGatewayARN_ pVolumeSizeInBytes_ pTargetName_ pNetworkInterfaceId_ pClientToken_ =
+    CreateCachediSCSIVolume'
+    { _ccscsivSnapshotId = Nothing
+    , _ccscsivGatewayARN = pGatewayARN_
+    , _ccscsivVolumeSizeInBytes = pVolumeSizeInBytes_
+    , _ccscsivTargetName = pTargetName_
+    , _ccscsivNetworkInterfaceId = pNetworkInterfaceId_
+    , _ccscsivClientToken = pClientToken_
     }
 
-ccscsivClientToken :: Lens' CreateCachediSCSIVolume Text
-ccscsivClientToken =
-    lens _ccscsivClientToken (\s a -> s { _ccscsivClientToken = a })
+-- | Undocumented member.
+ccscsivSnapshotId :: Lens' CreateCachediSCSIVolume (Maybe Text)
+ccscsivSnapshotId = lens _ccscsivSnapshotId (\ s a -> s{_ccscsivSnapshotId = a});
 
+-- | Undocumented member.
 ccscsivGatewayARN :: Lens' CreateCachediSCSIVolume Text
-ccscsivGatewayARN =
-    lens _ccscsivGatewayARN (\s a -> s { _ccscsivGatewayARN = a })
-
-ccscsivNetworkInterfaceId :: Lens' CreateCachediSCSIVolume Text
-ccscsivNetworkInterfaceId =
-    lens _ccscsivNetworkInterfaceId
-        (\s a -> s { _ccscsivNetworkInterfaceId = a })
+ccscsivGatewayARN = lens _ccscsivGatewayARN (\ s a -> s{_ccscsivGatewayARN = a});
 
-ccscsivSnapshotId :: Lens' CreateCachediSCSIVolume (Maybe Text)
-ccscsivSnapshotId =
-    lens _ccscsivSnapshotId (\s a -> s { _ccscsivSnapshotId = a })
+-- | Undocumented member.
+ccscsivVolumeSizeInBytes :: Lens' CreateCachediSCSIVolume Integer
+ccscsivVolumeSizeInBytes = lens _ccscsivVolumeSizeInBytes (\ s a -> s{_ccscsivVolumeSizeInBytes = a});
 
+-- | Undocumented member.
 ccscsivTargetName :: Lens' CreateCachediSCSIVolume Text
-ccscsivTargetName =
-    lens _ccscsivTargetName (\s a -> s { _ccscsivTargetName = a })
+ccscsivTargetName = lens _ccscsivTargetName (\ s a -> s{_ccscsivTargetName = a});
 
-ccscsivVolumeSizeInBytes :: Lens' CreateCachediSCSIVolume Integer
-ccscsivVolumeSizeInBytes =
-    lens _ccscsivVolumeSizeInBytes
-        (\s a -> s { _ccscsivVolumeSizeInBytes = a })
+-- | Undocumented member.
+ccscsivNetworkInterfaceId :: Lens' CreateCachediSCSIVolume Text
+ccscsivNetworkInterfaceId = lens _ccscsivNetworkInterfaceId (\ s a -> s{_ccscsivNetworkInterfaceId = a});
 
-data CreateCachediSCSIVolumeResponse = CreateCachediSCSIVolumeResponse
-    { _ccscsivrTargetARN :: Maybe Text
-    , _ccscsivrVolumeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | Undocumented member.
+ccscsivClientToken :: Lens' CreateCachediSCSIVolume Text
+ccscsivClientToken = lens _ccscsivClientToken (\ s a -> s{_ccscsivClientToken = a});
 
--- | 'CreateCachediSCSIVolumeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccscsivrTargetARN' @::@ 'Maybe' 'Text'
---
--- * 'ccscsivrVolumeARN' @::@ 'Maybe' 'Text'
---
-createCachediSCSIVolumeResponse :: CreateCachediSCSIVolumeResponse
-createCachediSCSIVolumeResponse = CreateCachediSCSIVolumeResponse
-    { _ccscsivrVolumeARN = Nothing
-    , _ccscsivrTargetARN = Nothing
-    }
+instance AWSRequest CreateCachediSCSIVolume where
+        type Sv CreateCachediSCSIVolume = StorageGateway
+        type Rs CreateCachediSCSIVolume =
+             CreateCachediSCSIVolumeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateCachediSCSIVolumeResponse' <$>
+                   (x .?> "TargetARN") <*> (x .?> "VolumeARN") <*>
+                     (pure (fromEnum s)))
 
-ccscsivrTargetARN :: Lens' CreateCachediSCSIVolumeResponse (Maybe Text)
-ccscsivrTargetARN =
-    lens _ccscsivrTargetARN (\s a -> s { _ccscsivrTargetARN = a })
+instance ToHeaders CreateCachediSCSIVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CreateCachediSCSIVolume" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ccscsivrVolumeARN :: Lens' CreateCachediSCSIVolumeResponse (Maybe Text)
-ccscsivrVolumeARN =
-    lens _ccscsivrVolumeARN (\s a -> s { _ccscsivrVolumeARN = a })
+instance ToJSON CreateCachediSCSIVolume where
+        toJSON CreateCachediSCSIVolume'{..}
+          = object
+              ["SnapshotId" .= _ccscsivSnapshotId,
+               "GatewayARN" .= _ccscsivGatewayARN,
+               "VolumeSizeInBytes" .= _ccscsivVolumeSizeInBytes,
+               "TargetName" .= _ccscsivTargetName,
+               "NetworkInterfaceId" .= _ccscsivNetworkInterfaceId,
+               "ClientToken" .= _ccscsivClientToken]
 
 instance ToPath CreateCachediSCSIVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateCachediSCSIVolume where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders CreateCachediSCSIVolume
+-- | /See:/ 'createCachediSCSIVolumeResponse' smart constructor.
+data CreateCachediSCSIVolumeResponse = CreateCachediSCSIVolumeResponse'
+    { _ccscsivrsTargetARN :: !(Maybe Text)
+    , _ccscsivrsVolumeARN :: !(Maybe Text)
+    , _ccscsivrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON CreateCachediSCSIVolume where
-    toJSON CreateCachediSCSIVolume{..} = object
-        [ "GatewayARN"         .= _ccscsivGatewayARN
-        , "VolumeSizeInBytes"  .= _ccscsivVolumeSizeInBytes
-        , "SnapshotId"         .= _ccscsivSnapshotId
-        , "TargetName"         .= _ccscsivTargetName
-        , "NetworkInterfaceId" .= _ccscsivNetworkInterfaceId
-        , "ClientToken"        .= _ccscsivClientToken
-        ]
+-- | Creates a value of 'CreateCachediSCSIVolumeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccscsivrsTargetARN'
+--
+-- * 'ccscsivrsVolumeARN'
+--
+-- * 'ccscsivrsStatus'
+createCachediSCSIVolumeResponse
+    :: Int -- ^ 'ccscsivrsStatus'
+    -> CreateCachediSCSIVolumeResponse
+createCachediSCSIVolumeResponse pStatus_ =
+    CreateCachediSCSIVolumeResponse'
+    { _ccscsivrsTargetARN = Nothing
+    , _ccscsivrsVolumeARN = Nothing
+    , _ccscsivrsStatus = pStatus_
+    }
 
-instance AWSRequest CreateCachediSCSIVolume where
-    type Sv CreateCachediSCSIVolume = StorageGateway
-    type Rs CreateCachediSCSIVolume = CreateCachediSCSIVolumeResponse
+-- | Undocumented member.
+ccscsivrsTargetARN :: Lens' CreateCachediSCSIVolumeResponse (Maybe Text)
+ccscsivrsTargetARN = lens _ccscsivrsTargetARN (\ s a -> s{_ccscsivrsTargetARN = a});
 
-    request  = post "CreateCachediSCSIVolume"
-    response = jsonResponse
+-- | Undocumented member.
+ccscsivrsVolumeARN :: Lens' CreateCachediSCSIVolumeResponse (Maybe Text)
+ccscsivrsVolumeARN = lens _ccscsivrsVolumeARN (\ s a -> s{_ccscsivrsVolumeARN = a});
 
-instance FromJSON CreateCachediSCSIVolumeResponse where
-    parseJSON = withObject "CreateCachediSCSIVolumeResponse" $ \o -> CreateCachediSCSIVolumeResponse
-        <$> o .:? "TargetARN"
-        <*> o .:? "VolumeARN"
+-- | The response status code.
+ccscsivrsStatus :: Lens' CreateCachediSCSIVolumeResponse Int
+ccscsivrsStatus = lens _ccscsivrsStatus (\ s a -> s{_ccscsivrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateSnapshot.hs b/gen/Network/AWS/StorageGateway/CreateSnapshot.hs
--- a/gen/Network/AWS/StorageGateway/CreateSnapshot.hs
+++ b/gen/Network/AWS/StorageGateway/CreateSnapshot.hs
@@ -1,156 +1,183 @@
-{-# 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.StorageGateway.CreateSnapshot
--- 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 operation initiates a snapshot of a volume.
+-- This operation initiates a snapshot of a volume.
 --
--- AWS Storage Gateway provides the ability to back up point-in-time snapshots
--- of your data to Amazon Simple Storage (S3) for durable off-site recovery, as
--- well as import the data to an Amazon Elastic Block Store (EBS) volume in
--- Amazon Elastic Compute Cloud (EC2). You can take snapshots of your gateway
--- volume on a scheduled or ad-hoc basis. This API enables you to take ad-hoc
--- snapshot. For more information, see <http://docs.aws.amazon.com/storagegateway/latest/userguide/WorkingWithSnapshots.html Working With Snapshots in the AWS StorageGateway Console>.
+-- AWS Storage Gateway provides the ability to back up point-in-time
+-- snapshots of your data to Amazon Simple Storage (S3) for durable
+-- off-site recovery, as well as import the data to an Amazon Elastic Block
+-- Store (EBS) volume in Amazon Elastic Compute Cloud (EC2). You can take
+-- snapshots of your gateway volume on a scheduled or ad-hoc basis. This
+-- API enables you to take ad-hoc snapshot. For more information, see
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/WorkingWithSnapshots.html Working With Snapshots in the AWS Storage Gateway Console>.
 --
 -- In the CreateSnapshot request you identify the volume by providing its
 -- Amazon Resource Name (ARN). You must also provide description for the
--- snapshot. When AWS Storage Gateway takes the snapshot of specified volume,
--- the snapshot and description appears in the AWS Storage Gateway Console. In
--- response, AWS Storage Gateway returns you a snapshot ID. You can use this
--- snapshot ID to check the snapshot progress or later use it when you want to
--- create a volume from a snapshot.
+-- snapshot. When AWS Storage Gateway takes the snapshot of specified
+-- volume, the snapshot and description appears in the AWS Storage Gateway
+-- Console. In response, AWS Storage Gateway returns you a snapshot ID. You
+-- can use this snapshot ID to check the snapshot progress or later use it
+-- when you want to create a volume from a snapshot.
 --
 -- To list or delete a snapshot, you must use the Amazon EC2 API. For more
--- information, .
+-- information, see DescribeSnapshots or DeleteSnapshot in the
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_Operations.html EC2 API reference>.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateSnapshot.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateSnapshot.html AWS API Reference> for CreateSnapshot.
 module Network.AWS.StorageGateway.CreateSnapshot
     (
-    -- * Request
-      CreateSnapshot
-    -- ** Request constructor
-    , createSnapshot
-    -- ** Request lenses
-    , csSnapshotDescription
+    -- * Creating a Request
+      createSnapshot
+    , CreateSnapshot
+    -- * Request Lenses
     , csVolumeARN
+    , csSnapshotDescription
 
-    -- * Response
-    , CreateSnapshotResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createSnapshotResponse
-    -- ** Response lenses
-    , csrSnapshotId
-    , csrVolumeARN
+    , CreateSnapshotResponse
+    -- * Response Lenses
+    , csrsVolumeARN
+    , csrsSnapshotId
+    , csrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data CreateSnapshot = CreateSnapshot
-    { _csSnapshotDescription :: Text
-    , _csVolumeARN           :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'CreateSnapshot' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   CreateSnapshotInput$SnapshotDescription
+-- -   CreateSnapshotInput$VolumeARN
 --
--- * 'csSnapshotDescription' @::@ 'Text'
+-- /See:/ 'createSnapshot' smart constructor.
+data CreateSnapshot = CreateSnapshot'
+    { _csVolumeARN           :: !Text
+    , _csSnapshotDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateSnapshot' with the minimum fields required to make a request.
 --
--- * 'csVolumeARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-createSnapshot :: Text -- ^ 'csVolumeARN'
-               -> Text -- ^ 'csSnapshotDescription'
-               -> CreateSnapshot
-createSnapshot p1 p2 = CreateSnapshot
-    { _csVolumeARN           = p1
-    , _csSnapshotDescription = p2
+-- * 'csVolumeARN'
+--
+-- * 'csSnapshotDescription'
+createSnapshot
+    :: Text -- ^ 'csVolumeARN'
+    -> Text -- ^ 'csSnapshotDescription'
+    -> CreateSnapshot
+createSnapshot pVolumeARN_ pSnapshotDescription_ =
+    CreateSnapshot'
+    { _csVolumeARN = pVolumeARN_
+    , _csSnapshotDescription = pSnapshotDescription_
     }
 
--- | Textual description of the snapshot that appears in the Amazon EC2 console,
--- Elastic Block Store snapshots panel in the Description field, and in the AWS
--- Storage Gateway snapshot Details pane, Description field
-csSnapshotDescription :: Lens' CreateSnapshot Text
-csSnapshotDescription =
-    lens _csSnapshotDescription (\s a -> s { _csSnapshotDescription = a })
-
--- | The Amazon Resource Name (ARN) of the volume. Use the 'ListVolumes' operation
--- to return a list of gateway volumes.
+-- | The Amazon Resource Name (ARN) of the volume. Use the ListVolumes
+-- operation to return a list of gateway volumes.
 csVolumeARN :: Lens' CreateSnapshot Text
-csVolumeARN = lens _csVolumeARN (\s a -> s { _csVolumeARN = a })
+csVolumeARN = lens _csVolumeARN (\ s a -> s{_csVolumeARN = a});
 
-data CreateSnapshotResponse = CreateSnapshotResponse
-    { _csrSnapshotId :: Maybe Text
-    , _csrVolumeARN  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | Textual description of the snapshot that appears in the Amazon EC2
+-- console, Elastic Block Store snapshots panel in the __Description__
+-- field, and in the AWS Storage Gateway snapshot __Details__ pane,
+-- __Description__ field
+csSnapshotDescription :: Lens' CreateSnapshot Text
+csSnapshotDescription = lens _csSnapshotDescription (\ s a -> s{_csSnapshotDescription = a});
 
--- | 'CreateSnapshotResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csrSnapshotId' @::@ 'Maybe' 'Text'
---
--- * 'csrVolumeARN' @::@ 'Maybe' 'Text'
---
-createSnapshotResponse :: CreateSnapshotResponse
-createSnapshotResponse = CreateSnapshotResponse
-    { _csrVolumeARN  = Nothing
-    , _csrSnapshotId = Nothing
-    }
+instance AWSRequest CreateSnapshot where
+        type Sv CreateSnapshot = StorageGateway
+        type Rs CreateSnapshot = CreateSnapshotResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateSnapshotResponse' <$>
+                   (x .?> "VolumeARN") <*> (x .?> "SnapshotId") <*>
+                     (pure (fromEnum s)))
 
--- | The snapshot ID that is used to refer to the snapshot in future operations
--- such as describing snapshots (Amazon Elastic Compute Cloud API 'DescribeSnapshots') or creating a volume from a snapshot ('CreateStorediSCSIVolume').
-csrSnapshotId :: Lens' CreateSnapshotResponse (Maybe Text)
-csrSnapshotId = lens _csrSnapshotId (\s a -> s { _csrSnapshotId = a })
+instance ToHeaders CreateSnapshot where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CreateSnapshot" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the volume of which the snapshot was taken.
-csrVolumeARN :: Lens' CreateSnapshotResponse (Maybe Text)
-csrVolumeARN = lens _csrVolumeARN (\s a -> s { _csrVolumeARN = a })
+instance ToJSON CreateSnapshot where
+        toJSON CreateSnapshot'{..}
+          = object
+              ["VolumeARN" .= _csVolumeARN,
+               "SnapshotDescription" .= _csSnapshotDescription]
 
 instance ToPath CreateSnapshot where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateSnapshot where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders CreateSnapshot
+-- | A JSON object containing the following fields:
+--
+-- /See:/ 'createSnapshotResponse' smart constructor.
+data CreateSnapshotResponse = CreateSnapshotResponse'
+    { _csrsVolumeARN  :: !(Maybe Text)
+    , _csrsSnapshotId :: !(Maybe Text)
+    , _csrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON CreateSnapshot where
-    toJSON CreateSnapshot{..} = object
-        [ "VolumeARN"           .= _csVolumeARN
-        , "SnapshotDescription" .= _csSnapshotDescription
-        ]
+-- | Creates a value of 'CreateSnapshotResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csrsVolumeARN'
+--
+-- * 'csrsSnapshotId'
+--
+-- * 'csrsStatus'
+createSnapshotResponse
+    :: Int -- ^ 'csrsStatus'
+    -> CreateSnapshotResponse
+createSnapshotResponse pStatus_ =
+    CreateSnapshotResponse'
+    { _csrsVolumeARN = Nothing
+    , _csrsSnapshotId = Nothing
+    , _csrsStatus = pStatus_
+    }
 
-instance AWSRequest CreateSnapshot where
-    type Sv CreateSnapshot = StorageGateway
-    type Rs CreateSnapshot = CreateSnapshotResponse
+-- | The Amazon Resource Name (ARN) of the volume of which the snapshot was
+-- taken.
+csrsVolumeARN :: Lens' CreateSnapshotResponse (Maybe Text)
+csrsVolumeARN = lens _csrsVolumeARN (\ s a -> s{_csrsVolumeARN = a});
 
-    request  = post "CreateSnapshot"
-    response = jsonResponse
+-- | The snapshot ID that is used to refer to the snapshot in future
+-- operations such as describing snapshots (Amazon Elastic Compute Cloud
+-- API 'DescribeSnapshots') or creating a volume from a snapshot
+-- (CreateStorediSCSIVolume).
+csrsSnapshotId :: Lens' CreateSnapshotResponse (Maybe Text)
+csrsSnapshotId = lens _csrsSnapshotId (\ s a -> s{_csrsSnapshotId = a});
 
-instance FromJSON CreateSnapshotResponse where
-    parseJSON = withObject "CreateSnapshotResponse" $ \o -> CreateSnapshotResponse
-        <$> o .:? "SnapshotId"
-        <*> o .:? "VolumeARN"
+-- | The response status code.
+csrsStatus :: Lens' CreateSnapshotResponse Int
+csrsStatus = lens _csrsStatus (\ s a -> s{_csrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateSnapshotFromVolumeRecoveryPoint.hs b/gen/Network/AWS/StorageGateway/CreateSnapshotFromVolumeRecoveryPoint.hs
--- a/gen/Network/AWS/StorageGateway/CreateSnapshotFromVolumeRecoveryPoint.hs
+++ b/gen/Network/AWS/StorageGateway/CreateSnapshotFromVolumeRecoveryPoint.hs
@@ -1,163 +1,185 @@
-{-# 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.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
--- 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 operation initiates a snapshot of a gateway from a volume recovery
+-- This operation initiates a snapshot of a gateway from a volume recovery
 -- point. This operation is supported only for the gateway-cached volume
 -- architecture (see ).
 --
--- A volume recovery point is a point in time at which all data of the volume
--- is consistent and from which you can create a snapshot. To get a list of
--- volume recovery point for gateway-cached volumes, use 'ListVolumeRecoveryPoints'
--- .
+-- A volume recovery point is a point in time at which all data of the
+-- volume is consistent and from which you can create a snapshot. To get a
+-- list of volume recovery point for gateway-cached volumes, use
+-- ListVolumeRecoveryPoints.
 --
 -- In the 'CreateSnapshotFromVolumeRecoveryPoint' request, you identify the
--- volume by providing its Amazon Resource Name (ARN). You must also provide a
--- description for the snapshot. When AWS Storage Gateway takes a snapshot of
--- the specified volume, the snapshot and its description appear in the AWS
--- Storage Gateway console. In response, AWS Storage Gateway returns you a
--- snapshot ID. You can use this snapshot ID to check the snapshot progress or
--- later use it when you want to create a volume from a snapshot.
+-- volume by providing its Amazon Resource Name (ARN). You must also
+-- provide a description for the snapshot. When AWS Storage Gateway takes a
+-- snapshot of the specified volume, the snapshot and its description
+-- appear in the AWS Storage Gateway console. In response, AWS Storage
+-- Gateway returns you a snapshot ID. You can use this snapshot ID to check
+-- the snapshot progress or later use it when you want to create a volume
+-- from a snapshot.
 --
 -- To list or delete a snapshot, you must use the Amazon EC2 API. For more
 -- information, in /Amazon Elastic Compute Cloud API Reference/.
 --
---
---
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateSnapshotFromVolumeRecoveryPoint.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateSnapshotFromVolumeRecoveryPoint.html AWS API Reference> for CreateSnapshotFromVolumeRecoveryPoint.
 module Network.AWS.StorageGateway.CreateSnapshotFromVolumeRecoveryPoint
     (
-    -- * Request
-      CreateSnapshotFromVolumeRecoveryPoint
-    -- ** Request constructor
-    , createSnapshotFromVolumeRecoveryPoint
-    -- ** Request lenses
-    , csfvrpSnapshotDescription
+    -- * Creating a Request
+      createSnapshotFromVolumeRecoveryPoint
+    , CreateSnapshotFromVolumeRecoveryPoint
+    -- * Request Lenses
     , csfvrpVolumeARN
+    , csfvrpSnapshotDescription
 
-    -- * Response
-    , CreateSnapshotFromVolumeRecoveryPointResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createSnapshotFromVolumeRecoveryPointResponse
-    -- ** Response lenses
-    , csfvrprSnapshotId
-    , csfvrprVolumeARN
-    , csfvrprVolumeRecoveryPointTime
+    , CreateSnapshotFromVolumeRecoveryPointResponse
+    -- * Response Lenses
+    , csfvrprsVolumeRecoveryPointTime
+    , csfvrprsVolumeARN
+    , csfvrprsSnapshotId
+    , csfvrprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data CreateSnapshotFromVolumeRecoveryPoint = CreateSnapshotFromVolumeRecoveryPoint
-    { _csfvrpSnapshotDescription :: Text
-    , _csfvrpVolumeARN           :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createSnapshotFromVolumeRecoveryPoint' smart constructor.
+data CreateSnapshotFromVolumeRecoveryPoint = CreateSnapshotFromVolumeRecoveryPoint'
+    { _csfvrpVolumeARN           :: !Text
+    , _csfvrpSnapshotDescription :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateSnapshotFromVolumeRecoveryPoint' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateSnapshotFromVolumeRecoveryPoint' with the minimum fields required to make a request.
 --
--- * 'csfvrpSnapshotDescription' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csfvrpVolumeARN' @::@ 'Text'
+-- * 'csfvrpVolumeARN'
 --
-createSnapshotFromVolumeRecoveryPoint :: Text -- ^ 'csfvrpVolumeARN'
-                                      -> Text -- ^ 'csfvrpSnapshotDescription'
-                                      -> CreateSnapshotFromVolumeRecoveryPoint
-createSnapshotFromVolumeRecoveryPoint p1 p2 = CreateSnapshotFromVolumeRecoveryPoint
-    { _csfvrpVolumeARN           = p1
-    , _csfvrpSnapshotDescription = p2
+-- * 'csfvrpSnapshotDescription'
+createSnapshotFromVolumeRecoveryPoint
+    :: Text -- ^ 'csfvrpVolumeARN'
+    -> Text -- ^ 'csfvrpSnapshotDescription'
+    -> CreateSnapshotFromVolumeRecoveryPoint
+createSnapshotFromVolumeRecoveryPoint pVolumeARN_ pSnapshotDescription_ =
+    CreateSnapshotFromVolumeRecoveryPoint'
+    { _csfvrpVolumeARN = pVolumeARN_
+    , _csfvrpSnapshotDescription = pSnapshotDescription_
     }
 
+-- | Undocumented member.
+csfvrpVolumeARN :: Lens' CreateSnapshotFromVolumeRecoveryPoint Text
+csfvrpVolumeARN = lens _csfvrpVolumeARN (\ s a -> s{_csfvrpVolumeARN = a});
+
+-- | Undocumented member.
 csfvrpSnapshotDescription :: Lens' CreateSnapshotFromVolumeRecoveryPoint Text
-csfvrpSnapshotDescription =
-    lens _csfvrpSnapshotDescription
-        (\s a -> s { _csfvrpSnapshotDescription = a })
+csfvrpSnapshotDescription = lens _csfvrpSnapshotDescription (\ s a -> s{_csfvrpSnapshotDescription = a});
 
-csfvrpVolumeARN :: Lens' CreateSnapshotFromVolumeRecoveryPoint Text
-csfvrpVolumeARN = lens _csfvrpVolumeARN (\s a -> s { _csfvrpVolumeARN = a })
+instance AWSRequest
+         CreateSnapshotFromVolumeRecoveryPoint where
+        type Sv CreateSnapshotFromVolumeRecoveryPoint =
+             StorageGateway
+        type Rs CreateSnapshotFromVolumeRecoveryPoint =
+             CreateSnapshotFromVolumeRecoveryPointResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateSnapshotFromVolumeRecoveryPointResponse' <$>
+                   (x .?> "VolumeRecoveryPointTime") <*>
+                     (x .?> "VolumeARN")
+                     <*> (x .?> "SnapshotId")
+                     <*> (pure (fromEnum s)))
 
-data CreateSnapshotFromVolumeRecoveryPointResponse = CreateSnapshotFromVolumeRecoveryPointResponse
-    { _csfvrprSnapshotId              :: Maybe Text
-    , _csfvrprVolumeARN               :: Maybe Text
-    , _csfvrprVolumeRecoveryPointTime :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToHeaders
+         CreateSnapshotFromVolumeRecoveryPoint where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CreateSnapshotFromVolumeRecoveryPoint"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | 'CreateSnapshotFromVolumeRecoveryPointResponse' constructor.
+instance ToJSON CreateSnapshotFromVolumeRecoveryPoint
+         where
+        toJSON CreateSnapshotFromVolumeRecoveryPoint'{..}
+          = object
+              ["VolumeARN" .= _csfvrpVolumeARN,
+               "SnapshotDescription" .= _csfvrpSnapshotDescription]
+
+instance ToPath CreateSnapshotFromVolumeRecoveryPoint
+         where
+        toPath = const "/"
+
+instance ToQuery
+         CreateSnapshotFromVolumeRecoveryPoint where
+        toQuery = const mempty
+
+-- | /See:/ 'createSnapshotFromVolumeRecoveryPointResponse' smart constructor.
+data CreateSnapshotFromVolumeRecoveryPointResponse = CreateSnapshotFromVolumeRecoveryPointResponse'
+    { _csfvrprsVolumeRecoveryPointTime :: !(Maybe Text)
+    , _csfvrprsVolumeARN               :: !(Maybe Text)
+    , _csfvrprsSnapshotId              :: !(Maybe Text)
+    , _csfvrprsStatus                  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateSnapshotFromVolumeRecoveryPointResponse' 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:
 --
--- * 'csfvrprSnapshotId' @::@ 'Maybe' 'Text'
+-- * 'csfvrprsVolumeRecoveryPointTime'
 --
--- * 'csfvrprVolumeARN' @::@ 'Maybe' 'Text'
+-- * 'csfvrprsVolumeARN'
 --
--- * 'csfvrprVolumeRecoveryPointTime' @::@ 'Maybe' 'Text'
+-- * 'csfvrprsSnapshotId'
 --
-createSnapshotFromVolumeRecoveryPointResponse :: CreateSnapshotFromVolumeRecoveryPointResponse
-createSnapshotFromVolumeRecoveryPointResponse = CreateSnapshotFromVolumeRecoveryPointResponse
-    { _csfvrprSnapshotId              = Nothing
-    , _csfvrprVolumeARN               = Nothing
-    , _csfvrprVolumeRecoveryPointTime = Nothing
+-- * 'csfvrprsStatus'
+createSnapshotFromVolumeRecoveryPointResponse
+    :: Int -- ^ 'csfvrprsStatus'
+    -> CreateSnapshotFromVolumeRecoveryPointResponse
+createSnapshotFromVolumeRecoveryPointResponse pStatus_ =
+    CreateSnapshotFromVolumeRecoveryPointResponse'
+    { _csfvrprsVolumeRecoveryPointTime = Nothing
+    , _csfvrprsVolumeARN = Nothing
+    , _csfvrprsSnapshotId = Nothing
+    , _csfvrprsStatus = pStatus_
     }
 
-csfvrprSnapshotId :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
-csfvrprSnapshotId =
-    lens _csfvrprSnapshotId (\s a -> s { _csfvrprSnapshotId = a })
-
-csfvrprVolumeARN :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
-csfvrprVolumeARN = lens _csfvrprVolumeARN (\s a -> s { _csfvrprVolumeARN = a })
-
-csfvrprVolumeRecoveryPointTime :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
-csfvrprVolumeRecoveryPointTime =
-    lens _csfvrprVolumeRecoveryPointTime
-        (\s a -> s { _csfvrprVolumeRecoveryPointTime = a })
-
-instance ToPath CreateSnapshotFromVolumeRecoveryPoint where
-    toPath = const "/"
-
-instance ToQuery CreateSnapshotFromVolumeRecoveryPoint where
-    toQuery = const mempty
-
-instance ToHeaders CreateSnapshotFromVolumeRecoveryPoint
-
-instance ToJSON CreateSnapshotFromVolumeRecoveryPoint where
-    toJSON CreateSnapshotFromVolumeRecoveryPoint{..} = object
-        [ "VolumeARN"           .= _csfvrpVolumeARN
-        , "SnapshotDescription" .= _csfvrpSnapshotDescription
-        ]
+-- | Undocumented member.
+csfvrprsVolumeRecoveryPointTime :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
+csfvrprsVolumeRecoveryPointTime = lens _csfvrprsVolumeRecoveryPointTime (\ s a -> s{_csfvrprsVolumeRecoveryPointTime = a});
 
-instance AWSRequest CreateSnapshotFromVolumeRecoveryPoint where
-    type Sv CreateSnapshotFromVolumeRecoveryPoint = StorageGateway
-    type Rs CreateSnapshotFromVolumeRecoveryPoint = CreateSnapshotFromVolumeRecoveryPointResponse
+-- | Undocumented member.
+csfvrprsVolumeARN :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
+csfvrprsVolumeARN = lens _csfvrprsVolumeARN (\ s a -> s{_csfvrprsVolumeARN = a});
 
-    request  = post "CreateSnapshotFromVolumeRecoveryPoint"
-    response = jsonResponse
+-- | Undocumented member.
+csfvrprsSnapshotId :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse (Maybe Text)
+csfvrprsSnapshotId = lens _csfvrprsSnapshotId (\ s a -> s{_csfvrprsSnapshotId = a});
 
-instance FromJSON CreateSnapshotFromVolumeRecoveryPointResponse where
-    parseJSON = withObject "CreateSnapshotFromVolumeRecoveryPointResponse" $ \o -> CreateSnapshotFromVolumeRecoveryPointResponse
-        <$> o .:? "SnapshotId"
-        <*> o .:? "VolumeARN"
-        <*> o .:? "VolumeRecoveryPointTime"
+-- | The response status code.
+csfvrprsStatus :: Lens' CreateSnapshotFromVolumeRecoveryPointResponse Int
+csfvrprsStatus = lens _csfvrprsStatus (\ s a -> s{_csfvrprsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateStorediSCSIVolume.hs b/gen/Network/AWS/StorageGateway/CreateStorediSCSIVolume.hs
--- a/gen/Network/AWS/StorageGateway/CreateStorediSCSIVolume.hs
+++ b/gen/Network/AWS/StorageGateway/CreateStorediSCSIVolume.hs
@@ -1,223 +1,245 @@
-{-# 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.StorageGateway.CreateStorediSCSIVolume
--- 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 operation creates a volume on a specified gateway. This operation is
--- supported only for the gateway-stored volume architecture.
+-- This operation creates a volume on a specified gateway. This operation
+-- is supported only for the gateway-stored volume architecture.
 --
 -- The size of the volume to create is inferred from the disk size. You can
--- choose to preserve existing data on the disk, create volume from an existing
--- snapshot, or create an empty volume. If you choose to create an empty gateway
--- volume, then any existing data on the disk is erased.
+-- choose to preserve existing data on the disk, create volume from an
+-- existing snapshot, or create an empty volume. If you choose to create an
+-- empty gateway volume, then any existing data on the disk is erased.
 --
 -- In the request you must specify the gateway and the disk information on
--- which you are creating the volume. In response, AWS Storage Gateway creates
--- the volume and returns volume information such as the volume Amazon Resource
--- Name (ARN), its size, and the iSCSI target ARN that initiators can use to
--- connect to the volume target.
+-- which you are creating the volume. In response, AWS Storage Gateway
+-- creates the volume and returns volume information such as the volume
+-- Amazon Resource Name (ARN), its size, and the iSCSI target ARN that
+-- initiators can use to connect to the volume target.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateStorediSCSIVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateStorediSCSIVolume.html AWS API Reference> for CreateStorediSCSIVolume.
 module Network.AWS.StorageGateway.CreateStorediSCSIVolume
     (
-    -- * Request
-      CreateStorediSCSIVolume
-    -- ** Request constructor
-    , createStorediSCSIVolume
-    -- ** Request lenses
-    , csscsivDiskId
+    -- * Creating a Request
+      createStorediSCSIVolume
+    , CreateStorediSCSIVolume
+    -- * Request Lenses
+    , csscsivSnapshotId
     , csscsivGatewayARN
-    , csscsivNetworkInterfaceId
+    , csscsivDiskId
     , csscsivPreserveExistingData
-    , csscsivSnapshotId
     , csscsivTargetName
+    , csscsivNetworkInterfaceId
 
-    -- * Response
-    , CreateStorediSCSIVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createStorediSCSIVolumeResponse
-    -- ** Response lenses
-    , csscsivrTargetARN
-    , csscsivrVolumeARN
-    , csscsivrVolumeSizeInBytes
+    , CreateStorediSCSIVolumeResponse
+    -- * Response Lenses
+    , csscsivrsTargetARN
+    , csscsivrsVolumeARN
+    , csscsivrsVolumeSizeInBytes
+    , csscsivrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data CreateStorediSCSIVolume = CreateStorediSCSIVolume
-    { _csscsivDiskId               :: Text
-    , _csscsivGatewayARN           :: Text
-    , _csscsivNetworkInterfaceId   :: Text
-    , _csscsivPreserveExistingData :: Bool
-    , _csscsivSnapshotId           :: Maybe Text
-    , _csscsivTargetName           :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'CreateStorediSCSIVolume' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   CreateStorediSCSIVolumeInput$DiskId
+-- -   CreateStorediSCSIVolumeInput$NetworkInterfaceId
+-- -   CreateStorediSCSIVolumeInput$PreserveExistingData
+-- -   CreateStorediSCSIVolumeInput$SnapshotId
+-- -   CreateStorediSCSIVolumeInput$TargetName
 --
--- * 'csscsivDiskId' @::@ 'Text'
+-- /See:/ 'createStorediSCSIVolume' smart constructor.
+data CreateStorediSCSIVolume = CreateStorediSCSIVolume'
+    { _csscsivSnapshotId           :: !(Maybe Text)
+    , _csscsivGatewayARN           :: !Text
+    , _csscsivDiskId               :: !Text
+    , _csscsivPreserveExistingData :: !Bool
+    , _csscsivTargetName           :: !Text
+    , _csscsivNetworkInterfaceId   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateStorediSCSIVolume' with the minimum fields required to make a request.
 --
--- * 'csscsivGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'csscsivNetworkInterfaceId' @::@ 'Text'
+-- * 'csscsivSnapshotId'
 --
--- * 'csscsivPreserveExistingData' @::@ 'Bool'
+-- * 'csscsivGatewayARN'
 --
--- * 'csscsivSnapshotId' @::@ 'Maybe' 'Text'
+-- * 'csscsivDiskId'
 --
--- * 'csscsivTargetName' @::@ 'Text'
+-- * 'csscsivPreserveExistingData'
 --
-createStorediSCSIVolume :: Text -- ^ 'csscsivGatewayARN'
-                        -> Text -- ^ 'csscsivDiskId'
-                        -> Bool -- ^ 'csscsivPreserveExistingData'
-                        -> Text -- ^ 'csscsivTargetName'
-                        -> Text -- ^ 'csscsivNetworkInterfaceId'
-                        -> CreateStorediSCSIVolume
-createStorediSCSIVolume p1 p2 p3 p4 p5 = CreateStorediSCSIVolume
-    { _csscsivGatewayARN           = p1
-    , _csscsivDiskId               = p2
-    , _csscsivPreserveExistingData = p3
-    , _csscsivTargetName           = p4
-    , _csscsivNetworkInterfaceId   = p5
-    , _csscsivSnapshotId           = Nothing
+-- * 'csscsivTargetName'
+--
+-- * 'csscsivNetworkInterfaceId'
+createStorediSCSIVolume
+    :: Text -- ^ 'csscsivGatewayARN'
+    -> Text -- ^ 'csscsivDiskId'
+    -> Bool -- ^ 'csscsivPreserveExistingData'
+    -> Text -- ^ 'csscsivTargetName'
+    -> Text -- ^ 'csscsivNetworkInterfaceId'
+    -> CreateStorediSCSIVolume
+createStorediSCSIVolume pGatewayARN_ pDiskId_ pPreserveExistingData_ pTargetName_ pNetworkInterfaceId_ =
+    CreateStorediSCSIVolume'
+    { _csscsivSnapshotId = Nothing
+    , _csscsivGatewayARN = pGatewayARN_
+    , _csscsivDiskId = pDiskId_
+    , _csscsivPreserveExistingData = pPreserveExistingData_
+    , _csscsivTargetName = pTargetName_
+    , _csscsivNetworkInterfaceId = pNetworkInterfaceId_
     }
 
--- | The unique identifier for the gateway local disk that is configured as a
--- stored volume. Use <http://docs.aws.amazon.com/storagegateway/latest/userguide/API_ListLocalDisks.html ListLocalDisks> to list disk IDs for a gateway.
-csscsivDiskId :: Lens' CreateStorediSCSIVolume Text
-csscsivDiskId = lens _csscsivDiskId (\s a -> s { _csscsivDiskId = a })
+-- | The snapshot ID (e.g. \"snap-1122aabb\") of the snapshot to restore as
+-- the new stored volume. Specify this field if you want to create the
+-- iSCSI storage volume from a snapshot otherwise do not include this
+-- field. To list snapshots for your account use
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html DescribeSnapshots>
+-- in the /Amazon Elastic Compute Cloud API Reference/.
+csscsivSnapshotId :: Lens' CreateStorediSCSIVolume (Maybe Text)
+csscsivSnapshotId = lens _csscsivSnapshotId (\ s a -> s{_csscsivSnapshotId = a});
 
+-- | Undocumented member.
 csscsivGatewayARN :: Lens' CreateStorediSCSIVolume Text
-csscsivGatewayARN =
-    lens _csscsivGatewayARN (\s a -> s { _csscsivGatewayARN = a })
+csscsivGatewayARN = lens _csscsivGatewayARN (\ s a -> s{_csscsivGatewayARN = a});
 
--- | The network interface of the gateway on which to expose the iSCSI target.
--- Only IPv4 addresses are accepted. Use 'DescribeGatewayInformation' to get a
--- list of the network interfaces available on a gateway.
---
--- /Valid Values/: A valid IP address.
-csscsivNetworkInterfaceId :: Lens' CreateStorediSCSIVolume Text
-csscsivNetworkInterfaceId =
-    lens _csscsivNetworkInterfaceId
-        (\s a -> s { _csscsivNetworkInterfaceId = a })
+-- | The unique identifier for the gateway local disk that is configured as a
+-- stored volume. Use
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/API_ListLocalDisks.html ListLocalDisks>
+-- to list disk IDs for a gateway.
+csscsivDiskId :: Lens' CreateStorediSCSIVolume Text
+csscsivDiskId = lens _csscsivDiskId (\ s a -> s{_csscsivDiskId = a});
 
 -- | Specify this field as true if you want to preserve the data on the local
 -- disk. Otherwise, specifying this field as false creates an empty volume.
 --
 -- /Valid Values/: true, false
 csscsivPreserveExistingData :: Lens' CreateStorediSCSIVolume Bool
-csscsivPreserveExistingData =
-    lens _csscsivPreserveExistingData
-        (\s a -> s { _csscsivPreserveExistingData = a })
-
--- | The snapshot ID (e.g. "snap-1122aabb") of the snapshot to restore as the new
--- stored volume. Specify this field if you want to create the iSCSI storage
--- volume from a snapshot otherwise do not include this field. To list snapshots
--- for your account use <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html DescribeSnapshots> in the /Amazon Elastic Compute CloudAPI Reference/.
-csscsivSnapshotId :: Lens' CreateStorediSCSIVolume (Maybe Text)
-csscsivSnapshotId =
-    lens _csscsivSnapshotId (\s a -> s { _csscsivSnapshotId = a })
+csscsivPreserveExistingData = lens _csscsivPreserveExistingData (\ s a -> s{_csscsivPreserveExistingData = a});
 
--- | The name of the iSCSI target used by initiators to connect to the target and
--- as a suffix for the target ARN. For example, specifying 'TargetName' as /myvolume/
--- results in the target ARN of
--- arn:aws:storagegateway:us-east-1:111122223333:gateway/mygateway/target/iqn.1997-05.com.amazon:myvolume. The target name must be unique across all volumes of a gateway.
+-- | The name of the iSCSI target used by initiators to connect to the target
+-- and as a suffix for the target ARN. For example, specifying 'TargetName'
+-- as /myvolume/ results in the target ARN of
+-- arn:aws:storagegateway:us-east-1:111122223333:gateway\/mygateway\/target\/iqn.1997-05.com.amazon:myvolume.
+-- The target name must be unique across all volumes of a gateway.
 csscsivTargetName :: Lens' CreateStorediSCSIVolume Text
-csscsivTargetName =
-    lens _csscsivTargetName (\s a -> s { _csscsivTargetName = a })
-
-data CreateStorediSCSIVolumeResponse = CreateStorediSCSIVolumeResponse
-    { _csscsivrTargetARN         :: Maybe Text
-    , _csscsivrVolumeARN         :: Maybe Text
-    , _csscsivrVolumeSizeInBytes :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
+csscsivTargetName = lens _csscsivTargetName (\ s a -> s{_csscsivTargetName = a});
 
--- | 'CreateStorediSCSIVolumeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'csscsivrTargetARN' @::@ 'Maybe' 'Text'
---
--- * 'csscsivrVolumeARN' @::@ 'Maybe' 'Text'
---
--- * 'csscsivrVolumeSizeInBytes' @::@ 'Maybe' 'Integer'
+-- | The network interface of the gateway on which to expose the iSCSI
+-- target. Only IPv4 addresses are accepted. Use DescribeGatewayInformation
+-- to get a list of the network interfaces available on a gateway.
 --
-createStorediSCSIVolumeResponse :: CreateStorediSCSIVolumeResponse
-createStorediSCSIVolumeResponse = CreateStorediSCSIVolumeResponse
-    { _csscsivrVolumeARN         = Nothing
-    , _csscsivrVolumeSizeInBytes = Nothing
-    , _csscsivrTargetARN         = Nothing
-    }
+-- /Valid Values/: A valid IP address.
+csscsivNetworkInterfaceId :: Lens' CreateStorediSCSIVolume Text
+csscsivNetworkInterfaceId = lens _csscsivNetworkInterfaceId (\ s a -> s{_csscsivNetworkInterfaceId = a});
 
--- | he Amazon Resource Name (ARN) of the volume target that includes the iSCSI
--- name that initiators can use to connect to the target.
-csscsivrTargetARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
-csscsivrTargetARN =
-    lens _csscsivrTargetARN (\s a -> s { _csscsivrTargetARN = a })
+instance AWSRequest CreateStorediSCSIVolume where
+        type Sv CreateStorediSCSIVolume = StorageGateway
+        type Rs CreateStorediSCSIVolume =
+             CreateStorediSCSIVolumeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateStorediSCSIVolumeResponse' <$>
+                   (x .?> "TargetARN") <*> (x .?> "VolumeARN") <*>
+                     (x .?> "VolumeSizeInBytes")
+                     <*> (pure (fromEnum s)))
 
--- | The Amazon Resource Name (ARN) of the configured volume.
-csscsivrVolumeARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
-csscsivrVolumeARN =
-    lens _csscsivrVolumeARN (\s a -> s { _csscsivrVolumeARN = a })
+instance ToHeaders CreateStorediSCSIVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CreateStorediSCSIVolume" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The size of the volume in bytes.
-csscsivrVolumeSizeInBytes :: Lens' CreateStorediSCSIVolumeResponse (Maybe Integer)
-csscsivrVolumeSizeInBytes =
-    lens _csscsivrVolumeSizeInBytes
-        (\s a -> s { _csscsivrVolumeSizeInBytes = a })
+instance ToJSON CreateStorediSCSIVolume where
+        toJSON CreateStorediSCSIVolume'{..}
+          = object
+              ["SnapshotId" .= _csscsivSnapshotId,
+               "GatewayARN" .= _csscsivGatewayARN,
+               "DiskId" .= _csscsivDiskId,
+               "PreserveExistingData" .=
+                 _csscsivPreserveExistingData,
+               "TargetName" .= _csscsivTargetName,
+               "NetworkInterfaceId" .= _csscsivNetworkInterfaceId]
 
 instance ToPath CreateStorediSCSIVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateStorediSCSIVolume where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders CreateStorediSCSIVolume
+-- | A JSON object containing the following fields:
+--
+-- /See:/ 'createStorediSCSIVolumeResponse' smart constructor.
+data CreateStorediSCSIVolumeResponse = CreateStorediSCSIVolumeResponse'
+    { _csscsivrsTargetARN         :: !(Maybe Text)
+    , _csscsivrsVolumeARN         :: !(Maybe Text)
+    , _csscsivrsVolumeSizeInBytes :: !(Maybe Integer)
+    , _csscsivrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON CreateStorediSCSIVolume where
-    toJSON CreateStorediSCSIVolume{..} = object
-        [ "GatewayARN"           .= _csscsivGatewayARN
-        , "DiskId"               .= _csscsivDiskId
-        , "SnapshotId"           .= _csscsivSnapshotId
-        , "PreserveExistingData" .= _csscsivPreserveExistingData
-        , "TargetName"           .= _csscsivTargetName
-        , "NetworkInterfaceId"   .= _csscsivNetworkInterfaceId
-        ]
+-- | Creates a value of 'CreateStorediSCSIVolumeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'csscsivrsTargetARN'
+--
+-- * 'csscsivrsVolumeARN'
+--
+-- * 'csscsivrsVolumeSizeInBytes'
+--
+-- * 'csscsivrsStatus'
+createStorediSCSIVolumeResponse
+    :: Int -- ^ 'csscsivrsStatus'
+    -> CreateStorediSCSIVolumeResponse
+createStorediSCSIVolumeResponse pStatus_ =
+    CreateStorediSCSIVolumeResponse'
+    { _csscsivrsTargetARN = Nothing
+    , _csscsivrsVolumeARN = Nothing
+    , _csscsivrsVolumeSizeInBytes = Nothing
+    , _csscsivrsStatus = pStatus_
+    }
 
-instance AWSRequest CreateStorediSCSIVolume where
-    type Sv CreateStorediSCSIVolume = StorageGateway
-    type Rs CreateStorediSCSIVolume = CreateStorediSCSIVolumeResponse
+-- | he Amazon Resource Name (ARN) of the volume target that includes the
+-- iSCSI name that initiators can use to connect to the target.
+csscsivrsTargetARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
+csscsivrsTargetARN = lens _csscsivrsTargetARN (\ s a -> s{_csscsivrsTargetARN = a});
 
-    request  = post "CreateStorediSCSIVolume"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the configured volume.
+csscsivrsVolumeARN :: Lens' CreateStorediSCSIVolumeResponse (Maybe Text)
+csscsivrsVolumeARN = lens _csscsivrsVolumeARN (\ s a -> s{_csscsivrsVolumeARN = a});
 
-instance FromJSON CreateStorediSCSIVolumeResponse where
-    parseJSON = withObject "CreateStorediSCSIVolumeResponse" $ \o -> CreateStorediSCSIVolumeResponse
-        <$> o .:? "TargetARN"
-        <*> o .:? "VolumeARN"
-        <*> o .:? "VolumeSizeInBytes"
+-- | The size of the volume in bytes.
+csscsivrsVolumeSizeInBytes :: Lens' CreateStorediSCSIVolumeResponse (Maybe Integer)
+csscsivrsVolumeSizeInBytes = lens _csscsivrsVolumeSizeInBytes (\ s a -> s{_csscsivrsVolumeSizeInBytes = a});
+
+-- | The response status code.
+csscsivrsStatus :: Lens' CreateStorediSCSIVolumeResponse Int
+csscsivrsStatus = lens _csscsivrsStatus (\ s a -> s{_csscsivrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/CreateTapes.hs b/gen/Network/AWS/StorageGateway/CreateTapes.hs
--- a/gen/Network/AWS/StorageGateway/CreateTapes.hs
+++ b/gen/Network/AWS/StorageGateway/CreateTapes.hs
@@ -1,182 +1,194 @@
-{-# 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.StorageGateway.CreateTapes
--- 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 one or more virtual tapes. You write data to the virtual tapes and
--- then archive the tapes.
+-- Creates one or more virtual tapes. You write data to the virtual tapes
+-- and then archive the tapes.
 --
--- Cache storage must be allocated to the gateway before you can create virtual
--- tapes. Use the 'AddCache' operation to add cache storage to a gateway.
+-- Cache storage must be allocated to the gateway before you can create
+-- virtual tapes. Use the AddCache operation to add cache storage to a
+-- gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateTapes.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_CreateTapes.html AWS API Reference> for CreateTapes.
 module Network.AWS.StorageGateway.CreateTapes
     (
-    -- * Request
-      CreateTapes
-    -- ** Request constructor
-    , createTapes
-    -- ** Request lenses
-    , ctClientToken
+    -- * Creating a Request
+      createTapes
+    , CreateTapes
+    -- * Request Lenses
     , ctGatewayARN
+    , ctTapeSizeInBytes
+    , ctClientToken
     , ctNumTapesToCreate
     , ctTapeBarcodePrefix
-    , ctTapeSizeInBytes
 
-    -- * Response
-    , CreateTapesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createTapesResponse
-    -- ** Response lenses
-    , ctrTapeARNs
+    , CreateTapesResponse
+    -- * Response Lenses
+    , ctrsTapeARNs
+    , ctrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data CreateTapes = CreateTapes
-    { _ctClientToken       :: Text
-    , _ctGatewayARN        :: Text
-    , _ctNumTapesToCreate  :: Nat
-    , _ctTapeBarcodePrefix :: Text
-    , _ctTapeSizeInBytes   :: Integer
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'CreateTapes' constructor.
+-- | CreateTapesInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createTapes' smart constructor.
+data CreateTapes = CreateTapes'
+    { _ctGatewayARN        :: !Text
+    , _ctTapeSizeInBytes   :: !Integer
+    , _ctClientToken       :: !Text
+    , _ctNumTapesToCreate  :: !Nat
+    , _ctTapeBarcodePrefix :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateTapes' with the minimum fields required to make a request.
 --
--- * 'ctClientToken' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ctGatewayARN' @::@ 'Text'
+-- * 'ctGatewayARN'
 --
--- * 'ctNumTapesToCreate' @::@ 'Natural'
+-- * 'ctTapeSizeInBytes'
 --
--- * 'ctTapeBarcodePrefix' @::@ 'Text'
+-- * 'ctClientToken'
 --
--- * 'ctTapeSizeInBytes' @::@ 'Integer'
+-- * 'ctNumTapesToCreate'
 --
-createTapes :: Text -- ^ 'ctGatewayARN'
-            -> Integer -- ^ 'ctTapeSizeInBytes'
-            -> Text -- ^ 'ctClientToken'
-            -> Natural -- ^ 'ctNumTapesToCreate'
-            -> Text -- ^ 'ctTapeBarcodePrefix'
-            -> CreateTapes
-createTapes p1 p2 p3 p4 p5 = CreateTapes
-    { _ctGatewayARN        = p1
-    , _ctTapeSizeInBytes   = p2
-    , _ctClientToken       = p3
-    , _ctNumTapesToCreate  = withIso _Nat (const id) p4
-    , _ctTapeBarcodePrefix = p5
+-- * 'ctTapeBarcodePrefix'
+createTapes
+    :: Text -- ^ 'ctGatewayARN'
+    -> Integer -- ^ 'ctTapeSizeInBytes'
+    -> Text -- ^ 'ctClientToken'
+    -> Natural -- ^ 'ctNumTapesToCreate'
+    -> Text -- ^ 'ctTapeBarcodePrefix'
+    -> CreateTapes
+createTapes pGatewayARN_ pTapeSizeInBytes_ pClientToken_ pNumTapesToCreate_ pTapeBarcodePrefix_ =
+    CreateTapes'
+    { _ctGatewayARN = pGatewayARN_
+    , _ctTapeSizeInBytes = pTapeSizeInBytes_
+    , _ctClientToken = pClientToken_
+    , _ctNumTapesToCreate = _Nat # pNumTapesToCreate_
+    , _ctTapeBarcodePrefix = pTapeBarcodePrefix_
     }
 
--- | A unique identifier that you use to retry a request. If you retry a request,
--- use the same 'ClientToken' you specified in the initial request.
+-- | The unique Amazon Resource Name(ARN) that represents the gateway to
+-- associate the virtual tapes with. Use the ListGateways operation to
+-- return a list of gateways for your account and region.
+ctGatewayARN :: Lens' CreateTapes Text
+ctGatewayARN = lens _ctGatewayARN (\ s a -> s{_ctGatewayARN = a});
+
+-- | The size, in bytes, of the virtual tapes you want to create.
 --
+-- The size must be gigabyte (1024*1024*1024 byte) aligned.
+ctTapeSizeInBytes :: Lens' CreateTapes Integer
+ctTapeSizeInBytes = lens _ctTapeSizeInBytes (\ s a -> s{_ctTapeSizeInBytes = a});
+
+-- | A unique identifier that you use to retry a request. If you retry a
+-- request, use the same 'ClientToken' you specified in the initial
+-- request.
+--
 -- Using the same 'ClientToken' prevents creating the tape multiple times.
 ctClientToken :: Lens' CreateTapes Text
-ctClientToken = lens _ctClientToken (\s a -> s { _ctClientToken = a })
-
--- | The unique Amazon Resource Name(ARN) that represents the gateway to associate
--- the virtual tapes with. Use the 'ListGateways' operation to return a list of
--- gateways for your account and region.
-ctGatewayARN :: Lens' CreateTapes Text
-ctGatewayARN = lens _ctGatewayARN (\s a -> s { _ctGatewayARN = a })
+ctClientToken = lens _ctClientToken (\ s a -> s{_ctClientToken = a});
 
 -- | The number of virtual tapes you want to create.
 ctNumTapesToCreate :: Lens' CreateTapes Natural
-ctNumTapesToCreate =
-    lens _ctNumTapesToCreate (\s a -> s { _ctNumTapesToCreate = a })
-        . _Nat
+ctNumTapesToCreate = lens _ctNumTapesToCreate (\ s a -> s{_ctNumTapesToCreate = a}) . _Nat;
 
--- | A prefix you append to the barcode of the virtual tape you are creating. This
--- makes a barcode unique.
+-- | A prefix you append to the barcode of the virtual tape you are creating.
+-- This makes a barcode unique.
 --
 -- The prefix must be 1 to 4 characters in length and must be upper-case
 -- letters A-Z.
 ctTapeBarcodePrefix :: Lens' CreateTapes Text
-ctTapeBarcodePrefix =
-    lens _ctTapeBarcodePrefix (\s a -> s { _ctTapeBarcodePrefix = a })
-
--- | The size, in bytes, of the virtual tapes you want to create.
---
--- The size must be gigabyte (1024*1024*1024 byte) aligned.
-ctTapeSizeInBytes :: Lens' CreateTapes Integer
-ctTapeSizeInBytes =
-    lens _ctTapeSizeInBytes (\s a -> s { _ctTapeSizeInBytes = a })
-
-newtype CreateTapesResponse = CreateTapesResponse
-    { _ctrTapeARNs :: List "TapeARNs" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList CreateTapesResponse where
-    type Item CreateTapesResponse = Text
+ctTapeBarcodePrefix = lens _ctTapeBarcodePrefix (\ s a -> s{_ctTapeBarcodePrefix = a});
 
-    fromList = CreateTapesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _ctrTapeARNs
+instance AWSRequest CreateTapes where
+        type Sv CreateTapes = StorageGateway
+        type Rs CreateTapes = CreateTapesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateTapesResponse' <$>
+                   (x .?> "TapeARNs" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'CreateTapesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ctrTapeARNs' @::@ ['Text']
---
-createTapesResponse :: CreateTapesResponse
-createTapesResponse = CreateTapesResponse
-    { _ctrTapeARNs = mempty
-    }
+instance ToHeaders CreateTapes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.CreateTapes" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A list of unique Amazon Resource Named (ARN) the represents the virtual tapes
--- that were created.
-ctrTapeARNs :: Lens' CreateTapesResponse [Text]
-ctrTapeARNs = lens _ctrTapeARNs (\s a -> s { _ctrTapeARNs = a }) . _List
+instance ToJSON CreateTapes where
+        toJSON CreateTapes'{..}
+          = object
+              ["GatewayARN" .= _ctGatewayARN,
+               "TapeSizeInBytes" .= _ctTapeSizeInBytes,
+               "ClientToken" .= _ctClientToken,
+               "NumTapesToCreate" .= _ctNumTapesToCreate,
+               "TapeBarcodePrefix" .= _ctTapeBarcodePrefix]
 
 instance ToPath CreateTapes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateTapes where
-    toQuery = const mempty
-
-instance ToHeaders CreateTapes
+        toQuery = const mempty
 
-instance ToJSON CreateTapes where
-    toJSON CreateTapes{..} = object
-        [ "GatewayARN"        .= _ctGatewayARN
-        , "TapeSizeInBytes"   .= _ctTapeSizeInBytes
-        , "ClientToken"       .= _ctClientToken
-        , "NumTapesToCreate"  .= _ctNumTapesToCreate
-        , "TapeBarcodePrefix" .= _ctTapeBarcodePrefix
-        ]
+-- | CreateTapeOutput
+--
+-- /See:/ 'createTapesResponse' smart constructor.
+data CreateTapesResponse = CreateTapesResponse'
+    { _ctrsTapeARNs :: !(Maybe [Text])
+    , _ctrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateTapes where
-    type Sv CreateTapes = StorageGateway
-    type Rs CreateTapes = CreateTapesResponse
+-- | Creates a value of 'CreateTapesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ctrsTapeARNs'
+--
+-- * 'ctrsStatus'
+createTapesResponse
+    :: Int -- ^ 'ctrsStatus'
+    -> CreateTapesResponse
+createTapesResponse pStatus_ =
+    CreateTapesResponse'
+    { _ctrsTapeARNs = Nothing
+    , _ctrsStatus = pStatus_
+    }
 
-    request  = post "CreateTapes"
-    response = jsonResponse
+-- | A list of unique Amazon Resource Named (ARN) the represents the virtual
+-- tapes that were created.
+ctrsTapeARNs :: Lens' CreateTapesResponse [Text]
+ctrsTapeARNs = lens _ctrsTapeARNs (\ s a -> s{_ctrsTapeARNs = a}) . _Default . _Coerce;
 
-instance FromJSON CreateTapesResponse where
-    parseJSON = withObject "CreateTapesResponse" $ \o -> CreateTapesResponse
-        <$> o .:? "TapeARNs" .!= mempty
+-- | The response status code.
+ctrsStatus :: Lens' CreateTapesResponse Int
+ctrsStatus = lens _ctrsStatus (\ s a -> s{_ctrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteBandwidthRateLimit.hs b/gen/Network/AWS/StorageGateway/DeleteBandwidthRateLimit.hs
--- a/gen/Network/AWS/StorageGateway/DeleteBandwidthRateLimit.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteBandwidthRateLimit.hs
@@ -1,125 +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.StorageGateway.DeleteBandwidthRateLimit
--- 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 operation deletes the bandwidth rate limits of a gateway. You can delete
--- either the upload and download bandwidth rate limit, or you can delete both.
--- If you delete only one of the limits, the other limit remains unchanged. To
--- specify which gateway to work with, use the Amazon Resource Name (ARN) of the
--- gateway in your request.
+-- This operation deletes the bandwidth rate limits of a gateway. You can
+-- delete either the upload and download bandwidth rate limit, or you can
+-- delete both. If you delete only one of the limits, the other limit
+-- remains unchanged. To specify which gateway to work with, use the Amazon
+-- Resource Name (ARN) of the gateway in your request.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteBandwidthRateLimit.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteBandwidthRateLimit.html AWS API Reference> for DeleteBandwidthRateLimit.
 module Network.AWS.StorageGateway.DeleteBandwidthRateLimit
     (
-    -- * Request
-      DeleteBandwidthRateLimit
-    -- ** Request constructor
-    , deleteBandwidthRateLimit
-    -- ** Request lenses
-    , dbrl1BandwidthType
-    , dbrl1GatewayARN
+    -- * Creating a Request
+      deleteBandwidthRateLimit
+    , DeleteBandwidthRateLimit
+    -- * Request Lenses
+    , delGatewayARN
+    , delBandwidthType
 
-    -- * Response
-    , DeleteBandwidthRateLimitResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteBandwidthRateLimitResponse
-    -- ** Response lenses
-    , dbrlr1GatewayARN
+    , DeleteBandwidthRateLimitResponse
+    -- * Response Lenses
+    , delrsGatewayARN
+    , delrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data DeleteBandwidthRateLimit = DeleteBandwidthRateLimit
-    { _dbrl1BandwidthType :: Text
-    , _dbrl1GatewayARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'deleteBandwidthRateLimit' smart constructor.
+data DeleteBandwidthRateLimit = DeleteBandwidthRateLimit'
+    { _delGatewayARN    :: !Text
+    , _delBandwidthType :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteBandwidthRateLimit' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteBandwidthRateLimit' with the minimum fields required to make a request.
 --
--- * 'dbrl1BandwidthType' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dbrl1GatewayARN' @::@ 'Text'
+-- * 'delGatewayARN'
 --
-deleteBandwidthRateLimit :: Text -- ^ 'dbrl1GatewayARN'
-                         -> Text -- ^ 'dbrl1BandwidthType'
-                         -> DeleteBandwidthRateLimit
-deleteBandwidthRateLimit p1 p2 = DeleteBandwidthRateLimit
-    { _dbrl1GatewayARN    = p1
-    , _dbrl1BandwidthType = p2
+-- * 'delBandwidthType'
+deleteBandwidthRateLimit
+    :: Text -- ^ 'delGatewayARN'
+    -> Text -- ^ 'delBandwidthType'
+    -> DeleteBandwidthRateLimit
+deleteBandwidthRateLimit pGatewayARN_ pBandwidthType_ =
+    DeleteBandwidthRateLimit'
+    { _delGatewayARN = pGatewayARN_
+    , _delBandwidthType = pBandwidthType_
     }
 
-dbrl1BandwidthType :: Lens' DeleteBandwidthRateLimit Text
-dbrl1BandwidthType =
-    lens _dbrl1BandwidthType (\s a -> s { _dbrl1BandwidthType = a })
+-- | Undocumented member.
+delGatewayARN :: Lens' DeleteBandwidthRateLimit Text
+delGatewayARN = lens _delGatewayARN (\ s a -> s{_delGatewayARN = a});
 
-dbrl1GatewayARN :: Lens' DeleteBandwidthRateLimit Text
-dbrl1GatewayARN = lens _dbrl1GatewayARN (\s a -> s { _dbrl1GatewayARN = a })
+-- | Undocumented member.
+delBandwidthType :: Lens' DeleteBandwidthRateLimit Text
+delBandwidthType = lens _delBandwidthType (\ s a -> s{_delBandwidthType = a});
 
-newtype DeleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse
-    { _dbrlr1GatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteBandwidthRateLimit where
+        type Sv DeleteBandwidthRateLimit = StorageGateway
+        type Rs DeleteBandwidthRateLimit =
+             DeleteBandwidthRateLimitResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteBandwidthRateLimitResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteBandwidthRateLimitResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbrlr1GatewayARN' @::@ 'Maybe' 'Text'
---
-deleteBandwidthRateLimitResponse :: DeleteBandwidthRateLimitResponse
-deleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse
-    { _dbrlr1GatewayARN = Nothing
-    }
+instance ToHeaders DeleteBandwidthRateLimit where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteBandwidthRateLimit"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dbrlr1GatewayARN :: Lens' DeleteBandwidthRateLimitResponse (Maybe Text)
-dbrlr1GatewayARN = lens _dbrlr1GatewayARN (\s a -> s { _dbrlr1GatewayARN = a })
+instance ToJSON DeleteBandwidthRateLimit where
+        toJSON DeleteBandwidthRateLimit'{..}
+          = object
+              ["GatewayARN" .= _delGatewayARN,
+               "BandwidthType" .= _delBandwidthType]
 
 instance ToPath DeleteBandwidthRateLimit where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteBandwidthRateLimit where
-    toQuery = const mempty
-
-instance ToHeaders DeleteBandwidthRateLimit
+        toQuery = const mempty
 
-instance ToJSON DeleteBandwidthRateLimit where
-    toJSON DeleteBandwidthRateLimit{..} = object
-        [ "GatewayARN"    .= _dbrl1GatewayARN
-        , "BandwidthType" .= _dbrl1BandwidthType
-        ]
+-- | A JSON object containing the of the gateway whose bandwidth rate
+-- information was deleted.
+--
+-- /See:/ 'deleteBandwidthRateLimitResponse' smart constructor.
+data DeleteBandwidthRateLimitResponse = DeleteBandwidthRateLimitResponse'
+    { _delrsGatewayARN :: !(Maybe Text)
+    , _delrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteBandwidthRateLimit where
-    type Sv DeleteBandwidthRateLimit = StorageGateway
-    type Rs DeleteBandwidthRateLimit = DeleteBandwidthRateLimitResponse
+-- | Creates a value of 'DeleteBandwidthRateLimitResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delrsGatewayARN'
+--
+-- * 'delrsStatus'
+deleteBandwidthRateLimitResponse
+    :: Int -- ^ 'delrsStatus'
+    -> DeleteBandwidthRateLimitResponse
+deleteBandwidthRateLimitResponse pStatus_ =
+    DeleteBandwidthRateLimitResponse'
+    { _delrsGatewayARN = Nothing
+    , _delrsStatus = pStatus_
+    }
 
-    request  = post "DeleteBandwidthRateLimit"
-    response = jsonResponse
+-- | Undocumented member.
+delrsGatewayARN :: Lens' DeleteBandwidthRateLimitResponse (Maybe Text)
+delrsGatewayARN = lens _delrsGatewayARN (\ s a -> s{_delrsGatewayARN = a});
 
-instance FromJSON DeleteBandwidthRateLimitResponse where
-    parseJSON = withObject "DeleteBandwidthRateLimitResponse" $ \o -> DeleteBandwidthRateLimitResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+delrsStatus :: Lens' DeleteBandwidthRateLimitResponse Int
+delrsStatus = lens _delrsStatus (\ s a -> s{_delrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteChapCredentials.hs b/gen/Network/AWS/StorageGateway/DeleteChapCredentials.hs
--- a/gen/Network/AWS/StorageGateway/DeleteChapCredentials.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteChapCredentials.hs
@@ -1,136 +1,159 @@
-{-# 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.StorageGateway.DeleteChapCredentials
--- 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 operation deletes Challenge-Handshake Authentication Protocol (CHAP)
--- credentials for a specified iSCSI target and initiator pair.
+-- This operation deletes Challenge-Handshake Authentication Protocol
+-- (CHAP) credentials for a specified iSCSI target and initiator pair.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteChapCredentials.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteChapCredentials.html AWS API Reference> for DeleteChapCredentials.
 module Network.AWS.StorageGateway.DeleteChapCredentials
     (
-    -- * Request
-      DeleteChapCredentials
-    -- ** Request constructor
-    , deleteChapCredentials
-    -- ** Request lenses
-    , dcc1InitiatorName
-    , dcc1TargetARN
+    -- * Creating a Request
+      deleteChapCredentials
+    , DeleteChapCredentials
+    -- * Request Lenses
+    , dTargetARN
+    , dInitiatorName
 
-    -- * Response
-    , DeleteChapCredentialsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteChapCredentialsResponse
-    -- ** Response lenses
-    , dccrInitiatorName
-    , dccrTargetARN
+    , DeleteChapCredentialsResponse
+    -- * Response Lenses
+    , drsTargetARN
+    , drsInitiatorName
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DeleteChapCredentials = DeleteChapCredentials
-    { _dcc1InitiatorName :: Text
-    , _dcc1TargetARN     :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DeleteChapCredentials' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcc1InitiatorName' @::@ 'Text'
+-- | A JSON object containing one or more of the following fields:
 --
--- * 'dcc1TargetARN' @::@ 'Text'
+-- -   DeleteChapCredentialsInput$InitiatorName
+-- -   DeleteChapCredentialsInput$TargetARN
 --
-deleteChapCredentials :: Text -- ^ 'dcc1TargetARN'
-                      -> Text -- ^ 'dcc1InitiatorName'
-                      -> DeleteChapCredentials
-deleteChapCredentials p1 p2 = DeleteChapCredentials
-    { _dcc1TargetARN     = p1
-    , _dcc1InitiatorName = p2
-    }
-
--- | The iSCSI initiator that connects to the target.
-dcc1InitiatorName :: Lens' DeleteChapCredentials Text
-dcc1InitiatorName =
-    lens _dcc1InitiatorName (\s a -> s { _dcc1InitiatorName = a })
-
--- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the 'DescribeStorediSCSIVolumes' operation to return to retrieve the TargetARN for specified VolumeARN.
-dcc1TargetARN :: Lens' DeleteChapCredentials Text
-dcc1TargetARN = lens _dcc1TargetARN (\s a -> s { _dcc1TargetARN = a })
-
-data DeleteChapCredentialsResponse = DeleteChapCredentialsResponse
-    { _dccrInitiatorName :: Maybe Text
-    , _dccrTargetARN     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- /See:/ 'deleteChapCredentials' smart constructor.
+data DeleteChapCredentials = DeleteChapCredentials'
+    { _dTargetARN     :: !Text
+    , _dInitiatorName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteChapCredentialsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteChapCredentials' with the minimum fields required to make a request.
 --
--- * 'dccrInitiatorName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dccrTargetARN' @::@ 'Maybe' 'Text'
+-- * 'dTargetARN'
 --
-deleteChapCredentialsResponse :: DeleteChapCredentialsResponse
-deleteChapCredentialsResponse = DeleteChapCredentialsResponse
-    { _dccrTargetARN     = Nothing
-    , _dccrInitiatorName = Nothing
+-- * 'dInitiatorName'
+deleteChapCredentials
+    :: Text -- ^ 'dTargetARN'
+    -> Text -- ^ 'dInitiatorName'
+    -> DeleteChapCredentials
+deleteChapCredentials pTargetARN_ pInitiatorName_ =
+    DeleteChapCredentials'
+    { _dTargetARN = pTargetARN_
+    , _dInitiatorName = pInitiatorName_
     }
 
+-- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
+-- DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN
+-- for specified VolumeARN.
+dTargetARN :: Lens' DeleteChapCredentials Text
+dTargetARN = lens _dTargetARN (\ s a -> s{_dTargetARN = a});
+
 -- | The iSCSI initiator that connects to the target.
-dccrInitiatorName :: Lens' DeleteChapCredentialsResponse (Maybe Text)
-dccrInitiatorName =
-    lens _dccrInitiatorName (\s a -> s { _dccrInitiatorName = a })
+dInitiatorName :: Lens' DeleteChapCredentials Text
+dInitiatorName = lens _dInitiatorName (\ s a -> s{_dInitiatorName = a});
 
--- | The Amazon Resource Name (ARN) of the target.
-dccrTargetARN :: Lens' DeleteChapCredentialsResponse (Maybe Text)
-dccrTargetARN = lens _dccrTargetARN (\s a -> s { _dccrTargetARN = a })
+instance AWSRequest DeleteChapCredentials where
+        type Sv DeleteChapCredentials = StorageGateway
+        type Rs DeleteChapCredentials =
+             DeleteChapCredentialsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteChapCredentialsResponse' <$>
+                   (x .?> "TargetARN") <*> (x .?> "InitiatorName") <*>
+                     (pure (fromEnum s)))
 
+instance ToHeaders DeleteChapCredentials where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteChapCredentials" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DeleteChapCredentials where
+        toJSON DeleteChapCredentials'{..}
+          = object
+              ["TargetARN" .= _dTargetARN,
+               "InitiatorName" .= _dInitiatorName]
+
 instance ToPath DeleteChapCredentials where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteChapCredentials where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders DeleteChapCredentials
+-- | A JSON object containing the following fields:
+--
+-- /See:/ 'deleteChapCredentialsResponse' smart constructor.
+data DeleteChapCredentialsResponse = DeleteChapCredentialsResponse'
+    { _drsTargetARN     :: !(Maybe Text)
+    , _drsInitiatorName :: !(Maybe Text)
+    , _drsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON DeleteChapCredentials where
-    toJSON DeleteChapCredentials{..} = object
-        [ "TargetARN"     .= _dcc1TargetARN
-        , "InitiatorName" .= _dcc1InitiatorName
-        ]
+-- | Creates a value of 'DeleteChapCredentialsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsTargetARN'
+--
+-- * 'drsInitiatorName'
+--
+-- * 'drsStatus'
+deleteChapCredentialsResponse
+    :: Int -- ^ 'drsStatus'
+    -> DeleteChapCredentialsResponse
+deleteChapCredentialsResponse pStatus_ =
+    DeleteChapCredentialsResponse'
+    { _drsTargetARN = Nothing
+    , _drsInitiatorName = Nothing
+    , _drsStatus = pStatus_
+    }
 
-instance AWSRequest DeleteChapCredentials where
-    type Sv DeleteChapCredentials = StorageGateway
-    type Rs DeleteChapCredentials = DeleteChapCredentialsResponse
+-- | The Amazon Resource Name (ARN) of the target.
+drsTargetARN :: Lens' DeleteChapCredentialsResponse (Maybe Text)
+drsTargetARN = lens _drsTargetARN (\ s a -> s{_drsTargetARN = a});
 
-    request  = post "DeleteChapCredentials"
-    response = jsonResponse
+-- | The iSCSI initiator that connects to the target.
+drsInitiatorName :: Lens' DeleteChapCredentialsResponse (Maybe Text)
+drsInitiatorName = lens _drsInitiatorName (\ s a -> s{_drsInitiatorName = a});
 
-instance FromJSON DeleteChapCredentialsResponse where
-    parseJSON = withObject "DeleteChapCredentialsResponse" $ \o -> DeleteChapCredentialsResponse
-        <$> o .:? "InitiatorName"
-        <*> o .:? "TargetARN"
+-- | The response status code.
+drsStatus :: Lens' DeleteChapCredentialsResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteGateway.hs b/gen/Network/AWS/StorageGateway/DeleteGateway.hs
--- a/gen/Network/AWS/StorageGateway/DeleteGateway.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteGateway.hs
@@ -1,127 +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.StorageGateway.DeleteGateway
--- 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 operation deletes a gateway. To specify which gateway to delete, use the
--- Amazon Resource Name (ARN) of the gateway in your request. The operation
--- deletes the gateway; however, it does not delete the gateway virtual machine
--- (VM) from your host computer.
---
--- After you delete a gateway, you cannot reactivate it. Completed snapshots of
--- the gateway volumes are not deleted upon deleting the gateway, however,
--- pending snapshots will not complete. After you delete a gateway, your next
--- step is to remove it from your environment.
---
--- You no longer pay software charges after the gateway is deleted; however,
--- your existing Amazon EBS snapshots persist and you will continue to be billed
--- for these snapshots. You can choose to remove all remaining Amazon EBS
--- snapshots by canceling your Amazon EC2 subscription.  If you prefer not to
--- cancel your Amazon EC2 subscription, you can delete your snapshots using the
--- Amazon EC2 console. For more information, see the <http://aws.amazon.com/storagegateway  AWS Storage Gateway DetailPage>.
+-- This operation deletes a gateway. To specify which gateway to delete,
+-- use the Amazon Resource Name (ARN) of the gateway in your request. The
+-- operation deletes the gateway; however, it does not delete the gateway
+-- virtual machine (VM) from your host computer.
 --
+-- After you delete a gateway, you cannot reactivate it. Completed
+-- snapshots of the gateway volumes are not deleted upon deleting the
+-- gateway, however, pending snapshots will not complete. After you delete
+-- a gateway, your next step is to remove it from your environment.
 --
+-- You no longer pay software charges after the gateway is deleted;
+-- however, your existing Amazon EBS snapshots persist and you will
+-- continue to be billed for these snapshots. You can choose to remove all
+-- remaining Amazon EBS snapshots by canceling your Amazon EC2
+-- subscription.  If you prefer not to cancel your Amazon EC2 subscription,
+-- you can delete your snapshots using the Amazon EC2 console. For more
+-- information, see the
+-- <http://aws.amazon.com/storagegateway AWS Storage Gateway Detail Page>.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteGateway.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteGateway.html AWS API Reference> for DeleteGateway.
 module Network.AWS.StorageGateway.DeleteGateway
     (
-    -- * Request
-      DeleteGateway
-    -- ** Request constructor
-    , deleteGateway
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteGateway
+    , DeleteGateway
+    -- * Request Lenses
     , dgGatewayARN
 
-    -- * Response
-    , DeleteGatewayResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteGatewayResponse
-    -- ** Response lenses
-    , dgrGatewayARN
+    , DeleteGatewayResponse
+    -- * Response Lenses
+    , dgrsGatewayARN
+    , dgrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DeleteGateway = DeleteGateway
+-- | A JSON object containing the id of the gateway to delete.
+--
+-- /See:/ 'deleteGateway' smart constructor.
+newtype DeleteGateway = DeleteGateway'
     { _dgGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteGateway' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteGateway' with the minimum fields required to make a request.
 --
--- * 'dgGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteGateway :: Text -- ^ 'dgGatewayARN'
-              -> DeleteGateway
-deleteGateway p1 = DeleteGateway
-    { _dgGatewayARN = p1
+-- * 'dgGatewayARN'
+deleteGateway
+    :: Text -- ^ 'dgGatewayARN'
+    -> DeleteGateway
+deleteGateway pGatewayARN_ =
+    DeleteGateway'
+    { _dgGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dgGatewayARN :: Lens' DeleteGateway Text
-dgGatewayARN = lens _dgGatewayARN (\s a -> s { _dgGatewayARN = a })
+dgGatewayARN = lens _dgGatewayARN (\ s a -> s{_dgGatewayARN = a});
 
-newtype DeleteGatewayResponse = DeleteGatewayResponse
-    { _dgrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteGateway where
+        type Sv DeleteGateway = StorageGateway
+        type Rs DeleteGateway = DeleteGatewayResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteGatewayResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteGatewayResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dgrGatewayARN' @::@ 'Maybe' 'Text'
---
-deleteGatewayResponse :: DeleteGatewayResponse
-deleteGatewayResponse = DeleteGatewayResponse
-    { _dgrGatewayARN = Nothing
-    }
+instance ToHeaders DeleteGateway where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteGateway" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dgrGatewayARN :: Lens' DeleteGatewayResponse (Maybe Text)
-dgrGatewayARN = lens _dgrGatewayARN (\s a -> s { _dgrGatewayARN = a })
+instance ToJSON DeleteGateway where
+        toJSON DeleteGateway'{..}
+          = object ["GatewayARN" .= _dgGatewayARN]
 
 instance ToPath DeleteGateway where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteGateway where
-    toQuery = const mempty
-
-instance ToHeaders DeleteGateway
+        toQuery = const mempty
 
-instance ToJSON DeleteGateway where
-    toJSON DeleteGateway{..} = object
-        [ "GatewayARN" .= _dgGatewayARN
-        ]
+-- | A JSON object containing the id of the deleted gateway.
+--
+-- /See:/ 'deleteGatewayResponse' smart constructor.
+data DeleteGatewayResponse = DeleteGatewayResponse'
+    { _dgrsGatewayARN :: !(Maybe Text)
+    , _dgrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteGateway where
-    type Sv DeleteGateway = StorageGateway
-    type Rs DeleteGateway = DeleteGatewayResponse
+-- | Creates a value of 'DeleteGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dgrsGatewayARN'
+--
+-- * 'dgrsStatus'
+deleteGatewayResponse
+    :: Int -- ^ 'dgrsStatus'
+    -> DeleteGatewayResponse
+deleteGatewayResponse pStatus_ =
+    DeleteGatewayResponse'
+    { _dgrsGatewayARN = Nothing
+    , _dgrsStatus = pStatus_
+    }
 
-    request  = post "DeleteGateway"
-    response = jsonResponse
+-- | Undocumented member.
+dgrsGatewayARN :: Lens' DeleteGatewayResponse (Maybe Text)
+dgrsGatewayARN = lens _dgrsGatewayARN (\ s a -> s{_dgrsGatewayARN = a});
 
-instance FromJSON DeleteGatewayResponse where
-    parseJSON = withObject "DeleteGatewayResponse" $ \o -> DeleteGatewayResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+dgrsStatus :: Lens' DeleteGatewayResponse Int
+dgrsStatus = lens _dgrsStatus (\ s a -> s{_dgrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteSnapshotSchedule.hs b/gen/Network/AWS/StorageGateway/DeleteSnapshotSchedule.hs
--- a/gen/Network/AWS/StorageGateway/DeleteSnapshotSchedule.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteSnapshotSchedule.hs
@@ -1,119 +1,137 @@
-{-# 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.StorageGateway.DeleteSnapshotSchedule
--- 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 operation deletes a snapshot of a volume.
+-- This operation deletes a snapshot of a volume.
 --
 -- You can take snapshots of your gateway volumes on a scheduled or ad-hoc
--- basis. This API enables you to delete a snapshot schedule for a volume. For
--- more information, see <http://docs.aws.amazon.com/storagegateway/latest/userguide/WorkingWithSnapshots.html Working with Snapshots>. In the 'DeleteSnapshotSchedule'
--- request, you identify the volume by providing its Amazon Resource Name (ARN).
---
--- To list or delete a snapshot, you must use the Amazon EC2 API. in /AmazonElastic Compute Cloud API Reference/.
---
+-- basis. This API enables you to delete a snapshot schedule for a volume.
+-- For more information, see
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/WorkingWithSnapshots.html Working with Snapshots>.
+-- In the 'DeleteSnapshotSchedule' request, you identify the volume by
+-- providing its Amazon Resource Name (ARN).
 --
+-- To list or delete a snapshot, you must use the Amazon EC2 API. in
+-- /Amazon Elastic Compute Cloud API Reference/.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteSnapshotSchedule.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteSnapshotSchedule.html AWS API Reference> for DeleteSnapshotSchedule.
 module Network.AWS.StorageGateway.DeleteSnapshotSchedule
     (
-    -- * Request
-      DeleteSnapshotSchedule
-    -- ** Request constructor
-    , deleteSnapshotSchedule
-    -- ** Request lenses
-    , dss1VolumeARN
+    -- * Creating a Request
+      deleteSnapshotSchedule
+    , DeleteSnapshotSchedule
+    -- * Request Lenses
+    , dVolumeARN
 
-    -- * Response
-    , DeleteSnapshotScheduleResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteSnapshotScheduleResponse
-    -- ** Response lenses
-    , dssr1VolumeARN
+    , DeleteSnapshotScheduleResponse
+    -- * Response Lenses
+    , dsssrsVolumeARN
+    , dsssrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DeleteSnapshotSchedule = DeleteSnapshotSchedule
-    { _dss1VolumeARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+-- | /See:/ 'deleteSnapshotSchedule' smart constructor.
+newtype DeleteSnapshotSchedule = DeleteSnapshotSchedule'
+    { _dVolumeARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteSnapshotSchedule' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteSnapshotSchedule' with the minimum fields required to make a request.
 --
--- * 'dss1VolumeARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteSnapshotSchedule :: Text -- ^ 'dss1VolumeARN'
-                       -> DeleteSnapshotSchedule
-deleteSnapshotSchedule p1 = DeleteSnapshotSchedule
-    { _dss1VolumeARN = p1
+-- * 'dVolumeARN'
+deleteSnapshotSchedule
+    :: Text -- ^ 'dVolumeARN'
+    -> DeleteSnapshotSchedule
+deleteSnapshotSchedule pVolumeARN_ =
+    DeleteSnapshotSchedule'
+    { _dVolumeARN = pVolumeARN_
     }
 
-dss1VolumeARN :: Lens' DeleteSnapshotSchedule Text
-dss1VolumeARN = lens _dss1VolumeARN (\s a -> s { _dss1VolumeARN = a })
+-- | Undocumented member.
+dVolumeARN :: Lens' DeleteSnapshotSchedule Text
+dVolumeARN = lens _dVolumeARN (\ s a -> s{_dVolumeARN = a});
 
-newtype DeleteSnapshotScheduleResponse = DeleteSnapshotScheduleResponse
-    { _dssr1VolumeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteSnapshotSchedule where
+        type Sv DeleteSnapshotSchedule = StorageGateway
+        type Rs DeleteSnapshotSchedule =
+             DeleteSnapshotScheduleResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteSnapshotScheduleResponse' <$>
+                   (x .?> "VolumeARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteSnapshotScheduleResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dssr1VolumeARN' @::@ 'Maybe' 'Text'
---
-deleteSnapshotScheduleResponse :: DeleteSnapshotScheduleResponse
-deleteSnapshotScheduleResponse = DeleteSnapshotScheduleResponse
-    { _dssr1VolumeARN = Nothing
-    }
+instance ToHeaders DeleteSnapshotSchedule where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteSnapshotSchedule" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dssr1VolumeARN :: Lens' DeleteSnapshotScheduleResponse (Maybe Text)
-dssr1VolumeARN = lens _dssr1VolumeARN (\s a -> s { _dssr1VolumeARN = a })
+instance ToJSON DeleteSnapshotSchedule where
+        toJSON DeleteSnapshotSchedule'{..}
+          = object ["VolumeARN" .= _dVolumeARN]
 
 instance ToPath DeleteSnapshotSchedule where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteSnapshotSchedule where
-    toQuery = const mempty
-
-instance ToHeaders DeleteSnapshotSchedule
+        toQuery = const mempty
 
-instance ToJSON DeleteSnapshotSchedule where
-    toJSON DeleteSnapshotSchedule{..} = object
-        [ "VolumeARN" .= _dss1VolumeARN
-        ]
+-- | /See:/ 'deleteSnapshotScheduleResponse' smart constructor.
+data DeleteSnapshotScheduleResponse = DeleteSnapshotScheduleResponse'
+    { _dsssrsVolumeARN :: !(Maybe Text)
+    , _dsssrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteSnapshotSchedule where
-    type Sv DeleteSnapshotSchedule = StorageGateway
-    type Rs DeleteSnapshotSchedule = DeleteSnapshotScheduleResponse
+-- | Creates a value of 'DeleteSnapshotScheduleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsssrsVolumeARN'
+--
+-- * 'dsssrsStatus'
+deleteSnapshotScheduleResponse
+    :: Int -- ^ 'dsssrsStatus'
+    -> DeleteSnapshotScheduleResponse
+deleteSnapshotScheduleResponse pStatus_ =
+    DeleteSnapshotScheduleResponse'
+    { _dsssrsVolumeARN = Nothing
+    , _dsssrsStatus = pStatus_
+    }
 
-    request  = post "DeleteSnapshotSchedule"
-    response = jsonResponse
+-- | Undocumented member.
+dsssrsVolumeARN :: Lens' DeleteSnapshotScheduleResponse (Maybe Text)
+dsssrsVolumeARN = lens _dsssrsVolumeARN (\ s a -> s{_dsssrsVolumeARN = a});
 
-instance FromJSON DeleteSnapshotScheduleResponse where
-    parseJSON = withObject "DeleteSnapshotScheduleResponse" $ \o -> DeleteSnapshotScheduleResponse
-        <$> o .:? "VolumeARN"
+-- | The response status code.
+dsssrsStatus :: Lens' DeleteSnapshotScheduleResponse Int
+dsssrsStatus = lens _dsssrsStatus (\ s a -> s{_dsssrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteTape.hs b/gen/Network/AWS/StorageGateway/DeleteTape.hs
--- a/gen/Network/AWS/StorageGateway/DeleteTape.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteTape.hs
@@ -1,125 +1,143 @@
-{-# 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.StorageGateway.DeleteTape
--- 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 the specified virtual tape.
+-- Deletes the specified virtual tape.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteTape.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteTape.html AWS API Reference> for DeleteTape.
 module Network.AWS.StorageGateway.DeleteTape
     (
-    -- * Request
-      DeleteTape
-    -- ** Request constructor
-    , deleteTape
-    -- ** Request lenses
-    , dt1GatewayARN
-    , dt1TapeARN
+    -- * Creating a Request
+      deleteTape
+    , DeleteTape
+    -- * Request Lenses
+    , dttGatewayARN
+    , dttTapeARN
 
-    -- * Response
-    , DeleteTapeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteTapeResponse
-    -- ** Response lenses
-    , dtrTapeARN
+    , DeleteTapeResponse
+    -- * Response Lenses
+    , dtrsTapeARN
+    , dtrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DeleteTape = DeleteTape
-    { _dt1GatewayARN :: Text
-    , _dt1TapeARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DeleteTape' constructor.
+-- | DeleteTapeInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'deleteTape' smart constructor.
+data DeleteTape = DeleteTape'
+    { _dttGatewayARN :: !Text
+    , _dttTapeARN    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteTape' with the minimum fields required to make a request.
 --
--- * 'dt1GatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dt1TapeARN' @::@ 'Text'
+-- * 'dttGatewayARN'
 --
-deleteTape :: Text -- ^ 'dt1GatewayARN'
-           -> Text -- ^ 'dt1TapeARN'
-           -> DeleteTape
-deleteTape p1 p2 = DeleteTape
-    { _dt1GatewayARN = p1
-    , _dt1TapeARN    = p2
+-- * 'dttTapeARN'
+deleteTape
+    :: Text -- ^ 'dttGatewayARN'
+    -> Text -- ^ 'dttTapeARN'
+    -> DeleteTape
+deleteTape pGatewayARN_ pTapeARN_ =
+    DeleteTape'
+    { _dttGatewayARN = pGatewayARN_
+    , _dttTapeARN = pTapeARN_
     }
 
--- | The unique Amazon Resource Name (ARN) of the gateway that the virtual tape to
--- delete is associated with. Use the 'ListGateways' operation to return a list of
--- gateways for your account and region.
-dt1GatewayARN :: Lens' DeleteTape Text
-dt1GatewayARN = lens _dt1GatewayARN (\s a -> s { _dt1GatewayARN = a })
+-- | The unique Amazon Resource Name (ARN) of the gateway that the virtual
+-- tape to delete is associated with. Use the ListGateways operation to
+-- return a list of gateways for your account and region.
+dttGatewayARN :: Lens' DeleteTape Text
+dttGatewayARN = lens _dttGatewayARN (\ s a -> s{_dttGatewayARN = a});
 
 -- | The Amazon Resource Name (ARN) of the virtual tape to delete.
-dt1TapeARN :: Lens' DeleteTape Text
-dt1TapeARN = lens _dt1TapeARN (\s a -> s { _dt1TapeARN = a })
+dttTapeARN :: Lens' DeleteTape Text
+dttTapeARN = lens _dttTapeARN (\ s a -> s{_dttTapeARN = a});
 
-newtype DeleteTapeResponse = DeleteTapeResponse
-    { _dtrTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteTape where
+        type Sv DeleteTape = StorageGateway
+        type Rs DeleteTape = DeleteTapeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteTapeResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteTapeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtrTapeARN' @::@ 'Maybe' 'Text'
---
-deleteTapeResponse :: DeleteTapeResponse
-deleteTapeResponse = DeleteTapeResponse
-    { _dtrTapeARN = Nothing
-    }
+instance ToHeaders DeleteTape where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteTape" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the deleted virtual tape.
-dtrTapeARN :: Lens' DeleteTapeResponse (Maybe Text)
-dtrTapeARN = lens _dtrTapeARN (\s a -> s { _dtrTapeARN = a })
+instance ToJSON DeleteTape where
+        toJSON DeleteTape'{..}
+          = object
+              ["GatewayARN" .= _dttGatewayARN,
+               "TapeARN" .= _dttTapeARN]
 
 instance ToPath DeleteTape where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteTape where
-    toQuery = const mempty
-
-instance ToHeaders DeleteTape
+        toQuery = const mempty
 
-instance ToJSON DeleteTape where
-    toJSON DeleteTape{..} = object
-        [ "GatewayARN" .= _dt1GatewayARN
-        , "TapeARN"    .= _dt1TapeARN
-        ]
+-- | DeleteTapeOutput
+--
+-- /See:/ 'deleteTapeResponse' smart constructor.
+data DeleteTapeResponse = DeleteTapeResponse'
+    { _dtrsTapeARN :: !(Maybe Text)
+    , _dtrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteTape where
-    type Sv DeleteTape = StorageGateway
-    type Rs DeleteTape = DeleteTapeResponse
+-- | Creates a value of 'DeleteTapeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtrsTapeARN'
+--
+-- * 'dtrsStatus'
+deleteTapeResponse
+    :: Int -- ^ 'dtrsStatus'
+    -> DeleteTapeResponse
+deleteTapeResponse pStatus_ =
+    DeleteTapeResponse'
+    { _dtrsTapeARN = Nothing
+    , _dtrsStatus = pStatus_
+    }
 
-    request  = post "DeleteTape"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the deleted virtual tape.
+dtrsTapeARN :: Lens' DeleteTapeResponse (Maybe Text)
+dtrsTapeARN = lens _dtrsTapeARN (\ s a -> s{_dtrsTapeARN = a});
 
-instance FromJSON DeleteTapeResponse where
-    parseJSON = withObject "DeleteTapeResponse" $ \o -> DeleteTapeResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+dtrsStatus :: Lens' DeleteTapeResponse Int
+dtrsStatus = lens _dtrsStatus (\ s a -> s{_dtrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteTapeArchive.hs b/gen/Network/AWS/StorageGateway/DeleteTapeArchive.hs
--- a/gen/Network/AWS/StorageGateway/DeleteTapeArchive.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteTapeArchive.hs
@@ -1,114 +1,132 @@
-{-# 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.StorageGateway.DeleteTapeArchive
--- 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 the specified virtual tape from the virtual tape shelf (VTS).
+-- Deletes the specified virtual tape from the virtual tape shelf (VTS).
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteTapeArchive.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteTapeArchive.html AWS API Reference> for DeleteTapeArchive.
 module Network.AWS.StorageGateway.DeleteTapeArchive
     (
-    -- * Request
-      DeleteTapeArchive
-    -- ** Request constructor
-    , deleteTapeArchive
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteTapeArchive
+    , DeleteTapeArchive
+    -- * Request Lenses
     , dtaTapeARN
 
-    -- * Response
-    , DeleteTapeArchiveResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteTapeArchiveResponse
-    -- ** Response lenses
-    , dtarTapeARN
+    , DeleteTapeArchiveResponse
+    -- * Response Lenses
+    , dtatrsTapeARN
+    , dtatrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DeleteTapeArchive = DeleteTapeArchive
+-- | DeleteTapeArchiveInput
+--
+-- /See:/ 'deleteTapeArchive' smart constructor.
+newtype DeleteTapeArchive = DeleteTapeArchive'
     { _dtaTapeARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteTapeArchive' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteTapeArchive' with the minimum fields required to make a request.
 --
--- * 'dtaTapeARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteTapeArchive :: Text -- ^ 'dtaTapeARN'
-                  -> DeleteTapeArchive
-deleteTapeArchive p1 = DeleteTapeArchive
-    { _dtaTapeARN = p1
+-- * 'dtaTapeARN'
+deleteTapeArchive
+    :: Text -- ^ 'dtaTapeARN'
+    -> DeleteTapeArchive
+deleteTapeArchive pTapeARN_ =
+    DeleteTapeArchive'
+    { _dtaTapeARN = pTapeARN_
     }
 
--- | The Amazon Resource Name (ARN) of the virtual tape to delete from the virtual
--- tape shelf (VTS).
+-- | The Amazon Resource Name (ARN) of the virtual tape to delete from the
+-- virtual tape shelf (VTS).
 dtaTapeARN :: Lens' DeleteTapeArchive Text
-dtaTapeARN = lens _dtaTapeARN (\s a -> s { _dtaTapeARN = a })
+dtaTapeARN = lens _dtaTapeARN (\ s a -> s{_dtaTapeARN = a});
 
-newtype DeleteTapeArchiveResponse = DeleteTapeArchiveResponse
-    { _dtarTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteTapeArchive where
+        type Sv DeleteTapeArchive = StorageGateway
+        type Rs DeleteTapeArchive = DeleteTapeArchiveResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteTapeArchiveResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteTapeArchiveResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtarTapeARN' @::@ 'Maybe' 'Text'
---
-deleteTapeArchiveResponse :: DeleteTapeArchiveResponse
-deleteTapeArchiveResponse = DeleteTapeArchiveResponse
-    { _dtarTapeARN = Nothing
-    }
+instance ToHeaders DeleteTapeArchive where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteTapeArchive" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the virtual tape that was deleted from the
--- virtual tape shelf (VTS).
-dtarTapeARN :: Lens' DeleteTapeArchiveResponse (Maybe Text)
-dtarTapeARN = lens _dtarTapeARN (\s a -> s { _dtarTapeARN = a })
+instance ToJSON DeleteTapeArchive where
+        toJSON DeleteTapeArchive'{..}
+          = object ["TapeARN" .= _dtaTapeARN]
 
 instance ToPath DeleteTapeArchive where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteTapeArchive where
-    toQuery = const mempty
-
-instance ToHeaders DeleteTapeArchive
+        toQuery = const mempty
 
-instance ToJSON DeleteTapeArchive where
-    toJSON DeleteTapeArchive{..} = object
-        [ "TapeARN" .= _dtaTapeARN
-        ]
+-- | DeleteTapeArchiveOutput
+--
+-- /See:/ 'deleteTapeArchiveResponse' smart constructor.
+data DeleteTapeArchiveResponse = DeleteTapeArchiveResponse'
+    { _dtatrsTapeARN :: !(Maybe Text)
+    , _dtatrsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteTapeArchive where
-    type Sv DeleteTapeArchive = StorageGateway
-    type Rs DeleteTapeArchive = DeleteTapeArchiveResponse
+-- | Creates a value of 'DeleteTapeArchiveResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtatrsTapeARN'
+--
+-- * 'dtatrsStatus'
+deleteTapeArchiveResponse
+    :: Int -- ^ 'dtatrsStatus'
+    -> DeleteTapeArchiveResponse
+deleteTapeArchiveResponse pStatus_ =
+    DeleteTapeArchiveResponse'
+    { _dtatrsTapeARN = Nothing
+    , _dtatrsStatus = pStatus_
+    }
 
-    request  = post "DeleteTapeArchive"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the virtual tape that was deleted from
+-- the virtual tape shelf (VTS).
+dtatrsTapeARN :: Lens' DeleteTapeArchiveResponse (Maybe Text)
+dtatrsTapeARN = lens _dtatrsTapeARN (\ s a -> s{_dtatrsTapeARN = a});
 
-instance FromJSON DeleteTapeArchiveResponse where
-    parseJSON = withObject "DeleteTapeArchiveResponse" $ \o -> DeleteTapeArchiveResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+dtatrsStatus :: Lens' DeleteTapeArchiveResponse Int
+dtatrsStatus = lens _dtatrsStatus (\ s a -> s{_dtatrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DeleteVolume.hs b/gen/Network/AWS/StorageGateway/DeleteVolume.hs
--- a/gen/Network/AWS/StorageGateway/DeleteVolume.hs
+++ b/gen/Network/AWS/StorageGateway/DeleteVolume.hs
@@ -1,126 +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.StorageGateway.DeleteVolume
--- 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 operation delete the specified gateway volume that you previously
--- created using the 'CreateStorediSCSIVolume' API. For gateway-stored volumes,
--- the local disk that was configured as the storage volume is not deleted. You
--- can reuse the local disk to create another storage volume.
+-- This operation delete the specified gateway volume that you previously
+-- created using the CreateStorediSCSIVolume API. For gateway-stored
+-- volumes, the local disk that was configured as the storage volume is not
+-- deleted. You can reuse the local disk to create another storage volume.
 --
--- Before you delete a gateway volume, make sure there are no iSCSI connections
--- to the volume you are deleting. You should also make sure there is no
--- snapshot in progress. You can use the Amazon Elastic Compute Cloud (Amazon
--- EC2) API to query snapshots on the volume you are deleting and check the
--- snapshot status. For more information, go to <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html DescribeSnapshots> in the /AmazonElastic Compute Cloud API Reference/.
+-- Before you delete a gateway volume, make sure there are no iSCSI
+-- connections to the volume you are deleting. You should also make sure
+-- there is no snapshot in progress. You can use the Amazon Elastic Compute
+-- Cloud (Amazon EC2) API to query snapshots on the volume you are deleting
+-- and check the snapshot status. For more information, go to
+-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSnapshots.html DescribeSnapshots>
+-- in the /Amazon Elastic Compute Cloud API Reference/.
 --
 -- In the request, you must provide the Amazon Resource Name (ARN) of the
 -- storage volume you want to delete.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteVolume.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DeleteVolume.html AWS API Reference> for DeleteVolume.
 module Network.AWS.StorageGateway.DeleteVolume
     (
-    -- * Request
-      DeleteVolume
-    -- ** Request constructor
-    , deleteVolume
-    -- ** Request lenses
+    -- * Creating a Request
+      deleteVolume
+    , DeleteVolume
+    -- * Request Lenses
     , dvVolumeARN
 
-    -- * Response
-    , DeleteVolumeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , deleteVolumeResponse
-    -- ** Response lenses
-    , dvrVolumeARN
+    , DeleteVolumeResponse
+    -- * Response Lenses
+    , dvrsVolumeARN
+    , dvrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DeleteVolume = DeleteVolume
+-- | A JSON object containing the DeleteVolumeInput$VolumeARN to delete.
+--
+-- /See:/ 'deleteVolume' smart constructor.
+newtype DeleteVolume = DeleteVolume'
     { _dvVolumeARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DeleteVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DeleteVolume' with the minimum fields required to make a request.
 --
--- * 'dvVolumeARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-deleteVolume :: Text -- ^ 'dvVolumeARN'
-             -> DeleteVolume
-deleteVolume p1 = DeleteVolume
-    { _dvVolumeARN = p1
+-- * 'dvVolumeARN'
+deleteVolume
+    :: Text -- ^ 'dvVolumeARN'
+    -> DeleteVolume
+deleteVolume pVolumeARN_ =
+    DeleteVolume'
+    { _dvVolumeARN = pVolumeARN_
     }
 
--- | The Amazon Resource Name (ARN) of the volume. Use the 'ListVolumes' operation
--- to return a list of gateway volumes.
+-- | The Amazon Resource Name (ARN) of the volume. Use the ListVolumes
+-- operation to return a list of gateway volumes.
 dvVolumeARN :: Lens' DeleteVolume Text
-dvVolumeARN = lens _dvVolumeARN (\s a -> s { _dvVolumeARN = a })
+dvVolumeARN = lens _dvVolumeARN (\ s a -> s{_dvVolumeARN = a});
 
-newtype DeleteVolumeResponse = DeleteVolumeResponse
-    { _dvrVolumeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DeleteVolume where
+        type Sv DeleteVolume = StorageGateway
+        type Rs DeleteVolume = DeleteVolumeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DeleteVolumeResponse' <$>
+                   (x .?> "VolumeARN") <*> (pure (fromEnum s)))
 
--- | 'DeleteVolumeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dvrVolumeARN' @::@ 'Maybe' 'Text'
---
-deleteVolumeResponse :: DeleteVolumeResponse
-deleteVolumeResponse = DeleteVolumeResponse
-    { _dvrVolumeARN = Nothing
-    }
+instance ToHeaders DeleteVolume where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DeleteVolume" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the storage volume that was deleted. It is
--- the same ARN you provided in the request.
-dvrVolumeARN :: Lens' DeleteVolumeResponse (Maybe Text)
-dvrVolumeARN = lens _dvrVolumeARN (\s a -> s { _dvrVolumeARN = a })
+instance ToJSON DeleteVolume where
+        toJSON DeleteVolume'{..}
+          = object ["VolumeARN" .= _dvVolumeARN]
 
 instance ToPath DeleteVolume where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DeleteVolume where
-    toQuery = const mempty
-
-instance ToHeaders DeleteVolume
+        toQuery = const mempty
 
-instance ToJSON DeleteVolume where
-    toJSON DeleteVolume{..} = object
-        [ "VolumeARN" .= _dvVolumeARN
-        ]
+-- | A JSON object containing the of the storage volume that was deleted
+--
+-- /See:/ 'deleteVolumeResponse' smart constructor.
+data DeleteVolumeResponse = DeleteVolumeResponse'
+    { _dvrsVolumeARN :: !(Maybe Text)
+    , _dvrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DeleteVolume where
-    type Sv DeleteVolume = StorageGateway
-    type Rs DeleteVolume = DeleteVolumeResponse
+-- | Creates a value of 'DeleteVolumeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dvrsVolumeARN'
+--
+-- * 'dvrsStatus'
+deleteVolumeResponse
+    :: Int -- ^ 'dvrsStatus'
+    -> DeleteVolumeResponse
+deleteVolumeResponse pStatus_ =
+    DeleteVolumeResponse'
+    { _dvrsVolumeARN = Nothing
+    , _dvrsStatus = pStatus_
+    }
 
-    request  = post "DeleteVolume"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the storage volume that was deleted.
+-- It is the same ARN you provided in the request.
+dvrsVolumeARN :: Lens' DeleteVolumeResponse (Maybe Text)
+dvrsVolumeARN = lens _dvrsVolumeARN (\ s a -> s{_dvrsVolumeARN = a});
 
-instance FromJSON DeleteVolumeResponse where
-    parseJSON = withObject "DeleteVolumeResponse" $ \o -> DeleteVolumeResponse
-        <$> o .:? "VolumeARN"
+-- | The response status code.
+dvrsStatus :: Lens' DeleteVolumeResponse Int
+dvrsStatus = lens _dvrsStatus (\ s a -> s{_dvrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeBandwidthRateLimit.hs b/gen/Network/AWS/StorageGateway/DescribeBandwidthRateLimit.hs
--- a/gen/Network/AWS/StorageGateway/DescribeBandwidthRateLimit.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeBandwidthRateLimit.hs
@@ -1,145 +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.StorageGateway.DescribeBandwidthRateLimit
--- 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 operation returns the bandwidth rate limits of a gateway. By default,
--- these limits are not set, which means no bandwidth rate limiting is in effect.
+-- This operation returns the bandwidth rate limits of a gateway. By
+-- default, these limits are not set, which means no bandwidth rate
+-- limiting is in effect.
 --
--- This operation only returns a value for a bandwidth rate limit only if the
--- limit is set. If no limits are set for the gateway, then this operation
--- returns only the gateway ARN in the response body. To specify which gateway
--- to describe, use the Amazon Resource Name (ARN) of the gateway in your
--- request.
+-- This operation only returns a value for a bandwidth rate limit only if
+-- the limit is set. If no limits are set for the gateway, then this
+-- operation returns only the gateway ARN in the response body. To specify
+-- which gateway to describe, use the Amazon Resource Name (ARN) of the
+-- gateway in your request.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeBandwidthRateLimit.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeBandwidthRateLimit.html AWS API Reference> for DescribeBandwidthRateLimit.
 module Network.AWS.StorageGateway.DescribeBandwidthRateLimit
     (
-    -- * Request
-      DescribeBandwidthRateLimit
-    -- ** Request constructor
-    , describeBandwidthRateLimit
-    -- ** Request lenses
+    -- * Creating a Request
+      describeBandwidthRateLimit
+    , DescribeBandwidthRateLimit
+    -- * Request Lenses
     , dbrlGatewayARN
 
-    -- * Response
-    , DescribeBandwidthRateLimitResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeBandwidthRateLimitResponse
-    -- ** Response lenses
-    , dbrlrAverageDownloadRateLimitInBitsPerSec
-    , dbrlrAverageUploadRateLimitInBitsPerSec
-    , dbrlrGatewayARN
+    , DescribeBandwidthRateLimitResponse
+    -- * Response Lenses
+    , dbrlrsGatewayARN
+    , dbrlrsAverageUploadRateLimitInBitsPerSec
+    , dbrlrsAverageDownloadRateLimitInBitsPerSec
+    , dbrlrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeBandwidthRateLimit = DescribeBandwidthRateLimit
+-- | A JSON object containing the of the gateway.
+--
+-- /See:/ 'describeBandwidthRateLimit' smart constructor.
+newtype DescribeBandwidthRateLimit = DescribeBandwidthRateLimit'
     { _dbrlGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeBandwidthRateLimit' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeBandwidthRateLimit' with the minimum fields required to make a request.
 --
--- * 'dbrlGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeBandwidthRateLimit :: Text -- ^ 'dbrlGatewayARN'
-                           -> DescribeBandwidthRateLimit
-describeBandwidthRateLimit p1 = DescribeBandwidthRateLimit
-    { _dbrlGatewayARN = p1
+-- * 'dbrlGatewayARN'
+describeBandwidthRateLimit
+    :: Text -- ^ 'dbrlGatewayARN'
+    -> DescribeBandwidthRateLimit
+describeBandwidthRateLimit pGatewayARN_ =
+    DescribeBandwidthRateLimit'
+    { _dbrlGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dbrlGatewayARN :: Lens' DescribeBandwidthRateLimit Text
-dbrlGatewayARN = lens _dbrlGatewayARN (\s a -> s { _dbrlGatewayARN = a })
-
-data DescribeBandwidthRateLimitResponse = DescribeBandwidthRateLimitResponse
-    { _dbrlrAverageDownloadRateLimitInBitsPerSec :: Maybe Nat
-    , _dbrlrAverageUploadRateLimitInBitsPerSec   :: Maybe Nat
-    , _dbrlrGatewayARN                           :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DescribeBandwidthRateLimitResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dbrlrAverageDownloadRateLimitInBitsPerSec' @::@ 'Maybe' 'Natural'
---
--- * 'dbrlrAverageUploadRateLimitInBitsPerSec' @::@ 'Maybe' 'Natural'
---
--- * 'dbrlrGatewayARN' @::@ 'Maybe' 'Text'
---
-describeBandwidthRateLimitResponse :: DescribeBandwidthRateLimitResponse
-describeBandwidthRateLimitResponse = DescribeBandwidthRateLimitResponse
-    { _dbrlrGatewayARN                           = Nothing
-    , _dbrlrAverageUploadRateLimitInBitsPerSec   = Nothing
-    , _dbrlrAverageDownloadRateLimitInBitsPerSec = Nothing
-    }
+dbrlGatewayARN = lens _dbrlGatewayARN (\ s a -> s{_dbrlGatewayARN = a});
 
--- | The average download bandwidth rate limit in bits per second. This field does
--- not appear in the response if the download rate limit is not set.
-dbrlrAverageDownloadRateLimitInBitsPerSec :: Lens' DescribeBandwidthRateLimitResponse (Maybe Natural)
-dbrlrAverageDownloadRateLimitInBitsPerSec =
-    lens _dbrlrAverageDownloadRateLimitInBitsPerSec
-        (\s a -> s { _dbrlrAverageDownloadRateLimitInBitsPerSec = a })
-            . mapping _Nat
+instance AWSRequest DescribeBandwidthRateLimit where
+        type Sv DescribeBandwidthRateLimit = StorageGateway
+        type Rs DescribeBandwidthRateLimit =
+             DescribeBandwidthRateLimitResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeBandwidthRateLimitResponse' <$>
+                   (x .?> "GatewayARN") <*>
+                     (x .?> "AverageUploadRateLimitInBitsPerSec")
+                     <*> (x .?> "AverageDownloadRateLimitInBitsPerSec")
+                     <*> (pure (fromEnum s)))
 
--- | The average upload bandwidth rate limit in bits per second. This field does
--- not appear in the response if the upload rate limit is not set.
-dbrlrAverageUploadRateLimitInBitsPerSec :: Lens' DescribeBandwidthRateLimitResponse (Maybe Natural)
-dbrlrAverageUploadRateLimitInBitsPerSec =
-    lens _dbrlrAverageUploadRateLimitInBitsPerSec
-        (\s a -> s { _dbrlrAverageUploadRateLimitInBitsPerSec = a })
-            . mapping _Nat
+instance ToHeaders DescribeBandwidthRateLimit where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeBandwidthRateLimit"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dbrlrGatewayARN :: Lens' DescribeBandwidthRateLimitResponse (Maybe Text)
-dbrlrGatewayARN = lens _dbrlrGatewayARN (\s a -> s { _dbrlrGatewayARN = a })
+instance ToJSON DescribeBandwidthRateLimit where
+        toJSON DescribeBandwidthRateLimit'{..}
+          = object ["GatewayARN" .= _dbrlGatewayARN]
 
 instance ToPath DescribeBandwidthRateLimit where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeBandwidthRateLimit where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders DescribeBandwidthRateLimit
+-- | A JSON object containing the following fields:
+--
+-- /See:/ 'describeBandwidthRateLimitResponse' smart constructor.
+data DescribeBandwidthRateLimitResponse = DescribeBandwidthRateLimitResponse'
+    { _dbrlrsGatewayARN                           :: !(Maybe Text)
+    , _dbrlrsAverageUploadRateLimitInBitsPerSec   :: !(Maybe Nat)
+    , _dbrlrsAverageDownloadRateLimitInBitsPerSec :: !(Maybe Nat)
+    , _dbrlrsStatus                               :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON DescribeBandwidthRateLimit where
-    toJSON DescribeBandwidthRateLimit{..} = object
-        [ "GatewayARN" .= _dbrlGatewayARN
-        ]
+-- | Creates a value of 'DescribeBandwidthRateLimitResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dbrlrsGatewayARN'
+--
+-- * 'dbrlrsAverageUploadRateLimitInBitsPerSec'
+--
+-- * 'dbrlrsAverageDownloadRateLimitInBitsPerSec'
+--
+-- * 'dbrlrsStatus'
+describeBandwidthRateLimitResponse
+    :: Int -- ^ 'dbrlrsStatus'
+    -> DescribeBandwidthRateLimitResponse
+describeBandwidthRateLimitResponse pStatus_ =
+    DescribeBandwidthRateLimitResponse'
+    { _dbrlrsGatewayARN = Nothing
+    , _dbrlrsAverageUploadRateLimitInBitsPerSec = Nothing
+    , _dbrlrsAverageDownloadRateLimitInBitsPerSec = Nothing
+    , _dbrlrsStatus = pStatus_
+    }
 
-instance AWSRequest DescribeBandwidthRateLimit where
-    type Sv DescribeBandwidthRateLimit = StorageGateway
-    type Rs DescribeBandwidthRateLimit = DescribeBandwidthRateLimitResponse
+-- | Undocumented member.
+dbrlrsGatewayARN :: Lens' DescribeBandwidthRateLimitResponse (Maybe Text)
+dbrlrsGatewayARN = lens _dbrlrsGatewayARN (\ s a -> s{_dbrlrsGatewayARN = a});
 
-    request  = post "DescribeBandwidthRateLimit"
-    response = jsonResponse
+-- | The average upload bandwidth rate limit in bits per second. This field
+-- does not appear in the response if the upload rate limit is not set.
+dbrlrsAverageUploadRateLimitInBitsPerSec :: Lens' DescribeBandwidthRateLimitResponse (Maybe Natural)
+dbrlrsAverageUploadRateLimitInBitsPerSec = lens _dbrlrsAverageUploadRateLimitInBitsPerSec (\ s a -> s{_dbrlrsAverageUploadRateLimitInBitsPerSec = a}) . mapping _Nat;
 
-instance FromJSON DescribeBandwidthRateLimitResponse where
-    parseJSON = withObject "DescribeBandwidthRateLimitResponse" $ \o -> DescribeBandwidthRateLimitResponse
-        <$> o .:? "AverageDownloadRateLimitInBitsPerSec"
-        <*> o .:? "AverageUploadRateLimitInBitsPerSec"
-        <*> o .:? "GatewayARN"
+-- | The average download bandwidth rate limit in bits per second. This field
+-- does not appear in the response if the download rate limit is not set.
+dbrlrsAverageDownloadRateLimitInBitsPerSec :: Lens' DescribeBandwidthRateLimitResponse (Maybe Natural)
+dbrlrsAverageDownloadRateLimitInBitsPerSec = lens _dbrlrsAverageDownloadRateLimitInBitsPerSec (\ s a -> s{_dbrlrsAverageDownloadRateLimitInBitsPerSec = a}) . mapping _Nat;
+
+-- | The response status code.
+dbrlrsStatus :: Lens' DescribeBandwidthRateLimitResponse Int
+dbrlrsStatus = lens _dbrlrsStatus (\ s a -> s{_dbrlrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeCache.hs b/gen/Network/AWS/StorageGateway/DescribeCache.hs
--- a/gen/Network/AWS/StorageGateway/DescribeCache.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeCache.hs
@@ -1,174 +1,190 @@
-{-# 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.StorageGateway.DescribeCache
--- 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 operation returns information about the cache of a gateway. This
+-- This operation returns information about the cache of a gateway. This
 -- operation is supported only for the gateway-cached volume architecture.
 --
 -- The response includes disk IDs that are configured as cache, and it
 -- includes the amount of cache allocated and used.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeCache.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeCache.html AWS API Reference> for DescribeCache.
 module Network.AWS.StorageGateway.DescribeCache
     (
-    -- * Request
-      DescribeCache
-    -- ** Request constructor
-    , describeCache
-    -- ** Request lenses
+    -- * Creating a Request
+      describeCache
+    , DescribeCache
+    -- * Request Lenses
     , dcGatewayARN
 
-    -- * Response
-    , DescribeCacheResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCacheResponse
-    -- ** Response lenses
-    , dcrCacheAllocatedInBytes
-    , dcrCacheDirtyPercentage
-    , dcrCacheHitPercentage
-    , dcrCacheMissPercentage
-    , dcrCacheUsedPercentage
-    , dcrDiskIds
-    , dcrGatewayARN
+    , DescribeCacheResponse
+    -- * Response Lenses
+    , dcrsGatewayARN
+    , dcrsDiskIds
+    , dcrsCacheUsedPercentage
+    , dcrsCacheHitPercentage
+    , dcrsCacheMissPercentage
+    , dcrsCacheAllocatedInBytes
+    , dcrsCacheDirtyPercentage
+    , dcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeCache = DescribeCache
+-- | /See:/ 'describeCache' smart constructor.
+newtype DescribeCache = DescribeCache'
     { _dcGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeCache' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeCache' with the minimum fields required to make a request.
 --
--- * 'dcGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeCache :: Text -- ^ 'dcGatewayARN'
-              -> DescribeCache
-describeCache p1 = DescribeCache
-    { _dcGatewayARN = p1
+-- * 'dcGatewayARN'
+describeCache
+    :: Text -- ^ 'dcGatewayARN'
+    -> DescribeCache
+describeCache pGatewayARN_ =
+    DescribeCache'
+    { _dcGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dcGatewayARN :: Lens' DescribeCache Text
-dcGatewayARN = lens _dcGatewayARN (\s a -> s { _dcGatewayARN = a })
+dcGatewayARN = lens _dcGatewayARN (\ s a -> s{_dcGatewayARN = a});
 
-data DescribeCacheResponse = DescribeCacheResponse
-    { _dcrCacheAllocatedInBytes :: Maybe Integer
-    , _dcrCacheDirtyPercentage  :: Maybe Double
-    , _dcrCacheHitPercentage    :: Maybe Double
-    , _dcrCacheMissPercentage   :: Maybe Double
-    , _dcrCacheUsedPercentage   :: Maybe Double
-    , _dcrDiskIds               :: List "DiskIds" Text
-    , _dcrGatewayARN            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest DescribeCache where
+        type Sv DescribeCache = StorageGateway
+        type Rs DescribeCache = DescribeCacheResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCacheResponse' <$>
+                   (x .?> "GatewayARN") <*> (x .?> "DiskIds" .!@ mempty)
+                     <*> (x .?> "CacheUsedPercentage")
+                     <*> (x .?> "CacheHitPercentage")
+                     <*> (x .?> "CacheMissPercentage")
+                     <*> (x .?> "CacheAllocatedInBytes")
+                     <*> (x .?> "CacheDirtyPercentage")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeCacheResponse' constructor.
+instance ToHeaders DescribeCache where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeCache" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeCache where
+        toJSON DescribeCache'{..}
+          = object ["GatewayARN" .= _dcGatewayARN]
+
+instance ToPath DescribeCache where
+        toPath = const "/"
+
+instance ToQuery DescribeCache where
+        toQuery = const mempty
+
+-- | /See:/ 'describeCacheResponse' smart constructor.
+data DescribeCacheResponse = DescribeCacheResponse'
+    { _dcrsGatewayARN            :: !(Maybe Text)
+    , _dcrsDiskIds               :: !(Maybe [Text])
+    , _dcrsCacheUsedPercentage   :: !(Maybe Double)
+    , _dcrsCacheHitPercentage    :: !(Maybe Double)
+    , _dcrsCacheMissPercentage   :: !(Maybe Double)
+    , _dcrsCacheAllocatedInBytes :: !(Maybe Integer)
+    , _dcrsCacheDirtyPercentage  :: !(Maybe Double)
+    , _dcrsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCacheResponse' 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:
 --
--- * 'dcrCacheAllocatedInBytes' @::@ 'Maybe' 'Integer'
+-- * 'dcrsGatewayARN'
 --
--- * 'dcrCacheDirtyPercentage' @::@ 'Maybe' 'Double'
+-- * 'dcrsDiskIds'
 --
--- * 'dcrCacheHitPercentage' @::@ 'Maybe' 'Double'
+-- * 'dcrsCacheUsedPercentage'
 --
--- * 'dcrCacheMissPercentage' @::@ 'Maybe' 'Double'
+-- * 'dcrsCacheHitPercentage'
 --
--- * 'dcrCacheUsedPercentage' @::@ 'Maybe' 'Double'
+-- * 'dcrsCacheMissPercentage'
 --
--- * 'dcrDiskIds' @::@ ['Text']
+-- * 'dcrsCacheAllocatedInBytes'
 --
--- * 'dcrGatewayARN' @::@ 'Maybe' 'Text'
+-- * 'dcrsCacheDirtyPercentage'
 --
-describeCacheResponse :: DescribeCacheResponse
-describeCacheResponse = DescribeCacheResponse
-    { _dcrGatewayARN            = Nothing
-    , _dcrDiskIds               = mempty
-    , _dcrCacheAllocatedInBytes = Nothing
-    , _dcrCacheUsedPercentage   = Nothing
-    , _dcrCacheDirtyPercentage  = Nothing
-    , _dcrCacheHitPercentage    = Nothing
-    , _dcrCacheMissPercentage   = Nothing
+-- * 'dcrsStatus'
+describeCacheResponse
+    :: Int -- ^ 'dcrsStatus'
+    -> DescribeCacheResponse
+describeCacheResponse pStatus_ =
+    DescribeCacheResponse'
+    { _dcrsGatewayARN = Nothing
+    , _dcrsDiskIds = Nothing
+    , _dcrsCacheUsedPercentage = Nothing
+    , _dcrsCacheHitPercentage = Nothing
+    , _dcrsCacheMissPercentage = Nothing
+    , _dcrsCacheAllocatedInBytes = Nothing
+    , _dcrsCacheDirtyPercentage = Nothing
+    , _dcrsStatus = pStatus_
     }
 
-dcrCacheAllocatedInBytes :: Lens' DescribeCacheResponse (Maybe Integer)
-dcrCacheAllocatedInBytes =
-    lens _dcrCacheAllocatedInBytes
-        (\s a -> s { _dcrCacheAllocatedInBytes = a })
-
-dcrCacheDirtyPercentage :: Lens' DescribeCacheResponse (Maybe Double)
-dcrCacheDirtyPercentage =
-    lens _dcrCacheDirtyPercentage (\s a -> s { _dcrCacheDirtyPercentage = a })
-
-dcrCacheHitPercentage :: Lens' DescribeCacheResponse (Maybe Double)
-dcrCacheHitPercentage =
-    lens _dcrCacheHitPercentage (\s a -> s { _dcrCacheHitPercentage = a })
-
-dcrCacheMissPercentage :: Lens' DescribeCacheResponse (Maybe Double)
-dcrCacheMissPercentage =
-    lens _dcrCacheMissPercentage (\s a -> s { _dcrCacheMissPercentage = a })
-
-dcrCacheUsedPercentage :: Lens' DescribeCacheResponse (Maybe Double)
-dcrCacheUsedPercentage =
-    lens _dcrCacheUsedPercentage (\s a -> s { _dcrCacheUsedPercentage = a })
-
-dcrDiskIds :: Lens' DescribeCacheResponse [Text]
-dcrDiskIds = lens _dcrDiskIds (\s a -> s { _dcrDiskIds = a }) . _List
-
-dcrGatewayARN :: Lens' DescribeCacheResponse (Maybe Text)
-dcrGatewayARN = lens _dcrGatewayARN (\s a -> s { _dcrGatewayARN = a })
+-- | Undocumented member.
+dcrsGatewayARN :: Lens' DescribeCacheResponse (Maybe Text)
+dcrsGatewayARN = lens _dcrsGatewayARN (\ s a -> s{_dcrsGatewayARN = a});
 
-instance ToPath DescribeCache where
-    toPath = const "/"
+-- | Undocumented member.
+dcrsDiskIds :: Lens' DescribeCacheResponse [Text]
+dcrsDiskIds = lens _dcrsDiskIds (\ s a -> s{_dcrsDiskIds = a}) . _Default . _Coerce;
 
-instance ToQuery DescribeCache where
-    toQuery = const mempty
+-- | Undocumented member.
+dcrsCacheUsedPercentage :: Lens' DescribeCacheResponse (Maybe Double)
+dcrsCacheUsedPercentage = lens _dcrsCacheUsedPercentage (\ s a -> s{_dcrsCacheUsedPercentage = a});
 
-instance ToHeaders DescribeCache
+-- | Undocumented member.
+dcrsCacheHitPercentage :: Lens' DescribeCacheResponse (Maybe Double)
+dcrsCacheHitPercentage = lens _dcrsCacheHitPercentage (\ s a -> s{_dcrsCacheHitPercentage = a});
 
-instance ToJSON DescribeCache where
-    toJSON DescribeCache{..} = object
-        [ "GatewayARN" .= _dcGatewayARN
-        ]
+-- | Undocumented member.
+dcrsCacheMissPercentage :: Lens' DescribeCacheResponse (Maybe Double)
+dcrsCacheMissPercentage = lens _dcrsCacheMissPercentage (\ s a -> s{_dcrsCacheMissPercentage = a});
 
-instance AWSRequest DescribeCache where
-    type Sv DescribeCache = StorageGateway
-    type Rs DescribeCache = DescribeCacheResponse
+-- | Undocumented member.
+dcrsCacheAllocatedInBytes :: Lens' DescribeCacheResponse (Maybe Integer)
+dcrsCacheAllocatedInBytes = lens _dcrsCacheAllocatedInBytes (\ s a -> s{_dcrsCacheAllocatedInBytes = a});
 
-    request  = post "DescribeCache"
-    response = jsonResponse
+-- | Undocumented member.
+dcrsCacheDirtyPercentage :: Lens' DescribeCacheResponse (Maybe Double)
+dcrsCacheDirtyPercentage = lens _dcrsCacheDirtyPercentage (\ s a -> s{_dcrsCacheDirtyPercentage = a});
 
-instance FromJSON DescribeCacheResponse where
-    parseJSON = withObject "DescribeCacheResponse" $ \o -> DescribeCacheResponse
-        <$> o .:? "CacheAllocatedInBytes"
-        <*> o .:? "CacheDirtyPercentage"
-        <*> o .:? "CacheHitPercentage"
-        <*> o .:? "CacheMissPercentage"
-        <*> o .:? "CacheUsedPercentage"
-        <*> o .:? "DiskIds" .!= mempty
-        <*> o .:? "GatewayARN"
+-- | The response status code.
+dcrsStatus :: Lens' DescribeCacheResponse Int
+dcrsStatus = lens _dcrsStatus (\ s a -> s{_dcrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeCachediSCSIVolumes.hs b/gen/Network/AWS/StorageGateway/DescribeCachediSCSIVolumes.hs
--- a/gen/Network/AWS/StorageGateway/DescribeCachediSCSIVolumes.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeCachediSCSIVolumes.hs
@@ -1,134 +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.StorageGateway.DescribeCachediSCSIVolumes
--- 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 operation returns a description of the gateway volumes specified in the
--- request. This operation is supported only for the gateway-cached volume
--- architecture.
+-- This operation returns a description of the gateway volumes specified in
+-- the request. This operation is supported only for the gateway-cached
+-- volume architecture.
 --
--- The list of gateway volumes in the request must be from one gateway. In the
--- response Amazon Storage Gateway returns volume information sorted by volume
--- Amazon Resource Name (ARN).
+-- The list of gateway volumes in the request must be from one gateway. In
+-- the response Amazon Storage Gateway returns volume information sorted by
+-- volume Amazon Resource Name (ARN).
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeCachediSCSIVolumes.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeCachediSCSIVolumes.html AWS API Reference> for DescribeCachediSCSIVolumes.
 module Network.AWS.StorageGateway.DescribeCachediSCSIVolumes
     (
-    -- * Request
-      DescribeCachediSCSIVolumes
-    -- ** Request constructor
-    , describeCachediSCSIVolumes
-    -- ** Request lenses
+    -- * Creating a Request
+      describeCachediSCSIVolumes
+    , DescribeCachediSCSIVolumes
+    -- * Request Lenses
     , dcscsivVolumeARNs
 
-    -- * Response
-    , DescribeCachediSCSIVolumesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCachediSCSIVolumesResponse
-    -- ** Response lenses
-    , dcscsivrCachediSCSIVolumes
+    , DescribeCachediSCSIVolumesResponse
+    -- * Response Lenses
+    , dcscsivrsCachediSCSIVolumes
+    , dcscsivrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-newtype DescribeCachediSCSIVolumes = DescribeCachediSCSIVolumes
-    { _dcscsivVolumeARNs :: List "VolumeARNs" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeCachediSCSIVolumes where
-    type Item DescribeCachediSCSIVolumes = Text
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-    fromList = DescribeCachediSCSIVolumes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcscsivVolumeARNs
+-- | /See:/ 'describeCachediSCSIVolumes' smart constructor.
+newtype DescribeCachediSCSIVolumes = DescribeCachediSCSIVolumes'
+    { _dcscsivVolumeARNs :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeCachediSCSIVolumes' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeCachediSCSIVolumes' with the minimum fields required to make a request.
 --
--- * 'dcscsivVolumeARNs' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeCachediSCSIVolumes :: DescribeCachediSCSIVolumes
-describeCachediSCSIVolumes = DescribeCachediSCSIVolumes
+-- * 'dcscsivVolumeARNs'
+describeCachediSCSIVolumes
+    :: DescribeCachediSCSIVolumes
+describeCachediSCSIVolumes =
+    DescribeCachediSCSIVolumes'
     { _dcscsivVolumeARNs = mempty
     }
 
+-- | Undocumented member.
 dcscsivVolumeARNs :: Lens' DescribeCachediSCSIVolumes [Text]
-dcscsivVolumeARNs =
-    lens _dcscsivVolumeARNs (\s a -> s { _dcscsivVolumeARNs = a })
-        . _List
+dcscsivVolumeARNs = lens _dcscsivVolumeARNs (\ s a -> s{_dcscsivVolumeARNs = a}) . _Coerce;
 
-newtype DescribeCachediSCSIVolumesResponse = DescribeCachediSCSIVolumesResponse
-    { _dcscsivrCachediSCSIVolumes :: List "CachediSCSIVolumes" CachediSCSIVolume
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeCachediSCSIVolumes where
+        type Sv DescribeCachediSCSIVolumes = StorageGateway
+        type Rs DescribeCachediSCSIVolumes =
+             DescribeCachediSCSIVolumesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCachediSCSIVolumesResponse' <$>
+                   (x .?> "CachediSCSIVolumes" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeCachediSCSIVolumesResponse where
-    type Item DescribeCachediSCSIVolumesResponse = CachediSCSIVolume
+instance ToHeaders DescribeCachediSCSIVolumes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeCachediSCSIVolumes"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeCachediSCSIVolumesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dcscsivrCachediSCSIVolumes
+instance ToJSON DescribeCachediSCSIVolumes where
+        toJSON DescribeCachediSCSIVolumes'{..}
+          = object ["VolumeARNs" .= _dcscsivVolumeARNs]
 
--- | 'DescribeCachediSCSIVolumesResponse' constructor.
+instance ToPath DescribeCachediSCSIVolumes where
+        toPath = const "/"
+
+instance ToQuery DescribeCachediSCSIVolumes where
+        toQuery = const mempty
+
+-- | A JSON object containing the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeCachediSCSIVolumesResponse' smart constructor.
+data DescribeCachediSCSIVolumesResponse = DescribeCachediSCSIVolumesResponse'
+    { _dcscsivrsCachediSCSIVolumes :: !(Maybe [CachediSCSIVolume])
+    , _dcscsivrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeCachediSCSIVolumesResponse' with the minimum fields required to make a request.
 --
--- * 'dcscsivrCachediSCSIVolumes' @::@ ['CachediSCSIVolume']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeCachediSCSIVolumesResponse :: DescribeCachediSCSIVolumesResponse
-describeCachediSCSIVolumesResponse = DescribeCachediSCSIVolumesResponse
-    { _dcscsivrCachediSCSIVolumes = mempty
+-- * 'dcscsivrsCachediSCSIVolumes'
+--
+-- * 'dcscsivrsStatus'
+describeCachediSCSIVolumesResponse
+    :: Int -- ^ 'dcscsivrsStatus'
+    -> DescribeCachediSCSIVolumesResponse
+describeCachediSCSIVolumesResponse pStatus_ =
+    DescribeCachediSCSIVolumesResponse'
+    { _dcscsivrsCachediSCSIVolumes = Nothing
+    , _dcscsivrsStatus = pStatus_
     }
 
 -- | An array of objects where each object contains metadata about one cached
 -- volume.
-dcscsivrCachediSCSIVolumes :: Lens' DescribeCachediSCSIVolumesResponse [CachediSCSIVolume]
-dcscsivrCachediSCSIVolumes =
-    lens _dcscsivrCachediSCSIVolumes
-        (\s a -> s { _dcscsivrCachediSCSIVolumes = a })
-            . _List
-
-instance ToPath DescribeCachediSCSIVolumes where
-    toPath = const "/"
-
-instance ToQuery DescribeCachediSCSIVolumes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeCachediSCSIVolumes
-
-instance ToJSON DescribeCachediSCSIVolumes where
-    toJSON DescribeCachediSCSIVolumes{..} = object
-        [ "VolumeARNs" .= _dcscsivVolumeARNs
-        ]
-
-instance AWSRequest DescribeCachediSCSIVolumes where
-    type Sv DescribeCachediSCSIVolumes = StorageGateway
-    type Rs DescribeCachediSCSIVolumes = DescribeCachediSCSIVolumesResponse
-
-    request  = post "DescribeCachediSCSIVolumes"
-    response = jsonResponse
+dcscsivrsCachediSCSIVolumes :: Lens' DescribeCachediSCSIVolumesResponse [CachediSCSIVolume]
+dcscsivrsCachediSCSIVolumes = lens _dcscsivrsCachediSCSIVolumes (\ s a -> s{_dcscsivrsCachediSCSIVolumes = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeCachediSCSIVolumesResponse where
-    parseJSON = withObject "DescribeCachediSCSIVolumesResponse" $ \o -> DescribeCachediSCSIVolumesResponse
-        <$> o .:? "CachediSCSIVolumes" .!= mempty
+-- | The response status code.
+dcscsivrsStatus :: Lens' DescribeCachediSCSIVolumesResponse Int
+dcscsivrsStatus = lens _dcscsivrsStatus (\ s a -> s{_dcscsivrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeChapCredentials.hs b/gen/Network/AWS/StorageGateway/DescribeChapCredentials.hs
--- a/gen/Network/AWS/StorageGateway/DescribeChapCredentials.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeChapCredentials.hs
@@ -1,137 +1,154 @@
-{-# 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.StorageGateway.DescribeChapCredentials
--- 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 operation returns an array of Challenge-Handshake Authentication
--- Protocol (CHAP) credentials information for a specified iSCSI target, one for
--- each target-initiator pair.
+-- This operation returns an array of Challenge-Handshake Authentication
+-- Protocol (CHAP) credentials information for a specified iSCSI target,
+-- one for each target-initiator pair.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeChapCredentials.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeChapCredentials.html AWS API Reference> for DescribeChapCredentials.
 module Network.AWS.StorageGateway.DescribeChapCredentials
     (
-    -- * Request
-      DescribeChapCredentials
-    -- ** Request constructor
-    , describeChapCredentials
-    -- ** Request lenses
+    -- * Creating a Request
+      describeChapCredentials
+    , DescribeChapCredentials
+    -- * Request Lenses
     , dccTargetARN
 
-    -- * Response
-    , DescribeChapCredentialsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeChapCredentialsResponse
-    -- ** Response lenses
-    , dccrChapCredentials
+    , DescribeChapCredentialsResponse
+    -- * Response Lenses
+    , dccrsChapCredentials
+    , dccrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeChapCredentials = DescribeChapCredentials
+-- | A JSON object containing the Amazon Resource Name (ARN) of the iSCSI
+-- volume target.
+--
+-- /See:/ 'describeChapCredentials' smart constructor.
+newtype DescribeChapCredentials = DescribeChapCredentials'
     { _dccTargetARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeChapCredentials' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeChapCredentials' with the minimum fields required to make a request.
 --
--- * 'dccTargetARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeChapCredentials :: Text -- ^ 'dccTargetARN'
-                        -> DescribeChapCredentials
-describeChapCredentials p1 = DescribeChapCredentials
-    { _dccTargetARN = p1
+-- * 'dccTargetARN'
+describeChapCredentials
+    :: Text -- ^ 'dccTargetARN'
+    -> DescribeChapCredentials
+describeChapCredentials pTargetARN_ =
+    DescribeChapCredentials'
+    { _dccTargetARN = pTargetARN_
     }
 
--- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the 'DescribeStorediSCSIVolumes' operation to return to retrieve the TargetARN for specified VolumeARN.
+-- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
+-- DescribeStorediSCSIVolumes operation to return to retrieve the TargetARN
+-- for specified VolumeARN.
 dccTargetARN :: Lens' DescribeChapCredentials Text
-dccTargetARN = lens _dccTargetARN (\s a -> s { _dccTargetARN = a })
+dccTargetARN = lens _dccTargetARN (\ s a -> s{_dccTargetARN = a});
 
-newtype DescribeChapCredentialsResponse = DescribeChapCredentialsResponse
-    { _dccrChapCredentials :: List "ChapCredentials" ChapInfo
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest DescribeChapCredentials where
+        type Sv DescribeChapCredentials = StorageGateway
+        type Rs DescribeChapCredentials =
+             DescribeChapCredentialsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeChapCredentialsResponse' <$>
+                   (x .?> "ChapCredentials" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
-instance GHC.Exts.IsList DescribeChapCredentialsResponse where
-    type Item DescribeChapCredentialsResponse = ChapInfo
+instance ToHeaders DescribeChapCredentials where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeChapCredentials" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeChapCredentialsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dccrChapCredentials
+instance ToJSON DescribeChapCredentials where
+        toJSON DescribeChapCredentials'{..}
+          = object ["TargetARN" .= _dccTargetARN]
 
--- | 'DescribeChapCredentialsResponse' constructor.
+instance ToPath DescribeChapCredentials where
+        toPath = const "/"
+
+instance ToQuery DescribeChapCredentials where
+        toQuery = const mempty
+
+-- | A JSON object containing a .
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeChapCredentialsResponse' smart constructor.
+data DescribeChapCredentialsResponse = DescribeChapCredentialsResponse'
+    { _dccrsChapCredentials :: !(Maybe [ChapInfo])
+    , _dccrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeChapCredentialsResponse' with the minimum fields required to make a request.
 --
--- * 'dccrChapCredentials' @::@ ['ChapInfo']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeChapCredentialsResponse :: DescribeChapCredentialsResponse
-describeChapCredentialsResponse = DescribeChapCredentialsResponse
-    { _dccrChapCredentials = mempty
+-- * 'dccrsChapCredentials'
+--
+-- * 'dccrsStatus'
+describeChapCredentialsResponse
+    :: Int -- ^ 'dccrsStatus'
+    -> DescribeChapCredentialsResponse
+describeChapCredentialsResponse pStatus_ =
+    DescribeChapCredentialsResponse'
+    { _dccrsChapCredentials = Nothing
+    , _dccrsStatus = pStatus_
     }
 
--- | An array of 'ChapInfo' objects that represent CHAP credentials. Each object in
--- the array contains CHAP credential information for one target-initiator pair.
--- If no CHAP credentials are set, an empty array is returned. CHAP credential
--- information is provided in a JSON object with the following fields:
---
--- InitiatorName: The iSCSI initiator that connects to the target.
+-- | An array of ChapInfo objects that represent CHAP credentials. Each
+-- object in the array contains CHAP credential information for one
+-- target-initiator pair. If no CHAP credentials are set, an empty array is
+-- returned. CHAP credential information is provided in a JSON object with
+-- the following fields:
 --
--- SecretToAuthenticateInitiator: The secret key that the initiator (e.g.
--- Windows client) must provide to participate in mutual CHAP with the target.
+-- -   __InitiatorName__: The iSCSI initiator that connects to the target.
 --
--- SecretToAuthenticateTarget: The secret key that the target must provide to
--- participate in mutual CHAP with the initiator (e.g. Windows client).
+-- -   __SecretToAuthenticateInitiator__: The secret key that the initiator
+--     (for example, the Windows client) must provide to participate in
+--     mutual CHAP with the target.
 --
--- TargetARN: The Amazon Resource Name (ARN) of the storage volume.
+-- -   __SecretToAuthenticateTarget__: The secret key that the target must
+--     provide to participate in mutual CHAP with the initiator (e.g.
+--     Windows client).
 --
+-- -   __TargetARN__: The Amazon Resource Name (ARN) of the storage volume.
 --
-dccrChapCredentials :: Lens' DescribeChapCredentialsResponse [ChapInfo]
-dccrChapCredentials =
-    lens _dccrChapCredentials (\s a -> s { _dccrChapCredentials = a })
-        . _List
-
-instance ToPath DescribeChapCredentials where
-    toPath = const "/"
-
-instance ToQuery DescribeChapCredentials where
-    toQuery = const mempty
-
-instance ToHeaders DescribeChapCredentials
-
-instance ToJSON DescribeChapCredentials where
-    toJSON DescribeChapCredentials{..} = object
-        [ "TargetARN" .= _dccTargetARN
-        ]
-
-instance AWSRequest DescribeChapCredentials where
-    type Sv DescribeChapCredentials = StorageGateway
-    type Rs DescribeChapCredentials = DescribeChapCredentialsResponse
-
-    request  = post "DescribeChapCredentials"
-    response = jsonResponse
+dccrsChapCredentials :: Lens' DescribeChapCredentialsResponse [ChapInfo]
+dccrsChapCredentials = lens _dccrsChapCredentials (\ s a -> s{_dccrsChapCredentials = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeChapCredentialsResponse where
-    parseJSON = withObject "DescribeChapCredentialsResponse" $ \o -> DescribeChapCredentialsResponse
-        <$> o .:? "ChapCredentials" .!= mempty
+-- | The response status code.
+dccrsStatus :: Lens' DescribeChapCredentialsResponse Int
+dccrsStatus = lens _dccrsStatus (\ s a -> s{_dccrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs b/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
--- a/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeGatewayInformation.hs
@@ -1,182 +1,210 @@
-{-# 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.StorageGateway.DescribeGatewayInformation
--- 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 operation returns metadata about a gateway such as its name, network
--- interfaces, configured time zone, and the state (whether the gateway is
--- running or not). To specify which gateway to describe, use the Amazon
--- Resource Name (ARN) of the gateway in your request.
+-- This operation returns metadata about a gateway such as its name,
+-- network interfaces, configured time zone, and the state (whether the
+-- gateway is running or not). To specify which gateway to describe, use
+-- the Amazon Resource Name (ARN) of the gateway in your request.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeGatewayInformation.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeGatewayInformation.html AWS API Reference> for DescribeGatewayInformation.
 module Network.AWS.StorageGateway.DescribeGatewayInformation
     (
-    -- * Request
-      DescribeGatewayInformation
-    -- ** Request constructor
-    , describeGatewayInformation
-    -- ** Request lenses
+    -- * Creating a Request
+      describeGatewayInformation
+    , DescribeGatewayInformation
+    -- * Request Lenses
     , dgiGatewayARN
 
-    -- * Response
-    , DescribeGatewayInformationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeGatewayInformationResponse
-    -- ** Response lenses
-    , dgirGatewayARN
-    , dgirGatewayId
-    , dgirGatewayNetworkInterfaces
-    , dgirGatewayState
-    , dgirGatewayTimezone
-    , dgirGatewayType
-    , dgirNextUpdateAvailabilityDate
+    , DescribeGatewayInformationResponse
+    -- * Response Lenses
+    , dgirsGatewayState
+    , dgirsGatewayARN
+    , dgirsGatewayNetworkInterfaces
+    , dgirsNextUpdateAvailabilityDate
+    , dgirsLastSoftwareUpdate
+    , dgirsGatewayId
+    , dgirsGatewayType
+    , dgirsGatewayTimezone
+    , dgirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeGatewayInformation = DescribeGatewayInformation
+-- | A JSON object containing the id of the gateway.
+--
+-- /See:/ 'describeGatewayInformation' smart constructor.
+newtype DescribeGatewayInformation = DescribeGatewayInformation'
     { _dgiGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeGatewayInformation' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeGatewayInformation' with the minimum fields required to make a request.
 --
--- * 'dgiGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeGatewayInformation :: Text -- ^ 'dgiGatewayARN'
-                           -> DescribeGatewayInformation
-describeGatewayInformation p1 = DescribeGatewayInformation
-    { _dgiGatewayARN = p1
+-- * 'dgiGatewayARN'
+describeGatewayInformation
+    :: Text -- ^ 'dgiGatewayARN'
+    -> DescribeGatewayInformation
+describeGatewayInformation pGatewayARN_ =
+    DescribeGatewayInformation'
+    { _dgiGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dgiGatewayARN :: Lens' DescribeGatewayInformation Text
-dgiGatewayARN = lens _dgiGatewayARN (\s a -> s { _dgiGatewayARN = a })
+dgiGatewayARN = lens _dgiGatewayARN (\ s a -> s{_dgiGatewayARN = a});
 
-data DescribeGatewayInformationResponse = DescribeGatewayInformationResponse
-    { _dgirGatewayARN                 :: Maybe Text
-    , _dgirGatewayId                  :: Maybe Text
-    , _dgirGatewayNetworkInterfaces   :: List "GatewayNetworkInterfaces" NetworkInterface
-    , _dgirGatewayState               :: Maybe Text
-    , _dgirGatewayTimezone            :: Maybe Text
-    , _dgirGatewayType                :: Maybe Text
-    , _dgirNextUpdateAvailabilityDate :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeGatewayInformation where
+        type Sv DescribeGatewayInformation = StorageGateway
+        type Rs DescribeGatewayInformation =
+             DescribeGatewayInformationResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeGatewayInformationResponse' <$>
+                   (x .?> "GatewayState") <*> (x .?> "GatewayARN") <*>
+                     (x .?> "GatewayNetworkInterfaces" .!@ mempty)
+                     <*> (x .?> "NextUpdateAvailabilityDate")
+                     <*> (x .?> "LastSoftwareUpdate")
+                     <*> (x .?> "GatewayId")
+                     <*> (x .?> "GatewayType")
+                     <*> (x .?> "GatewayTimezone")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeGatewayInformationResponse' constructor.
+instance ToHeaders DescribeGatewayInformation where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeGatewayInformation"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeGatewayInformation where
+        toJSON DescribeGatewayInformation'{..}
+          = object ["GatewayARN" .= _dgiGatewayARN]
+
+instance ToPath DescribeGatewayInformation where
+        toPath = const "/"
+
+instance ToQuery DescribeGatewayInformation where
+        toQuery = const mempty
+
+-- | A JSON object containing the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeGatewayInformationResponse' smart constructor.
+data DescribeGatewayInformationResponse = DescribeGatewayInformationResponse'
+    { _dgirsGatewayState               :: !(Maybe Text)
+    , _dgirsGatewayARN                 :: !(Maybe Text)
+    , _dgirsGatewayNetworkInterfaces   :: !(Maybe [NetworkInterface])
+    , _dgirsNextUpdateAvailabilityDate :: !(Maybe Text)
+    , _dgirsLastSoftwareUpdate         :: !(Maybe Text)
+    , _dgirsGatewayId                  :: !(Maybe Text)
+    , _dgirsGatewayType                :: !(Maybe Text)
+    , _dgirsGatewayTimezone            :: !(Maybe Text)
+    , _dgirsStatus                     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeGatewayInformationResponse' with the minimum fields required to make a request.
 --
--- * 'dgirGatewayARN' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dgirGatewayId' @::@ 'Maybe' 'Text'
+-- * 'dgirsGatewayState'
 --
--- * 'dgirGatewayNetworkInterfaces' @::@ ['NetworkInterface']
+-- * 'dgirsGatewayARN'
 --
--- * 'dgirGatewayState' @::@ 'Maybe' 'Text'
+-- * 'dgirsGatewayNetworkInterfaces'
 --
--- * 'dgirGatewayTimezone' @::@ 'Maybe' 'Text'
+-- * 'dgirsNextUpdateAvailabilityDate'
 --
--- * 'dgirGatewayType' @::@ 'Maybe' 'Text'
+-- * 'dgirsLastSoftwareUpdate'
 --
--- * 'dgirNextUpdateAvailabilityDate' @::@ 'Maybe' 'Text'
+-- * 'dgirsGatewayId'
 --
-describeGatewayInformationResponse :: DescribeGatewayInformationResponse
-describeGatewayInformationResponse = DescribeGatewayInformationResponse
-    { _dgirGatewayARN                 = Nothing
-    , _dgirGatewayId                  = Nothing
-    , _dgirGatewayTimezone            = Nothing
-    , _dgirGatewayState               = Nothing
-    , _dgirGatewayNetworkInterfaces   = mempty
-    , _dgirGatewayType                = Nothing
-    , _dgirNextUpdateAvailabilityDate = Nothing
+-- * 'dgirsGatewayType'
+--
+-- * 'dgirsGatewayTimezone'
+--
+-- * 'dgirsStatus'
+describeGatewayInformationResponse
+    :: Int -- ^ 'dgirsStatus'
+    -> DescribeGatewayInformationResponse
+describeGatewayInformationResponse pStatus_ =
+    DescribeGatewayInformationResponse'
+    { _dgirsGatewayState = Nothing
+    , _dgirsGatewayARN = Nothing
+    , _dgirsGatewayNetworkInterfaces = Nothing
+    , _dgirsNextUpdateAvailabilityDate = Nothing
+    , _dgirsLastSoftwareUpdate = Nothing
+    , _dgirsGatewayId = Nothing
+    , _dgirsGatewayType = Nothing
+    , _dgirsGatewayTimezone = Nothing
+    , _dgirsStatus = pStatus_
     }
 
-dgirGatewayARN :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirGatewayARN = lens _dgirGatewayARN (\s a -> s { _dgirGatewayARN = a })
-
--- | The gateway ID.
-dgirGatewayId :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirGatewayId = lens _dgirGatewayId (\s a -> s { _dgirGatewayId = a })
-
--- | A 'NetworkInterface' array that contains descriptions of the gateway network
--- interfaces.
-dgirGatewayNetworkInterfaces :: Lens' DescribeGatewayInformationResponse [NetworkInterface]
-dgirGatewayNetworkInterfaces =
-    lens _dgirGatewayNetworkInterfaces
-        (\s a -> s { _dgirGatewayNetworkInterfaces = a })
-            . _List
-
 -- | One of the values that indicates the operating state of the gateway.
-dgirGatewayState :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirGatewayState = lens _dgirGatewayState (\s a -> s { _dgirGatewayState = a })
-
--- | One of the values that indicates the time zone configured for the gateway.
-dgirGatewayTimezone :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirGatewayTimezone =
-    lens _dgirGatewayTimezone (\s a -> s { _dgirGatewayTimezone = a })
-
--- | TBD
-dgirGatewayType :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirGatewayType = lens _dgirGatewayType (\s a -> s { _dgirGatewayType = a })
+dgirsGatewayState :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayState = lens _dgirsGatewayState (\ s a -> s{_dgirsGatewayState = a});
 
--- | The date at which an update to the gateway is available. This date is in the
--- time zone of the gateway. If the gateway is not available for an update this
--- field is not returned in the response.
-dgirNextUpdateAvailabilityDate :: Lens' DescribeGatewayInformationResponse (Maybe Text)
-dgirNextUpdateAvailabilityDate =
-    lens _dgirNextUpdateAvailabilityDate
-        (\s a -> s { _dgirNextUpdateAvailabilityDate = a })
+-- | Undocumented member.
+dgirsGatewayARN :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayARN = lens _dgirsGatewayARN (\ s a -> s{_dgirsGatewayARN = a});
 
-instance ToPath DescribeGatewayInformation where
-    toPath = const "/"
+-- | A NetworkInterface array that contains descriptions of the gateway
+-- network interfaces.
+dgirsGatewayNetworkInterfaces :: Lens' DescribeGatewayInformationResponse [NetworkInterface]
+dgirsGatewayNetworkInterfaces = lens _dgirsGatewayNetworkInterfaces (\ s a -> s{_dgirsGatewayNetworkInterfaces = a}) . _Default . _Coerce;
 
-instance ToQuery DescribeGatewayInformation where
-    toQuery = const mempty
+-- | The date on which an update to the gateway is available. This date is in
+-- the time zone of the gateway. If the gateway is not available for an
+-- update this field is not returned in the response.
+dgirsNextUpdateAvailabilityDate :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsNextUpdateAvailabilityDate = lens _dgirsNextUpdateAvailabilityDate (\ s a -> s{_dgirsNextUpdateAvailabilityDate = a});
 
-instance ToHeaders DescribeGatewayInformation
+-- | The date on which the last software update was applied to the gateway.
+-- If the gateway has never been updated, this field does not return a
+-- value in the response.
+dgirsLastSoftwareUpdate :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsLastSoftwareUpdate = lens _dgirsLastSoftwareUpdate (\ s a -> s{_dgirsLastSoftwareUpdate = a});
 
-instance ToJSON DescribeGatewayInformation where
-    toJSON DescribeGatewayInformation{..} = object
-        [ "GatewayARN" .= _dgiGatewayARN
-        ]
+-- | The gateway ID.
+dgirsGatewayId :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayId = lens _dgirsGatewayId (\ s a -> s{_dgirsGatewayId = a});
 
-instance AWSRequest DescribeGatewayInformation where
-    type Sv DescribeGatewayInformation = StorageGateway
-    type Rs DescribeGatewayInformation = DescribeGatewayInformationResponse
+-- | The type of the gateway.
+dgirsGatewayType :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayType = lens _dgirsGatewayType (\ s a -> s{_dgirsGatewayType = a});
 
-    request  = post "DescribeGatewayInformation"
-    response = jsonResponse
+-- | One of the values that indicates the time zone configured for the
+-- gateway.
+dgirsGatewayTimezone :: Lens' DescribeGatewayInformationResponse (Maybe Text)
+dgirsGatewayTimezone = lens _dgirsGatewayTimezone (\ s a -> s{_dgirsGatewayTimezone = a});
 
-instance FromJSON DescribeGatewayInformationResponse where
-    parseJSON = withObject "DescribeGatewayInformationResponse" $ \o -> DescribeGatewayInformationResponse
-        <$> o .:? "GatewayARN"
-        <*> o .:? "GatewayId"
-        <*> o .:? "GatewayNetworkInterfaces" .!= mempty
-        <*> o .:? "GatewayState"
-        <*> o .:? "GatewayTimezone"
-        <*> o .:? "GatewayType"
-        <*> o .:? "NextUpdateAvailabilityDate"
+-- | The response status code.
+dgirsStatus :: Lens' DescribeGatewayInformationResponse Int
+dgirsStatus = lens _dgirsStatus (\ s a -> s{_dgirsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeMaintenanceStartTime.hs b/gen/Network/AWS/StorageGateway/DescribeMaintenanceStartTime.hs
--- a/gen/Network/AWS/StorageGateway/DescribeMaintenanceStartTime.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeMaintenanceStartTime.hs
@@ -1,150 +1,172 @@
-{-# 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.StorageGateway.DescribeMaintenanceStartTime
--- 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 operation returns your gateway's weekly maintenance start time including
--- the day and time of the week. Note that values are in terms of the gateway's
--- time zone.
+-- This operation returns your gateway\'s weekly maintenance start time
+-- including the day and time of the week. Note that values are in terms of
+-- the gateway\'s time zone.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeMaintenanceStartTime.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeMaintenanceStartTime.html AWS API Reference> for DescribeMaintenanceStartTime.
 module Network.AWS.StorageGateway.DescribeMaintenanceStartTime
     (
-    -- * Request
-      DescribeMaintenanceStartTime
-    -- ** Request constructor
-    , describeMaintenanceStartTime
-    -- ** Request lenses
+    -- * Creating a Request
+      describeMaintenanceStartTime
+    , DescribeMaintenanceStartTime
+    -- * Request Lenses
     , dmstGatewayARN
 
-    -- * Response
-    , DescribeMaintenanceStartTimeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeMaintenanceStartTimeResponse
-    -- ** Response lenses
-    , dmstrDayOfWeek
-    , dmstrGatewayARN
-    , dmstrHourOfDay
-    , dmstrMinuteOfHour
-    , dmstrTimezone
+    , DescribeMaintenanceStartTimeResponse
+    -- * Response Lenses
+    , dmstrsGatewayARN
+    , dmstrsMinuteOfHour
+    , dmstrsHourOfDay
+    , dmstrsTimezone
+    , dmstrsDayOfWeek
+    , dmstrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeMaintenanceStartTime = DescribeMaintenanceStartTime
+-- | A JSON object containing the of the gateway.
+--
+-- /See:/ 'describeMaintenanceStartTime' smart constructor.
+newtype DescribeMaintenanceStartTime = DescribeMaintenanceStartTime'
     { _dmstGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeMaintenanceStartTime' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeMaintenanceStartTime' with the minimum fields required to make a request.
 --
--- * 'dmstGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeMaintenanceStartTime :: Text -- ^ 'dmstGatewayARN'
-                             -> DescribeMaintenanceStartTime
-describeMaintenanceStartTime p1 = DescribeMaintenanceStartTime
-    { _dmstGatewayARN = p1
+-- * 'dmstGatewayARN'
+describeMaintenanceStartTime
+    :: Text -- ^ 'dmstGatewayARN'
+    -> DescribeMaintenanceStartTime
+describeMaintenanceStartTime pGatewayARN_ =
+    DescribeMaintenanceStartTime'
+    { _dmstGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dmstGatewayARN :: Lens' DescribeMaintenanceStartTime Text
-dmstGatewayARN = lens _dmstGatewayARN (\s a -> s { _dmstGatewayARN = a })
+dmstGatewayARN = lens _dmstGatewayARN (\ s a -> s{_dmstGatewayARN = a});
 
-data DescribeMaintenanceStartTimeResponse = DescribeMaintenanceStartTimeResponse
-    { _dmstrDayOfWeek    :: Maybe Nat
-    , _dmstrGatewayARN   :: Maybe Text
-    , _dmstrHourOfDay    :: Maybe Nat
-    , _dmstrMinuteOfHour :: Maybe Nat
-    , _dmstrTimezone     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest DescribeMaintenanceStartTime
+         where
+        type Sv DescribeMaintenanceStartTime = StorageGateway
+        type Rs DescribeMaintenanceStartTime =
+             DescribeMaintenanceStartTimeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeMaintenanceStartTimeResponse' <$>
+                   (x .?> "GatewayARN") <*> (x .?> "MinuteOfHour") <*>
+                     (x .?> "HourOfDay")
+                     <*> (x .?> "Timezone")
+                     <*> (x .?> "DayOfWeek")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeMaintenanceStartTimeResponse' constructor.
+instance ToHeaders DescribeMaintenanceStartTime where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeMaintenanceStartTime"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeMaintenanceStartTime where
+        toJSON DescribeMaintenanceStartTime'{..}
+          = object ["GatewayARN" .= _dmstGatewayARN]
+
+instance ToPath DescribeMaintenanceStartTime where
+        toPath = const "/"
+
+instance ToQuery DescribeMaintenanceStartTime where
+        toQuery = const mempty
+
+-- | /See:/ 'describeMaintenanceStartTimeResponse' smart constructor.
+data DescribeMaintenanceStartTimeResponse = DescribeMaintenanceStartTimeResponse'
+    { _dmstrsGatewayARN   :: !(Maybe Text)
+    , _dmstrsMinuteOfHour :: !(Maybe Nat)
+    , _dmstrsHourOfDay    :: !(Maybe Nat)
+    , _dmstrsTimezone     :: !(Maybe Text)
+    , _dmstrsDayOfWeek    :: !(Maybe Nat)
+    , _dmstrsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeMaintenanceStartTimeResponse' 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:
 --
--- * 'dmstrDayOfWeek' @::@ 'Maybe' 'Natural'
+-- * 'dmstrsGatewayARN'
 --
--- * 'dmstrGatewayARN' @::@ 'Maybe' 'Text'
+-- * 'dmstrsMinuteOfHour'
 --
--- * 'dmstrHourOfDay' @::@ 'Maybe' 'Natural'
+-- * 'dmstrsHourOfDay'
 --
--- * 'dmstrMinuteOfHour' @::@ 'Maybe' 'Natural'
+-- * 'dmstrsTimezone'
 --
--- * 'dmstrTimezone' @::@ 'Maybe' 'Text'
+-- * 'dmstrsDayOfWeek'
 --
-describeMaintenanceStartTimeResponse :: DescribeMaintenanceStartTimeResponse
-describeMaintenanceStartTimeResponse = DescribeMaintenanceStartTimeResponse
-    { _dmstrGatewayARN   = Nothing
-    , _dmstrHourOfDay    = Nothing
-    , _dmstrMinuteOfHour = Nothing
-    , _dmstrDayOfWeek    = Nothing
-    , _dmstrTimezone     = Nothing
+-- * 'dmstrsStatus'
+describeMaintenanceStartTimeResponse
+    :: Int -- ^ 'dmstrsStatus'
+    -> DescribeMaintenanceStartTimeResponse
+describeMaintenanceStartTimeResponse pStatus_ =
+    DescribeMaintenanceStartTimeResponse'
+    { _dmstrsGatewayARN = Nothing
+    , _dmstrsMinuteOfHour = Nothing
+    , _dmstrsHourOfDay = Nothing
+    , _dmstrsTimezone = Nothing
+    , _dmstrsDayOfWeek = Nothing
+    , _dmstrsStatus = pStatus_
     }
 
-dmstrDayOfWeek :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
-dmstrDayOfWeek = lens _dmstrDayOfWeek (\s a -> s { _dmstrDayOfWeek = a }) . mapping _Nat
-
-dmstrGatewayARN :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Text)
-dmstrGatewayARN = lens _dmstrGatewayARN (\s a -> s { _dmstrGatewayARN = a })
-
-dmstrHourOfDay :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
-dmstrHourOfDay = lens _dmstrHourOfDay (\s a -> s { _dmstrHourOfDay = a }) . mapping _Nat
-
-dmstrMinuteOfHour :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
-dmstrMinuteOfHour =
-    lens _dmstrMinuteOfHour (\s a -> s { _dmstrMinuteOfHour = a })
-        . mapping _Nat
-
-dmstrTimezone :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Text)
-dmstrTimezone = lens _dmstrTimezone (\s a -> s { _dmstrTimezone = a })
-
-instance ToPath DescribeMaintenanceStartTime where
-    toPath = const "/"
-
-instance ToQuery DescribeMaintenanceStartTime where
-    toQuery = const mempty
+-- | Undocumented member.
+dmstrsGatewayARN :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Text)
+dmstrsGatewayARN = lens _dmstrsGatewayARN (\ s a -> s{_dmstrsGatewayARN = a});
 
-instance ToHeaders DescribeMaintenanceStartTime
+-- | Undocumented member.
+dmstrsMinuteOfHour :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
+dmstrsMinuteOfHour = lens _dmstrsMinuteOfHour (\ s a -> s{_dmstrsMinuteOfHour = a}) . mapping _Nat;
 
-instance ToJSON DescribeMaintenanceStartTime where
-    toJSON DescribeMaintenanceStartTime{..} = object
-        [ "GatewayARN" .= _dmstGatewayARN
-        ]
+-- | Undocumented member.
+dmstrsHourOfDay :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
+dmstrsHourOfDay = lens _dmstrsHourOfDay (\ s a -> s{_dmstrsHourOfDay = a}) . mapping _Nat;
 
-instance AWSRequest DescribeMaintenanceStartTime where
-    type Sv DescribeMaintenanceStartTime = StorageGateway
-    type Rs DescribeMaintenanceStartTime = DescribeMaintenanceStartTimeResponse
+-- | Undocumented member.
+dmstrsTimezone :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Text)
+dmstrsTimezone = lens _dmstrsTimezone (\ s a -> s{_dmstrsTimezone = a});
 
-    request  = post "DescribeMaintenanceStartTime"
-    response = jsonResponse
+-- | Undocumented member.
+dmstrsDayOfWeek :: Lens' DescribeMaintenanceStartTimeResponse (Maybe Natural)
+dmstrsDayOfWeek = lens _dmstrsDayOfWeek (\ s a -> s{_dmstrsDayOfWeek = a}) . mapping _Nat;
 
-instance FromJSON DescribeMaintenanceStartTimeResponse where
-    parseJSON = withObject "DescribeMaintenanceStartTimeResponse" $ \o -> DescribeMaintenanceStartTimeResponse
-        <$> o .:? "DayOfWeek"
-        <*> o .:? "GatewayARN"
-        <*> o .:? "HourOfDay"
-        <*> o .:? "MinuteOfHour"
-        <*> o .:? "Timezone"
+-- | The response status code.
+dmstrsStatus :: Lens' DescribeMaintenanceStartTimeResponse Int
+dmstrsStatus = lens _dmstrsStatus (\ s a -> s{_dmstrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeSnapshotSchedule.hs b/gen/Network/AWS/StorageGateway/DescribeSnapshotSchedule.hs
--- a/gen/Network/AWS/StorageGateway/DescribeSnapshotSchedule.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeSnapshotSchedule.hs
@@ -1,152 +1,173 @@
-{-# 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.StorageGateway.DescribeSnapshotSchedule
--- 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 operation describes the snapshot schedule for the specified gateway
+-- This operation describes the snapshot schedule for the specified gateway
 -- volume. The snapshot schedule information includes intervals at which
 -- snapshots are automatically initiated on the volume.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeSnapshotSchedule.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeSnapshotSchedule.html AWS API Reference> for DescribeSnapshotSchedule.
 module Network.AWS.StorageGateway.DescribeSnapshotSchedule
     (
-    -- * Request
-      DescribeSnapshotSchedule
-    -- ** Request constructor
-    , describeSnapshotSchedule
-    -- ** Request lenses
+    -- * Creating a Request
+      describeSnapshotSchedule
+    , DescribeSnapshotSchedule
+    -- * Request Lenses
     , dssVolumeARN
 
-    -- * Response
-    , DescribeSnapshotScheduleResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeSnapshotScheduleResponse
-    -- ** Response lenses
-    , dssrDescription
-    , dssrRecurrenceInHours
-    , dssrStartAt
-    , dssrTimezone
-    , dssrVolumeARN
+    , DescribeSnapshotScheduleResponse
+    -- * Response Lenses
+    , dssrsVolumeARN
+    , dssrsStartAt
+    , dssrsRecurrenceInHours
+    , dssrsTimezone
+    , dssrsDescription
+    , dssrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeSnapshotSchedule = DescribeSnapshotSchedule
+-- | A JSON object containing the DescribeSnapshotScheduleInput$VolumeARN of
+-- the volume.
+--
+-- /See:/ 'describeSnapshotSchedule' smart constructor.
+newtype DescribeSnapshotSchedule = DescribeSnapshotSchedule'
     { _dssVolumeARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeSnapshotSchedule' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeSnapshotSchedule' with the minimum fields required to make a request.
 --
--- * 'dssVolumeARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeSnapshotSchedule :: Text -- ^ 'dssVolumeARN'
-                         -> DescribeSnapshotSchedule
-describeSnapshotSchedule p1 = DescribeSnapshotSchedule
-    { _dssVolumeARN = p1
+-- * 'dssVolumeARN'
+describeSnapshotSchedule
+    :: Text -- ^ 'dssVolumeARN'
+    -> DescribeSnapshotSchedule
+describeSnapshotSchedule pVolumeARN_ =
+    DescribeSnapshotSchedule'
+    { _dssVolumeARN = pVolumeARN_
     }
 
--- | The Amazon Resource Name (ARN) of the volume. Use the 'ListVolumes' operation
--- to return a list of gateway volumes.
+-- | The Amazon Resource Name (ARN) of the volume. Use the ListVolumes
+-- operation to return a list of gateway volumes.
 dssVolumeARN :: Lens' DescribeSnapshotSchedule Text
-dssVolumeARN = lens _dssVolumeARN (\s a -> s { _dssVolumeARN = a })
+dssVolumeARN = lens _dssVolumeARN (\ s a -> s{_dssVolumeARN = a});
 
-data DescribeSnapshotScheduleResponse = DescribeSnapshotScheduleResponse
-    { _dssrDescription       :: Maybe Text
-    , _dssrRecurrenceInHours :: Maybe Nat
-    , _dssrStartAt           :: Maybe Nat
-    , _dssrTimezone          :: Maybe Text
-    , _dssrVolumeARN         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest DescribeSnapshotSchedule where
+        type Sv DescribeSnapshotSchedule = StorageGateway
+        type Rs DescribeSnapshotSchedule =
+             DescribeSnapshotScheduleResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeSnapshotScheduleResponse' <$>
+                   (x .?> "VolumeARN") <*> (x .?> "StartAt") <*>
+                     (x .?> "RecurrenceInHours")
+                     <*> (x .?> "Timezone")
+                     <*> (x .?> "Description")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeSnapshotScheduleResponse' constructor.
+instance ToHeaders DescribeSnapshotSchedule where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeSnapshotSchedule"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeSnapshotSchedule where
+        toJSON DescribeSnapshotSchedule'{..}
+          = object ["VolumeARN" .= _dssVolumeARN]
+
+instance ToPath DescribeSnapshotSchedule where
+        toPath = const "/"
+
+instance ToQuery DescribeSnapshotSchedule where
+        toQuery = const mempty
+
+-- | /See:/ 'describeSnapshotScheduleResponse' smart constructor.
+data DescribeSnapshotScheduleResponse = DescribeSnapshotScheduleResponse'
+    { _dssrsVolumeARN         :: !(Maybe Text)
+    , _dssrsStartAt           :: !(Maybe Nat)
+    , _dssrsRecurrenceInHours :: !(Maybe Nat)
+    , _dssrsTimezone          :: !(Maybe Text)
+    , _dssrsDescription       :: !(Maybe Text)
+    , _dssrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeSnapshotScheduleResponse' 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:
 --
--- * 'dssrDescription' @::@ 'Maybe' 'Text'
+-- * 'dssrsVolumeARN'
 --
--- * 'dssrRecurrenceInHours' @::@ 'Maybe' 'Natural'
+-- * 'dssrsStartAt'
 --
--- * 'dssrStartAt' @::@ 'Maybe' 'Natural'
+-- * 'dssrsRecurrenceInHours'
 --
--- * 'dssrTimezone' @::@ 'Maybe' 'Text'
+-- * 'dssrsTimezone'
 --
--- * 'dssrVolumeARN' @::@ 'Maybe' 'Text'
+-- * 'dssrsDescription'
 --
-describeSnapshotScheduleResponse :: DescribeSnapshotScheduleResponse
-describeSnapshotScheduleResponse = DescribeSnapshotScheduleResponse
-    { _dssrVolumeARN         = Nothing
-    , _dssrStartAt           = Nothing
-    , _dssrRecurrenceInHours = Nothing
-    , _dssrDescription       = Nothing
-    , _dssrTimezone          = Nothing
+-- * 'dssrsStatus'
+describeSnapshotScheduleResponse
+    :: Int -- ^ 'dssrsStatus'
+    -> DescribeSnapshotScheduleResponse
+describeSnapshotScheduleResponse pStatus_ =
+    DescribeSnapshotScheduleResponse'
+    { _dssrsVolumeARN = Nothing
+    , _dssrsStartAt = Nothing
+    , _dssrsRecurrenceInHours = Nothing
+    , _dssrsTimezone = Nothing
+    , _dssrsDescription = Nothing
+    , _dssrsStatus = pStatus_
     }
 
-dssrDescription :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
-dssrDescription = lens _dssrDescription (\s a -> s { _dssrDescription = a })
-
-dssrRecurrenceInHours :: Lens' DescribeSnapshotScheduleResponse (Maybe Natural)
-dssrRecurrenceInHours =
-    lens _dssrRecurrenceInHours (\s a -> s { _dssrRecurrenceInHours = a })
-        . mapping _Nat
-
-dssrStartAt :: Lens' DescribeSnapshotScheduleResponse (Maybe Natural)
-dssrStartAt = lens _dssrStartAt (\s a -> s { _dssrStartAt = a }) . mapping _Nat
-
-dssrTimezone :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
-dssrTimezone = lens _dssrTimezone (\s a -> s { _dssrTimezone = a })
-
-dssrVolumeARN :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
-dssrVolumeARN = lens _dssrVolumeARN (\s a -> s { _dssrVolumeARN = a })
-
-instance ToPath DescribeSnapshotSchedule where
-    toPath = const "/"
-
-instance ToQuery DescribeSnapshotSchedule where
-    toQuery = const mempty
+-- | Undocumented member.
+dssrsVolumeARN :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
+dssrsVolumeARN = lens _dssrsVolumeARN (\ s a -> s{_dssrsVolumeARN = a});
 
-instance ToHeaders DescribeSnapshotSchedule
+-- | Undocumented member.
+dssrsStartAt :: Lens' DescribeSnapshotScheduleResponse (Maybe Natural)
+dssrsStartAt = lens _dssrsStartAt (\ s a -> s{_dssrsStartAt = a}) . mapping _Nat;
 
-instance ToJSON DescribeSnapshotSchedule where
-    toJSON DescribeSnapshotSchedule{..} = object
-        [ "VolumeARN" .= _dssVolumeARN
-        ]
+-- | Undocumented member.
+dssrsRecurrenceInHours :: Lens' DescribeSnapshotScheduleResponse (Maybe Natural)
+dssrsRecurrenceInHours = lens _dssrsRecurrenceInHours (\ s a -> s{_dssrsRecurrenceInHours = a}) . mapping _Nat;
 
-instance AWSRequest DescribeSnapshotSchedule where
-    type Sv DescribeSnapshotSchedule = StorageGateway
-    type Rs DescribeSnapshotSchedule = DescribeSnapshotScheduleResponse
+-- | Undocumented member.
+dssrsTimezone :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
+dssrsTimezone = lens _dssrsTimezone (\ s a -> s{_dssrsTimezone = a});
 
-    request  = post "DescribeSnapshotSchedule"
-    response = jsonResponse
+-- | Undocumented member.
+dssrsDescription :: Lens' DescribeSnapshotScheduleResponse (Maybe Text)
+dssrsDescription = lens _dssrsDescription (\ s a -> s{_dssrsDescription = a});
 
-instance FromJSON DescribeSnapshotScheduleResponse where
-    parseJSON = withObject "DescribeSnapshotScheduleResponse" $ \o -> DescribeSnapshotScheduleResponse
-        <$> o .:? "Description"
-        <*> o .:? "RecurrenceInHours"
-        <*> o .:? "StartAt"
-        <*> o .:? "Timezone"
-        <*> o .:? "VolumeARN"
+-- | The response status code.
+dssrsStatus :: Lens' DescribeSnapshotScheduleResponse Int
+dssrsStatus = lens _dssrsStatus (\ s a -> s{_dssrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeStorediSCSIVolumes.hs b/gen/Network/AWS/StorageGateway/DescribeStorediSCSIVolumes.hs
--- a/gen/Network/AWS/StorageGateway/DescribeStorediSCSIVolumes.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeStorediSCSIVolumes.hs
@@ -1,132 +1,135 @@
-{-# 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.StorageGateway.DescribeStorediSCSIVolumes
--- 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 operation returns description of the gateway volumes specified in the
--- request. The list of gateway volumes in the request must be from one gateway.
--- In the response Amazon Storage Gateway returns volume information sorted by
--- volume ARNs.
+-- This operation returns the description of the gateway volumes specified
+-- in the request. The list of gateway volumes in the request must be from
+-- one gateway. In the response Amazon Storage Gateway returns volume
+-- information sorted by volume ARNs.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeStorediSCSIVolumes.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeStorediSCSIVolumes.html AWS API Reference> for DescribeStorediSCSIVolumes.
 module Network.AWS.StorageGateway.DescribeStorediSCSIVolumes
     (
-    -- * Request
-      DescribeStorediSCSIVolumes
-    -- ** Request constructor
-    , describeStorediSCSIVolumes
-    -- ** Request lenses
+    -- * Creating a Request
+      describeStorediSCSIVolumes
+    , DescribeStorediSCSIVolumes
+    -- * Request Lenses
     , dsscsivVolumeARNs
 
-    -- * Response
-    , DescribeStorediSCSIVolumesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeStorediSCSIVolumesResponse
-    -- ** Response lenses
-    , dsscsivrStorediSCSIVolumes
+    , DescribeStorediSCSIVolumesResponse
+    -- * Response Lenses
+    , dsscsivrsStorediSCSIVolumes
+    , dsscsivrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-newtype DescribeStorediSCSIVolumes = DescribeStorediSCSIVolumes
-    { _dsscsivVolumeARNs :: List "VolumeARNs" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeStorediSCSIVolumes where
-    type Item DescribeStorediSCSIVolumes = Text
-
-    fromList = DescribeStorediSCSIVolumes . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsscsivVolumeARNs
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DescribeStorediSCSIVolumes' constructor.
+-- | A JSON Object containing a list of
+-- DescribeStorediSCSIVolumesInput$VolumeARNs.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeStorediSCSIVolumes' smart constructor.
+newtype DescribeStorediSCSIVolumes = DescribeStorediSCSIVolumes'
+    { _dsscsivVolumeARNs :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeStorediSCSIVolumes' with the minimum fields required to make a request.
 --
--- * 'dsscsivVolumeARNs' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeStorediSCSIVolumes :: DescribeStorediSCSIVolumes
-describeStorediSCSIVolumes = DescribeStorediSCSIVolumes
+-- * 'dsscsivVolumeARNs'
+describeStorediSCSIVolumes
+    :: DescribeStorediSCSIVolumes
+describeStorediSCSIVolumes =
+    DescribeStorediSCSIVolumes'
     { _dsscsivVolumeARNs = mempty
     }
 
--- | An array of strings where each string represents the Amazon Resource Name
--- (ARN) of a stored volume. All of the specified stored volumes must from the
--- same gateway. Use 'ListVolumes' to get volume ARNs for a gateway.
+-- | An array of strings where each string represents the Amazon Resource
+-- Name (ARN) of a stored volume. All of the specified stored volumes must
+-- from the same gateway. Use ListVolumes to get volume ARNs for a gateway.
 dsscsivVolumeARNs :: Lens' DescribeStorediSCSIVolumes [Text]
-dsscsivVolumeARNs =
-    lens _dsscsivVolumeARNs (\s a -> s { _dsscsivVolumeARNs = a })
-        . _List
-
-newtype DescribeStorediSCSIVolumesResponse = DescribeStorediSCSIVolumesResponse
-    { _dsscsivrStorediSCSIVolumes :: List "StorediSCSIVolumes" StorediSCSIVolume
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeStorediSCSIVolumesResponse where
-    type Item DescribeStorediSCSIVolumesResponse = StorediSCSIVolume
+dsscsivVolumeARNs = lens _dsscsivVolumeARNs (\ s a -> s{_dsscsivVolumeARNs = a}) . _Coerce;
 
-    fromList = DescribeStorediSCSIVolumesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsscsivrStorediSCSIVolumes
+instance AWSRequest DescribeStorediSCSIVolumes where
+        type Sv DescribeStorediSCSIVolumes = StorageGateway
+        type Rs DescribeStorediSCSIVolumes =
+             DescribeStorediSCSIVolumesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeStorediSCSIVolumesResponse' <$>
+                   (x .?> "StorediSCSIVolumes" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeStorediSCSIVolumesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsscsivrStorediSCSIVolumes' @::@ ['StorediSCSIVolume']
---
-describeStorediSCSIVolumesResponse :: DescribeStorediSCSIVolumesResponse
-describeStorediSCSIVolumesResponse = DescribeStorediSCSIVolumesResponse
-    { _dsscsivrStorediSCSIVolumes = mempty
-    }
+instance ToHeaders DescribeStorediSCSIVolumes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeStorediSCSIVolumes"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-dsscsivrStorediSCSIVolumes :: Lens' DescribeStorediSCSIVolumesResponse [StorediSCSIVolume]
-dsscsivrStorediSCSIVolumes =
-    lens _dsscsivrStorediSCSIVolumes
-        (\s a -> s { _dsscsivrStorediSCSIVolumes = a })
-            . _List
+instance ToJSON DescribeStorediSCSIVolumes where
+        toJSON DescribeStorediSCSIVolumes'{..}
+          = object ["VolumeARNs" .= _dsscsivVolumeARNs]
 
 instance ToPath DescribeStorediSCSIVolumes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeStorediSCSIVolumes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeStorediSCSIVolumes
+        toQuery = const mempty
 
-instance ToJSON DescribeStorediSCSIVolumes where
-    toJSON DescribeStorediSCSIVolumes{..} = object
-        [ "VolumeARNs" .= _dsscsivVolumeARNs
-        ]
+-- | /See:/ 'describeStorediSCSIVolumesResponse' smart constructor.
+data DescribeStorediSCSIVolumesResponse = DescribeStorediSCSIVolumesResponse'
+    { _dsscsivrsStorediSCSIVolumes :: !(Maybe [StorediSCSIVolume])
+    , _dsscsivrsStatus             :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeStorediSCSIVolumes where
-    type Sv DescribeStorediSCSIVolumes = StorageGateway
-    type Rs DescribeStorediSCSIVolumes = DescribeStorediSCSIVolumesResponse
+-- | Creates a value of 'DescribeStorediSCSIVolumesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsscsivrsStorediSCSIVolumes'
+--
+-- * 'dsscsivrsStatus'
+describeStorediSCSIVolumesResponse
+    :: Int -- ^ 'dsscsivrsStatus'
+    -> DescribeStorediSCSIVolumesResponse
+describeStorediSCSIVolumesResponse pStatus_ =
+    DescribeStorediSCSIVolumesResponse'
+    { _dsscsivrsStorediSCSIVolumes = Nothing
+    , _dsscsivrsStatus = pStatus_
+    }
 
-    request  = post "DescribeStorediSCSIVolumes"
-    response = jsonResponse
+-- | Undocumented member.
+dsscsivrsStorediSCSIVolumes :: Lens' DescribeStorediSCSIVolumesResponse [StorediSCSIVolume]
+dsscsivrsStorediSCSIVolumes = lens _dsscsivrsStorediSCSIVolumes (\ s a -> s{_dsscsivrsStorediSCSIVolumes = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeStorediSCSIVolumesResponse where
-    parseJSON = withObject "DescribeStorediSCSIVolumesResponse" $ \o -> DescribeStorediSCSIVolumesResponse
-        <$> o .:? "StorediSCSIVolumes" .!= mempty
+-- | The response status code.
+dsscsivrsStatus :: Lens' DescribeStorediSCSIVolumesResponse Int
+dsscsivrsStatus = lens _dsscsivrsStatus (\ s a -> s{_dsscsivrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeTapeArchives.hs b/gen/Network/AWS/StorageGateway/DescribeTapeArchives.hs
--- a/gen/Network/AWS/StorageGateway/DescribeTapeArchives.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeTapeArchives.hs
@@ -1,163 +1,187 @@
-{-# 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.StorageGateway.DescribeTapeArchives
--- 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.
-
--- | Returns a description of specified virtual tapes in the virtual tape shelf
--- (VTS).
+-- Returns a description of specified virtual tapes in the virtual tape
+-- shelf (VTS).
 --
 -- If a specific 'TapeARN' is not specified, AWS Storage Gateway returns a
 -- description of all virtual tapes found in the VTS associated with your
 -- account.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapeArchives.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapeArchives.html AWS API Reference> for DescribeTapeArchives.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.DescribeTapeArchives
     (
-    -- * Request
-      DescribeTapeArchives
-    -- ** Request constructor
-    , describeTapeArchives
-    -- ** Request lenses
-    , dtaLimit
+    -- * Creating a Request
+      describeTapeArchives
+    , DescribeTapeArchives
+    -- * Request Lenses
     , dtaMarker
+    , dtaLimit
     , dtaTapeARNs
 
-    -- * Response
-    , DescribeTapeArchivesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTapeArchivesResponse
-    -- ** Response lenses
-    , dtarMarker
-    , dtarTapeArchives
+    , DescribeTapeArchivesResponse
+    -- * Response Lenses
+    , dtarsTapeArchives
+    , dtarsMarker
+    , dtarsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DescribeTapeArchives = DescribeTapeArchives
-    { _dtaLimit    :: Maybe Nat
-    , _dtaMarker   :: Maybe Text
-    , _dtaTapeARNs :: List "TapeARNs" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DescribeTapeArchives' constructor.
+-- | DescribeTapeArchivesInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeTapeArchives' smart constructor.
+data DescribeTapeArchives = DescribeTapeArchives'
+    { _dtaMarker   :: !(Maybe Text)
+    , _dtaLimit    :: !(Maybe Nat)
+    , _dtaTapeARNs :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTapeArchives' with the minimum fields required to make a request.
 --
--- * 'dtaLimit' @::@ 'Maybe' 'Natural'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dtaMarker' @::@ 'Maybe' 'Text'
+-- * 'dtaMarker'
 --
--- * 'dtaTapeARNs' @::@ ['Text']
+-- * 'dtaLimit'
 --
-describeTapeArchives :: DescribeTapeArchives
-describeTapeArchives = DescribeTapeArchives
-    { _dtaTapeARNs = mempty
-    , _dtaMarker   = Nothing
-    , _dtaLimit    = Nothing
+-- * 'dtaTapeARNs'
+describeTapeArchives
+    :: DescribeTapeArchives
+describeTapeArchives =
+    DescribeTapeArchives'
+    { _dtaMarker = Nothing
+    , _dtaLimit = Nothing
+    , _dtaTapeARNs = Nothing
     }
 
+-- | An opaque string that indicates the position at which to begin
+-- describing virtual tapes.
+dtaMarker :: Lens' DescribeTapeArchives (Maybe Text)
+dtaMarker = lens _dtaMarker (\ s a -> s{_dtaMarker = a});
+
 -- | Specifies that the number of virtual tapes descried be limited to the
 -- specified number.
 dtaLimit :: Lens' DescribeTapeArchives (Maybe Natural)
-dtaLimit = lens _dtaLimit (\s a -> s { _dtaLimit = a }) . mapping _Nat
-
--- | An opaque string that indicates the position at which to begin describing
--- virtual tapes.
-dtaMarker :: Lens' DescribeTapeArchives (Maybe Text)
-dtaMarker = lens _dtaMarker (\s a -> s { _dtaMarker = a })
+dtaLimit = lens _dtaLimit (\ s a -> s{_dtaLimit = a}) . mapping _Nat;
 
--- | Specifies one or more unique Amazon Resource Names (ARNs) that represent the
--- virtual tapes you want to describe.
+-- | Specifies one or more unique Amazon Resource Names (ARNs) that represent
+-- the virtual tapes you want to describe.
 dtaTapeARNs :: Lens' DescribeTapeArchives [Text]
-dtaTapeARNs = lens _dtaTapeARNs (\s a -> s { _dtaTapeARNs = a }) . _List
+dtaTapeARNs = lens _dtaTapeARNs (\ s a -> s{_dtaTapeARNs = a}) . _Default . _Coerce;
 
-data DescribeTapeArchivesResponse = DescribeTapeArchivesResponse
-    { _dtarMarker       :: Maybe Text
-    , _dtarTapeArchives :: List "TapeArchives" TapeArchive
-    } deriving (Eq, Read, Show)
+instance AWSPager DescribeTapeArchives where
+        page rq rs
+          | stop (rs ^. dtarsMarker) = Nothing
+          | stop (rs ^. dtarsTapeArchives) = Nothing
+          | otherwise =
+            Just $ rq & dtaMarker .~ rs ^. dtarsMarker
 
--- | 'DescribeTapeArchivesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtarMarker' @::@ 'Maybe' 'Text'
---
--- * 'dtarTapeArchives' @::@ ['TapeArchive']
---
-describeTapeArchivesResponse :: DescribeTapeArchivesResponse
-describeTapeArchivesResponse = DescribeTapeArchivesResponse
-    { _dtarTapeArchives = mempty
-    , _dtarMarker       = Nothing
-    }
+instance AWSRequest DescribeTapeArchives where
+        type Sv DescribeTapeArchives = StorageGateway
+        type Rs DescribeTapeArchives =
+             DescribeTapeArchivesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTapeArchivesResponse' <$>
+                   (x .?> "TapeArchives" .!@ mempty) <*>
+                     (x .?> "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An opaque string that indicates the position at which the virtual tapes that
--- were fetched for description ended. Use this marker in your next request to
--- fetch the next set of virtual tapes in the virtual tape shelf (VTS). If there
--- are no more virtual tapes to describe, this field does not appear in the
--- response.
-dtarMarker :: Lens' DescribeTapeArchivesResponse (Maybe Text)
-dtarMarker = lens _dtarMarker (\s a -> s { _dtarMarker = a })
+instance ToHeaders DescribeTapeArchives where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeTapeArchives" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of virtual tape objects in the virtual tape shelf (VTS). The
--- description includes of the Amazon Resource Name(ARN) of the virtual tapes.
--- The information returned includes the Amazon Resource Names (ARNs) of the
--- tapes, size of the tapes, status of the tapes, progress of the description
--- and tape barcode.
-dtarTapeArchives :: Lens' DescribeTapeArchivesResponse [TapeArchive]
-dtarTapeArchives = lens _dtarTapeArchives (\s a -> s { _dtarTapeArchives = a }) . _List
+instance ToJSON DescribeTapeArchives where
+        toJSON DescribeTapeArchives'{..}
+          = object
+              ["Marker" .= _dtaMarker, "Limit" .= _dtaLimit,
+               "TapeARNs" .= _dtaTapeARNs]
 
 instance ToPath DescribeTapeArchives where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTapeArchives where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTapeArchives
+        toQuery = const mempty
 
-instance ToJSON DescribeTapeArchives where
-    toJSON DescribeTapeArchives{..} = object
-        [ "TapeARNs" .= _dtaTapeARNs
-        , "Marker"   .= _dtaMarker
-        , "Limit"    .= _dtaLimit
-        ]
+-- | DescribeTapeArchivesOutput
+--
+-- /See:/ 'describeTapeArchivesResponse' smart constructor.
+data DescribeTapeArchivesResponse = DescribeTapeArchivesResponse'
+    { _dtarsTapeArchives :: !(Maybe [TapeArchive])
+    , _dtarsMarker       :: !(Maybe Text)
+    , _dtarsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTapeArchives where
-    type Sv DescribeTapeArchives = StorageGateway
-    type Rs DescribeTapeArchives = DescribeTapeArchivesResponse
+-- | Creates a value of 'DescribeTapeArchivesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtarsTapeArchives'
+--
+-- * 'dtarsMarker'
+--
+-- * 'dtarsStatus'
+describeTapeArchivesResponse
+    :: Int -- ^ 'dtarsStatus'
+    -> DescribeTapeArchivesResponse
+describeTapeArchivesResponse pStatus_ =
+    DescribeTapeArchivesResponse'
+    { _dtarsTapeArchives = Nothing
+    , _dtarsMarker = Nothing
+    , _dtarsStatus = pStatus_
+    }
 
-    request  = post "DescribeTapeArchives"
-    response = jsonResponse
+-- | An array of virtual tape objects in the virtual tape shelf (VTS). The
+-- description includes of the Amazon Resource Name(ARN) of the virtual
+-- tapes. The information returned includes the Amazon Resource Names
+-- (ARNs) of the tapes, size of the tapes, status of the tapes, progress of
+-- the description and tape barcode.
+dtarsTapeArchives :: Lens' DescribeTapeArchivesResponse [TapeArchive]
+dtarsTapeArchives = lens _dtarsTapeArchives (\ s a -> s{_dtarsTapeArchives = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeTapeArchivesResponse where
-    parseJSON = withObject "DescribeTapeArchivesResponse" $ \o -> DescribeTapeArchivesResponse
-        <$> o .:? "Marker"
-        <*> o .:? "TapeArchives" .!= mempty
+-- | An opaque string that indicates the position at which the virtual tapes
+-- that were fetched for description ended. Use this marker in your next
+-- request to fetch the next set of virtual tapes in the virtual tape shelf
+-- (VTS). If there are no more virtual tapes to describe, this field does
+-- not appear in the response.
+dtarsMarker :: Lens' DescribeTapeArchivesResponse (Maybe Text)
+dtarsMarker = lens _dtarsMarker (\ s a -> s{_dtarsMarker = a});
 
-instance AWSPager DescribeTapeArchives where
-    page rq rs
-        | stop (rs ^. dtarMarker) = Nothing
-        | otherwise = (\x -> rq & dtaMarker ?~ x)
-            <$> (rs ^. dtarMarker)
+-- | The response status code.
+dtarsStatus :: Lens' DescribeTapeArchivesResponse Int
+dtarsStatus = lens _dtarsStatus (\ s a -> s{_dtarsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeTapeRecoveryPoints.hs b/gen/Network/AWS/StorageGateway/DescribeTapeRecoveryPoints.hs
--- a/gen/Network/AWS/StorageGateway/DescribeTapeRecoveryPoints.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeTapeRecoveryPoints.hs
@@ -1,172 +1,196 @@
-{-# 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.StorageGateway.DescribeTapeRecoveryPoints
--- 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.
-
--- | Returns a list of virtual tape recovery points that are available for the
--- specified gateway-VTL.
+-- Returns a list of virtual tape recovery points that are available for
+-- the specified gateway-VTL.
 --
--- A recovery point is a point in time view of a virtual tape at which all the
--- data on the virtual tape is consistent. If your gateway crashes, virtual
--- tapes that have recovery points can be recovered to a new gateway.
+-- A recovery point is a point in time view of a virtual tape at which all
+-- the data on the virtual tape is consistent. If your gateway crashes,
+-- virtual tapes that have recovery points can be recovered to a new
+-- gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapeRecoveryPoints.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapeRecoveryPoints.html AWS API Reference> for DescribeTapeRecoveryPoints.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.DescribeTapeRecoveryPoints
     (
-    -- * Request
-      DescribeTapeRecoveryPoints
-    -- ** Request constructor
-    , describeTapeRecoveryPoints
-    -- ** Request lenses
-    , dtrpGatewayARN
-    , dtrpLimit
+    -- * Creating a Request
+      describeTapeRecoveryPoints
+    , DescribeTapeRecoveryPoints
+    -- * Request Lenses
     , dtrpMarker
+    , dtrpLimit
+    , dtrpGatewayARN
 
-    -- * Response
-    , DescribeTapeRecoveryPointsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTapeRecoveryPointsResponse
-    -- ** Response lenses
-    , dtrprGatewayARN
-    , dtrprMarker
-    , dtrprTapeRecoveryPointInfos
+    , DescribeTapeRecoveryPointsResponse
+    -- * Response Lenses
+    , dtrprsTapeRecoveryPointInfos
+    , dtrprsGatewayARN
+    , dtrprsMarker
+    , dtrprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DescribeTapeRecoveryPoints = DescribeTapeRecoveryPoints
-    { _dtrpGatewayARN :: Text
-    , _dtrpLimit      :: Maybe Nat
-    , _dtrpMarker     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DescribeTapeRecoveryPoints' constructor.
+-- | DescribeTapeRecoveryPointsInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeTapeRecoveryPoints' smart constructor.
+data DescribeTapeRecoveryPoints = DescribeTapeRecoveryPoints'
+    { _dtrpMarker     :: !(Maybe Text)
+    , _dtrpLimit      :: !(Maybe Nat)
+    , _dtrpGatewayARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTapeRecoveryPoints' with the minimum fields required to make a request.
 --
--- * 'dtrpGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dtrpLimit' @::@ 'Maybe' 'Natural'
+-- * 'dtrpMarker'
 --
--- * 'dtrpMarker' @::@ 'Maybe' 'Text'
+-- * 'dtrpLimit'
 --
-describeTapeRecoveryPoints :: Text -- ^ 'dtrpGatewayARN'
-                           -> DescribeTapeRecoveryPoints
-describeTapeRecoveryPoints p1 = DescribeTapeRecoveryPoints
-    { _dtrpGatewayARN = p1
-    , _dtrpMarker     = Nothing
-    , _dtrpLimit      = Nothing
+-- * 'dtrpGatewayARN'
+describeTapeRecoveryPoints
+    :: Text -- ^ 'dtrpGatewayARN'
+    -> DescribeTapeRecoveryPoints
+describeTapeRecoveryPoints pGatewayARN_ =
+    DescribeTapeRecoveryPoints'
+    { _dtrpMarker = Nothing
+    , _dtrpLimit = Nothing
+    , _dtrpGatewayARN = pGatewayARN_
     }
 
-dtrpGatewayARN :: Lens' DescribeTapeRecoveryPoints Text
-dtrpGatewayARN = lens _dtrpGatewayARN (\s a -> s { _dtrpGatewayARN = a })
+-- | An opaque string that indicates the position at which to begin
+-- describing the virtual tape recovery points.
+dtrpMarker :: Lens' DescribeTapeRecoveryPoints (Maybe Text)
+dtrpMarker = lens _dtrpMarker (\ s a -> s{_dtrpMarker = a});
 
--- | Specifies that the number of virtual tape recovery points that are described
--- be limited to the specified number.
+-- | Specifies that the number of virtual tape recovery points that are
+-- described be limited to the specified number.
 dtrpLimit :: Lens' DescribeTapeRecoveryPoints (Maybe Natural)
-dtrpLimit = lens _dtrpLimit (\s a -> s { _dtrpLimit = a }) . mapping _Nat
-
--- | An opaque string that indicates the position at which to begin describing the
--- virtual tape recovery points.
-dtrpMarker :: Lens' DescribeTapeRecoveryPoints (Maybe Text)
-dtrpMarker = lens _dtrpMarker (\s a -> s { _dtrpMarker = a })
+dtrpLimit = lens _dtrpLimit (\ s a -> s{_dtrpLimit = a}) . mapping _Nat;
 
-data DescribeTapeRecoveryPointsResponse = DescribeTapeRecoveryPointsResponse
-    { _dtrprGatewayARN             :: Maybe Text
-    , _dtrprMarker                 :: Maybe Text
-    , _dtrprTapeRecoveryPointInfos :: List "TapeRecoveryPointInfos" TapeRecoveryPointInfo
-    } deriving (Eq, Read, Show)
+-- | Undocumented member.
+dtrpGatewayARN :: Lens' DescribeTapeRecoveryPoints Text
+dtrpGatewayARN = lens _dtrpGatewayARN (\ s a -> s{_dtrpGatewayARN = a});
 
--- | 'DescribeTapeRecoveryPointsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtrprGatewayARN' @::@ 'Maybe' 'Text'
---
--- * 'dtrprMarker' @::@ 'Maybe' 'Text'
---
--- * 'dtrprTapeRecoveryPointInfos' @::@ ['TapeRecoveryPointInfo']
---
-describeTapeRecoveryPointsResponse :: DescribeTapeRecoveryPointsResponse
-describeTapeRecoveryPointsResponse = DescribeTapeRecoveryPointsResponse
-    { _dtrprGatewayARN             = Nothing
-    , _dtrprTapeRecoveryPointInfos = mempty
-    , _dtrprMarker                 = Nothing
-    }
+instance AWSPager DescribeTapeRecoveryPoints where
+        page rq rs
+          | stop (rs ^. dtrprsMarker) = Nothing
+          | stop (rs ^. dtrprsTapeRecoveryPointInfos) = Nothing
+          | otherwise =
+            Just $ rq & dtrpMarker .~ rs ^. dtrprsMarker
 
-dtrprGatewayARN :: Lens' DescribeTapeRecoveryPointsResponse (Maybe Text)
-dtrprGatewayARN = lens _dtrprGatewayARN (\s a -> s { _dtrprGatewayARN = a })
+instance AWSRequest DescribeTapeRecoveryPoints where
+        type Sv DescribeTapeRecoveryPoints = StorageGateway
+        type Rs DescribeTapeRecoveryPoints =
+             DescribeTapeRecoveryPointsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTapeRecoveryPointsResponse' <$>
+                   (x .?> "TapeRecoveryPointInfos" .!@ mempty) <*>
+                     (x .?> "GatewayARN")
+                     <*> (x .?> "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An opaque string that indicates the position at which the virtual tape
--- recovery points that were listed for description ended.
---
--- Use this marker in your next request to list the next set of virtual tape
--- recovery points in the list. If there are no more recovery points to
--- describe, this field does not appear in the response.
-dtrprMarker :: Lens' DescribeTapeRecoveryPointsResponse (Maybe Text)
-dtrprMarker = lens _dtrprMarker (\s a -> s { _dtrprMarker = a })
+instance ToHeaders DescribeTapeRecoveryPoints where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeTapeRecoveryPoints"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of TapeRecoveryPointInfos that are available for the specified
--- gateway.
-dtrprTapeRecoveryPointInfos :: Lens' DescribeTapeRecoveryPointsResponse [TapeRecoveryPointInfo]
-dtrprTapeRecoveryPointInfos =
-    lens _dtrprTapeRecoveryPointInfos
-        (\s a -> s { _dtrprTapeRecoveryPointInfos = a })
-            . _List
+instance ToJSON DescribeTapeRecoveryPoints where
+        toJSON DescribeTapeRecoveryPoints'{..}
+          = object
+              ["Marker" .= _dtrpMarker, "Limit" .= _dtrpLimit,
+               "GatewayARN" .= _dtrpGatewayARN]
 
 instance ToPath DescribeTapeRecoveryPoints where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTapeRecoveryPoints where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders DescribeTapeRecoveryPoints
+-- | DescribeTapeRecoveryPointsOutput
+--
+-- /See:/ 'describeTapeRecoveryPointsResponse' smart constructor.
+data DescribeTapeRecoveryPointsResponse = DescribeTapeRecoveryPointsResponse'
+    { _dtrprsTapeRecoveryPointInfos :: !(Maybe [TapeRecoveryPointInfo])
+    , _dtrprsGatewayARN             :: !(Maybe Text)
+    , _dtrprsMarker                 :: !(Maybe Text)
+    , _dtrprsStatus                 :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON DescribeTapeRecoveryPoints where
-    toJSON DescribeTapeRecoveryPoints{..} = object
-        [ "GatewayARN" .= _dtrpGatewayARN
-        , "Marker"     .= _dtrpMarker
-        , "Limit"      .= _dtrpLimit
-        ]
+-- | Creates a value of 'DescribeTapeRecoveryPointsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtrprsTapeRecoveryPointInfos'
+--
+-- * 'dtrprsGatewayARN'
+--
+-- * 'dtrprsMarker'
+--
+-- * 'dtrprsStatus'
+describeTapeRecoveryPointsResponse
+    :: Int -- ^ 'dtrprsStatus'
+    -> DescribeTapeRecoveryPointsResponse
+describeTapeRecoveryPointsResponse pStatus_ =
+    DescribeTapeRecoveryPointsResponse'
+    { _dtrprsTapeRecoveryPointInfos = Nothing
+    , _dtrprsGatewayARN = Nothing
+    , _dtrprsMarker = Nothing
+    , _dtrprsStatus = pStatus_
+    }
 
-instance AWSRequest DescribeTapeRecoveryPoints where
-    type Sv DescribeTapeRecoveryPoints = StorageGateway
-    type Rs DescribeTapeRecoveryPoints = DescribeTapeRecoveryPointsResponse
+-- | An array of TapeRecoveryPointInfos that are available for the specified
+-- gateway.
+dtrprsTapeRecoveryPointInfos :: Lens' DescribeTapeRecoveryPointsResponse [TapeRecoveryPointInfo]
+dtrprsTapeRecoveryPointInfos = lens _dtrprsTapeRecoveryPointInfos (\ s a -> s{_dtrprsTapeRecoveryPointInfos = a}) . _Default . _Coerce;
 
-    request  = post "DescribeTapeRecoveryPoints"
-    response = jsonResponse
+-- | Undocumented member.
+dtrprsGatewayARN :: Lens' DescribeTapeRecoveryPointsResponse (Maybe Text)
+dtrprsGatewayARN = lens _dtrprsGatewayARN (\ s a -> s{_dtrprsGatewayARN = a});
 
-instance FromJSON DescribeTapeRecoveryPointsResponse where
-    parseJSON = withObject "DescribeTapeRecoveryPointsResponse" $ \o -> DescribeTapeRecoveryPointsResponse
-        <$> o .:? "GatewayARN"
-        <*> o .:? "Marker"
-        <*> o .:? "TapeRecoveryPointInfos" .!= mempty
+-- | An opaque string that indicates the position at which the virtual tape
+-- recovery points that were listed for description ended.
+--
+-- Use this marker in your next request to list the next set of virtual
+-- tape recovery points in the list. If there are no more recovery points
+-- to describe, this field does not appear in the response.
+dtrprsMarker :: Lens' DescribeTapeRecoveryPointsResponse (Maybe Text)
+dtrprsMarker = lens _dtrprsMarker (\ s a -> s{_dtrprsMarker = a});
 
-instance AWSPager DescribeTapeRecoveryPoints where
-    page rq rs
-        | stop (rs ^. dtrprMarker) = Nothing
-        | otherwise = (\x -> rq & dtrpMarker ?~ x)
-            <$> (rs ^. dtrprMarker)
+-- | The response status code.
+dtrprsStatus :: Lens' DescribeTapeRecoveryPointsResponse Int
+dtrprsStatus = lens _dtrprsStatus (\ s a -> s{_dtrprsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeTapes.hs b/gen/Network/AWS/StorageGateway/DescribeTapes.hs
--- a/gen/Network/AWS/StorageGateway/DescribeTapes.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeTapes.hs
@@ -1,172 +1,195 @@
-{-# 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.StorageGateway.DescribeTapes
--- 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.
-
--- | Returns a description of the specified Amazon Resource Name (ARN) of virtual
--- tapes. If a 'TapeARN' is not specified, returns a description of all virtual
--- tapes associated with the specified gateway.
+-- Returns a description of the specified Amazon Resource Name (ARN) of
+-- virtual tapes. If a 'TapeARN' is not specified, returns a description of
+-- all virtual tapes associated with the specified gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapes.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeTapes.html AWS API Reference> for DescribeTapes.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.DescribeTapes
     (
-    -- * Request
-      DescribeTapes
-    -- ** Request constructor
-    , describeTapes
-    -- ** Request lenses
-    , dtGatewayARN
-    , dtLimit
+    -- * Creating a Request
+      describeTapes
+    , DescribeTapes
+    -- * Request Lenses
     , dtMarker
+    , dtLimit
     , dtTapeARNs
+    , dtGatewayARN
 
-    -- * Response
-    , DescribeTapesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTapesResponse
-    -- ** Response lenses
-    , dtrMarker
-    , dtrTapes
+    , DescribeTapesResponse
+    -- * Response Lenses
+    , dtsrsMarker
+    , dtsrsTapes
+    , dtsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DescribeTapes = DescribeTapes
-    { _dtGatewayARN :: Text
-    , _dtLimit      :: Maybe Nat
-    , _dtMarker     :: Maybe Text
-    , _dtTapeARNs   :: List "TapeARNs" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DescribeTapes' constructor.
+-- | DescribeTapesInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeTapes' smart constructor.
+data DescribeTapes = DescribeTapes'
+    { _dtMarker     :: !(Maybe Text)
+    , _dtLimit      :: !(Maybe Nat)
+    , _dtTapeARNs   :: !(Maybe [Text])
+    , _dtGatewayARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTapes' with the minimum fields required to make a request.
 --
--- * 'dtGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dtLimit' @::@ 'Maybe' 'Natural'
+-- * 'dtMarker'
 --
--- * 'dtMarker' @::@ 'Maybe' 'Text'
+-- * 'dtLimit'
 --
--- * 'dtTapeARNs' @::@ ['Text']
+-- * 'dtTapeARNs'
 --
-describeTapes :: Text -- ^ 'dtGatewayARN'
-              -> DescribeTapes
-describeTapes p1 = DescribeTapes
-    { _dtGatewayARN = p1
-    , _dtTapeARNs   = mempty
-    , _dtMarker     = Nothing
-    , _dtLimit      = Nothing
+-- * 'dtGatewayARN'
+describeTapes
+    :: Text -- ^ 'dtGatewayARN'
+    -> DescribeTapes
+describeTapes pGatewayARN_ =
+    DescribeTapes'
+    { _dtMarker = Nothing
+    , _dtLimit = Nothing
+    , _dtTapeARNs = Nothing
+    , _dtGatewayARN = pGatewayARN_
     }
 
-dtGatewayARN :: Lens' DescribeTapes Text
-dtGatewayARN = lens _dtGatewayARN (\s a -> s { _dtGatewayARN = a })
+-- | A marker value, obtained in a previous call to 'DescribeTapes'. This
+-- marker indicates which page of results to retrieve.
+--
+-- If not specified, the first page of results is retrieved.
+dtMarker :: Lens' DescribeTapes (Maybe Text)
+dtMarker = lens _dtMarker (\ s a -> s{_dtMarker = a});
 
 -- | Specifies that the number of virtual tapes described be limited to the
 -- specified number.
 --
 -- Amazon Web Services may impose its own limit, if this field is not set.
 dtLimit :: Lens' DescribeTapes (Maybe Natural)
-dtLimit = lens _dtLimit (\s a -> s { _dtLimit = a }) . mapping _Nat
-
--- | A marker value, obtained in a previous call to 'DescribeTapes'. This marker
--- indicates which page of results to retrieve.
---
--- If not specified, the first page of results is retrieved.
-dtMarker :: Lens' DescribeTapes (Maybe Text)
-dtMarker = lens _dtMarker (\s a -> s { _dtMarker = a })
+dtLimit = lens _dtLimit (\ s a -> s{_dtLimit = a}) . mapping _Nat;
 
--- | Specifies one or more unique Amazon Resource Names (ARNs) that represent the
--- virtual tapes you want to describe. If this parameter is not specified, AWS
--- Storage Gateway returns a description of all virtual tapes associated with
--- the specified gateway.
+-- | Specifies one or more unique Amazon Resource Names (ARNs) that represent
+-- the virtual tapes you want to describe. If this parameter is not
+-- specified, AWS Storage Gateway returns a description of all virtual
+-- tapes associated with the specified gateway.
 dtTapeARNs :: Lens' DescribeTapes [Text]
-dtTapeARNs = lens _dtTapeARNs (\s a -> s { _dtTapeARNs = a }) . _List
+dtTapeARNs = lens _dtTapeARNs (\ s a -> s{_dtTapeARNs = a}) . _Default . _Coerce;
 
-data DescribeTapesResponse = DescribeTapesResponse
-    { _dtrMarker :: Maybe Text
-    , _dtrTapes  :: List "Tapes" Tape
-    } deriving (Eq, Read, Show)
+-- | Undocumented member.
+dtGatewayARN :: Lens' DescribeTapes Text
+dtGatewayARN = lens _dtGatewayARN (\ s a -> s{_dtGatewayARN = a});
 
--- | 'DescribeTapesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtrMarker' @::@ 'Maybe' 'Text'
---
--- * 'dtrTapes' @::@ ['Tape']
---
-describeTapesResponse :: DescribeTapesResponse
-describeTapesResponse = DescribeTapesResponse
-    { _dtrTapes  = mempty
-    , _dtrMarker = Nothing
-    }
+instance AWSPager DescribeTapes where
+        page rq rs
+          | stop (rs ^. dtsrsMarker) = Nothing
+          | stop (rs ^. dtsrsTapes) = Nothing
+          | otherwise =
+            Just $ rq & dtMarker .~ rs ^. dtsrsMarker
 
--- | An opaque string which can be used as part of a subsequent DescribeTapes call
--- to retrieve the next page of results.
---
--- If a response does not contain a marker, then there are no more results to
--- be retrieved.
-dtrMarker :: Lens' DescribeTapesResponse (Maybe Text)
-dtrMarker = lens _dtrMarker (\s a -> s { _dtrMarker = a })
+instance AWSRequest DescribeTapes where
+        type Sv DescribeTapes = StorageGateway
+        type Rs DescribeTapes = DescribeTapesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTapesResponse' <$>
+                   (x .?> "Marker") <*> (x .?> "Tapes" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | An array of virtual tape descriptions.
-dtrTapes :: Lens' DescribeTapesResponse [Tape]
-dtrTapes = lens _dtrTapes (\s a -> s { _dtrTapes = a }) . _List
+instance ToHeaders DescribeTapes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeTapes" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON DescribeTapes where
+        toJSON DescribeTapes'{..}
+          = object
+              ["Marker" .= _dtMarker, "Limit" .= _dtLimit,
+               "TapeARNs" .= _dtTapeARNs,
+               "GatewayARN" .= _dtGatewayARN]
+
 instance ToPath DescribeTapes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTapes where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTapes
+        toQuery = const mempty
 
-instance ToJSON DescribeTapes where
-    toJSON DescribeTapes{..} = object
-        [ "GatewayARN" .= _dtGatewayARN
-        , "TapeARNs"   .= _dtTapeARNs
-        , "Marker"     .= _dtMarker
-        , "Limit"      .= _dtLimit
-        ]
+-- | DescribeTapesOutput
+--
+-- /See:/ 'describeTapesResponse' smart constructor.
+data DescribeTapesResponse = DescribeTapesResponse'
+    { _dtsrsMarker :: !(Maybe Text)
+    , _dtsrsTapes  :: !(Maybe [Tape])
+    , _dtsrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTapes where
-    type Sv DescribeTapes = StorageGateway
-    type Rs DescribeTapes = DescribeTapesResponse
+-- | Creates a value of 'DescribeTapesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtsrsMarker'
+--
+-- * 'dtsrsTapes'
+--
+-- * 'dtsrsStatus'
+describeTapesResponse
+    :: Int -- ^ 'dtsrsStatus'
+    -> DescribeTapesResponse
+describeTapesResponse pStatus_ =
+    DescribeTapesResponse'
+    { _dtsrsMarker = Nothing
+    , _dtsrsTapes = Nothing
+    , _dtsrsStatus = pStatus_
+    }
 
-    request  = post "DescribeTapes"
-    response = jsonResponse
+-- | An opaque string which can be used as part of a subsequent DescribeTapes
+-- call to retrieve the next page of results.
+--
+-- If a response does not contain a marker, then there are no more results
+-- to be retrieved.
+dtsrsMarker :: Lens' DescribeTapesResponse (Maybe Text)
+dtsrsMarker = lens _dtsrsMarker (\ s a -> s{_dtsrsMarker = a});
 
-instance FromJSON DescribeTapesResponse where
-    parseJSON = withObject "DescribeTapesResponse" $ \o -> DescribeTapesResponse
-        <$> o .:? "Marker"
-        <*> o .:? "Tapes" .!= mempty
+-- | An array of virtual tape descriptions.
+dtsrsTapes :: Lens' DescribeTapesResponse [Tape]
+dtsrsTapes = lens _dtsrsTapes (\ s a -> s{_dtsrsTapes = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeTapes where
-    page rq rs
-        | stop (rs ^. dtrMarker) = Nothing
-        | otherwise = (\x -> rq & dtMarker ?~ x)
-            <$> (rs ^. dtrMarker)
+-- | The response status code.
+dtsrsStatus :: Lens' DescribeTapesResponse Int
+dtsrsStatus = lens _dtsrsStatus (\ s a -> s{_dtsrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeUploadBuffer.hs b/gen/Network/AWS/StorageGateway/DescribeUploadBuffer.hs
--- a/gen/Network/AWS/StorageGateway/DescribeUploadBuffer.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeUploadBuffer.hs
@@ -1,146 +1,164 @@
-{-# 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.StorageGateway.DescribeUploadBuffer
--- 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 operation returns information about the upload buffer of a gateway. This
--- operation is supported for both the gateway-stored and gateway-cached volume
--- architectures.
+-- This operation returns information about the upload buffer of a gateway.
+-- This operation is supported for both the gateway-stored and
+-- gateway-cached volume architectures.
 --
--- The response includes disk IDs that are configured as upload buffer space,
--- and it includes the amount of upload buffer space allocated and used.
+-- The response includes disk IDs that are configured as upload buffer
+-- space, and it includes the amount of upload buffer space allocated and
+-- used.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeUploadBuffer.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeUploadBuffer.html AWS API Reference> for DescribeUploadBuffer.
 module Network.AWS.StorageGateway.DescribeUploadBuffer
     (
-    -- * Request
-      DescribeUploadBuffer
-    -- ** Request constructor
-    , describeUploadBuffer
-    -- ** Request lenses
+    -- * Creating a Request
+      describeUploadBuffer
+    , DescribeUploadBuffer
+    -- * Request Lenses
     , dubGatewayARN
 
-    -- * Response
-    , DescribeUploadBufferResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeUploadBufferResponse
-    -- ** Response lenses
-    , dubrDiskIds
-    , dubrGatewayARN
-    , dubrUploadBufferAllocatedInBytes
-    , dubrUploadBufferUsedInBytes
+    , DescribeUploadBufferResponse
+    -- * Response Lenses
+    , dubrsUploadBufferAllocatedInBytes
+    , dubrsGatewayARN
+    , dubrsDiskIds
+    , dubrsUploadBufferUsedInBytes
+    , dubrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeUploadBuffer = DescribeUploadBuffer
+-- | /See:/ 'describeUploadBuffer' smart constructor.
+newtype DescribeUploadBuffer = DescribeUploadBuffer'
     { _dubGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeUploadBuffer' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeUploadBuffer' with the minimum fields required to make a request.
 --
--- * 'dubGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeUploadBuffer :: Text -- ^ 'dubGatewayARN'
-                     -> DescribeUploadBuffer
-describeUploadBuffer p1 = DescribeUploadBuffer
-    { _dubGatewayARN = p1
+-- * 'dubGatewayARN'
+describeUploadBuffer
+    :: Text -- ^ 'dubGatewayARN'
+    -> DescribeUploadBuffer
+describeUploadBuffer pGatewayARN_ =
+    DescribeUploadBuffer'
+    { _dubGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dubGatewayARN :: Lens' DescribeUploadBuffer Text
-dubGatewayARN = lens _dubGatewayARN (\s a -> s { _dubGatewayARN = a })
+dubGatewayARN = lens _dubGatewayARN (\ s a -> s{_dubGatewayARN = a});
 
-data DescribeUploadBufferResponse = DescribeUploadBufferResponse
-    { _dubrDiskIds                      :: List "DiskIds" Text
-    , _dubrGatewayARN                   :: Maybe Text
-    , _dubrUploadBufferAllocatedInBytes :: Maybe Integer
-    , _dubrUploadBufferUsedInBytes      :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest DescribeUploadBuffer where
+        type Sv DescribeUploadBuffer = StorageGateway
+        type Rs DescribeUploadBuffer =
+             DescribeUploadBufferResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeUploadBufferResponse' <$>
+                   (x .?> "UploadBufferAllocatedInBytes") <*>
+                     (x .?> "GatewayARN")
+                     <*> (x .?> "DiskIds" .!@ mempty)
+                     <*> (x .?> "UploadBufferUsedInBytes")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeUploadBufferResponse' constructor.
+instance ToHeaders DescribeUploadBuffer where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeUploadBuffer" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeUploadBuffer where
+        toJSON DescribeUploadBuffer'{..}
+          = object ["GatewayARN" .= _dubGatewayARN]
+
+instance ToPath DescribeUploadBuffer where
+        toPath = const "/"
+
+instance ToQuery DescribeUploadBuffer where
+        toQuery = const mempty
+
+-- | /See:/ 'describeUploadBufferResponse' smart constructor.
+data DescribeUploadBufferResponse = DescribeUploadBufferResponse'
+    { _dubrsUploadBufferAllocatedInBytes :: !(Maybe Integer)
+    , _dubrsGatewayARN                   :: !(Maybe Text)
+    , _dubrsDiskIds                      :: !(Maybe [Text])
+    , _dubrsUploadBufferUsedInBytes      :: !(Maybe Integer)
+    , _dubrsStatus                       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeUploadBufferResponse' 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:
 --
--- * 'dubrDiskIds' @::@ ['Text']
+-- * 'dubrsUploadBufferAllocatedInBytes'
 --
--- * 'dubrGatewayARN' @::@ 'Maybe' 'Text'
+-- * 'dubrsGatewayARN'
 --
--- * 'dubrUploadBufferAllocatedInBytes' @::@ 'Maybe' 'Integer'
+-- * 'dubrsDiskIds'
 --
--- * 'dubrUploadBufferUsedInBytes' @::@ 'Maybe' 'Integer'
+-- * 'dubrsUploadBufferUsedInBytes'
 --
-describeUploadBufferResponse :: DescribeUploadBufferResponse
-describeUploadBufferResponse = DescribeUploadBufferResponse
-    { _dubrGatewayARN                   = Nothing
-    , _dubrDiskIds                      = mempty
-    , _dubrUploadBufferUsedInBytes      = Nothing
-    , _dubrUploadBufferAllocatedInBytes = Nothing
+-- * 'dubrsStatus'
+describeUploadBufferResponse
+    :: Int -- ^ 'dubrsStatus'
+    -> DescribeUploadBufferResponse
+describeUploadBufferResponse pStatus_ =
+    DescribeUploadBufferResponse'
+    { _dubrsUploadBufferAllocatedInBytes = Nothing
+    , _dubrsGatewayARN = Nothing
+    , _dubrsDiskIds = Nothing
+    , _dubrsUploadBufferUsedInBytes = Nothing
+    , _dubrsStatus = pStatus_
     }
 
-dubrDiskIds :: Lens' DescribeUploadBufferResponse [Text]
-dubrDiskIds = lens _dubrDiskIds (\s a -> s { _dubrDiskIds = a }) . _List
-
-dubrGatewayARN :: Lens' DescribeUploadBufferResponse (Maybe Text)
-dubrGatewayARN = lens _dubrGatewayARN (\s a -> s { _dubrGatewayARN = a })
-
-dubrUploadBufferAllocatedInBytes :: Lens' DescribeUploadBufferResponse (Maybe Integer)
-dubrUploadBufferAllocatedInBytes =
-    lens _dubrUploadBufferAllocatedInBytes
-        (\s a -> s { _dubrUploadBufferAllocatedInBytes = a })
-
-dubrUploadBufferUsedInBytes :: Lens' DescribeUploadBufferResponse (Maybe Integer)
-dubrUploadBufferUsedInBytes =
-    lens _dubrUploadBufferUsedInBytes
-        (\s a -> s { _dubrUploadBufferUsedInBytes = a })
-
-instance ToPath DescribeUploadBuffer where
-    toPath = const "/"
-
-instance ToQuery DescribeUploadBuffer where
-    toQuery = const mempty
-
-instance ToHeaders DescribeUploadBuffer
+-- | Undocumented member.
+dubrsUploadBufferAllocatedInBytes :: Lens' DescribeUploadBufferResponse (Maybe Integer)
+dubrsUploadBufferAllocatedInBytes = lens _dubrsUploadBufferAllocatedInBytes (\ s a -> s{_dubrsUploadBufferAllocatedInBytes = a});
 
-instance ToJSON DescribeUploadBuffer where
-    toJSON DescribeUploadBuffer{..} = object
-        [ "GatewayARN" .= _dubGatewayARN
-        ]
+-- | Undocumented member.
+dubrsGatewayARN :: Lens' DescribeUploadBufferResponse (Maybe Text)
+dubrsGatewayARN = lens _dubrsGatewayARN (\ s a -> s{_dubrsGatewayARN = a});
 
-instance AWSRequest DescribeUploadBuffer where
-    type Sv DescribeUploadBuffer = StorageGateway
-    type Rs DescribeUploadBuffer = DescribeUploadBufferResponse
+-- | Undocumented member.
+dubrsDiskIds :: Lens' DescribeUploadBufferResponse [Text]
+dubrsDiskIds = lens _dubrsDiskIds (\ s a -> s{_dubrsDiskIds = a}) . _Default . _Coerce;
 
-    request  = post "DescribeUploadBuffer"
-    response = jsonResponse
+-- | Undocumented member.
+dubrsUploadBufferUsedInBytes :: Lens' DescribeUploadBufferResponse (Maybe Integer)
+dubrsUploadBufferUsedInBytes = lens _dubrsUploadBufferUsedInBytes (\ s a -> s{_dubrsUploadBufferUsedInBytes = a});
 
-instance FromJSON DescribeUploadBufferResponse where
-    parseJSON = withObject "DescribeUploadBufferResponse" $ \o -> DescribeUploadBufferResponse
-        <$> o .:? "DiskIds" .!= mempty
-        <*> o .:? "GatewayARN"
-        <*> o .:? "UploadBufferAllocatedInBytes"
-        <*> o .:? "UploadBufferUsedInBytes"
+-- | The response status code.
+dubrsStatus :: Lens' DescribeUploadBufferResponse Int
+dubrsStatus = lens _dubrsStatus (\ s a -> s{_dubrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeVTLDevices.hs b/gen/Network/AWS/StorageGateway/DescribeVTLDevices.hs
--- a/gen/Network/AWS/StorageGateway/DescribeVTLDevices.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeVTLDevices.hs
@@ -1,182 +1,208 @@
-{-# 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.StorageGateway.DescribeVTLDevices
--- 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.
-
--- | Returns a description of virtual tape library (VTL) devices for the specified
--- gateway. In the response, AWS Storage Gateway returns VTL device information.
+-- Returns a description of virtual tape library (VTL) devices for the
+-- specified gateway. In the response, AWS Storage Gateway returns VTL
+-- device information.
 --
 -- The list of VTL devices must be from one gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeVTLDevices.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeVTLDevices.html AWS API Reference> for DescribeVTLDevices.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.DescribeVTLDevices
     (
-    -- * Request
-      DescribeVTLDevices
-    -- ** Request constructor
-    , describeVTLDevices
-    -- ** Request lenses
-    , dvtldGatewayARN
-    , dvtldLimit
+    -- * Creating a Request
+      describeVTLDevices
+    , DescribeVTLDevices
+    -- * Request Lenses
     , dvtldMarker
+    , dvtldLimit
     , dvtldVTLDeviceARNs
+    , dvtldGatewayARN
 
-    -- * Response
-    , DescribeVTLDevicesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeVTLDevicesResponse
-    -- ** Response lenses
-    , dvtldrGatewayARN
-    , dvtldrMarker
-    , dvtldrVTLDevices
+    , DescribeVTLDevicesResponse
+    -- * Response Lenses
+    , dvtldrsGatewayARN
+    , dvtldrsVTLDevices
+    , dvtldrsMarker
+    , dvtldrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data DescribeVTLDevices = DescribeVTLDevices
-    { _dvtldGatewayARN    :: Text
-    , _dvtldLimit         :: Maybe Nat
-    , _dvtldMarker        :: Maybe Text
-    , _dvtldVTLDeviceARNs :: List "VTLDeviceARNs" Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DescribeVTLDevices' constructor.
+-- | DescribeVTLDevicesInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeVTLDevices' smart constructor.
+data DescribeVTLDevices = DescribeVTLDevices'
+    { _dvtldMarker        :: !(Maybe Text)
+    , _dvtldLimit         :: !(Maybe Nat)
+    , _dvtldVTLDeviceARNs :: !(Maybe [Text])
+    , _dvtldGatewayARN    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeVTLDevices' with the minimum fields required to make a request.
 --
--- * 'dvtldGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dvtldLimit' @::@ 'Maybe' 'Natural'
+-- * 'dvtldMarker'
 --
--- * 'dvtldMarker' @::@ 'Maybe' 'Text'
+-- * 'dvtldLimit'
 --
--- * 'dvtldVTLDeviceARNs' @::@ ['Text']
+-- * 'dvtldVTLDeviceARNs'
 --
-describeVTLDevices :: Text -- ^ 'dvtldGatewayARN'
-                   -> DescribeVTLDevices
-describeVTLDevices p1 = DescribeVTLDevices
-    { _dvtldGatewayARN    = p1
-    , _dvtldVTLDeviceARNs = mempty
-    , _dvtldMarker        = Nothing
-    , _dvtldLimit         = Nothing
+-- * 'dvtldGatewayARN'
+describeVTLDevices
+    :: Text -- ^ 'dvtldGatewayARN'
+    -> DescribeVTLDevices
+describeVTLDevices pGatewayARN_ =
+    DescribeVTLDevices'
+    { _dvtldMarker = Nothing
+    , _dvtldLimit = Nothing
+    , _dvtldVTLDeviceARNs = Nothing
+    , _dvtldGatewayARN = pGatewayARN_
     }
 
-dvtldGatewayARN :: Lens' DescribeVTLDevices Text
-dvtldGatewayARN = lens _dvtldGatewayARN (\s a -> s { _dvtldGatewayARN = a })
+-- | An opaque string that indicates the position at which to begin
+-- describing the VTL devices.
+dvtldMarker :: Lens' DescribeVTLDevices (Maybe Text)
+dvtldMarker = lens _dvtldMarker (\ s a -> s{_dvtldMarker = a});
 
 -- | Specifies that the number of VTL devices described be limited to the
 -- specified number.
 dvtldLimit :: Lens' DescribeVTLDevices (Maybe Natural)
-dvtldLimit = lens _dvtldLimit (\s a -> s { _dvtldLimit = a }) . mapping _Nat
-
--- | An opaque string that indicates the position at which to begin describing the
--- VTL devices.
-dvtldMarker :: Lens' DescribeVTLDevices (Maybe Text)
-dvtldMarker = lens _dvtldMarker (\s a -> s { _dvtldMarker = a })
+dvtldLimit = lens _dvtldLimit (\ s a -> s{_dvtldLimit = a}) . mapping _Nat;
 
--- | An array of strings, where each string represents the Amazon Resource Name
--- (ARN) of a VTL device.
+-- | An array of strings, where each string represents the Amazon Resource
+-- Name (ARN) of a VTL device.
 --
--- All of the specified VTL devices must be from the same gateway. If no VTL
--- devices are specified, the result will contain all devices on the specified
--- gateway.
+-- All of the specified VTL devices must be from the same gateway. If no
+-- VTL devices are specified, the result will contain all devices on the
+-- specified gateway.
 dvtldVTLDeviceARNs :: Lens' DescribeVTLDevices [Text]
-dvtldVTLDeviceARNs =
-    lens _dvtldVTLDeviceARNs (\s a -> s { _dvtldVTLDeviceARNs = a })
-        . _List
+dvtldVTLDeviceARNs = lens _dvtldVTLDeviceARNs (\ s a -> s{_dvtldVTLDeviceARNs = a}) . _Default . _Coerce;
 
-data DescribeVTLDevicesResponse = DescribeVTLDevicesResponse
-    { _dvtldrGatewayARN :: Maybe Text
-    , _dvtldrMarker     :: Maybe Text
-    , _dvtldrVTLDevices :: List "VTLDevices" VTLDevice
-    } deriving (Eq, Read, Show)
+-- | Undocumented member.
+dvtldGatewayARN :: Lens' DescribeVTLDevices Text
+dvtldGatewayARN = lens _dvtldGatewayARN (\ s a -> s{_dvtldGatewayARN = a});
 
--- | 'DescribeVTLDevicesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dvtldrGatewayARN' @::@ 'Maybe' 'Text'
---
--- * 'dvtldrMarker' @::@ 'Maybe' 'Text'
---
--- * 'dvtldrVTLDevices' @::@ ['VTLDevice']
---
-describeVTLDevicesResponse :: DescribeVTLDevicesResponse
-describeVTLDevicesResponse = DescribeVTLDevicesResponse
-    { _dvtldrGatewayARN = Nothing
-    , _dvtldrVTLDevices = mempty
-    , _dvtldrMarker     = Nothing
-    }
+instance AWSPager DescribeVTLDevices where
+        page rq rs
+          | stop (rs ^. dvtldrsMarker) = Nothing
+          | stop (rs ^. dvtldrsVTLDevices) = Nothing
+          | otherwise =
+            Just $ rq & dvtldMarker .~ rs ^. dvtldrsMarker
 
-dvtldrGatewayARN :: Lens' DescribeVTLDevicesResponse (Maybe Text)
-dvtldrGatewayARN = lens _dvtldrGatewayARN (\s a -> s { _dvtldrGatewayARN = a })
+instance AWSRequest DescribeVTLDevices where
+        type Sv DescribeVTLDevices = StorageGateway
+        type Rs DescribeVTLDevices =
+             DescribeVTLDevicesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeVTLDevicesResponse' <$>
+                   (x .?> "GatewayARN") <*>
+                     (x .?> "VTLDevices" .!@ mempty)
+                     <*> (x .?> "Marker")
+                     <*> (pure (fromEnum s)))
 
--- | An opaque string that indicates the position at which the VTL devices that
--- were fetched for description ended. Use the marker in your next request to
--- fetch the next set of VTL devices in the list. If there are no more VTL
--- devices to describe, this field does not appear in the response.
-dvtldrMarker :: Lens' DescribeVTLDevicesResponse (Maybe Text)
-dvtldrMarker = lens _dvtldrMarker (\s a -> s { _dvtldrMarker = a })
+instance ToHeaders DescribeVTLDevices where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeVTLDevices" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | An array of VTL device objects composed of the Amazon Resource Name(ARN) of
--- the VTL devices.
-dvtldrVTLDevices :: Lens' DescribeVTLDevicesResponse [VTLDevice]
-dvtldrVTLDevices = lens _dvtldrVTLDevices (\s a -> s { _dvtldrVTLDevices = a }) . _List
+instance ToJSON DescribeVTLDevices where
+        toJSON DescribeVTLDevices'{..}
+          = object
+              ["Marker" .= _dvtldMarker, "Limit" .= _dvtldLimit,
+               "VTLDeviceARNs" .= _dvtldVTLDeviceARNs,
+               "GatewayARN" .= _dvtldGatewayARN]
 
 instance ToPath DescribeVTLDevices where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeVTLDevices where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders DescribeVTLDevices
+-- | DescribeVTLDevicesOutput
+--
+-- /See:/ 'describeVTLDevicesResponse' smart constructor.
+data DescribeVTLDevicesResponse = DescribeVTLDevicesResponse'
+    { _dvtldrsGatewayARN :: !(Maybe Text)
+    , _dvtldrsVTLDevices :: !(Maybe [VTLDevice])
+    , _dvtldrsMarker     :: !(Maybe Text)
+    , _dvtldrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON DescribeVTLDevices where
-    toJSON DescribeVTLDevices{..} = object
-        [ "GatewayARN"    .= _dvtldGatewayARN
-        , "VTLDeviceARNs" .= _dvtldVTLDeviceARNs
-        , "Marker"        .= _dvtldMarker
-        , "Limit"         .= _dvtldLimit
-        ]
+-- | Creates a value of 'DescribeVTLDevicesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dvtldrsGatewayARN'
+--
+-- * 'dvtldrsVTLDevices'
+--
+-- * 'dvtldrsMarker'
+--
+-- * 'dvtldrsStatus'
+describeVTLDevicesResponse
+    :: Int -- ^ 'dvtldrsStatus'
+    -> DescribeVTLDevicesResponse
+describeVTLDevicesResponse pStatus_ =
+    DescribeVTLDevicesResponse'
+    { _dvtldrsGatewayARN = Nothing
+    , _dvtldrsVTLDevices = Nothing
+    , _dvtldrsMarker = Nothing
+    , _dvtldrsStatus = pStatus_
+    }
 
-instance AWSRequest DescribeVTLDevices where
-    type Sv DescribeVTLDevices = StorageGateway
-    type Rs DescribeVTLDevices = DescribeVTLDevicesResponse
+-- | Undocumented member.
+dvtldrsGatewayARN :: Lens' DescribeVTLDevicesResponse (Maybe Text)
+dvtldrsGatewayARN = lens _dvtldrsGatewayARN (\ s a -> s{_dvtldrsGatewayARN = a});
 
-    request  = post "DescribeVTLDevices"
-    response = jsonResponse
+-- | An array of VTL device objects composed of the Amazon Resource Name(ARN)
+-- of the VTL devices.
+dvtldrsVTLDevices :: Lens' DescribeVTLDevicesResponse [VTLDevice]
+dvtldrsVTLDevices = lens _dvtldrsVTLDevices (\ s a -> s{_dvtldrsVTLDevices = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeVTLDevicesResponse where
-    parseJSON = withObject "DescribeVTLDevicesResponse" $ \o -> DescribeVTLDevicesResponse
-        <$> o .:? "GatewayARN"
-        <*> o .:? "Marker"
-        <*> o .:? "VTLDevices" .!= mempty
+-- | An opaque string that indicates the position at which the VTL devices
+-- that were fetched for description ended. Use the marker in your next
+-- request to fetch the next set of VTL devices in the list. If there are
+-- no more VTL devices to describe, this field does not appear in the
+-- response.
+dvtldrsMarker :: Lens' DescribeVTLDevicesResponse (Maybe Text)
+dvtldrsMarker = lens _dvtldrsMarker (\ s a -> s{_dvtldrsMarker = a});
 
-instance AWSPager DescribeVTLDevices where
-    page rq rs
-        | stop (rs ^. dvtldrMarker) = Nothing
-        | otherwise = (\x -> rq & dvtldMarker ?~ x)
-            <$> (rs ^. dvtldrMarker)
+-- | The response status code.
+dvtldrsStatus :: Lens' DescribeVTLDevicesResponse Int
+dvtldrsStatus = lens _dvtldrsStatus (\ s a -> s{_dvtldrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DescribeWorkingStorage.hs b/gen/Network/AWS/StorageGateway/DescribeWorkingStorage.hs
--- a/gen/Network/AWS/StorageGateway/DescribeWorkingStorage.hs
+++ b/gen/Network/AWS/StorageGateway/DescribeWorkingStorage.hs
@@ -1,159 +1,176 @@
-{-# 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.StorageGateway.DescribeWorkingStorage
--- 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 operation returns information about the working storage of a gateway.
--- This operation is supported only for the gateway-stored volume architecture.
--- This operation is deprecated in cached-volumes API version (20120630). Use
--- DescribeUploadBuffer instead.
+-- This operation returns information about the working storage of a
+-- gateway. This operation is supported only for the gateway-stored volume
+-- architecture. This operation is deprecated in cached-volumes API version
+-- (20120630). Use DescribeUploadBuffer instead.
 --
--- Working storage is also referred to as upload buffer. You can also use the
--- DescribeUploadBuffer operation to add upload buffer to a stored-volume
--- gateway.
+-- Working storage is also referred to as upload buffer. You can also use
+-- the DescribeUploadBuffer operation to add upload buffer to a
+-- stored-volume gateway.
 --
--- The response includes disk IDs that are configured as working storage, and
--- it includes the amount of working storage allocated and used.
+-- The response includes disk IDs that are configured as working storage,
+-- and it includes the amount of working storage allocated and used.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeWorkingStorage.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DescribeWorkingStorage.html AWS API Reference> for DescribeWorkingStorage.
 module Network.AWS.StorageGateway.DescribeWorkingStorage
     (
-    -- * Request
-      DescribeWorkingStorage
-    -- ** Request constructor
-    , describeWorkingStorage
-    -- ** Request lenses
+    -- * Creating a Request
+      describeWorkingStorage
+    , DescribeWorkingStorage
+    -- * Request Lenses
     , dwsGatewayARN
 
-    -- * Response
-    , DescribeWorkingStorageResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeWorkingStorageResponse
-    -- ** Response lenses
-    , dwsrDiskIds
-    , dwsrGatewayARN
-    , dwsrWorkingStorageAllocatedInBytes
-    , dwsrWorkingStorageUsedInBytes
+    , DescribeWorkingStorageResponse
+    -- * Response Lenses
+    , dwsrsGatewayARN
+    , dwsrsDiskIds
+    , dwsrsWorkingStorageAllocatedInBytes
+    , dwsrsWorkingStorageUsedInBytes
+    , dwsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype DescribeWorkingStorage = DescribeWorkingStorage
+-- | A JSON object containing the of the gateway.
+--
+-- /See:/ 'describeWorkingStorage' smart constructor.
+newtype DescribeWorkingStorage = DescribeWorkingStorage'
     { _dwsGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeWorkingStorage' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeWorkingStorage' with the minimum fields required to make a request.
 --
--- * 'dwsGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeWorkingStorage :: Text -- ^ 'dwsGatewayARN'
-                       -> DescribeWorkingStorage
-describeWorkingStorage p1 = DescribeWorkingStorage
-    { _dwsGatewayARN = p1
+-- * 'dwsGatewayARN'
+describeWorkingStorage
+    :: Text -- ^ 'dwsGatewayARN'
+    -> DescribeWorkingStorage
+describeWorkingStorage pGatewayARN_ =
+    DescribeWorkingStorage'
+    { _dwsGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 dwsGatewayARN :: Lens' DescribeWorkingStorage Text
-dwsGatewayARN = lens _dwsGatewayARN (\s a -> s { _dwsGatewayARN = a })
+dwsGatewayARN = lens _dwsGatewayARN (\ s a -> s{_dwsGatewayARN = a});
 
-data DescribeWorkingStorageResponse = DescribeWorkingStorageResponse
-    { _dwsrDiskIds                        :: List "DiskIds" Text
-    , _dwsrGatewayARN                     :: Maybe Text
-    , _dwsrWorkingStorageAllocatedInBytes :: Maybe Integer
-    , _dwsrWorkingStorageUsedInBytes      :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest DescribeWorkingStorage where
+        type Sv DescribeWorkingStorage = StorageGateway
+        type Rs DescribeWorkingStorage =
+             DescribeWorkingStorageResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeWorkingStorageResponse' <$>
+                   (x .?> "GatewayARN") <*> (x .?> "DiskIds" .!@ mempty)
+                     <*> (x .?> "WorkingStorageAllocatedInBytes")
+                     <*> (x .?> "WorkingStorageUsedInBytes")
+                     <*> (pure (fromEnum s)))
 
--- | 'DescribeWorkingStorageResponse' constructor.
+instance ToHeaders DescribeWorkingStorage where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DescribeWorkingStorage" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON DescribeWorkingStorage where
+        toJSON DescribeWorkingStorage'{..}
+          = object ["GatewayARN" .= _dwsGatewayARN]
+
+instance ToPath DescribeWorkingStorage where
+        toPath = const "/"
+
+instance ToQuery DescribeWorkingStorage where
+        toQuery = const mempty
+
+-- | A JSON object containing the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeWorkingStorageResponse' smart constructor.
+data DescribeWorkingStorageResponse = DescribeWorkingStorageResponse'
+    { _dwsrsGatewayARN                     :: !(Maybe Text)
+    , _dwsrsDiskIds                        :: !(Maybe [Text])
+    , _dwsrsWorkingStorageAllocatedInBytes :: !(Maybe Integer)
+    , _dwsrsWorkingStorageUsedInBytes      :: !(Maybe Integer)
+    , _dwsrsStatus                         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeWorkingStorageResponse' with the minimum fields required to make a request.
 --
--- * 'dwsrDiskIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dwsrGatewayARN' @::@ 'Maybe' 'Text'
+-- * 'dwsrsGatewayARN'
 --
--- * 'dwsrWorkingStorageAllocatedInBytes' @::@ 'Maybe' 'Integer'
+-- * 'dwsrsDiskIds'
 --
--- * 'dwsrWorkingStorageUsedInBytes' @::@ 'Maybe' 'Integer'
+-- * 'dwsrsWorkingStorageAllocatedInBytes'
 --
-describeWorkingStorageResponse :: DescribeWorkingStorageResponse
-describeWorkingStorageResponse = DescribeWorkingStorageResponse
-    { _dwsrGatewayARN                     = Nothing
-    , _dwsrDiskIds                        = mempty
-    , _dwsrWorkingStorageUsedInBytes      = Nothing
-    , _dwsrWorkingStorageAllocatedInBytes = Nothing
+-- * 'dwsrsWorkingStorageUsedInBytes'
+--
+-- * 'dwsrsStatus'
+describeWorkingStorageResponse
+    :: Int -- ^ 'dwsrsStatus'
+    -> DescribeWorkingStorageResponse
+describeWorkingStorageResponse pStatus_ =
+    DescribeWorkingStorageResponse'
+    { _dwsrsGatewayARN = Nothing
+    , _dwsrsDiskIds = Nothing
+    , _dwsrsWorkingStorageAllocatedInBytes = Nothing
+    , _dwsrsWorkingStorageUsedInBytes = Nothing
+    , _dwsrsStatus = pStatus_
     }
 
--- | An array of the gateway's local disk IDs that are configured as working
--- storage. Each local disk ID is specified as a string (minimum length of 1 and
--- maximum length of 300). If no local disks are configured as working storage,
--- then the DiskIds array is empty.
-dwsrDiskIds :: Lens' DescribeWorkingStorageResponse [Text]
-dwsrDiskIds = lens _dwsrDiskIds (\s a -> s { _dwsrDiskIds = a }) . _List
+-- | Undocumented member.
+dwsrsGatewayARN :: Lens' DescribeWorkingStorageResponse (Maybe Text)
+dwsrsGatewayARN = lens _dwsrsGatewayARN (\ s a -> s{_dwsrsGatewayARN = a});
 
-dwsrGatewayARN :: Lens' DescribeWorkingStorageResponse (Maybe Text)
-dwsrGatewayARN = lens _dwsrGatewayARN (\s a -> s { _dwsrGatewayARN = a })
+-- | An array of the gateway\'s local disk IDs that are configured as working
+-- storage. Each local disk ID is specified as a string (minimum length of
+-- 1 and maximum length of 300). If no local disks are configured as
+-- working storage, then the DiskIds array is empty.
+dwsrsDiskIds :: Lens' DescribeWorkingStorageResponse [Text]
+dwsrsDiskIds = lens _dwsrsDiskIds (\ s a -> s{_dwsrsDiskIds = a}) . _Default . _Coerce;
 
--- | The total working storage in bytes allocated for the gateway. If no working
--- storage is configured for the gateway, this field returns 0.
-dwsrWorkingStorageAllocatedInBytes :: Lens' DescribeWorkingStorageResponse (Maybe Integer)
-dwsrWorkingStorageAllocatedInBytes =
-    lens _dwsrWorkingStorageAllocatedInBytes
-        (\s a -> s { _dwsrWorkingStorageAllocatedInBytes = a })
+-- | The total working storage in bytes allocated for the gateway. If no
+-- working storage is configured for the gateway, this field returns 0.
+dwsrsWorkingStorageAllocatedInBytes :: Lens' DescribeWorkingStorageResponse (Maybe Integer)
+dwsrsWorkingStorageAllocatedInBytes = lens _dwsrsWorkingStorageAllocatedInBytes (\ s a -> s{_dwsrsWorkingStorageAllocatedInBytes = a});
 
 -- | The total working storage in bytes in use by the gateway. If no working
 -- storage is configured for the gateway, this field returns 0.
-dwsrWorkingStorageUsedInBytes :: Lens' DescribeWorkingStorageResponse (Maybe Integer)
-dwsrWorkingStorageUsedInBytes =
-    lens _dwsrWorkingStorageUsedInBytes
-        (\s a -> s { _dwsrWorkingStorageUsedInBytes = a })
-
-instance ToPath DescribeWorkingStorage where
-    toPath = const "/"
-
-instance ToQuery DescribeWorkingStorage where
-    toQuery = const mempty
-
-instance ToHeaders DescribeWorkingStorage
-
-instance ToJSON DescribeWorkingStorage where
-    toJSON DescribeWorkingStorage{..} = object
-        [ "GatewayARN" .= _dwsGatewayARN
-        ]
-
-instance AWSRequest DescribeWorkingStorage where
-    type Sv DescribeWorkingStorage = StorageGateway
-    type Rs DescribeWorkingStorage = DescribeWorkingStorageResponse
-
-    request  = post "DescribeWorkingStorage"
-    response = jsonResponse
+dwsrsWorkingStorageUsedInBytes :: Lens' DescribeWorkingStorageResponse (Maybe Integer)
+dwsrsWorkingStorageUsedInBytes = lens _dwsrsWorkingStorageUsedInBytes (\ s a -> s{_dwsrsWorkingStorageUsedInBytes = a});
 
-instance FromJSON DescribeWorkingStorageResponse where
-    parseJSON = withObject "DescribeWorkingStorageResponse" $ \o -> DescribeWorkingStorageResponse
-        <$> o .:? "DiskIds" .!= mempty
-        <*> o .:? "GatewayARN"
-        <*> o .:? "WorkingStorageAllocatedInBytes"
-        <*> o .:? "WorkingStorageUsedInBytes"
+-- | The response status code.
+dwsrsStatus :: Lens' DescribeWorkingStorageResponse Int
+dwsrsStatus = lens _dwsrsStatus (\ s a -> s{_dwsrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/DisableGateway.hs b/gen/Network/AWS/StorageGateway/DisableGateway.hs
--- a/gen/Network/AWS/StorageGateway/DisableGateway.hs
+++ b/gen/Network/AWS/StorageGateway/DisableGateway.hs
@@ -1,118 +1,137 @@
-{-# 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.StorageGateway.DisableGateway
--- 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.
-
--- | Disables a gateway when the gateway is no longer functioning. For example, if
--- your gateway VM is damaged, you can disable the gateway so you can recover
--- virtual tapes.
+-- Disables a gateway when the gateway is no longer functioning. For
+-- example, if your gateway VM is damaged, you can disable the gateway so
+-- you can recover virtual tapes.
 --
 -- Use this operation for a gateway-VTL that is not reachable or not
 -- functioning.
 --
 -- Once a gateway is disabled it cannot be enabled.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DisableGateway.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_DisableGateway.html AWS API Reference> for DisableGateway.
 module Network.AWS.StorageGateway.DisableGateway
     (
-    -- * Request
-      DisableGateway
-    -- ** Request constructor
-    , disableGateway
-    -- ** Request lenses
-    , dg1GatewayARN
+    -- * Creating a Request
+      disableGateway
+    , DisableGateway
+    -- * Request Lenses
+    , dGatewayARN
 
-    -- * Response
-    , DisableGatewayResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , disableGatewayResponse
-    -- ** Response lenses
-    , dgr1GatewayARN
+    , DisableGatewayResponse
+    -- * Response Lenses
+    , disrsGatewayARN
+    , disrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-newtype DisableGateway = DisableGateway
-    { _dg1GatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'DisableGateway' constructor.
+-- | DisableGatewayInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'disableGateway' smart constructor.
+newtype DisableGateway = DisableGateway'
+    { _dGatewayARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DisableGateway' with the minimum fields required to make a request.
 --
--- * 'dg1GatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-disableGateway :: Text -- ^ 'dg1GatewayARN'
-               -> DisableGateway
-disableGateway p1 = DisableGateway
-    { _dg1GatewayARN = p1
+-- * 'dGatewayARN'
+disableGateway
+    :: Text -- ^ 'dGatewayARN'
+    -> DisableGateway
+disableGateway pGatewayARN_ =
+    DisableGateway'
+    { _dGatewayARN = pGatewayARN_
     }
 
-dg1GatewayARN :: Lens' DisableGateway Text
-dg1GatewayARN = lens _dg1GatewayARN (\s a -> s { _dg1GatewayARN = a })
+-- | Undocumented member.
+dGatewayARN :: Lens' DisableGateway Text
+dGatewayARN = lens _dGatewayARN (\ s a -> s{_dGatewayARN = a});
 
-newtype DisableGatewayResponse = DisableGatewayResponse
-    { _dgr1GatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest DisableGateway where
+        type Sv DisableGateway = StorageGateway
+        type Rs DisableGateway = DisableGatewayResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DisableGatewayResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'DisableGatewayResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dgr1GatewayARN' @::@ 'Maybe' 'Text'
---
-disableGatewayResponse :: DisableGatewayResponse
-disableGatewayResponse = DisableGatewayResponse
-    { _dgr1GatewayARN = Nothing
-    }
+instance ToHeaders DisableGateway where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.DisableGateway" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The unique Amazon Resource Name of the disabled gateway.
-dgr1GatewayARN :: Lens' DisableGatewayResponse (Maybe Text)
-dgr1GatewayARN = lens _dgr1GatewayARN (\s a -> s { _dgr1GatewayARN = a })
+instance ToJSON DisableGateway where
+        toJSON DisableGateway'{..}
+          = object ["GatewayARN" .= _dGatewayARN]
 
 instance ToPath DisableGateway where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DisableGateway where
-    toQuery = const mempty
-
-instance ToHeaders DisableGateway
+        toQuery = const mempty
 
-instance ToJSON DisableGateway where
-    toJSON DisableGateway{..} = object
-        [ "GatewayARN" .= _dg1GatewayARN
-        ]
+-- | DisableGatewayOutput
+--
+-- /See:/ 'disableGatewayResponse' smart constructor.
+data DisableGatewayResponse = DisableGatewayResponse'
+    { _disrsGatewayARN :: !(Maybe Text)
+    , _disrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DisableGateway where
-    type Sv DisableGateway = StorageGateway
-    type Rs DisableGateway = DisableGatewayResponse
+-- | Creates a value of 'DisableGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'disrsGatewayARN'
+--
+-- * 'disrsStatus'
+disableGatewayResponse
+    :: Int -- ^ 'disrsStatus'
+    -> DisableGatewayResponse
+disableGatewayResponse pStatus_ =
+    DisableGatewayResponse'
+    { _disrsGatewayARN = Nothing
+    , _disrsStatus = pStatus_
+    }
 
-    request  = post "DisableGateway"
-    response = jsonResponse
+-- | The unique Amazon Resource Name of the disabled gateway.
+disrsGatewayARN :: Lens' DisableGatewayResponse (Maybe Text)
+disrsGatewayARN = lens _disrsGatewayARN (\ s a -> s{_disrsGatewayARN = a});
 
-instance FromJSON DisableGatewayResponse where
-    parseJSON = withObject "DisableGatewayResponse" $ \o -> DisableGatewayResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+disrsStatus :: Lens' DisableGatewayResponse Int
+disrsStatus = lens _disrsStatus (\ s a -> s{_disrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ListGateways.hs b/gen/Network/AWS/StorageGateway/ListGateways.hs
--- a/gen/Network/AWS/StorageGateway/ListGateways.hs
+++ b/gen/Network/AWS/StorageGateway/ListGateways.hs
@@ -1,148 +1,172 @@
-{-# 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.StorageGateway.ListGateways
--- 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 operation lists gateways owned by an AWS account in a region specified
--- in the request. The returned list is ordered by gateway Amazon Resource Name
--- (ARN).
+-- This operation lists gateways owned by an AWS account in a region
+-- specified in the request. The returned list is ordered by gateway Amazon
+-- Resource Name (ARN).
 --
--- By default, the operation returns a maximum of 100 gateways. This operation
--- supports pagination that allows you to optionally reduce the number of
--- gateways returned in a response.
+-- By default, the operation returns a maximum of 100 gateways. This
+-- operation supports pagination that allows you to optionally reduce the
+-- number of gateways returned in a response.
 --
 -- If you have more gateways than are returned in a response-that is, the
--- response returns only a truncated list of your gateways-the response contains
--- a marker that you can specify in your next request to fetch the next page of
--- gateways.
+-- response returns only a truncated list of your gateways-the response
+-- contains a marker that you can specify in your next request to fetch the
+-- next page of gateways.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListGateways.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListGateways.html AWS API Reference> for ListGateways.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.ListGateways
     (
-    -- * Request
-      ListGateways
-    -- ** Request constructor
-    , listGateways
-    -- ** Request lenses
-    , lgLimit
+    -- * Creating a Request
+      listGateways
+    , ListGateways
+    -- * Request Lenses
     , lgMarker
+    , lgLimit
 
-    -- * Response
-    , ListGatewaysResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listGatewaysResponse
-    -- ** Response lenses
-    , lgrGateways
-    , lgrMarker
+    , ListGatewaysResponse
+    -- * Response Lenses
+    , lgrsMarker
+    , lgrsGateways
+    , lgrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data ListGateways = ListGateways
-    { _lgLimit  :: Maybe Nat
-    , _lgMarker :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'ListGateways' constructor.
+-- | A JSON object containing zero or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   ListGatewaysInput$Limit
+-- -   ListGatewaysInput$Marker
 --
--- * 'lgLimit' @::@ 'Maybe' 'Natural'
+-- /See:/ 'listGateways' smart constructor.
+data ListGateways = ListGateways'
+    { _lgMarker :: !(Maybe Text)
+    , _lgLimit  :: !(Maybe Nat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListGateways' with the minimum fields required to make a request.
 --
--- * 'lgMarker' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-listGateways :: ListGateways
-listGateways = ListGateways
+-- * 'lgMarker'
+--
+-- * 'lgLimit'
+listGateways
+    :: ListGateways
+listGateways =
+    ListGateways'
     { _lgMarker = Nothing
-    , _lgLimit  = Nothing
+    , _lgLimit = Nothing
     }
 
+-- | An opaque string that indicates the position at which to begin the
+-- returned list of gateways.
+lgMarker :: Lens' ListGateways (Maybe Text)
+lgMarker = lens _lgMarker (\ s a -> s{_lgMarker = a});
+
 -- | Specifies that the list of gateways returned be limited to the specified
 -- number of items.
 lgLimit :: Lens' ListGateways (Maybe Natural)
-lgLimit = lens _lgLimit (\s a -> s { _lgLimit = a }) . mapping _Nat
-
--- | An opaque string that indicates the position at which to begin the returned
--- list of gateways.
-lgMarker :: Lens' ListGateways (Maybe Text)
-lgMarker = lens _lgMarker (\s a -> s { _lgMarker = a })
+lgLimit = lens _lgLimit (\ s a -> s{_lgLimit = a}) . mapping _Nat;
 
-data ListGatewaysResponse = ListGatewaysResponse
-    { _lgrGateways :: List "Gateways" GatewayInfo
-    , _lgrMarker   :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSPager ListGateways where
+        page rq rs
+          | stop (rs ^. lgrsMarker) = Nothing
+          | stop (rs ^. lgrsGateways) = Nothing
+          | otherwise =
+            Just $ rq & lgMarker .~ rs ^. lgrsMarker
 
--- | 'ListGatewaysResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lgrGateways' @::@ ['GatewayInfo']
---
--- * 'lgrMarker' @::@ 'Maybe' 'Text'
---
-listGatewaysResponse :: ListGatewaysResponse
-listGatewaysResponse = ListGatewaysResponse
-    { _lgrGateways = mempty
-    , _lgrMarker   = Nothing
-    }
+instance AWSRequest ListGateways where
+        type Sv ListGateways = StorageGateway
+        type Rs ListGateways = ListGatewaysResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListGatewaysResponse' <$>
+                   (x .?> "Marker") <*> (x .?> "Gateways" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-lgrGateways :: Lens' ListGatewaysResponse [GatewayInfo]
-lgrGateways = lens _lgrGateways (\s a -> s { _lgrGateways = a }) . _List
+instance ToHeaders ListGateways where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListGateways" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-lgrMarker :: Lens' ListGatewaysResponse (Maybe Text)
-lgrMarker = lens _lgrMarker (\s a -> s { _lgrMarker = a })
+instance ToJSON ListGateways where
+        toJSON ListGateways'{..}
+          = object ["Marker" .= _lgMarker, "Limit" .= _lgLimit]
 
 instance ToPath ListGateways where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListGateways where
-    toQuery = const mempty
-
-instance ToHeaders ListGateways
+        toQuery = const mempty
 
-instance ToJSON ListGateways where
-    toJSON ListGateways{..} = object
-        [ "Marker" .= _lgMarker
-        , "Limit"  .= _lgLimit
-        ]
+-- | /See:/ 'listGatewaysResponse' smart constructor.
+data ListGatewaysResponse = ListGatewaysResponse'
+    { _lgrsMarker   :: !(Maybe Text)
+    , _lgrsGateways :: !(Maybe [GatewayInfo])
+    , _lgrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ListGateways where
-    type Sv ListGateways = StorageGateway
-    type Rs ListGateways = ListGatewaysResponse
+-- | Creates a value of 'ListGatewaysResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lgrsMarker'
+--
+-- * 'lgrsGateways'
+--
+-- * 'lgrsStatus'
+listGatewaysResponse
+    :: Int -- ^ 'lgrsStatus'
+    -> ListGatewaysResponse
+listGatewaysResponse pStatus_ =
+    ListGatewaysResponse'
+    { _lgrsMarker = Nothing
+    , _lgrsGateways = Nothing
+    , _lgrsStatus = pStatus_
+    }
 
-    request  = post "ListGateways"
-    response = jsonResponse
+-- | Undocumented member.
+lgrsMarker :: Lens' ListGatewaysResponse (Maybe Text)
+lgrsMarker = lens _lgrsMarker (\ s a -> s{_lgrsMarker = a});
 
-instance FromJSON ListGatewaysResponse where
-    parseJSON = withObject "ListGatewaysResponse" $ \o -> ListGatewaysResponse
-        <$> o .:? "Gateways" .!= mempty
-        <*> o .:? "Marker"
+-- | Undocumented member.
+lgrsGateways :: Lens' ListGatewaysResponse [GatewayInfo]
+lgrsGateways = lens _lgrsGateways (\ s a -> s{_lgrsGateways = a}) . _Default . _Coerce;
 
-instance AWSPager ListGateways where
-    page rq rs
-        | stop (rs ^. lgrMarker) = Nothing
-        | otherwise = (\x -> rq & lgMarker ?~ x)
-            <$> (rs ^. lgrMarker)
+-- | The response status code.
+lgrsStatus :: Lens' ListGatewaysResponse Int
+lgrsStatus = lens _lgrsStatus (\ s a -> s{_lgrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ListLocalDisks.hs b/gen/Network/AWS/StorageGateway/ListLocalDisks.hs
--- a/gen/Network/AWS/StorageGateway/ListLocalDisks.hs
+++ b/gen/Network/AWS/StorageGateway/ListLocalDisks.hs
@@ -1,128 +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.StorageGateway.ListLocalDisks
--- 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 operation returns a list of the gateway's local disks. To specify which
--- gateway to describe, you use the Amazon Resource Name (ARN) of the gateway in
--- the body of the request.
+-- This operation returns a list of the gateway\'s local disks. To specify
+-- which gateway to describe, you use the Amazon Resource Name (ARN) of the
+-- gateway in the body of the request.
 --
--- The request returns a list of all disks, specifying which are configured as
--- working storage, cache storage, or stored volume or not configured at all.
--- The response includes a 'DiskStatus' field. This field can have a value of
--- present (the disk is availble to use), missing (the disk is no longer
--- connected to the gateway), or mismatch (the disk node is occupied by a disk
--- that has incorrect metadata or the disk content is corrupted).
+-- The request returns a list of all disks, specifying which are configured
+-- as working storage, cache storage, or stored volume or not configured at
+-- all. The response includes a 'DiskStatus' field. This field can have a
+-- value of present (the disk is available to use), missing (the disk is no
+-- longer connected to the gateway), or mismatch (the disk node is occupied
+-- by a disk that has incorrect metadata or the disk content is corrupted).
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListLocalDisks.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListLocalDisks.html AWS API Reference> for ListLocalDisks.
 module Network.AWS.StorageGateway.ListLocalDisks
     (
-    -- * Request
-      ListLocalDisks
-    -- ** Request constructor
-    , listLocalDisks
-    -- ** Request lenses
+    -- * Creating a Request
+      listLocalDisks
+    , ListLocalDisks
+    -- * Request Lenses
     , lldGatewayARN
 
-    -- * Response
-    , ListLocalDisksResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listLocalDisksResponse
-    -- ** Response lenses
-    , lldrDisks
-    , lldrGatewayARN
+    , ListLocalDisksResponse
+    -- * Response Lenses
+    , lldrsGatewayARN
+    , lldrsDisks
+    , lldrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype ListLocalDisks = ListLocalDisks
+-- | A JSON object containing the of the gateway.
+--
+-- /See:/ 'listLocalDisks' smart constructor.
+newtype ListLocalDisks = ListLocalDisks'
     { _lldGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListLocalDisks' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ListLocalDisks' with the minimum fields required to make a request.
 --
--- * 'lldGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-listLocalDisks :: Text -- ^ 'lldGatewayARN'
-               -> ListLocalDisks
-listLocalDisks p1 = ListLocalDisks
-    { _lldGatewayARN = p1
+-- * 'lldGatewayARN'
+listLocalDisks
+    :: Text -- ^ 'lldGatewayARN'
+    -> ListLocalDisks
+listLocalDisks pGatewayARN_ =
+    ListLocalDisks'
+    { _lldGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 lldGatewayARN :: Lens' ListLocalDisks Text
-lldGatewayARN = lens _lldGatewayARN (\s a -> s { _lldGatewayARN = a })
-
-data ListLocalDisksResponse = ListLocalDisksResponse
-    { _lldrDisks      :: List "Disks" Disk
-    , _lldrGatewayARN :: Maybe Text
-    } deriving (Eq, Read, Show)
+lldGatewayARN = lens _lldGatewayARN (\ s a -> s{_lldGatewayARN = a});
 
--- | 'ListLocalDisksResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lldrDisks' @::@ ['Disk']
---
--- * 'lldrGatewayARN' @::@ 'Maybe' 'Text'
---
-listLocalDisksResponse :: ListLocalDisksResponse
-listLocalDisksResponse = ListLocalDisksResponse
-    { _lldrGatewayARN = Nothing
-    , _lldrDisks      = mempty
-    }
+instance AWSRequest ListLocalDisks where
+        type Sv ListLocalDisks = StorageGateway
+        type Rs ListLocalDisks = ListLocalDisksResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListLocalDisksResponse' <$>
+                   (x .?> "GatewayARN") <*> (x .?> "Disks" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-lldrDisks :: Lens' ListLocalDisksResponse [Disk]
-lldrDisks = lens _lldrDisks (\s a -> s { _lldrDisks = a }) . _List
+instance ToHeaders ListLocalDisks where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListLocalDisks" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-lldrGatewayARN :: Lens' ListLocalDisksResponse (Maybe Text)
-lldrGatewayARN = lens _lldrGatewayARN (\s a -> s { _lldrGatewayARN = a })
+instance ToJSON ListLocalDisks where
+        toJSON ListLocalDisks'{..}
+          = object ["GatewayARN" .= _lldGatewayARN]
 
 instance ToPath ListLocalDisks where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListLocalDisks where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListLocalDisks
+-- | /See:/ 'listLocalDisksResponse' smart constructor.
+data ListLocalDisksResponse = ListLocalDisksResponse'
+    { _lldrsGatewayARN :: !(Maybe Text)
+    , _lldrsDisks      :: !(Maybe [Disk])
+    , _lldrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListLocalDisks where
-    toJSON ListLocalDisks{..} = object
-        [ "GatewayARN" .= _lldGatewayARN
-        ]
+-- | Creates a value of 'ListLocalDisksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lldrsGatewayARN'
+--
+-- * 'lldrsDisks'
+--
+-- * 'lldrsStatus'
+listLocalDisksResponse
+    :: Int -- ^ 'lldrsStatus'
+    -> ListLocalDisksResponse
+listLocalDisksResponse pStatus_ =
+    ListLocalDisksResponse'
+    { _lldrsGatewayARN = Nothing
+    , _lldrsDisks = Nothing
+    , _lldrsStatus = pStatus_
+    }
 
-instance AWSRequest ListLocalDisks where
-    type Sv ListLocalDisks = StorageGateway
-    type Rs ListLocalDisks = ListLocalDisksResponse
+-- | Undocumented member.
+lldrsGatewayARN :: Lens' ListLocalDisksResponse (Maybe Text)
+lldrsGatewayARN = lens _lldrsGatewayARN (\ s a -> s{_lldrsGatewayARN = a});
 
-    request  = post "ListLocalDisks"
-    response = jsonResponse
+-- | Undocumented member.
+lldrsDisks :: Lens' ListLocalDisksResponse [Disk]
+lldrsDisks = lens _lldrsDisks (\ s a -> s{_lldrsDisks = a}) . _Default . _Coerce;
 
-instance FromJSON ListLocalDisksResponse where
-    parseJSON = withObject "ListLocalDisksResponse" $ \o -> ListLocalDisksResponse
-        <$> o .:? "Disks" .!= mempty
-        <*> o .:? "GatewayARN"
+-- | The response status code.
+lldrsStatus :: Lens' ListLocalDisksResponse Int
+lldrsStatus = lens _lldrsStatus (\ s a -> s{_lldrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ListVolumeInitiators.hs b/gen/Network/AWS/StorageGateway/ListVolumeInitiators.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/ListVolumeInitiators.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.StorageGateway.ListVolumeInitiators
+-- 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)
+--
+-- This operation lists iSCSI initiators that are connected to a volume.
+-- You can use this operation to determine whether a volume is being used
+-- or not.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListVolumeInitiators.html AWS API Reference> for ListVolumeInitiators.
+module Network.AWS.StorageGateway.ListVolumeInitiators
+    (
+    -- * Creating a Request
+      listVolumeInitiators
+    , ListVolumeInitiators
+    -- * Request Lenses
+    , lviVolumeARN
+
+    -- * Destructuring the Response
+    , listVolumeInitiatorsResponse
+    , ListVolumeInitiatorsResponse
+    -- * Response Lenses
+    , lvirsInitiators
+    , lvirsStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
+
+-- | ListVolumeInitiatorsInput
+--
+-- /See:/ 'listVolumeInitiators' smart constructor.
+newtype ListVolumeInitiators = ListVolumeInitiators'
+    { _lviVolumeARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListVolumeInitiators' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lviVolumeARN'
+listVolumeInitiators
+    :: Text -- ^ 'lviVolumeARN'
+    -> ListVolumeInitiators
+listVolumeInitiators pVolumeARN_ =
+    ListVolumeInitiators'
+    { _lviVolumeARN = pVolumeARN_
+    }
+
+-- | The Amazon Resource Name (ARN) of the volume. Use the ListVolumes
+-- operation to return a list of gateway volumes for the gateway.
+lviVolumeARN :: Lens' ListVolumeInitiators Text
+lviVolumeARN = lens _lviVolumeARN (\ s a -> s{_lviVolumeARN = a});
+
+instance AWSRequest ListVolumeInitiators where
+        type Sv ListVolumeInitiators = StorageGateway
+        type Rs ListVolumeInitiators =
+             ListVolumeInitiatorsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListVolumeInitiatorsResponse' <$>
+                   (x .?> "Initiators" .!@ mempty) <*>
+                     (pure (fromEnum s)))
+
+instance ToHeaders ListVolumeInitiators where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListVolumeInitiators" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
+
+instance ToJSON ListVolumeInitiators where
+        toJSON ListVolumeInitiators'{..}
+          = object ["VolumeARN" .= _lviVolumeARN]
+
+instance ToPath ListVolumeInitiators where
+        toPath = const "/"
+
+instance ToQuery ListVolumeInitiators where
+        toQuery = const mempty
+
+-- | ListVolumeInitiatorsOutput
+--
+-- /See:/ 'listVolumeInitiatorsResponse' smart constructor.
+data ListVolumeInitiatorsResponse = ListVolumeInitiatorsResponse'
+    { _lvirsInitiators :: !(Maybe [Text])
+    , _lvirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListVolumeInitiatorsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lvirsInitiators'
+--
+-- * 'lvirsStatus'
+listVolumeInitiatorsResponse
+    :: Int -- ^ 'lvirsStatus'
+    -> ListVolumeInitiatorsResponse
+listVolumeInitiatorsResponse pStatus_ =
+    ListVolumeInitiatorsResponse'
+    { _lvirsInitiators = Nothing
+    , _lvirsStatus = pStatus_
+    }
+
+-- | The host names and port numbers of all iSCSI initiators that are
+-- connected to the gateway.
+lvirsInitiators :: Lens' ListVolumeInitiatorsResponse [Text]
+lvirsInitiators = lens _lvirsInitiators (\ s a -> s{_lvirsInitiators = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lvirsStatus :: Lens' ListVolumeInitiatorsResponse Int
+lvirsStatus = lens _lvirsStatus (\ s a -> s{_lvirsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ListVolumeRecoveryPoints.hs b/gen/Network/AWS/StorageGateway/ListVolumeRecoveryPoints.hs
--- a/gen/Network/AWS/StorageGateway/ListVolumeRecoveryPoints.hs
+++ b/gen/Network/AWS/StorageGateway/ListVolumeRecoveryPoints.hs
@@ -1,128 +1,145 @@
-{-# 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.StorageGateway.ListVolumeRecoveryPoints
--- 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 operation lists the recovery points for a specified gateway. This
+-- This operation lists the recovery points for a specified gateway. This
 -- operation is supported only for the gateway-cached volume architecture.
 --
--- Each gateway-cached volume has one recovery point. A volume recovery point
--- is a point in time at which all data of the volume is consistent and from
--- which you can create a snapshot. To create a snapshot from a volume recovery
--- point use the 'CreateSnapshotFromVolumeRecoveryPoint' operation.
+-- Each gateway-cached volume has one recovery point. A volume recovery
+-- point is a point in time at which all data of the volume is consistent
+-- and from which you can create a snapshot. To create a snapshot from a
+-- volume recovery point use the CreateSnapshotFromVolumeRecoveryPoint
+-- operation.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListVolumeRecoveryPoints.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListVolumeRecoveryPoints.html AWS API Reference> for ListVolumeRecoveryPoints.
 module Network.AWS.StorageGateway.ListVolumeRecoveryPoints
     (
-    -- * Request
-      ListVolumeRecoveryPoints
-    -- ** Request constructor
-    , listVolumeRecoveryPoints
-    -- ** Request lenses
+    -- * Creating a Request
+      listVolumeRecoveryPoints
+    , ListVolumeRecoveryPoints
+    -- * Request Lenses
     , lvrpGatewayARN
 
-    -- * Response
-    , ListVolumeRecoveryPointsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listVolumeRecoveryPointsResponse
-    -- ** Response lenses
-    , lvrprGatewayARN
-    , lvrprVolumeRecoveryPointInfos
+    , ListVolumeRecoveryPointsResponse
+    -- * Response Lenses
+    , lvrprsVolumeRecoveryPointInfos
+    , lvrprsGatewayARN
+    , lvrprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype ListVolumeRecoveryPoints = ListVolumeRecoveryPoints
+-- | /See:/ 'listVolumeRecoveryPoints' smart constructor.
+newtype ListVolumeRecoveryPoints = ListVolumeRecoveryPoints'
     { _lvrpGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ListVolumeRecoveryPoints' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ListVolumeRecoveryPoints' with the minimum fields required to make a request.
 --
--- * 'lvrpGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-listVolumeRecoveryPoints :: Text -- ^ 'lvrpGatewayARN'
-                         -> ListVolumeRecoveryPoints
-listVolumeRecoveryPoints p1 = ListVolumeRecoveryPoints
-    { _lvrpGatewayARN = p1
+-- * 'lvrpGatewayARN'
+listVolumeRecoveryPoints
+    :: Text -- ^ 'lvrpGatewayARN'
+    -> ListVolumeRecoveryPoints
+listVolumeRecoveryPoints pGatewayARN_ =
+    ListVolumeRecoveryPoints'
+    { _lvrpGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 lvrpGatewayARN :: Lens' ListVolumeRecoveryPoints Text
-lvrpGatewayARN = lens _lvrpGatewayARN (\s a -> s { _lvrpGatewayARN = a })
-
-data ListVolumeRecoveryPointsResponse = ListVolumeRecoveryPointsResponse
-    { _lvrprGatewayARN               :: Maybe Text
-    , _lvrprVolumeRecoveryPointInfos :: List "VolumeRecoveryPointInfos" VolumeRecoveryPointInfo
-    } deriving (Eq, Read, Show)
+lvrpGatewayARN = lens _lvrpGatewayARN (\ s a -> s{_lvrpGatewayARN = a});
 
--- | 'ListVolumeRecoveryPointsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lvrprGatewayARN' @::@ 'Maybe' 'Text'
---
--- * 'lvrprVolumeRecoveryPointInfos' @::@ ['VolumeRecoveryPointInfo']
---
-listVolumeRecoveryPointsResponse :: ListVolumeRecoveryPointsResponse
-listVolumeRecoveryPointsResponse = ListVolumeRecoveryPointsResponse
-    { _lvrprGatewayARN               = Nothing
-    , _lvrprVolumeRecoveryPointInfos = mempty
-    }
+instance AWSRequest ListVolumeRecoveryPoints where
+        type Sv ListVolumeRecoveryPoints = StorageGateway
+        type Rs ListVolumeRecoveryPoints =
+             ListVolumeRecoveryPointsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListVolumeRecoveryPointsResponse' <$>
+                   (x .?> "VolumeRecoveryPointInfos" .!@ mempty) <*>
+                     (x .?> "GatewayARN")
+                     <*> (pure (fromEnum s)))
 
-lvrprGatewayARN :: Lens' ListVolumeRecoveryPointsResponse (Maybe Text)
-lvrprGatewayARN = lens _lvrprGatewayARN (\s a -> s { _lvrprGatewayARN = a })
+instance ToHeaders ListVolumeRecoveryPoints where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListVolumeRecoveryPoints"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-lvrprVolumeRecoveryPointInfos :: Lens' ListVolumeRecoveryPointsResponse [VolumeRecoveryPointInfo]
-lvrprVolumeRecoveryPointInfos =
-    lens _lvrprVolumeRecoveryPointInfos
-        (\s a -> s { _lvrprVolumeRecoveryPointInfos = a })
-            . _List
+instance ToJSON ListVolumeRecoveryPoints where
+        toJSON ListVolumeRecoveryPoints'{..}
+          = object ["GatewayARN" .= _lvrpGatewayARN]
 
 instance ToPath ListVolumeRecoveryPoints where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListVolumeRecoveryPoints where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListVolumeRecoveryPoints
+-- | /See:/ 'listVolumeRecoveryPointsResponse' smart constructor.
+data ListVolumeRecoveryPointsResponse = ListVolumeRecoveryPointsResponse'
+    { _lvrprsVolumeRecoveryPointInfos :: !(Maybe [VolumeRecoveryPointInfo])
+    , _lvrprsGatewayARN               :: !(Maybe Text)
+    , _lvrprsStatus                   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListVolumeRecoveryPoints where
-    toJSON ListVolumeRecoveryPoints{..} = object
-        [ "GatewayARN" .= _lvrpGatewayARN
-        ]
+-- | Creates a value of 'ListVolumeRecoveryPointsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lvrprsVolumeRecoveryPointInfos'
+--
+-- * 'lvrprsGatewayARN'
+--
+-- * 'lvrprsStatus'
+listVolumeRecoveryPointsResponse
+    :: Int -- ^ 'lvrprsStatus'
+    -> ListVolumeRecoveryPointsResponse
+listVolumeRecoveryPointsResponse pStatus_ =
+    ListVolumeRecoveryPointsResponse'
+    { _lvrprsVolumeRecoveryPointInfos = Nothing
+    , _lvrprsGatewayARN = Nothing
+    , _lvrprsStatus = pStatus_
+    }
 
-instance AWSRequest ListVolumeRecoveryPoints where
-    type Sv ListVolumeRecoveryPoints = StorageGateway
-    type Rs ListVolumeRecoveryPoints = ListVolumeRecoveryPointsResponse
+-- | Undocumented member.
+lvrprsVolumeRecoveryPointInfos :: Lens' ListVolumeRecoveryPointsResponse [VolumeRecoveryPointInfo]
+lvrprsVolumeRecoveryPointInfos = lens _lvrprsVolumeRecoveryPointInfos (\ s a -> s{_lvrprsVolumeRecoveryPointInfos = a}) . _Default . _Coerce;
 
-    request  = post "ListVolumeRecoveryPoints"
-    response = jsonResponse
+-- | Undocumented member.
+lvrprsGatewayARN :: Lens' ListVolumeRecoveryPointsResponse (Maybe Text)
+lvrprsGatewayARN = lens _lvrprsGatewayARN (\ s a -> s{_lvrprsGatewayARN = a});
 
-instance FromJSON ListVolumeRecoveryPointsResponse where
-    parseJSON = withObject "ListVolumeRecoveryPointsResponse" $ \o -> ListVolumeRecoveryPointsResponse
-        <$> o .:? "GatewayARN"
-        <*> o .:? "VolumeRecoveryPointInfos" .!= mempty
+-- | The response status code.
+lvrprsStatus :: Lens' ListVolumeRecoveryPointsResponse Int
+lvrprsStatus = lens _lvrprsStatus (\ s a -> s{_lvrprsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ListVolumes.hs b/gen/Network/AWS/StorageGateway/ListVolumes.hs
--- a/gen/Network/AWS/StorageGateway/ListVolumes.hs
+++ b/gen/Network/AWS/StorageGateway/ListVolumes.hs
@@ -1,166 +1,194 @@
-{-# 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.StorageGateway.ListVolumes
--- 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 operation lists the iSCSI stored volumes of a gateway. Results are
--- sorted by volume ARN. The response includes only the volume ARNs. If you want
--- additional volume information, use the 'DescribeStorediSCSIVolumes' API.
+-- This operation lists the iSCSI stored volumes of a gateway. Results are
+-- sorted by volume ARN. The response includes only the volume ARNs. If you
+-- want additional volume information, use the DescribeStorediSCSIVolumes
+-- API.
 --
 -- The operation supports pagination. By default, the operation returns a
--- maximum of up to 100 volumes. You can optionally specify the 'Limit' field in
--- the body to limit the number of volumes in the response. If the number of
--- volumes returned in the response is truncated, the response includes a Marker
--- field. You can use this Marker value in your subsequent request to retrieve
--- the next set of volumes.
+-- maximum of up to 100 volumes. You can optionally specify the 'Limit'
+-- field in the body to limit the number of volumes in the response. If the
+-- number of volumes returned in the response is truncated, the response
+-- includes a Marker field. You can use this Marker value in your
+-- subsequent request to retrieve the next set of volumes.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListVolumes.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ListVolumes.html AWS API Reference> for ListVolumes.
+--
+-- This operation returns paginated results.
 module Network.AWS.StorageGateway.ListVolumes
     (
-    -- * Request
-      ListVolumes
-    -- ** Request constructor
-    , listVolumes
-    -- ** Request lenses
-    , lvGatewayARN
-    , lvLimit
+    -- * Creating a Request
+      listVolumes
+    , ListVolumes
+    -- * Request Lenses
     , lvMarker
+    , lvLimit
+    , lvGatewayARN
 
-    -- * Response
-    , ListVolumesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listVolumesResponse
-    -- ** Response lenses
-    , lvrGatewayARN
-    , lvrMarker
-    , lvrVolumeInfos
+    , ListVolumesResponse
+    -- * Response Lenses
+    , lvrsGatewayARN
+    , lvrsMarker
+    , lvrsVolumeInfos
+    , lvrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data ListVolumes = ListVolumes
-    { _lvGatewayARN :: Text
-    , _lvLimit      :: Maybe Nat
-    , _lvMarker     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'ListVolumes' constructor.
+-- | A JSON object that contains one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   ListVolumesInput$Limit
+-- -   ListVolumesInput$Marker
 --
--- * 'lvGatewayARN' @::@ 'Text'
+-- /See:/ 'listVolumes' smart constructor.
+data ListVolumes = ListVolumes'
+    { _lvMarker     :: !(Maybe Text)
+    , _lvLimit      :: !(Maybe Nat)
+    , _lvGatewayARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListVolumes' with the minimum fields required to make a request.
 --
--- * 'lvLimit' @::@ 'Maybe' 'Natural'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'lvMarker' @::@ 'Maybe' 'Text'
+-- * 'lvMarker'
 --
-listVolumes :: Text -- ^ 'lvGatewayARN'
-            -> ListVolumes
-listVolumes p1 = ListVolumes
-    { _lvGatewayARN = p1
-    , _lvMarker     = Nothing
-    , _lvLimit      = Nothing
+-- * 'lvLimit'
+--
+-- * 'lvGatewayARN'
+listVolumes
+    :: Text -- ^ 'lvGatewayARN'
+    -> ListVolumes
+listVolumes pGatewayARN_ =
+    ListVolumes'
+    { _lvMarker = Nothing
+    , _lvLimit = Nothing
+    , _lvGatewayARN = pGatewayARN_
     }
 
-lvGatewayARN :: Lens' ListVolumes Text
-lvGatewayARN = lens _lvGatewayARN (\s a -> s { _lvGatewayARN = a })
+-- | A string that indicates the position at which to begin the returned list
+-- of volumes. Obtain the marker from the response of a previous List iSCSI
+-- Volumes request.
+lvMarker :: Lens' ListVolumes (Maybe Text)
+lvMarker = lens _lvMarker (\ s a -> s{_lvMarker = a});
 
 -- | Specifies that the list of volumes returned be limited to the specified
 -- number of items.
 lvLimit :: Lens' ListVolumes (Maybe Natural)
-lvLimit = lens _lvLimit (\s a -> s { _lvLimit = a }) . mapping _Nat
-
--- | A string that indicates the position at which to begin the returned list of
--- volumes. Obtain the marker from the response of a previous List iSCSI Volumes
--- request.
-lvMarker :: Lens' ListVolumes (Maybe Text)
-lvMarker = lens _lvMarker (\s a -> s { _lvMarker = a })
+lvLimit = lens _lvLimit (\ s a -> s{_lvLimit = a}) . mapping _Nat;
 
-data ListVolumesResponse = ListVolumesResponse
-    { _lvrGatewayARN  :: Maybe Text
-    , _lvrMarker      :: Maybe Text
-    , _lvrVolumeInfos :: List "VolumeInfos" VolumeInfo
-    } deriving (Eq, Read, Show)
+-- | Undocumented member.
+lvGatewayARN :: Lens' ListVolumes Text
+lvGatewayARN = lens _lvGatewayARN (\ s a -> s{_lvGatewayARN = a});
 
--- | 'ListVolumesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'lvrGatewayARN' @::@ 'Maybe' 'Text'
---
--- * 'lvrMarker' @::@ 'Maybe' 'Text'
---
--- * 'lvrVolumeInfos' @::@ ['VolumeInfo']
---
-listVolumesResponse :: ListVolumesResponse
-listVolumesResponse = ListVolumesResponse
-    { _lvrGatewayARN  = Nothing
-    , _lvrMarker      = Nothing
-    , _lvrVolumeInfos = mempty
-    }
+instance AWSPager ListVolumes where
+        page rq rs
+          | stop (rs ^. lvrsMarker) = Nothing
+          | stop (rs ^. lvrsVolumeInfos) = Nothing
+          | otherwise =
+            Just $ rq & lvMarker .~ rs ^. lvrsMarker
 
-lvrGatewayARN :: Lens' ListVolumesResponse (Maybe Text)
-lvrGatewayARN = lens _lvrGatewayARN (\s a -> s { _lvrGatewayARN = a })
+instance AWSRequest ListVolumes where
+        type Sv ListVolumes = StorageGateway
+        type Rs ListVolumes = ListVolumesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ListVolumesResponse' <$>
+                   (x .?> "GatewayARN") <*> (x .?> "Marker") <*>
+                     (x .?> "VolumeInfos" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
-lvrMarker :: Lens' ListVolumesResponse (Maybe Text)
-lvrMarker = lens _lvrMarker (\s a -> s { _lvrMarker = a })
+instance ToHeaders ListVolumes where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ListVolumes" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-lvrVolumeInfos :: Lens' ListVolumesResponse [VolumeInfo]
-lvrVolumeInfos = lens _lvrVolumeInfos (\s a -> s { _lvrVolumeInfos = a }) . _List
+instance ToJSON ListVolumes where
+        toJSON ListVolumes'{..}
+          = object
+              ["Marker" .= _lvMarker, "Limit" .= _lvLimit,
+               "GatewayARN" .= _lvGatewayARN]
 
 instance ToPath ListVolumes where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListVolumes where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ListVolumes
+-- | /See:/ 'listVolumesResponse' smart constructor.
+data ListVolumesResponse = ListVolumesResponse'
+    { _lvrsGatewayARN  :: !(Maybe Text)
+    , _lvrsMarker      :: !(Maybe Text)
+    , _lvrsVolumeInfos :: !(Maybe [VolumeInfo])
+    , _lvrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ListVolumes where
-    toJSON ListVolumes{..} = object
-        [ "GatewayARN" .= _lvGatewayARN
-        , "Marker"     .= _lvMarker
-        , "Limit"      .= _lvLimit
-        ]
+-- | Creates a value of 'ListVolumesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lvrsGatewayARN'
+--
+-- * 'lvrsMarker'
+--
+-- * 'lvrsVolumeInfos'
+--
+-- * 'lvrsStatus'
+listVolumesResponse
+    :: Int -- ^ 'lvrsStatus'
+    -> ListVolumesResponse
+listVolumesResponse pStatus_ =
+    ListVolumesResponse'
+    { _lvrsGatewayARN = Nothing
+    , _lvrsMarker = Nothing
+    , _lvrsVolumeInfos = Nothing
+    , _lvrsStatus = pStatus_
+    }
 
-instance AWSRequest ListVolumes where
-    type Sv ListVolumes = StorageGateway
-    type Rs ListVolumes = ListVolumesResponse
+-- | Undocumented member.
+lvrsGatewayARN :: Lens' ListVolumesResponse (Maybe Text)
+lvrsGatewayARN = lens _lvrsGatewayARN (\ s a -> s{_lvrsGatewayARN = a});
 
-    request  = post "ListVolumes"
-    response = jsonResponse
+-- | Undocumented member.
+lvrsMarker :: Lens' ListVolumesResponse (Maybe Text)
+lvrsMarker = lens _lvrsMarker (\ s a -> s{_lvrsMarker = a});
 
-instance FromJSON ListVolumesResponse where
-    parseJSON = withObject "ListVolumesResponse" $ \o -> ListVolumesResponse
-        <$> o .:? "GatewayARN"
-        <*> o .:? "Marker"
-        <*> o .:? "VolumeInfos" .!= mempty
+-- | Undocumented member.
+lvrsVolumeInfos :: Lens' ListVolumesResponse [VolumeInfo]
+lvrsVolumeInfos = lens _lvrsVolumeInfos (\ s a -> s{_lvrsVolumeInfos = a}) . _Default . _Coerce;
 
-instance AWSPager ListVolumes where
-    page rq rs
-        | stop (rs ^. lvrMarker) = Nothing
-        | otherwise = (\x -> rq & lvMarker ?~ x)
-            <$> (rs ^. lvrMarker)
+-- | The response status code.
+lvrsStatus :: Lens' ListVolumesResponse Int
+lvrsStatus = lens _lvrsStatus (\ s a -> s{_lvrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ResetCache.hs b/gen/Network/AWS/StorageGateway/ResetCache.hs
--- a/gen/Network/AWS/StorageGateway/ResetCache.hs
+++ b/gen/Network/AWS/StorageGateway/ResetCache.hs
@@ -1,113 +1,137 @@
-{-# 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.StorageGateway.ResetCache
--- 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 operation resets all cache disks and makes the disks available for
--- reconfiguration as cache storage. When a cache is reset, the gateway loses
--- its cache storage. At this point you can reconfigure the disks as cache
--- disks.
+-- This operation resets all cache disks that have encountered a error and
+-- makes the disks available for reconfiguration as cache storage. If your
+-- cache disk encounters a error, the gateway prevents read and write
+-- operations on virtual tapes in the gateway. For example, an error can
+-- occur when a disk is corrupted or removed from the gateway. When a cache
+-- is reset, the gateway loses its cache storage. At this point you can
+-- reconfigure the disks as cache disks.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ResetCache.html>
+-- If the cache disk you are resetting contains data that has not been
+-- uploaded to Amazon S3 yet, that data can be lost. After you reset cache
+-- disks, there will be no configured cache disks left in the gateway, so
+-- you must configure at least one new cache disk for your gateway to
+-- function properly.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ResetCache.html AWS API Reference> for ResetCache.
 module Network.AWS.StorageGateway.ResetCache
     (
-    -- * Request
-      ResetCache
-    -- ** Request constructor
-    , resetCache
-    -- ** Request lenses
+    -- * Creating a Request
+      resetCache
+    , ResetCache
+    -- * Request Lenses
     , rcGatewayARN
 
-    -- * Response
-    , ResetCacheResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , resetCacheResponse
-    -- ** Response lenses
-    , rcrGatewayARN
+    , ResetCacheResponse
+    -- * Response Lenses
+    , rcrsGatewayARN
+    , rcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype ResetCache = ResetCache
+-- | /See:/ 'resetCache' smart constructor.
+newtype ResetCache = ResetCache'
     { _rcGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ResetCache' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ResetCache' with the minimum fields required to make a request.
 --
--- * 'rcGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-resetCache :: Text -- ^ 'rcGatewayARN'
-           -> ResetCache
-resetCache p1 = ResetCache
-    { _rcGatewayARN = p1
+-- * 'rcGatewayARN'
+resetCache
+    :: Text -- ^ 'rcGatewayARN'
+    -> ResetCache
+resetCache pGatewayARN_ =
+    ResetCache'
+    { _rcGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 rcGatewayARN :: Lens' ResetCache Text
-rcGatewayARN = lens _rcGatewayARN (\s a -> s { _rcGatewayARN = a })
+rcGatewayARN = lens _rcGatewayARN (\ s a -> s{_rcGatewayARN = a});
 
-newtype ResetCacheResponse = ResetCacheResponse
-    { _rcrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest ResetCache where
+        type Sv ResetCache = StorageGateway
+        type Rs ResetCache = ResetCacheResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ResetCacheResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'ResetCacheResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rcrGatewayARN' @::@ 'Maybe' 'Text'
---
-resetCacheResponse :: ResetCacheResponse
-resetCacheResponse = ResetCacheResponse
-    { _rcrGatewayARN = Nothing
-    }
+instance ToHeaders ResetCache where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ResetCache" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-rcrGatewayARN :: Lens' ResetCacheResponse (Maybe Text)
-rcrGatewayARN = lens _rcrGatewayARN (\s a -> s { _rcrGatewayARN = a })
+instance ToJSON ResetCache where
+        toJSON ResetCache'{..}
+          = object ["GatewayARN" .= _rcGatewayARN]
 
 instance ToPath ResetCache where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ResetCache where
-    toQuery = const mempty
-
-instance ToHeaders ResetCache
+        toQuery = const mempty
 
-instance ToJSON ResetCache where
-    toJSON ResetCache{..} = object
-        [ "GatewayARN" .= _rcGatewayARN
-        ]
+-- | /See:/ 'resetCacheResponse' smart constructor.
+data ResetCacheResponse = ResetCacheResponse'
+    { _rcrsGatewayARN :: !(Maybe Text)
+    , _rcrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ResetCache where
-    type Sv ResetCache = StorageGateway
-    type Rs ResetCache = ResetCacheResponse
+-- | Creates a value of 'ResetCacheResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrsGatewayARN'
+--
+-- * 'rcrsStatus'
+resetCacheResponse
+    :: Int -- ^ 'rcrsStatus'
+    -> ResetCacheResponse
+resetCacheResponse pStatus_ =
+    ResetCacheResponse'
+    { _rcrsGatewayARN = Nothing
+    , _rcrsStatus = pStatus_
+    }
 
-    request  = post "ResetCache"
-    response = jsonResponse
+-- | Undocumented member.
+rcrsGatewayARN :: Lens' ResetCacheResponse (Maybe Text)
+rcrsGatewayARN = lens _rcrsGatewayARN (\ s a -> s{_rcrsGatewayARN = a});
 
-instance FromJSON ResetCacheResponse where
-    parseJSON = withObject "ResetCacheResponse" $ \o -> ResetCacheResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+rcrsStatus :: Lens' ResetCacheResponse Int
+rcrsStatus = lens _rcrsStatus (\ s a -> s{_rcrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/RetrieveTapeArchive.hs b/gen/Network/AWS/StorageGateway/RetrieveTapeArchive.hs
--- a/gen/Network/AWS/StorageGateway/RetrieveTapeArchive.hs
+++ b/gen/Network/AWS/StorageGateway/RetrieveTapeArchive.hs
@@ -1,136 +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.StorageGateway.RetrieveTapeArchive
--- 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.
-
--- | Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a
--- gateway-VTL. Virtual tapes archived in the VTS are not associated with any
--- gateway. However after a tape is retrieved, it is associated with a gateway,
--- even though it is also listed in the VTS.
+-- Retrieves an archived virtual tape from the virtual tape shelf (VTS) to
+-- a gateway-VTL. Virtual tapes archived in the VTS are not associated with
+-- any gateway. However after a tape is retrieved, it is associated with a
+-- gateway, even though it is also listed in the VTS.
 --
--- Once a tape is successfully retrieved to a gateway, it cannot be retrieved
--- again to another gateway. You must archive the tape again before you can
--- retrieve it to another gateway.
+-- Once a tape is successfully retrieved to a gateway, it cannot be
+-- retrieved again to another gateway. You must archive the tape again
+-- before you can retrieve it to another gateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RetrieveTapeArchive.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RetrieveTapeArchive.html AWS API Reference> for RetrieveTapeArchive.
 module Network.AWS.StorageGateway.RetrieveTapeArchive
     (
-    -- * Request
-      RetrieveTapeArchive
-    -- ** Request constructor
-    , retrieveTapeArchive
-    -- ** Request lenses
-    , rtaGatewayARN
+    -- * Creating a Request
+      retrieveTapeArchive
+    , RetrieveTapeArchive
+    -- * Request Lenses
     , rtaTapeARN
+    , rtaGatewayARN
 
-    -- * Response
-    , RetrieveTapeArchiveResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , retrieveTapeArchiveResponse
-    -- ** Response lenses
-    , rtarTapeARN
+    , RetrieveTapeArchiveResponse
+    -- * Response Lenses
+    , rtarsTapeARN
+    , rtarsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data RetrieveTapeArchive = RetrieveTapeArchive
-    { _rtaGatewayARN :: Text
-    , _rtaTapeARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'RetrieveTapeArchive' constructor.
+-- | RetrieveTapeArchiveInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'retrieveTapeArchive' smart constructor.
+data RetrieveTapeArchive = RetrieveTapeArchive'
+    { _rtaTapeARN    :: !Text
+    , _rtaGatewayARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RetrieveTapeArchive' with the minimum fields required to make a request.
 --
--- * 'rtaGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtaTapeARN' @::@ 'Text'
+-- * 'rtaTapeARN'
 --
-retrieveTapeArchive :: Text -- ^ 'rtaTapeARN'
-                    -> Text -- ^ 'rtaGatewayARN'
-                    -> RetrieveTapeArchive
-retrieveTapeArchive p1 p2 = RetrieveTapeArchive
-    { _rtaTapeARN    = p1
-    , _rtaGatewayARN = p2
+-- * 'rtaGatewayARN'
+retrieveTapeArchive
+    :: Text -- ^ 'rtaTapeARN'
+    -> Text -- ^ 'rtaGatewayARN'
+    -> RetrieveTapeArchive
+retrieveTapeArchive pTapeARN_ pGatewayARN_ =
+    RetrieveTapeArchive'
+    { _rtaTapeARN = pTapeARN_
+    , _rtaGatewayARN = pGatewayARN_
     }
 
+-- | The Amazon Resource Name (ARN) of the virtual tape you want to retrieve
+-- from the virtual tape shelf (VTS).
+rtaTapeARN :: Lens' RetrieveTapeArchive Text
+rtaTapeARN = lens _rtaTapeARN (\ s a -> s{_rtaTapeARN = a});
+
 -- | The Amazon Resource Name (ARN) of the gateway you want to retrieve the
--- virtual tape to. Use the 'ListGateways' operation to return a list of gateways
--- for your account and region.
+-- virtual tape to. Use the ListGateways operation to return a list of
+-- gateways for your account and region.
 --
--- You retrieve archived virtual tapes to only one gateway and the gateway must
--- be a gateway-VTL.
+-- You retrieve archived virtual tapes to only one gateway and the gateway
+-- must be a gateway-VTL.
 rtaGatewayARN :: Lens' RetrieveTapeArchive Text
-rtaGatewayARN = lens _rtaGatewayARN (\s a -> s { _rtaGatewayARN = a })
-
--- | The Amazon Resource Name (ARN) of the virtual tape you want to retrieve from
--- the virtual tape shelf (VTS).
-rtaTapeARN :: Lens' RetrieveTapeArchive Text
-rtaTapeARN = lens _rtaTapeARN (\s a -> s { _rtaTapeARN = a })
+rtaGatewayARN = lens _rtaGatewayARN (\ s a -> s{_rtaGatewayARN = a});
 
-newtype RetrieveTapeArchiveResponse = RetrieveTapeArchiveResponse
-    { _rtarTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest RetrieveTapeArchive where
+        type Sv RetrieveTapeArchive = StorageGateway
+        type Rs RetrieveTapeArchive =
+             RetrieveTapeArchiveResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RetrieveTapeArchiveResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | 'RetrieveTapeArchiveResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rtarTapeARN' @::@ 'Maybe' 'Text'
---
-retrieveTapeArchiveResponse :: RetrieveTapeArchiveResponse
-retrieveTapeArchiveResponse = RetrieveTapeArchiveResponse
-    { _rtarTapeARN = Nothing
-    }
+instance ToHeaders RetrieveTapeArchive where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.RetrieveTapeArchive" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the retrieved virtual tape.
-rtarTapeARN :: Lens' RetrieveTapeArchiveResponse (Maybe Text)
-rtarTapeARN = lens _rtarTapeARN (\s a -> s { _rtarTapeARN = a })
+instance ToJSON RetrieveTapeArchive where
+        toJSON RetrieveTapeArchive'{..}
+          = object
+              ["TapeARN" .= _rtaTapeARN,
+               "GatewayARN" .= _rtaGatewayARN]
 
 instance ToPath RetrieveTapeArchive where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RetrieveTapeArchive where
-    toQuery = const mempty
-
-instance ToHeaders RetrieveTapeArchive
+        toQuery = const mempty
 
-instance ToJSON RetrieveTapeArchive where
-    toJSON RetrieveTapeArchive{..} = object
-        [ "TapeARN"    .= _rtaTapeARN
-        , "GatewayARN" .= _rtaGatewayARN
-        ]
+-- | RetrieveTapeArchiveOutput
+--
+-- /See:/ 'retrieveTapeArchiveResponse' smart constructor.
+data RetrieveTapeArchiveResponse = RetrieveTapeArchiveResponse'
+    { _rtarsTapeARN :: !(Maybe Text)
+    , _rtarsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RetrieveTapeArchive where
-    type Sv RetrieveTapeArchive = StorageGateway
-    type Rs RetrieveTapeArchive = RetrieveTapeArchiveResponse
+-- | Creates a value of 'RetrieveTapeArchiveResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtarsTapeARN'
+--
+-- * 'rtarsStatus'
+retrieveTapeArchiveResponse
+    :: Int -- ^ 'rtarsStatus'
+    -> RetrieveTapeArchiveResponse
+retrieveTapeArchiveResponse pStatus_ =
+    RetrieveTapeArchiveResponse'
+    { _rtarsTapeARN = Nothing
+    , _rtarsStatus = pStatus_
+    }
 
-    request  = post "RetrieveTapeArchive"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the retrieved virtual tape.
+rtarsTapeARN :: Lens' RetrieveTapeArchiveResponse (Maybe Text)
+rtarsTapeARN = lens _rtarsTapeARN (\ s a -> s{_rtarsTapeARN = a});
 
-instance FromJSON RetrieveTapeArchiveResponse where
-    parseJSON = withObject "RetrieveTapeArchiveResponse" $ \o -> RetrieveTapeArchiveResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+rtarsStatus :: Lens' RetrieveTapeArchiveResponse Int
+rtarsStatus = lens _rtarsStatus (\ s a -> s{_rtarsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/RetrieveTapeRecoveryPoint.hs b/gen/Network/AWS/StorageGateway/RetrieveTapeRecoveryPoint.hs
--- a/gen/Network/AWS/StorageGateway/RetrieveTapeRecoveryPoint.hs
+++ b/gen/Network/AWS/StorageGateway/RetrieveTapeRecoveryPoint.hs
@@ -1,132 +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.StorageGateway.RetrieveTapeRecoveryPoint
--- 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.
-
--- | Retrieves the recovery point for the specified virtual tape.
+-- Retrieves the recovery point for the specified virtual tape.
 --
--- A recovery point is a point in time view of a virtual tape at which all the
--- data on the tape is consistent. If your gateway crashes, virtual tapes that
--- have recovery points can be recovered to a new gateway.
+-- A recovery point is a point in time view of a virtual tape at which all
+-- the data on the tape is consistent. If your gateway crashes, virtual
+-- tapes that have recovery points can be recovered to a new gateway.
 --
--- The virtual tape can be retrieved to only one gateway. The retrieved tape is
--- read-only. The virtual tape can be retrieved to only a gateway-VTL. There is
--- no charge for retrieving recovery points.
+-- The virtual tape can be retrieved to only one gateway. The retrieved
+-- tape is read-only. The virtual tape can be retrieved to only a
+-- gateway-VTL. There is no charge for retrieving recovery points.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RetrieveTapeRecoveryPoint.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_RetrieveTapeRecoveryPoint.html AWS API Reference> for RetrieveTapeRecoveryPoint.
 module Network.AWS.StorageGateway.RetrieveTapeRecoveryPoint
     (
-    -- * Request
-      RetrieveTapeRecoveryPoint
-    -- ** Request constructor
-    , retrieveTapeRecoveryPoint
-    -- ** Request lenses
-    , rtrpGatewayARN
+    -- * Creating a Request
+      retrieveTapeRecoveryPoint
+    , RetrieveTapeRecoveryPoint
+    -- * Request Lenses
     , rtrpTapeARN
+    , rtrpGatewayARN
 
-    -- * Response
-    , RetrieveTapeRecoveryPointResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , retrieveTapeRecoveryPointResponse
-    -- ** Response lenses
-    , rtrprTapeARN
+    , RetrieveTapeRecoveryPointResponse
+    -- * Response Lenses
+    , rtrprsTapeARN
+    , rtrprsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data RetrieveTapeRecoveryPoint = RetrieveTapeRecoveryPoint
-    { _rtrpGatewayARN :: Text
-    , _rtrpTapeARN    :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'RetrieveTapeRecoveryPoint' constructor.
+-- | RetrieveTapeRecoveryPointInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'retrieveTapeRecoveryPoint' smart constructor.
+data RetrieveTapeRecoveryPoint = RetrieveTapeRecoveryPoint'
+    { _rtrpTapeARN    :: !Text
+    , _rtrpGatewayARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RetrieveTapeRecoveryPoint' with the minimum fields required to make a request.
 --
--- * 'rtrpGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'rtrpTapeARN' @::@ 'Text'
+-- * 'rtrpTapeARN'
 --
-retrieveTapeRecoveryPoint :: Text -- ^ 'rtrpTapeARN'
-                          -> Text -- ^ 'rtrpGatewayARN'
-                          -> RetrieveTapeRecoveryPoint
-retrieveTapeRecoveryPoint p1 p2 = RetrieveTapeRecoveryPoint
-    { _rtrpTapeARN    = p1
-    , _rtrpGatewayARN = p2
+-- * 'rtrpGatewayARN'
+retrieveTapeRecoveryPoint
+    :: Text -- ^ 'rtrpTapeARN'
+    -> Text -- ^ 'rtrpGatewayARN'
+    -> RetrieveTapeRecoveryPoint
+retrieveTapeRecoveryPoint pTapeARN_ pGatewayARN_ =
+    RetrieveTapeRecoveryPoint'
+    { _rtrpTapeARN = pTapeARN_
+    , _rtrpGatewayARN = pGatewayARN_
     }
 
-rtrpGatewayARN :: Lens' RetrieveTapeRecoveryPoint Text
-rtrpGatewayARN = lens _rtrpGatewayARN (\s a -> s { _rtrpGatewayARN = a })
-
 -- | The Amazon Resource Name (ARN) of the virtual tape for which you want to
 -- retrieve the recovery point.
 rtrpTapeARN :: Lens' RetrieveTapeRecoveryPoint Text
-rtrpTapeARN = lens _rtrpTapeARN (\s a -> s { _rtrpTapeARN = a })
+rtrpTapeARN = lens _rtrpTapeARN (\ s a -> s{_rtrpTapeARN = a});
 
-newtype RetrieveTapeRecoveryPointResponse = RetrieveTapeRecoveryPointResponse
-    { _rtrprTapeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | Undocumented member.
+rtrpGatewayARN :: Lens' RetrieveTapeRecoveryPoint Text
+rtrpGatewayARN = lens _rtrpGatewayARN (\ s a -> s{_rtrpGatewayARN = a});
 
--- | 'RetrieveTapeRecoveryPointResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rtrprTapeARN' @::@ 'Maybe' 'Text'
---
-retrieveTapeRecoveryPointResponse :: RetrieveTapeRecoveryPointResponse
-retrieveTapeRecoveryPointResponse = RetrieveTapeRecoveryPointResponse
-    { _rtrprTapeARN = Nothing
-    }
+instance AWSRequest RetrieveTapeRecoveryPoint where
+        type Sv RetrieveTapeRecoveryPoint = StorageGateway
+        type Rs RetrieveTapeRecoveryPoint =
+             RetrieveTapeRecoveryPointResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 RetrieveTapeRecoveryPointResponse' <$>
+                   (x .?> "TapeARN") <*> (pure (fromEnum s)))
 
--- | The Amazon Resource Name (ARN) of the virtual tape for which the recovery
--- point was retrieved.
-rtrprTapeARN :: Lens' RetrieveTapeRecoveryPointResponse (Maybe Text)
-rtrprTapeARN = lens _rtrprTapeARN (\s a -> s { _rtrprTapeARN = a })
+instance ToHeaders RetrieveTapeRecoveryPoint where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.RetrieveTapeRecoveryPoint"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON RetrieveTapeRecoveryPoint where
+        toJSON RetrieveTapeRecoveryPoint'{..}
+          = object
+              ["TapeARN" .= _rtrpTapeARN,
+               "GatewayARN" .= _rtrpGatewayARN]
+
 instance ToPath RetrieveTapeRecoveryPoint where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RetrieveTapeRecoveryPoint where
-    toQuery = const mempty
-
-instance ToHeaders RetrieveTapeRecoveryPoint
+        toQuery = const mempty
 
-instance ToJSON RetrieveTapeRecoveryPoint where
-    toJSON RetrieveTapeRecoveryPoint{..} = object
-        [ "TapeARN"    .= _rtrpTapeARN
-        , "GatewayARN" .= _rtrpGatewayARN
-        ]
+-- | RetrieveTapeRecoveryPointOutput
+--
+-- /See:/ 'retrieveTapeRecoveryPointResponse' smart constructor.
+data RetrieveTapeRecoveryPointResponse = RetrieveTapeRecoveryPointResponse'
+    { _rtrprsTapeARN :: !(Maybe Text)
+    , _rtrprsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest RetrieveTapeRecoveryPoint where
-    type Sv RetrieveTapeRecoveryPoint = StorageGateway
-    type Rs RetrieveTapeRecoveryPoint = RetrieveTapeRecoveryPointResponse
+-- | Creates a value of 'RetrieveTapeRecoveryPointResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtrprsTapeARN'
+--
+-- * 'rtrprsStatus'
+retrieveTapeRecoveryPointResponse
+    :: Int -- ^ 'rtrprsStatus'
+    -> RetrieveTapeRecoveryPointResponse
+retrieveTapeRecoveryPointResponse pStatus_ =
+    RetrieveTapeRecoveryPointResponse'
+    { _rtrprsTapeARN = Nothing
+    , _rtrprsStatus = pStatus_
+    }
 
-    request  = post "RetrieveTapeRecoveryPoint"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the virtual tape for which the
+-- recovery point was retrieved.
+rtrprsTapeARN :: Lens' RetrieveTapeRecoveryPointResponse (Maybe Text)
+rtrprsTapeARN = lens _rtrprsTapeARN (\ s a -> s{_rtrprsTapeARN = a});
 
-instance FromJSON RetrieveTapeRecoveryPointResponse where
-    parseJSON = withObject "RetrieveTapeRecoveryPointResponse" $ \o -> RetrieveTapeRecoveryPointResponse
-        <$> o .:? "TapeARN"
+-- | The response status code.
+rtrprsStatus :: Lens' RetrieveTapeRecoveryPointResponse Int
+rtrprsStatus = lens _rtrprsStatus (\ s a -> s{_rtrprsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/ShutdownGateway.hs b/gen/Network/AWS/StorageGateway/ShutdownGateway.hs
--- a/gen/Network/AWS/StorageGateway/ShutdownGateway.hs
+++ b/gen/Network/AWS/StorageGateway/ShutdownGateway.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.StorageGateway.ShutdownGateway
--- 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 operation shuts down a gateway. To specify which gateway to shut down,
--- use the Amazon Resource Name (ARN) of the gateway in the body of your request.
+-- This operation shuts down a gateway. To specify which gateway to shut
+-- down, use the Amazon Resource Name (ARN) of the gateway in the body of
+-- your request.
 --
 -- The operation shuts down the gateway service component running in the
--- storage gateway's virtual machine (VM) and not the VM.
+-- storage gateway\'s virtual machine (VM) and not the VM.
 --
--- If you want to shut down the VM, it is recommended that you first shut down
--- the gateway component in the VM to avoid unpredictable conditions. After the
--- gateway is shutdown, you cannot call any other API except 'StartGateway', 'DescribeGatewayInformation', and 'ListGateways'. For more information, see 'ActivateGateway'. Your
--- applications cannot read from or write to the gateway's storage volumes, and
--- there are no snapshots taken.
+-- If you want to shut down the VM, it is recommended that you first shut
+-- down the gateway component in the VM to avoid unpredictable conditions.
 --
--- When you make a shutdown request, you will get a '200 OK' success response
--- immediately. However, it might take some time for the gateway to shut down.
--- You can call the 'DescribeGatewayInformation' API to check the status. For more
--- information, see 'ActivateGateway'. If do not intend to use the gateway again,
--- you must delete the gateway (using 'DeleteGateway') to no longer pay software
--- charges associated with the gateway.
+-- After the gateway is shutdown, you cannot call any other API except
+-- StartGateway, DescribeGatewayInformation, and ListGateways. For more
+-- information, see ActivateGateway. Your applications cannot read from or
+-- write to the gateway\'s storage volumes, and there are no snapshots
+-- taken.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ShutdownGateway.html>
+-- When you make a shutdown request, you will get a '200 OK' success
+-- response immediately. However, it might take some time for the gateway
+-- to shut down. You can call the DescribeGatewayInformation API to check
+-- the status. For more information, see ActivateGateway.
+--
+-- If do not intend to use the gateway again, you must delete the gateway
+-- (using DeleteGateway) to no longer pay software charges associated with
+-- the gateway.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_ShutdownGateway.html AWS API Reference> for ShutdownGateway.
 module Network.AWS.StorageGateway.ShutdownGateway
     (
-    -- * Request
-      ShutdownGateway
-    -- ** Request constructor
-    , shutdownGateway
-    -- ** Request lenses
-    , sg1GatewayARN
+    -- * Creating a Request
+      shutdownGateway
+    , ShutdownGateway
+    -- * Request Lenses
+    , sGatewayARN
 
-    -- * Response
-    , ShutdownGatewayResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , shutdownGatewayResponse
-    -- ** Response lenses
-    , sgr1GatewayARN
+    , ShutdownGatewayResponse
+    -- * Response Lenses
+    , sgrsGatewayARN
+    , sgrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-newtype ShutdownGateway = ShutdownGateway
-    { _sg1GatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'ShutdownGateway' constructor.
+-- | A JSON object containing the of the gateway to shut down.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'shutdownGateway' smart constructor.
+newtype ShutdownGateway = ShutdownGateway'
+    { _sGatewayARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ShutdownGateway' with the minimum fields required to make a request.
 --
--- * 'sg1GatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-shutdownGateway :: Text -- ^ 'sg1GatewayARN'
-                -> ShutdownGateway
-shutdownGateway p1 = ShutdownGateway
-    { _sg1GatewayARN = p1
+-- * 'sGatewayARN'
+shutdownGateway
+    :: Text -- ^ 'sGatewayARN'
+    -> ShutdownGateway
+shutdownGateway pGatewayARN_ =
+    ShutdownGateway'
+    { _sGatewayARN = pGatewayARN_
     }
 
-sg1GatewayARN :: Lens' ShutdownGateway Text
-sg1GatewayARN = lens _sg1GatewayARN (\s a -> s { _sg1GatewayARN = a })
+-- | Undocumented member.
+sGatewayARN :: Lens' ShutdownGateway Text
+sGatewayARN = lens _sGatewayARN (\ s a -> s{_sGatewayARN = a});
 
-newtype ShutdownGatewayResponse = ShutdownGatewayResponse
-    { _sgr1GatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest ShutdownGateway where
+        type Sv ShutdownGateway = StorageGateway
+        type Rs ShutdownGateway = ShutdownGatewayResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ShutdownGatewayResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'ShutdownGatewayResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sgr1GatewayARN' @::@ 'Maybe' 'Text'
---
-shutdownGatewayResponse :: ShutdownGatewayResponse
-shutdownGatewayResponse = ShutdownGatewayResponse
-    { _sgr1GatewayARN = Nothing
-    }
+instance ToHeaders ShutdownGateway where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.ShutdownGateway" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-sgr1GatewayARN :: Lens' ShutdownGatewayResponse (Maybe Text)
-sgr1GatewayARN = lens _sgr1GatewayARN (\s a -> s { _sgr1GatewayARN = a })
+instance ToJSON ShutdownGateway where
+        toJSON ShutdownGateway'{..}
+          = object ["GatewayARN" .= _sGatewayARN]
 
 instance ToPath ShutdownGateway where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ShutdownGateway where
-    toQuery = const mempty
-
-instance ToHeaders ShutdownGateway
+        toQuery = const mempty
 
-instance ToJSON ShutdownGateway where
-    toJSON ShutdownGateway{..} = object
-        [ "GatewayARN" .= _sg1GatewayARN
-        ]
+-- | A JSON object containing the of the gateway that was shut down.
+--
+-- /See:/ 'shutdownGatewayResponse' smart constructor.
+data ShutdownGatewayResponse = ShutdownGatewayResponse'
+    { _sgrsGatewayARN :: !(Maybe Text)
+    , _sgrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ShutdownGateway where
-    type Sv ShutdownGateway = StorageGateway
-    type Rs ShutdownGateway = ShutdownGatewayResponse
+-- | Creates a value of 'ShutdownGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sgrsGatewayARN'
+--
+-- * 'sgrsStatus'
+shutdownGatewayResponse
+    :: Int -- ^ 'sgrsStatus'
+    -> ShutdownGatewayResponse
+shutdownGatewayResponse pStatus_ =
+    ShutdownGatewayResponse'
+    { _sgrsGatewayARN = Nothing
+    , _sgrsStatus = pStatus_
+    }
 
-    request  = post "ShutdownGateway"
-    response = jsonResponse
+-- | Undocumented member.
+sgrsGatewayARN :: Lens' ShutdownGatewayResponse (Maybe Text)
+sgrsGatewayARN = lens _sgrsGatewayARN (\ s a -> s{_sgrsGatewayARN = a});
 
-instance FromJSON ShutdownGatewayResponse where
-    parseJSON = withObject "ShutdownGatewayResponse" $ \o -> ShutdownGatewayResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+sgrsStatus :: Lens' ShutdownGatewayResponse Int
+sgrsStatus = lens _sgrsStatus (\ s a -> s{_sgrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/StartGateway.hs b/gen/Network/AWS/StorageGateway/StartGateway.hs
--- a/gen/Network/AWS/StorageGateway/StartGateway.hs
+++ b/gen/Network/AWS/StorageGateway/StartGateway.hs
@@ -1,118 +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.StorageGateway.StartGateway
--- 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 operation starts a gateway that you previously shut down (see 'ShutdownGateway'). After the gateway starts, you can then make other API calls, your
--- applications can read from or write to the gateway's storage volumes and you
--- will be able to take snapshot backups.
+-- This operation starts a gateway that you previously shut down (see
+-- ShutdownGateway). After the gateway starts, you can then make other API
+-- calls, your applications can read from or write to the gateway\'s
+-- storage volumes and you will be able to take snapshot backups.
 --
--- When you make a request, you will get a 200 OK success response immediately.
--- However, it might take some time for the gateway to be ready. You should call 'DescribeGatewayInformation' and check the status before making any additional
--- API calls. For more information, see 'ActivateGateway'. To specify which
--- gateway to start, use the Amazon Resource Name (ARN) of the gateway in your
--- request.
+-- When you make a request, you will get a 200 OK success response
+-- immediately. However, it might take some time for the gateway to be
+-- ready. You should call DescribeGatewayInformation and check the status
+-- before making any additional API calls. For more information, see
+-- ActivateGateway.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_StartGateway.html>
+-- To specify which gateway to start, use the Amazon Resource Name (ARN) of
+-- the gateway in your request.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_StartGateway.html AWS API Reference> for StartGateway.
 module Network.AWS.StorageGateway.StartGateway
     (
-    -- * Request
-      StartGateway
-    -- ** Request constructor
-    , startGateway
-    -- ** Request lenses
+    -- * Creating a Request
+      startGateway
+    , StartGateway
+    -- * Request Lenses
     , sgGatewayARN
 
-    -- * Response
-    , StartGatewayResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , startGatewayResponse
-    -- ** Response lenses
-    , sgrGatewayARN
+    , StartGatewayResponse
+    -- * Response Lenses
+    , srsGatewayARN
+    , srsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype StartGateway = StartGateway
+-- | A JSON object containing the of the gateway to start.
+--
+-- /See:/ 'startGateway' smart constructor.
+newtype StartGateway = StartGateway'
     { _sgGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'StartGateway' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'StartGateway' with the minimum fields required to make a request.
 --
--- * 'sgGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-startGateway :: Text -- ^ 'sgGatewayARN'
-             -> StartGateway
-startGateway p1 = StartGateway
-    { _sgGatewayARN = p1
+-- * 'sgGatewayARN'
+startGateway
+    :: Text -- ^ 'sgGatewayARN'
+    -> StartGateway
+startGateway pGatewayARN_ =
+    StartGateway'
+    { _sgGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 sgGatewayARN :: Lens' StartGateway Text
-sgGatewayARN = lens _sgGatewayARN (\s a -> s { _sgGatewayARN = a })
+sgGatewayARN = lens _sgGatewayARN (\ s a -> s{_sgGatewayARN = a});
 
-newtype StartGatewayResponse = StartGatewayResponse
-    { _sgrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest StartGateway where
+        type Sv StartGateway = StorageGateway
+        type Rs StartGateway = StartGatewayResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 StartGatewayResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'StartGatewayResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sgrGatewayARN' @::@ 'Maybe' 'Text'
---
-startGatewayResponse :: StartGatewayResponse
-startGatewayResponse = StartGatewayResponse
-    { _sgrGatewayARN = Nothing
-    }
+instance ToHeaders StartGateway where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.StartGateway" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-sgrGatewayARN :: Lens' StartGatewayResponse (Maybe Text)
-sgrGatewayARN = lens _sgrGatewayARN (\s a -> s { _sgrGatewayARN = a })
+instance ToJSON StartGateway where
+        toJSON StartGateway'{..}
+          = object ["GatewayARN" .= _sgGatewayARN]
 
 instance ToPath StartGateway where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery StartGateway where
-    toQuery = const mempty
-
-instance ToHeaders StartGateway
+        toQuery = const mempty
 
-instance ToJSON StartGateway where
-    toJSON StartGateway{..} = object
-        [ "GatewayARN" .= _sgGatewayARN
-        ]
+-- | A JSON object containing the of the gateway that was restarted.
+--
+-- /See:/ 'startGatewayResponse' smart constructor.
+data StartGatewayResponse = StartGatewayResponse'
+    { _srsGatewayARN :: !(Maybe Text)
+    , _srsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest StartGateway where
-    type Sv StartGateway = StorageGateway
-    type Rs StartGateway = StartGatewayResponse
+-- | Creates a value of 'StartGatewayResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srsGatewayARN'
+--
+-- * 'srsStatus'
+startGatewayResponse
+    :: Int -- ^ 'srsStatus'
+    -> StartGatewayResponse
+startGatewayResponse pStatus_ =
+    StartGatewayResponse'
+    { _srsGatewayARN = Nothing
+    , _srsStatus = pStatus_
+    }
 
-    request  = post "StartGateway"
-    response = jsonResponse
+-- | Undocumented member.
+srsGatewayARN :: Lens' StartGatewayResponse (Maybe Text)
+srsGatewayARN = lens _srsGatewayARN (\ s a -> s{_srsGatewayARN = a});
 
-instance FromJSON StartGatewayResponse where
-    parseJSON = withObject "StartGatewayResponse" $ \o -> StartGatewayResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+srsStatus :: Lens' StartGatewayResponse Int
+srsStatus = lens _srsStatus (\ s a -> s{_srsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/Types.hs b/gen/Network/AWS/StorageGateway/Types.hs
--- a/gen/Network/AWS/StorageGateway/Types.hs
+++ b/gen/Network/AWS/StorageGateway/Types.hs
@@ -1,1453 +1,200 @@
-{-# 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.StorageGateway.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.StorageGateway.Types
-    (
-    -- * Service
-      StorageGateway
-    -- ** Error
-    , JSONError
-
-    -- * ChapInfo
-    , ChapInfo
-    , chapInfo
-    , ciInitiatorName
-    , ciSecretToAuthenticateInitiator
-    , ciSecretToAuthenticateTarget
-    , ciTargetARN
-
-    -- * VolumeiSCSIAttributes
-    , VolumeiSCSIAttributes
-    , volumeiSCSIAttributes
-    , vscsiaChapEnabled
-    , vscsiaLunNumber
-    , vscsiaNetworkInterfaceId
-    , vscsiaNetworkInterfacePort
-    , vscsiaTargetARN
-
-    -- * DeviceiSCSIAttributes
-    , DeviceiSCSIAttributes
-    , deviceiSCSIAttributes
-    , dscsiaChapEnabled
-    , dscsiaNetworkInterfaceId
-    , dscsiaNetworkInterfacePort
-    , dscsiaTargetARN
-
-    -- * Error'
-    , Error'
-    , error
-    , eErrorCode
-    , eErrorDetails
-
-    -- * Disk
-    , Disk
-    , disk
-    , dDiskAllocationResource
-    , dDiskAllocationType
-    , dDiskId
-    , dDiskNode
-    , dDiskPath
-    , dDiskSizeInBytes
-    , dDiskStatus
-
-    -- * Tape
-    , Tape
-    , tape
-    , tProgress
-    , tTapeARN
-    , tTapeBarcode
-    , tTapeSizeInBytes
-    , tTapeStatus
-    , tVTLDevice
-
-    -- * NetworkInterface
-    , NetworkInterface
-    , networkInterface
-    , niIpv4Address
-    , niIpv6Address
-    , niMacAddress
-
-    -- * VTLDevice
-    , VTLDevice
-    , vtldevice
-    , vtldDeviceiSCSIAttributes
-    , vtldVTLDeviceARN
-    , vtldVTLDeviceProductIdentifier
-    , vtldVTLDeviceType
-    , vtldVTLDeviceVendor
-
-    -- * TapeRecoveryPointInfo
-    , TapeRecoveryPointInfo
-    , tapeRecoveryPointInfo
-    , trpiTapeARN
-    , trpiTapeRecoveryPointTime
-    , trpiTapeSizeInBytes
-    , trpiTapeStatus
-
-    -- * VolumeRecoveryPointInfo
-    , VolumeRecoveryPointInfo
-    , volumeRecoveryPointInfo
-    , vrpiVolumeARN
-    , vrpiVolumeRecoveryPointTime
-    , vrpiVolumeSizeInBytes
-    , vrpiVolumeUsageInBytes
-
-    -- * TapeArchive
-    , TapeArchive
-    , tapeArchive
-    , taCompletionTime
-    , taRetrievedTo
-    , taTapeARN
-    , taTapeBarcode
-    , taTapeSizeInBytes
-    , taTapeStatus
-
-    -- * ErrorCode
-    , ErrorCode (..)
-
-    -- * StorediSCSIVolume
-    , StorediSCSIVolume
-    , storediSCSIVolume
-    , sscsivPreservedExistingData
-    , sscsivSourceSnapshotId
-    , sscsivVolumeARN
-    , sscsivVolumeDiskId
-    , sscsivVolumeId
-    , sscsivVolumeProgress
-    , sscsivVolumeSizeInBytes
-    , sscsivVolumeStatus
-    , sscsivVolumeType
-    , sscsivVolumeiSCSIAttributes
-
-    -- * CachediSCSIVolume
-    , CachediSCSIVolume
-    , cachediSCSIVolume
-    , cscsivSourceSnapshotId
-    , cscsivVolumeARN
-    , cscsivVolumeId
-    , cscsivVolumeProgress
-    , cscsivVolumeSizeInBytes
-    , cscsivVolumeStatus
-    , cscsivVolumeType
-    , cscsivVolumeiSCSIAttributes
-
-    -- * VolumeInfo
-    , VolumeInfo
-    , volumeInfo
-    , viVolumeARN
-    , viVolumeType
-
-    -- * GatewayInfo
-    , GatewayInfo
-    , gatewayInfo
-    , giGatewayARN
-    , giGatewayOperationalState
-    , giGatewayType
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2013-06-30@ of the Amazon Storage Gateway service.
-data StorageGateway
-
-instance AWSService StorageGateway where
-    type Sg StorageGateway = V4
-    type Er StorageGateway = JSONError
-
-    service = service'
-      where
-        service' :: Service StorageGateway
-        service' = Service
-            { _svcAbbrev       = "StorageGateway"
-            , _svcPrefix       = "storagegateway"
-            , _svcVersion      = "2013-06-30"
-            , _svcTargetPrefix = Just "StorageGateway_20130630"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry StorageGateway
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 400 && (Just "ThrottlingException") == e = True -- Throttling
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data ChapInfo = ChapInfo
-    { _ciInitiatorName                 :: Maybe Text
-    , _ciSecretToAuthenticateInitiator :: Maybe Text
-    , _ciSecretToAuthenticateTarget    :: Maybe Text
-    , _ciTargetARN                     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'ChapInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ciInitiatorName' @::@ 'Maybe' 'Text'
---
--- * 'ciSecretToAuthenticateInitiator' @::@ 'Maybe' 'Text'
---
--- * 'ciSecretToAuthenticateTarget' @::@ 'Maybe' 'Text'
---
--- * 'ciTargetARN' @::@ 'Maybe' 'Text'
---
-chapInfo :: ChapInfo
-chapInfo = ChapInfo
-    { _ciTargetARN                     = Nothing
-    , _ciSecretToAuthenticateInitiator = Nothing
-    , _ciInitiatorName                 = Nothing
-    , _ciSecretToAuthenticateTarget    = Nothing
-    }
-
--- | The iSCSI initiator that connects to the target.
-ciInitiatorName :: Lens' ChapInfo (Maybe Text)
-ciInitiatorName = lens _ciInitiatorName (\s a -> s { _ciInitiatorName = a })
-
--- | The secret key that the initiator (e.g. Windows client) must provide to
--- participate in mutual CHAP with the target.
-ciSecretToAuthenticateInitiator :: Lens' ChapInfo (Maybe Text)
-ciSecretToAuthenticateInitiator =
-    lens _ciSecretToAuthenticateInitiator
-        (\s a -> s { _ciSecretToAuthenticateInitiator = a })
-
--- | The secret key that the target must provide to participate in mutual CHAP
--- with the initiator (e.g. Windows client).
-ciSecretToAuthenticateTarget :: Lens' ChapInfo (Maybe Text)
-ciSecretToAuthenticateTarget =
-    lens _ciSecretToAuthenticateTarget
-        (\s a -> s { _ciSecretToAuthenticateTarget = a })
-
--- | The Amazon Resource Name (ARN) of the volume.
---
--- /Valid Values/: 50 to 500 lowercase letters, numbers, periods (.), and hyphens
--- (-).
-ciTargetARN :: Lens' ChapInfo (Maybe Text)
-ciTargetARN = lens _ciTargetARN (\s a -> s { _ciTargetARN = a })
-
-instance FromJSON ChapInfo where
-    parseJSON = withObject "ChapInfo" $ \o -> ChapInfo
-        <$> o .:? "InitiatorName"
-        <*> o .:? "SecretToAuthenticateInitiator"
-        <*> o .:? "SecretToAuthenticateTarget"
-        <*> o .:? "TargetARN"
-
-instance ToJSON ChapInfo where
-    toJSON ChapInfo{..} = object
-        [ "TargetARN"                     .= _ciTargetARN
-        , "SecretToAuthenticateInitiator" .= _ciSecretToAuthenticateInitiator
-        , "InitiatorName"                 .= _ciInitiatorName
-        , "SecretToAuthenticateTarget"    .= _ciSecretToAuthenticateTarget
-        ]
-
-data VolumeiSCSIAttributes = VolumeiSCSIAttributes
-    { _vscsiaChapEnabled          :: Maybe Bool
-    , _vscsiaLunNumber            :: Maybe Nat
-    , _vscsiaNetworkInterfaceId   :: Maybe Text
-    , _vscsiaNetworkInterfacePort :: Maybe Int
-    , _vscsiaTargetARN            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VolumeiSCSIAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vscsiaChapEnabled' @::@ 'Maybe' 'Bool'
---
--- * 'vscsiaLunNumber' @::@ 'Maybe' 'Natural'
---
--- * 'vscsiaNetworkInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'vscsiaNetworkInterfacePort' @::@ 'Maybe' 'Int'
---
--- * 'vscsiaTargetARN' @::@ 'Maybe' 'Text'
---
-volumeiSCSIAttributes :: VolumeiSCSIAttributes
-volumeiSCSIAttributes = VolumeiSCSIAttributes
-    { _vscsiaTargetARN            = Nothing
-    , _vscsiaNetworkInterfaceId   = Nothing
-    , _vscsiaNetworkInterfacePort = Nothing
-    , _vscsiaLunNumber            = Nothing
-    , _vscsiaChapEnabled          = Nothing
-    }
-
--- | Indicates whether mutual CHAP is enabled for the iSCSI target.
-vscsiaChapEnabled :: Lens' VolumeiSCSIAttributes (Maybe Bool)
-vscsiaChapEnabled =
-    lens _vscsiaChapEnabled (\s a -> s { _vscsiaChapEnabled = a })
-
--- | The logical disk number.
-vscsiaLunNumber :: Lens' VolumeiSCSIAttributes (Maybe Natural)
-vscsiaLunNumber = lens _vscsiaLunNumber (\s a -> s { _vscsiaLunNumber = a }) . mapping _Nat
-
--- | The network interface identifier.
-vscsiaNetworkInterfaceId :: Lens' VolumeiSCSIAttributes (Maybe Text)
-vscsiaNetworkInterfaceId =
-    lens _vscsiaNetworkInterfaceId
-        (\s a -> s { _vscsiaNetworkInterfaceId = a })
-
--- | The port used to communicate with iSCSI targets.
-vscsiaNetworkInterfacePort :: Lens' VolumeiSCSIAttributes (Maybe Int)
-vscsiaNetworkInterfacePort =
-    lens _vscsiaNetworkInterfacePort
-        (\s a -> s { _vscsiaNetworkInterfacePort = a })
-
--- | The Amazon Resource Name (ARN) of the volume target.
-vscsiaTargetARN :: Lens' VolumeiSCSIAttributes (Maybe Text)
-vscsiaTargetARN = lens _vscsiaTargetARN (\s a -> s { _vscsiaTargetARN = a })
-
-instance FromJSON VolumeiSCSIAttributes where
-    parseJSON = withObject "VolumeiSCSIAttributes" $ \o -> VolumeiSCSIAttributes
-        <$> o .:? "ChapEnabled"
-        <*> o .:? "LunNumber"
-        <*> o .:? "NetworkInterfaceId"
-        <*> o .:? "NetworkInterfacePort"
-        <*> o .:? "TargetARN"
-
-instance ToJSON VolumeiSCSIAttributes where
-    toJSON VolumeiSCSIAttributes{..} = object
-        [ "TargetARN"            .= _vscsiaTargetARN
-        , "NetworkInterfaceId"   .= _vscsiaNetworkInterfaceId
-        , "NetworkInterfacePort" .= _vscsiaNetworkInterfacePort
-        , "LunNumber"            .= _vscsiaLunNumber
-        , "ChapEnabled"          .= _vscsiaChapEnabled
-        ]
-
-data DeviceiSCSIAttributes = DeviceiSCSIAttributes
-    { _dscsiaChapEnabled          :: Maybe Bool
-    , _dscsiaNetworkInterfaceId   :: Maybe Text
-    , _dscsiaNetworkInterfacePort :: Maybe Int
-    , _dscsiaTargetARN            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'DeviceiSCSIAttributes' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dscsiaChapEnabled' @::@ 'Maybe' 'Bool'
---
--- * 'dscsiaNetworkInterfaceId' @::@ 'Maybe' 'Text'
---
--- * 'dscsiaNetworkInterfacePort' @::@ 'Maybe' 'Int'
---
--- * 'dscsiaTargetARN' @::@ 'Maybe' 'Text'
---
-deviceiSCSIAttributes :: DeviceiSCSIAttributes
-deviceiSCSIAttributes = DeviceiSCSIAttributes
-    { _dscsiaTargetARN            = Nothing
-    , _dscsiaNetworkInterfaceId   = Nothing
-    , _dscsiaNetworkInterfacePort = Nothing
-    , _dscsiaChapEnabled          = Nothing
-    }
-
--- | Indicates whether mutual CHAP is enabled for the iSCSI target.
-dscsiaChapEnabled :: Lens' DeviceiSCSIAttributes (Maybe Bool)
-dscsiaChapEnabled =
-    lens _dscsiaChapEnabled (\s a -> s { _dscsiaChapEnabled = a })
-
--- | The network interface identifier of the VTL device.
-dscsiaNetworkInterfaceId :: Lens' DeviceiSCSIAttributes (Maybe Text)
-dscsiaNetworkInterfaceId =
-    lens _dscsiaNetworkInterfaceId
-        (\s a -> s { _dscsiaNetworkInterfaceId = a })
-
--- | The port used to communicate with iSCSI VTL device targets.
-dscsiaNetworkInterfacePort :: Lens' DeviceiSCSIAttributes (Maybe Int)
-dscsiaNetworkInterfacePort =
-    lens _dscsiaNetworkInterfacePort
-        (\s a -> s { _dscsiaNetworkInterfacePort = a })
-
--- | Specifies the unique Amazon Resource Name(ARN) that encodes the iSCSI
--- qualified name(iqn) of a tape drive or media changer target.
-dscsiaTargetARN :: Lens' DeviceiSCSIAttributes (Maybe Text)
-dscsiaTargetARN = lens _dscsiaTargetARN (\s a -> s { _dscsiaTargetARN = a })
-
-instance FromJSON DeviceiSCSIAttributes where
-    parseJSON = withObject "DeviceiSCSIAttributes" $ \o -> DeviceiSCSIAttributes
-        <$> o .:? "ChapEnabled"
-        <*> o .:? "NetworkInterfaceId"
-        <*> o .:? "NetworkInterfacePort"
-        <*> o .:? "TargetARN"
-
-instance ToJSON DeviceiSCSIAttributes where
-    toJSON DeviceiSCSIAttributes{..} = object
-        [ "TargetARN"            .= _dscsiaTargetARN
-        , "NetworkInterfaceId"   .= _dscsiaNetworkInterfaceId
-        , "NetworkInterfacePort" .= _dscsiaNetworkInterfacePort
-        , "ChapEnabled"          .= _dscsiaChapEnabled
-        ]
-
-data Error' = Error'
-    { _eErrorCode    :: Maybe ErrorCode
-    , _eErrorDetails :: Map Text Text
-    } deriving (Eq, Read, Show)
-
--- | 'Error'' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'eErrorCode' @::@ 'Maybe' 'ErrorCode'
---
--- * 'eErrorDetails' @::@ 'HashMap' 'Text' 'Text'
---
-error :: Error'
-error = Error'
-    { _eErrorCode    = Nothing
-    , _eErrorDetails = mempty
-    }
-
--- | Additional information about the error.
-eErrorCode :: Lens' Error' (Maybe ErrorCode)
-eErrorCode = lens _eErrorCode (\s a -> s { _eErrorCode = a })
-
--- | Human-readable text that provides detail about the error that occurred.
-eErrorDetails :: Lens' Error' (HashMap Text Text)
-eErrorDetails = lens _eErrorDetails (\s a -> s { _eErrorDetails = a }) . _Map
-
-instance FromJSON Error' where
-    parseJSON = withObject "Error'" $ \o -> Error'
-        <$> o .:? "errorCode"
-        <*> o .:? "errorDetails" .!= mempty
-
-instance ToJSON Error' where
-    toJSON Error'{..} = object
-        [ "errorCode"    .= _eErrorCode
-        , "errorDetails" .= _eErrorDetails
-        ]
-
-data Disk = Disk
-    { _dDiskAllocationResource :: Maybe Text
-    , _dDiskAllocationType     :: Maybe Text
-    , _dDiskId                 :: Maybe Text
-    , _dDiskNode               :: Maybe Text
-    , _dDiskPath               :: Maybe Text
-    , _dDiskSizeInBytes        :: Maybe Integer
-    , _dDiskStatus             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Disk' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dDiskAllocationResource' @::@ 'Maybe' 'Text'
---
--- * 'dDiskAllocationType' @::@ 'Maybe' 'Text'
---
--- * 'dDiskId' @::@ 'Maybe' 'Text'
---
--- * 'dDiskNode' @::@ 'Maybe' 'Text'
---
--- * 'dDiskPath' @::@ 'Maybe' 'Text'
---
--- * 'dDiskSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'dDiskStatus' @::@ 'Maybe' 'Text'
---
-disk :: Disk
-disk = Disk
-    { _dDiskId                 = Nothing
-    , _dDiskPath               = Nothing
-    , _dDiskNode               = Nothing
-    , _dDiskStatus             = Nothing
-    , _dDiskSizeInBytes        = Nothing
-    , _dDiskAllocationType     = Nothing
-    , _dDiskAllocationResource = Nothing
-    }
-
-dDiskAllocationResource :: Lens' Disk (Maybe Text)
-dDiskAllocationResource =
-    lens _dDiskAllocationResource (\s a -> s { _dDiskAllocationResource = a })
-
-dDiskAllocationType :: Lens' Disk (Maybe Text)
-dDiskAllocationType =
-    lens _dDiskAllocationType (\s a -> s { _dDiskAllocationType = a })
-
-dDiskId :: Lens' Disk (Maybe Text)
-dDiskId = lens _dDiskId (\s a -> s { _dDiskId = a })
-
-dDiskNode :: Lens' Disk (Maybe Text)
-dDiskNode = lens _dDiskNode (\s a -> s { _dDiskNode = a })
-
-dDiskPath :: Lens' Disk (Maybe Text)
-dDiskPath = lens _dDiskPath (\s a -> s { _dDiskPath = a })
-
-dDiskSizeInBytes :: Lens' Disk (Maybe Integer)
-dDiskSizeInBytes = lens _dDiskSizeInBytes (\s a -> s { _dDiskSizeInBytes = a })
-
-dDiskStatus :: Lens' Disk (Maybe Text)
-dDiskStatus = lens _dDiskStatus (\s a -> s { _dDiskStatus = a })
-
-instance FromJSON Disk where
-    parseJSON = withObject "Disk" $ \o -> Disk
-        <$> o .:? "DiskAllocationResource"
-        <*> o .:? "DiskAllocationType"
-        <*> o .:? "DiskId"
-        <*> o .:? "DiskNode"
-        <*> o .:? "DiskPath"
-        <*> o .:? "DiskSizeInBytes"
-        <*> o .:? "DiskStatus"
-
-instance ToJSON Disk where
-    toJSON Disk{..} = object
-        [ "DiskId"                 .= _dDiskId
-        , "DiskPath"               .= _dDiskPath
-        , "DiskNode"               .= _dDiskNode
-        , "DiskStatus"             .= _dDiskStatus
-        , "DiskSizeInBytes"        .= _dDiskSizeInBytes
-        , "DiskAllocationType"     .= _dDiskAllocationType
-        , "DiskAllocationResource" .= _dDiskAllocationResource
-        ]
-
-data Tape = Tape
-    { _tProgress        :: Maybe Double
-    , _tTapeARN         :: Maybe Text
-    , _tTapeBarcode     :: Maybe Text
-    , _tTapeSizeInBytes :: Maybe Integer
-    , _tTapeStatus      :: Maybe Text
-    , _tVTLDevice       :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Tape' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tProgress' @::@ 'Maybe' 'Double'
---
--- * 'tTapeARN' @::@ 'Maybe' 'Text'
---
--- * 'tTapeBarcode' @::@ 'Maybe' 'Text'
---
--- * 'tTapeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'tTapeStatus' @::@ 'Maybe' 'Text'
---
--- * 'tVTLDevice' @::@ 'Maybe' 'Text'
---
-tape :: Tape
-tape = Tape
-    { _tTapeARN         = Nothing
-    , _tTapeBarcode     = Nothing
-    , _tTapeSizeInBytes = Nothing
-    , _tTapeStatus      = Nothing
-    , _tVTLDevice       = Nothing
-    , _tProgress        = Nothing
-    }
-
--- | For archiving virtual tapes, indicates how much data remains to be uploaded
--- before archiving is complete.
---
--- Range: 0 (not started) to 100 (complete).
-tProgress :: Lens' Tape (Maybe Double)
-tProgress = lens _tProgress (\s a -> s { _tProgress = a })
-
--- | The Amazon Resource Name (ARN) of the virtual tape.
-tTapeARN :: Lens' Tape (Maybe Text)
-tTapeARN = lens _tTapeARN (\s a -> s { _tTapeARN = a })
-
--- | The barcode that identifies a specific virtual tape.
-tTapeBarcode :: Lens' Tape (Maybe Text)
-tTapeBarcode = lens _tTapeBarcode (\s a -> s { _tTapeBarcode = a })
-
--- | The size, in bytes, of the virtual tape.
-tTapeSizeInBytes :: Lens' Tape (Maybe Integer)
-tTapeSizeInBytes = lens _tTapeSizeInBytes (\s a -> s { _tTapeSizeInBytes = a })
-
--- | The current state of the virtual tape.
-tTapeStatus :: Lens' Tape (Maybe Text)
-tTapeStatus = lens _tTapeStatus (\s a -> s { _tTapeStatus = a })
-
--- | The virtual tape library (VTL) device that the virtual tape is associated
--- with.
-tVTLDevice :: Lens' Tape (Maybe Text)
-tVTLDevice = lens _tVTLDevice (\s a -> s { _tVTLDevice = a })
-
-instance FromJSON Tape where
-    parseJSON = withObject "Tape" $ \o -> Tape
-        <$> o .:? "Progress"
-        <*> o .:? "TapeARN"
-        <*> o .:? "TapeBarcode"
-        <*> o .:? "TapeSizeInBytes"
-        <*> o .:? "TapeStatus"
-        <*> o .:? "VTLDevice"
-
-instance ToJSON Tape where
-    toJSON Tape{..} = object
-        [ "TapeARN"         .= _tTapeARN
-        , "TapeBarcode"     .= _tTapeBarcode
-        , "TapeSizeInBytes" .= _tTapeSizeInBytes
-        , "TapeStatus"      .= _tTapeStatus
-        , "VTLDevice"       .= _tVTLDevice
-        , "Progress"        .= _tProgress
-        ]
-
-data NetworkInterface = NetworkInterface
-    { _niIpv4Address :: Maybe Text
-    , _niIpv6Address :: Maybe Text
-    , _niMacAddress  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'NetworkInterface' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'niIpv4Address' @::@ 'Maybe' 'Text'
---
--- * 'niIpv6Address' @::@ 'Maybe' 'Text'
---
--- * 'niMacAddress' @::@ 'Maybe' 'Text'
---
-networkInterface :: NetworkInterface
-networkInterface = NetworkInterface
-    { _niIpv4Address = Nothing
-    , _niMacAddress  = Nothing
-    , _niIpv6Address = Nothing
-    }
-
--- | The Internet Protocol version 4 (IPv4) address of the interface.
-niIpv4Address :: Lens' NetworkInterface (Maybe Text)
-niIpv4Address = lens _niIpv4Address (\s a -> s { _niIpv4Address = a })
-
--- | The Internet Protocol version 6 (IPv6) address of the interface. /Currentlynot supported/.
-niIpv6Address :: Lens' NetworkInterface (Maybe Text)
-niIpv6Address = lens _niIpv6Address (\s a -> s { _niIpv6Address = a })
-
--- | The Media Access Control (MAC) address of the interface.
---
--- This is currently unsupported and will not be returned in output.
-niMacAddress :: Lens' NetworkInterface (Maybe Text)
-niMacAddress = lens _niMacAddress (\s a -> s { _niMacAddress = a })
-
-instance FromJSON NetworkInterface where
-    parseJSON = withObject "NetworkInterface" $ \o -> NetworkInterface
-        <$> o .:? "Ipv4Address"
-        <*> o .:? "Ipv6Address"
-        <*> o .:? "MacAddress"
-
-instance ToJSON NetworkInterface where
-    toJSON NetworkInterface{..} = object
-        [ "Ipv4Address" .= _niIpv4Address
-        , "MacAddress"  .= _niMacAddress
-        , "Ipv6Address" .= _niIpv6Address
-        ]
-
-data VTLDevice = VTLDevice
-    { _vtldDeviceiSCSIAttributes      :: Maybe DeviceiSCSIAttributes
-    , _vtldVTLDeviceARN               :: Maybe Text
-    , _vtldVTLDeviceProductIdentifier :: Maybe Text
-    , _vtldVTLDeviceType              :: Maybe Text
-    , _vtldVTLDeviceVendor            :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'VTLDevice' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vtldDeviceiSCSIAttributes' @::@ 'Maybe' 'DeviceiSCSIAttributes'
---
--- * 'vtldVTLDeviceARN' @::@ 'Maybe' 'Text'
---
--- * 'vtldVTLDeviceProductIdentifier' @::@ 'Maybe' 'Text'
---
--- * 'vtldVTLDeviceType' @::@ 'Maybe' 'Text'
---
--- * 'vtldVTLDeviceVendor' @::@ 'Maybe' 'Text'
---
-vtldevice :: VTLDevice
-vtldevice = VTLDevice
-    { _vtldVTLDeviceARN               = Nothing
-    , _vtldVTLDeviceType              = Nothing
-    , _vtldVTLDeviceVendor            = Nothing
-    , _vtldVTLDeviceProductIdentifier = Nothing
-    , _vtldDeviceiSCSIAttributes      = Nothing
-    }
-
--- | A list of iSCSI information about a VTL device.
-vtldDeviceiSCSIAttributes :: Lens' VTLDevice (Maybe DeviceiSCSIAttributes)
-vtldDeviceiSCSIAttributes =
-    lens _vtldDeviceiSCSIAttributes
-        (\s a -> s { _vtldDeviceiSCSIAttributes = a })
-
--- | Specifies the unique Amazon Resource Name (ARN) of the device (tape drive or
--- media changer).
-vtldVTLDeviceARN :: Lens' VTLDevice (Maybe Text)
-vtldVTLDeviceARN = lens _vtldVTLDeviceARN (\s a -> s { _vtldVTLDeviceARN = a })
-
-vtldVTLDeviceProductIdentifier :: Lens' VTLDevice (Maybe Text)
-vtldVTLDeviceProductIdentifier =
-    lens _vtldVTLDeviceProductIdentifier
-        (\s a -> s { _vtldVTLDeviceProductIdentifier = a })
-
-vtldVTLDeviceType :: Lens' VTLDevice (Maybe Text)
-vtldVTLDeviceType =
-    lens _vtldVTLDeviceType (\s a -> s { _vtldVTLDeviceType = a })
-
-vtldVTLDeviceVendor :: Lens' VTLDevice (Maybe Text)
-vtldVTLDeviceVendor =
-    lens _vtldVTLDeviceVendor (\s a -> s { _vtldVTLDeviceVendor = a })
-
-instance FromJSON VTLDevice where
-    parseJSON = withObject "VTLDevice" $ \o -> VTLDevice
-        <$> o .:? "DeviceiSCSIAttributes"
-        <*> o .:? "VTLDeviceARN"
-        <*> o .:? "VTLDeviceProductIdentifier"
-        <*> o .:? "VTLDeviceType"
-        <*> o .:? "VTLDeviceVendor"
-
-instance ToJSON VTLDevice where
-    toJSON VTLDevice{..} = object
-        [ "VTLDeviceARN"               .= _vtldVTLDeviceARN
-        , "VTLDeviceType"              .= _vtldVTLDeviceType
-        , "VTLDeviceVendor"            .= _vtldVTLDeviceVendor
-        , "VTLDeviceProductIdentifier" .= _vtldVTLDeviceProductIdentifier
-        , "DeviceiSCSIAttributes"      .= _vtldDeviceiSCSIAttributes
-        ]
-
-data TapeRecoveryPointInfo = TapeRecoveryPointInfo
-    { _trpiTapeARN               :: Maybe Text
-    , _trpiTapeRecoveryPointTime :: Maybe POSIX
-    , _trpiTapeSizeInBytes       :: Maybe Integer
-    , _trpiTapeStatus            :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TapeRecoveryPointInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'trpiTapeARN' @::@ 'Maybe' 'Text'
---
--- * 'trpiTapeRecoveryPointTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'trpiTapeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'trpiTapeStatus' @::@ 'Maybe' 'Text'
---
-tapeRecoveryPointInfo :: TapeRecoveryPointInfo
-tapeRecoveryPointInfo = TapeRecoveryPointInfo
-    { _trpiTapeARN               = Nothing
-    , _trpiTapeRecoveryPointTime = Nothing
-    , _trpiTapeSizeInBytes       = Nothing
-    , _trpiTapeStatus            = Nothing
-    }
-
--- | The Amazon Resource Name (ARN) of the virtual tape.
-trpiTapeARN :: Lens' TapeRecoveryPointInfo (Maybe Text)
-trpiTapeARN = lens _trpiTapeARN (\s a -> s { _trpiTapeARN = a })
-
--- | The time when the point-in-time view of the virtual tape was replicated for
--- later recovery.
---
--- The string format of the tape recovery point time is in the ISO8601 extended
--- YYYY-MM-DD'T'HH:MM:SS'Z' format.
-trpiTapeRecoveryPointTime :: Lens' TapeRecoveryPointInfo (Maybe UTCTime)
-trpiTapeRecoveryPointTime =
-    lens _trpiTapeRecoveryPointTime
-        (\s a -> s { _trpiTapeRecoveryPointTime = a })
-            . mapping _Time
-
--- | The size, in bytes, of the virtual tapes to recover.
-trpiTapeSizeInBytes :: Lens' TapeRecoveryPointInfo (Maybe Integer)
-trpiTapeSizeInBytes =
-    lens _trpiTapeSizeInBytes (\s a -> s { _trpiTapeSizeInBytes = a })
-
-trpiTapeStatus :: Lens' TapeRecoveryPointInfo (Maybe Text)
-trpiTapeStatus = lens _trpiTapeStatus (\s a -> s { _trpiTapeStatus = a })
-
-instance FromJSON TapeRecoveryPointInfo where
-    parseJSON = withObject "TapeRecoveryPointInfo" $ \o -> TapeRecoveryPointInfo
-        <$> o .:? "TapeARN"
-        <*> o .:? "TapeRecoveryPointTime"
-        <*> o .:? "TapeSizeInBytes"
-        <*> o .:? "TapeStatus"
-
-instance ToJSON TapeRecoveryPointInfo where
-    toJSON TapeRecoveryPointInfo{..} = object
-        [ "TapeARN"               .= _trpiTapeARN
-        , "TapeRecoveryPointTime" .= _trpiTapeRecoveryPointTime
-        , "TapeSizeInBytes"       .= _trpiTapeSizeInBytes
-        , "TapeStatus"            .= _trpiTapeStatus
-        ]
-
-data VolumeRecoveryPointInfo = VolumeRecoveryPointInfo
-    { _vrpiVolumeARN               :: Maybe Text
-    , _vrpiVolumeRecoveryPointTime :: Maybe Text
-    , _vrpiVolumeSizeInBytes       :: Maybe Integer
-    , _vrpiVolumeUsageInBytes      :: Maybe Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VolumeRecoveryPointInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'vrpiVolumeARN' @::@ 'Maybe' 'Text'
---
--- * 'vrpiVolumeRecoveryPointTime' @::@ 'Maybe' 'Text'
---
--- * 'vrpiVolumeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'vrpiVolumeUsageInBytes' @::@ 'Maybe' 'Integer'
---
-volumeRecoveryPointInfo :: VolumeRecoveryPointInfo
-volumeRecoveryPointInfo = VolumeRecoveryPointInfo
-    { _vrpiVolumeARN               = Nothing
-    , _vrpiVolumeSizeInBytes       = Nothing
-    , _vrpiVolumeUsageInBytes      = Nothing
-    , _vrpiVolumeRecoveryPointTime = Nothing
-    }
-
-vrpiVolumeARN :: Lens' VolumeRecoveryPointInfo (Maybe Text)
-vrpiVolumeARN = lens _vrpiVolumeARN (\s a -> s { _vrpiVolumeARN = a })
-
-vrpiVolumeRecoveryPointTime :: Lens' VolumeRecoveryPointInfo (Maybe Text)
-vrpiVolumeRecoveryPointTime =
-    lens _vrpiVolumeRecoveryPointTime
-        (\s a -> s { _vrpiVolumeRecoveryPointTime = a })
-
-vrpiVolumeSizeInBytes :: Lens' VolumeRecoveryPointInfo (Maybe Integer)
-vrpiVolumeSizeInBytes =
-    lens _vrpiVolumeSizeInBytes (\s a -> s { _vrpiVolumeSizeInBytes = a })
-
-vrpiVolumeUsageInBytes :: Lens' VolumeRecoveryPointInfo (Maybe Integer)
-vrpiVolumeUsageInBytes =
-    lens _vrpiVolumeUsageInBytes (\s a -> s { _vrpiVolumeUsageInBytes = a })
-
-instance FromJSON VolumeRecoveryPointInfo where
-    parseJSON = withObject "VolumeRecoveryPointInfo" $ \o -> VolumeRecoveryPointInfo
-        <$> o .:? "VolumeARN"
-        <*> o .:? "VolumeRecoveryPointTime"
-        <*> o .:? "VolumeSizeInBytes"
-        <*> o .:? "VolumeUsageInBytes"
-
-instance ToJSON VolumeRecoveryPointInfo where
-    toJSON VolumeRecoveryPointInfo{..} = object
-        [ "VolumeARN"               .= _vrpiVolumeARN
-        , "VolumeSizeInBytes"       .= _vrpiVolumeSizeInBytes
-        , "VolumeUsageInBytes"      .= _vrpiVolumeUsageInBytes
-        , "VolumeRecoveryPointTime" .= _vrpiVolumeRecoveryPointTime
-        ]
-
-data TapeArchive = TapeArchive
-    { _taCompletionTime  :: Maybe POSIX
-    , _taRetrievedTo     :: Maybe Text
-    , _taTapeARN         :: Maybe Text
-    , _taTapeBarcode     :: Maybe Text
-    , _taTapeSizeInBytes :: Maybe Integer
-    , _taTapeStatus      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TapeArchive' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'taCompletionTime' @::@ 'Maybe' 'UTCTime'
---
--- * 'taRetrievedTo' @::@ 'Maybe' 'Text'
---
--- * 'taTapeARN' @::@ 'Maybe' 'Text'
---
--- * 'taTapeBarcode' @::@ 'Maybe' 'Text'
---
--- * 'taTapeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'taTapeStatus' @::@ 'Maybe' 'Text'
---
-tapeArchive :: TapeArchive
-tapeArchive = TapeArchive
-    { _taTapeARN         = Nothing
-    , _taTapeBarcode     = Nothing
-    , _taTapeSizeInBytes = Nothing
-    , _taCompletionTime  = Nothing
-    , _taRetrievedTo     = Nothing
-    , _taTapeStatus      = Nothing
-    }
-
--- | The time that the archiving of the virtual tape was completed.
---
--- The string format of the completion time is in the ISO8601 extended
--- YYYY-MM-DD'T'HH:MM:SS'Z' format.
-taCompletionTime :: Lens' TapeArchive (Maybe UTCTime)
-taCompletionTime = lens _taCompletionTime (\s a -> s { _taCompletionTime = a }) . mapping _Time
-
--- | The Amazon Resource Name (ARN) of the gateway-VTL that the virtual tape is
--- being retrieved to.
---
--- The virtual tape is retrieved from the virtual tape shelf (VTS).
-taRetrievedTo :: Lens' TapeArchive (Maybe Text)
-taRetrievedTo = lens _taRetrievedTo (\s a -> s { _taRetrievedTo = a })
-
--- | The Amazon Resource Name (ARN) of an archived virtual tape.
-taTapeARN :: Lens' TapeArchive (Maybe Text)
-taTapeARN = lens _taTapeARN (\s a -> s { _taTapeARN = a })
-
--- | The barcode that identifies the archived virtual tape.
-taTapeBarcode :: Lens' TapeArchive (Maybe Text)
-taTapeBarcode = lens _taTapeBarcode (\s a -> s { _taTapeBarcode = a })
-
--- | The size, in bytes, of the archived virtual tape.
-taTapeSizeInBytes :: Lens' TapeArchive (Maybe Integer)
-taTapeSizeInBytes =
-    lens _taTapeSizeInBytes (\s a -> s { _taTapeSizeInBytes = a })
-
--- | The current state of the archived virtual tape.
-taTapeStatus :: Lens' TapeArchive (Maybe Text)
-taTapeStatus = lens _taTapeStatus (\s a -> s { _taTapeStatus = a })
-
-instance FromJSON TapeArchive where
-    parseJSON = withObject "TapeArchive" $ \o -> TapeArchive
-        <$> o .:? "CompletionTime"
-        <*> o .:? "RetrievedTo"
-        <*> o .:? "TapeARN"
-        <*> o .:? "TapeBarcode"
-        <*> o .:? "TapeSizeInBytes"
-        <*> o .:? "TapeStatus"
-
-instance ToJSON TapeArchive where
-    toJSON TapeArchive{..} = object
-        [ "TapeARN"         .= _taTapeARN
-        , "TapeBarcode"     .= _taTapeBarcode
-        , "TapeSizeInBytes" .= _taTapeSizeInBytes
-        , "CompletionTime"  .= _taCompletionTime
-        , "RetrievedTo"     .= _taRetrievedTo
-        , "TapeStatus"      .= _taTapeStatus
-        ]
-
-data ErrorCode
-    = ActivationKeyExpired              -- ^ ActivationKeyExpired
-    | ActivationKeyInvalid              -- ^ ActivationKeyInvalid
-    | ActivationKeyNotFound             -- ^ ActivationKeyNotFound
-    | AuthenticationFailure             -- ^ AuthenticationFailure
-    | BandwidthThrottleScheduleNotFound -- ^ BandwidthThrottleScheduleNotFound
-    | Blocked                           -- ^ Blocked
-    | CannotExportSnapshot              -- ^ CannotExportSnapshot
-    | ChapCredentialNotFound            -- ^ ChapCredentialNotFound
-    | DiskAlreadyAllocated              -- ^ DiskAlreadyAllocated
-    | DiskDoesNotExist                  -- ^ DiskDoesNotExist
-    | DiskSizeGreaterThanVolumeMaxSize  -- ^ DiskSizeGreaterThanVolumeMaxSize
-    | DiskSizeLessThanVolumeSize        -- ^ DiskSizeLessThanVolumeSize
-    | DiskSizeNotGigAligned             -- ^ DiskSizeNotGigAligned
-    | DuplicateCertificateInfo          -- ^ DuplicateCertificateInfo
-    | DuplicateSchedule                 -- ^ DuplicateSchedule
-    | EndpointNotFound                  -- ^ EndpointNotFound
-    | GatewayInternalError              -- ^ GatewayInternalError
-    | GatewayNotConnected               -- ^ GatewayNotConnected
-    | GatewayNotFound                   -- ^ GatewayNotFound
-    | GatewayProxyNetworkConnectionBusy -- ^ GatewayProxyNetworkConnectionBusy
-    | IAMNotSupported                   -- ^ IAMNotSupported
-    | InitiatorInvalid                  -- ^ InitiatorInvalid
-    | InitiatorNotFound                 -- ^ InitiatorNotFound
-    | InternalError                     -- ^ InternalError
-    | InvalidEndpoint                   -- ^ InvalidEndpoint
-    | InvalidGateway                    -- ^ InvalidGateway
-    | InvalidParameters                 -- ^ InvalidParameters
-    | InvalidSchedule                   -- ^ InvalidSchedule
-    | LocalStorageLimitExceeded         -- ^ LocalStorageLimitExceeded
-    | LunAlreadyAllocated               -- ^ LunAlreadyAllocated 
-    | LunInvalid                        -- ^ LunInvalid
-    | MaximumContentLengthExceeded      -- ^ MaximumContentLengthExceeded
-    | MaximumTapeCartridgeCountExceeded -- ^ MaximumTapeCartridgeCountExceeded
-    | MaximumVolumeCountExceeded        -- ^ MaximumVolumeCountExceeded
-    | NetworkConfigurationChanged       -- ^ NetworkConfigurationChanged
-    | NoDisksAvailable                  -- ^ NoDisksAvailable
-    | NotImplemented                    -- ^ NotImplemented
-    | NotSupported                      -- ^ NotSupported
-    | OperationAborted                  -- ^ OperationAborted
-    | OutdatedGateway                   -- ^ OutdatedGateway
-    | ParametersNotImplemented          -- ^ ParametersNotImplemented
-    | RegionInvalid                     -- ^ RegionInvalid
-    | RequestTimeout                    -- ^ RequestTimeout
-    | ServiceUnavailable                -- ^ ServiceUnavailable
-    | SnapshotDeleted                   -- ^ SnapshotDeleted
-    | SnapshotIdInvalid                 -- ^ SnapshotIdInvalid
-    | SnapshotInProgress                -- ^ SnapshotInProgress
-    | SnapshotNotFound                  -- ^ SnapshotNotFound
-    | SnapshotScheduleNotFound          -- ^ SnapshotScheduleNotFound
-    | StagingAreaFull                   -- ^ StagingAreaFull
-    | StorageFailure                    -- ^ StorageFailure
-    | TapeCartridgeNotFound             -- ^ TapeCartridgeNotFound
-    | TargetAlreadyExists               -- ^ TargetAlreadyExists
-    | TargetInvalid                     -- ^ TargetInvalid
-    | TargetNotFound                    -- ^ TargetNotFound
-    | UnauthorizedOperation             -- ^ UnauthorizedOperation
-    | VolumeAlreadyExists               -- ^ VolumeAlreadyExists
-    | VolumeIdInvalid                   -- ^ VolumeIdInvalid
-    | VolumeInUse                       -- ^ VolumeInUse
-    | VolumeNotFound                    -- ^ VolumeNotFound
-    | VolumeNotReady                    -- ^ VolumeNotReady
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
-
-instance Hashable ErrorCode
-
-instance FromText ErrorCode where
-    parser = takeLowerText >>= \case
-        "activationkeyexpired"              -> pure ActivationKeyExpired
-        "activationkeyinvalid"              -> pure ActivationKeyInvalid
-        "activationkeynotfound"             -> pure ActivationKeyNotFound
-        "authenticationfailure"             -> pure AuthenticationFailure
-        "bandwidththrottleschedulenotfound" -> pure BandwidthThrottleScheduleNotFound
-        "blocked"                           -> pure Blocked
-        "cannotexportsnapshot"              -> pure CannotExportSnapshot
-        "chapcredentialnotfound"            -> pure ChapCredentialNotFound
-        "diskalreadyallocated"              -> pure DiskAlreadyAllocated
-        "diskdoesnotexist"                  -> pure DiskDoesNotExist
-        "disksizegreaterthanvolumemaxsize"  -> pure DiskSizeGreaterThanVolumeMaxSize
-        "disksizelessthanvolumesize"        -> pure DiskSizeLessThanVolumeSize
-        "disksizenotgigaligned"             -> pure DiskSizeNotGigAligned
-        "duplicatecertificateinfo"          -> pure DuplicateCertificateInfo
-        "duplicateschedule"                 -> pure DuplicateSchedule
-        "endpointnotfound"                  -> pure EndpointNotFound
-        "gatewayinternalerror"              -> pure GatewayInternalError
-        "gatewaynotconnected"               -> pure GatewayNotConnected
-        "gatewaynotfound"                   -> pure GatewayNotFound
-        "gatewayproxynetworkconnectionbusy" -> pure GatewayProxyNetworkConnectionBusy
-        "iamnotsupported"                   -> pure IAMNotSupported
-        "initiatorinvalid"                  -> pure InitiatorInvalid
-        "initiatornotfound"                 -> pure InitiatorNotFound
-        "internalerror"                     -> pure InternalError
-        "invalidendpoint"                   -> pure InvalidEndpoint
-        "invalidgateway"                    -> pure InvalidGateway
-        "invalidparameters"                 -> pure InvalidParameters
-        "invalidschedule"                   -> pure InvalidSchedule
-        "localstoragelimitexceeded"         -> pure LocalStorageLimitExceeded
-        "lunalreadyallocated "              -> pure LunAlreadyAllocated
-        "luninvalid"                        -> pure LunInvalid
-        "maximumcontentlengthexceeded"      -> pure MaximumContentLengthExceeded
-        "maximumtapecartridgecountexceeded" -> pure MaximumTapeCartridgeCountExceeded
-        "maximumvolumecountexceeded"        -> pure MaximumVolumeCountExceeded
-        "networkconfigurationchanged"       -> pure NetworkConfigurationChanged
-        "nodisksavailable"                  -> pure NoDisksAvailable
-        "notimplemented"                    -> pure NotImplemented
-        "notsupported"                      -> pure NotSupported
-        "operationaborted"                  -> pure OperationAborted
-        "outdatedgateway"                   -> pure OutdatedGateway
-        "parametersnotimplemented"          -> pure ParametersNotImplemented
-        "regioninvalid"                     -> pure RegionInvalid
-        "requesttimeout"                    -> pure RequestTimeout
-        "serviceunavailable"                -> pure ServiceUnavailable
-        "snapshotdeleted"                   -> pure SnapshotDeleted
-        "snapshotidinvalid"                 -> pure SnapshotIdInvalid
-        "snapshotinprogress"                -> pure SnapshotInProgress
-        "snapshotnotfound"                  -> pure SnapshotNotFound
-        "snapshotschedulenotfound"          -> pure SnapshotScheduleNotFound
-        "stagingareafull"                   -> pure StagingAreaFull
-        "storagefailure"                    -> pure StorageFailure
-        "tapecartridgenotfound"             -> pure TapeCartridgeNotFound
-        "targetalreadyexists"               -> pure TargetAlreadyExists
-        "targetinvalid"                     -> pure TargetInvalid
-        "targetnotfound"                    -> pure TargetNotFound
-        "unauthorizedoperation"             -> pure UnauthorizedOperation
-        "volumealreadyexists"               -> pure VolumeAlreadyExists
-        "volumeidinvalid"                   -> pure VolumeIdInvalid
-        "volumeinuse"                       -> pure VolumeInUse
-        "volumenotfound"                    -> pure VolumeNotFound
-        "volumenotready"                    -> pure VolumeNotReady
-        e                                   -> fail $
-            "Failure parsing ErrorCode from " ++ show e
-
-instance ToText ErrorCode where
-    toText = \case
-        ActivationKeyExpired              -> "ActivationKeyExpired"
-        ActivationKeyInvalid              -> "ActivationKeyInvalid"
-        ActivationKeyNotFound             -> "ActivationKeyNotFound"
-        AuthenticationFailure             -> "AuthenticationFailure"
-        BandwidthThrottleScheduleNotFound -> "BandwidthThrottleScheduleNotFound"
-        Blocked                           -> "Blocked"
-        CannotExportSnapshot              -> "CannotExportSnapshot"
-        ChapCredentialNotFound            -> "ChapCredentialNotFound"
-        DiskAlreadyAllocated              -> "DiskAlreadyAllocated"
-        DiskDoesNotExist                  -> "DiskDoesNotExist"
-        DiskSizeGreaterThanVolumeMaxSize  -> "DiskSizeGreaterThanVolumeMaxSize"
-        DiskSizeLessThanVolumeSize        -> "DiskSizeLessThanVolumeSize"
-        DiskSizeNotGigAligned             -> "DiskSizeNotGigAligned"
-        DuplicateCertificateInfo          -> "DuplicateCertificateInfo"
-        DuplicateSchedule                 -> "DuplicateSchedule"
-        EndpointNotFound                  -> "EndpointNotFound"
-        GatewayInternalError              -> "GatewayInternalError"
-        GatewayNotConnected               -> "GatewayNotConnected"
-        GatewayNotFound                   -> "GatewayNotFound"
-        GatewayProxyNetworkConnectionBusy -> "GatewayProxyNetworkConnectionBusy"
-        IAMNotSupported                   -> "IAMNotSupported"
-        InitiatorInvalid                  -> "InitiatorInvalid"
-        InitiatorNotFound                 -> "InitiatorNotFound"
-        InternalError                     -> "InternalError"
-        InvalidEndpoint                   -> "InvalidEndpoint"
-        InvalidGateway                    -> "InvalidGateway"
-        InvalidParameters                 -> "InvalidParameters"
-        InvalidSchedule                   -> "InvalidSchedule"
-        LocalStorageLimitExceeded         -> "LocalStorageLimitExceeded"
-        LunAlreadyAllocated               -> "LunAlreadyAllocated "
-        LunInvalid                        -> "LunInvalid"
-        MaximumContentLengthExceeded      -> "MaximumContentLengthExceeded"
-        MaximumTapeCartridgeCountExceeded -> "MaximumTapeCartridgeCountExceeded"
-        MaximumVolumeCountExceeded        -> "MaximumVolumeCountExceeded"
-        NetworkConfigurationChanged       -> "NetworkConfigurationChanged"
-        NoDisksAvailable                  -> "NoDisksAvailable"
-        NotImplemented                    -> "NotImplemented"
-        NotSupported                      -> "NotSupported"
-        OperationAborted                  -> "OperationAborted"
-        OutdatedGateway                   -> "OutdatedGateway"
-        ParametersNotImplemented          -> "ParametersNotImplemented"
-        RegionInvalid                     -> "RegionInvalid"
-        RequestTimeout                    -> "RequestTimeout"
-        ServiceUnavailable                -> "ServiceUnavailable"
-        SnapshotDeleted                   -> "SnapshotDeleted"
-        SnapshotIdInvalid                 -> "SnapshotIdInvalid"
-        SnapshotInProgress                -> "SnapshotInProgress"
-        SnapshotNotFound                  -> "SnapshotNotFound"
-        SnapshotScheduleNotFound          -> "SnapshotScheduleNotFound"
-        StagingAreaFull                   -> "StagingAreaFull"
-        StorageFailure                    -> "StorageFailure"
-        TapeCartridgeNotFound             -> "TapeCartridgeNotFound"
-        TargetAlreadyExists               -> "TargetAlreadyExists"
-        TargetInvalid                     -> "TargetInvalid"
-        TargetNotFound                    -> "TargetNotFound"
-        UnauthorizedOperation             -> "UnauthorizedOperation"
-        VolumeAlreadyExists               -> "VolumeAlreadyExists"
-        VolumeIdInvalid                   -> "VolumeIdInvalid"
-        VolumeInUse                       -> "VolumeInUse"
-        VolumeNotFound                    -> "VolumeNotFound"
-        VolumeNotReady                    -> "VolumeNotReady"
-
-instance ToByteString ErrorCode
-instance ToHeader     ErrorCode
-instance ToQuery      ErrorCode
-
-instance FromJSON ErrorCode where
-    parseJSON = parseJSONText "ErrorCode"
-
-instance ToJSON ErrorCode where
-    toJSON = toJSONText
-
-data StorediSCSIVolume = StorediSCSIVolume
-    { _sscsivPreservedExistingData :: Maybe Bool
-    , _sscsivSourceSnapshotId      :: Maybe Text
-    , _sscsivVolumeARN             :: Maybe Text
-    , _sscsivVolumeDiskId          :: Maybe Text
-    , _sscsivVolumeId              :: Maybe Text
-    , _sscsivVolumeProgress        :: Maybe Double
-    , _sscsivVolumeSizeInBytes     :: Maybe Integer
-    , _sscsivVolumeStatus          :: Maybe Text
-    , _sscsivVolumeType            :: Maybe Text
-    , _sscsivVolumeiSCSIAttributes :: Maybe VolumeiSCSIAttributes
-    } deriving (Eq, Read, Show)
-
--- | 'StorediSCSIVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'sscsivPreservedExistingData' @::@ 'Maybe' 'Bool'
---
--- * 'sscsivSourceSnapshotId' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeARN' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeDiskId' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeId' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeProgress' @::@ 'Maybe' 'Double'
---
--- * 'sscsivVolumeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'sscsivVolumeStatus' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeType' @::@ 'Maybe' 'Text'
---
--- * 'sscsivVolumeiSCSIAttributes' @::@ 'Maybe' 'VolumeiSCSIAttributes'
---
-storediSCSIVolume :: StorediSCSIVolume
-storediSCSIVolume = StorediSCSIVolume
-    { _sscsivVolumeARN             = Nothing
-    , _sscsivVolumeId              = Nothing
-    , _sscsivVolumeType            = Nothing
-    , _sscsivVolumeStatus          = Nothing
-    , _sscsivVolumeSizeInBytes     = Nothing
-    , _sscsivVolumeProgress        = Nothing
-    , _sscsivVolumeDiskId          = Nothing
-    , _sscsivSourceSnapshotId      = Nothing
-    , _sscsivPreservedExistingData = Nothing
-    , _sscsivVolumeiSCSIAttributes = Nothing
-    }
-
-sscsivPreservedExistingData :: Lens' StorediSCSIVolume (Maybe Bool)
-sscsivPreservedExistingData =
-    lens _sscsivPreservedExistingData
-        (\s a -> s { _sscsivPreservedExistingData = a })
-
-sscsivSourceSnapshotId :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivSourceSnapshotId =
-    lens _sscsivSourceSnapshotId (\s a -> s { _sscsivSourceSnapshotId = a })
-
-sscsivVolumeARN :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivVolumeARN = lens _sscsivVolumeARN (\s a -> s { _sscsivVolumeARN = a })
-
-sscsivVolumeDiskId :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivVolumeDiskId =
-    lens _sscsivVolumeDiskId (\s a -> s { _sscsivVolumeDiskId = a })
-
-sscsivVolumeId :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivVolumeId = lens _sscsivVolumeId (\s a -> s { _sscsivVolumeId = a })
-
-sscsivVolumeProgress :: Lens' StorediSCSIVolume (Maybe Double)
-sscsivVolumeProgress =
-    lens _sscsivVolumeProgress (\s a -> s { _sscsivVolumeProgress = a })
-
-sscsivVolumeSizeInBytes :: Lens' StorediSCSIVolume (Maybe Integer)
-sscsivVolumeSizeInBytes =
-    lens _sscsivVolumeSizeInBytes (\s a -> s { _sscsivVolumeSizeInBytes = a })
-
-sscsivVolumeStatus :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivVolumeStatus =
-    lens _sscsivVolumeStatus (\s a -> s { _sscsivVolumeStatus = a })
-
-sscsivVolumeType :: Lens' StorediSCSIVolume (Maybe Text)
-sscsivVolumeType = lens _sscsivVolumeType (\s a -> s { _sscsivVolumeType = a })
-
-sscsivVolumeiSCSIAttributes :: Lens' StorediSCSIVolume (Maybe VolumeiSCSIAttributes)
-sscsivVolumeiSCSIAttributes =
-    lens _sscsivVolumeiSCSIAttributes
-        (\s a -> s { _sscsivVolumeiSCSIAttributes = a })
-
-instance FromJSON StorediSCSIVolume where
-    parseJSON = withObject "StorediSCSIVolume" $ \o -> StorediSCSIVolume
-        <$> o .:? "PreservedExistingData"
-        <*> o .:? "SourceSnapshotId"
-        <*> o .:? "VolumeARN"
-        <*> o .:? "VolumeDiskId"
-        <*> o .:? "VolumeId"
-        <*> o .:? "VolumeProgress"
-        <*> o .:? "VolumeSizeInBytes"
-        <*> o .:? "VolumeStatus"
-        <*> o .:? "VolumeType"
-        <*> o .:? "VolumeiSCSIAttributes"
-
-instance ToJSON StorediSCSIVolume where
-    toJSON StorediSCSIVolume{..} = object
-        [ "VolumeARN"             .= _sscsivVolumeARN
-        , "VolumeId"              .= _sscsivVolumeId
-        , "VolumeType"            .= _sscsivVolumeType
-        , "VolumeStatus"          .= _sscsivVolumeStatus
-        , "VolumeSizeInBytes"     .= _sscsivVolumeSizeInBytes
-        , "VolumeProgress"        .= _sscsivVolumeProgress
-        , "VolumeDiskId"          .= _sscsivVolumeDiskId
-        , "SourceSnapshotId"      .= _sscsivSourceSnapshotId
-        , "PreservedExistingData" .= _sscsivPreservedExistingData
-        , "VolumeiSCSIAttributes" .= _sscsivVolumeiSCSIAttributes
-        ]
-
-data CachediSCSIVolume = CachediSCSIVolume
-    { _cscsivSourceSnapshotId      :: Maybe Text
-    , _cscsivVolumeARN             :: Maybe Text
-    , _cscsivVolumeId              :: Maybe Text
-    , _cscsivVolumeProgress        :: Maybe Double
-    , _cscsivVolumeSizeInBytes     :: Maybe Integer
-    , _cscsivVolumeStatus          :: Maybe Text
-    , _cscsivVolumeType            :: Maybe Text
-    , _cscsivVolumeiSCSIAttributes :: Maybe VolumeiSCSIAttributes
-    } deriving (Eq, Read, Show)
-
--- | 'CachediSCSIVolume' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cscsivSourceSnapshotId' @::@ 'Maybe' 'Text'
---
--- * 'cscsivVolumeARN' @::@ 'Maybe' 'Text'
---
--- * 'cscsivVolumeId' @::@ 'Maybe' 'Text'
---
--- * 'cscsivVolumeProgress' @::@ 'Maybe' 'Double'
---
--- * 'cscsivVolumeSizeInBytes' @::@ 'Maybe' 'Integer'
---
--- * 'cscsivVolumeStatus' @::@ 'Maybe' 'Text'
---
--- * 'cscsivVolumeType' @::@ 'Maybe' 'Text'
---
--- * 'cscsivVolumeiSCSIAttributes' @::@ 'Maybe' 'VolumeiSCSIAttributes'
---
-cachediSCSIVolume :: CachediSCSIVolume
-cachediSCSIVolume = CachediSCSIVolume
-    { _cscsivVolumeARN             = Nothing
-    , _cscsivVolumeId              = Nothing
-    , _cscsivVolumeType            = Nothing
-    , _cscsivVolumeStatus          = Nothing
-    , _cscsivVolumeSizeInBytes     = Nothing
-    , _cscsivVolumeProgress        = Nothing
-    , _cscsivSourceSnapshotId      = Nothing
-    , _cscsivVolumeiSCSIAttributes = Nothing
-    }
-
-cscsivSourceSnapshotId :: Lens' CachediSCSIVolume (Maybe Text)
-cscsivSourceSnapshotId =
-    lens _cscsivSourceSnapshotId (\s a -> s { _cscsivSourceSnapshotId = a })
-
-cscsivVolumeARN :: Lens' CachediSCSIVolume (Maybe Text)
-cscsivVolumeARN = lens _cscsivVolumeARN (\s a -> s { _cscsivVolumeARN = a })
-
-cscsivVolumeId :: Lens' CachediSCSIVolume (Maybe Text)
-cscsivVolumeId = lens _cscsivVolumeId (\s a -> s { _cscsivVolumeId = a })
-
-cscsivVolumeProgress :: Lens' CachediSCSIVolume (Maybe Double)
-cscsivVolumeProgress =
-    lens _cscsivVolumeProgress (\s a -> s { _cscsivVolumeProgress = a })
-
-cscsivVolumeSizeInBytes :: Lens' CachediSCSIVolume (Maybe Integer)
-cscsivVolumeSizeInBytes =
-    lens _cscsivVolumeSizeInBytes (\s a -> s { _cscsivVolumeSizeInBytes = a })
-
-cscsivVolumeStatus :: Lens' CachediSCSIVolume (Maybe Text)
-cscsivVolumeStatus =
-    lens _cscsivVolumeStatus (\s a -> s { _cscsivVolumeStatus = a })
-
-cscsivVolumeType :: Lens' CachediSCSIVolume (Maybe Text)
-cscsivVolumeType = lens _cscsivVolumeType (\s a -> s { _cscsivVolumeType = a })
-
-cscsivVolumeiSCSIAttributes :: Lens' CachediSCSIVolume (Maybe VolumeiSCSIAttributes)
-cscsivVolumeiSCSIAttributes =
-    lens _cscsivVolumeiSCSIAttributes
-        (\s a -> s { _cscsivVolumeiSCSIAttributes = a })
-
-instance FromJSON CachediSCSIVolume where
-    parseJSON = withObject "CachediSCSIVolume" $ \o -> CachediSCSIVolume
-        <$> o .:? "SourceSnapshotId"
-        <*> o .:? "VolumeARN"
-        <*> o .:? "VolumeId"
-        <*> o .:? "VolumeProgress"
-        <*> o .:? "VolumeSizeInBytes"
-        <*> o .:? "VolumeStatus"
-        <*> o .:? "VolumeType"
-        <*> o .:? "VolumeiSCSIAttributes"
-
-instance ToJSON CachediSCSIVolume where
-    toJSON CachediSCSIVolume{..} = object
-        [ "VolumeARN"             .= _cscsivVolumeARN
-        , "VolumeId"              .= _cscsivVolumeId
-        , "VolumeType"            .= _cscsivVolumeType
-        , "VolumeStatus"          .= _cscsivVolumeStatus
-        , "VolumeSizeInBytes"     .= _cscsivVolumeSizeInBytes
-        , "VolumeProgress"        .= _cscsivVolumeProgress
-        , "SourceSnapshotId"      .= _cscsivSourceSnapshotId
-        , "VolumeiSCSIAttributes" .= _cscsivVolumeiSCSIAttributes
-        ]
-
-data VolumeInfo = VolumeInfo
-    { _viVolumeARN  :: Maybe Text
-    , _viVolumeType :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'VolumeInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'viVolumeARN' @::@ 'Maybe' 'Text'
---
--- * 'viVolumeType' @::@ 'Maybe' 'Text'
---
-volumeInfo :: VolumeInfo
-volumeInfo = VolumeInfo
-    { _viVolumeARN  = Nothing
-    , _viVolumeType = Nothing
-    }
-
-viVolumeARN :: Lens' VolumeInfo (Maybe Text)
-viVolumeARN = lens _viVolumeARN (\s a -> s { _viVolumeARN = a })
-
-viVolumeType :: Lens' VolumeInfo (Maybe Text)
-viVolumeType = lens _viVolumeType (\s a -> s { _viVolumeType = a })
-
-instance FromJSON VolumeInfo where
-    parseJSON = withObject "VolumeInfo" $ \o -> VolumeInfo
-        <$> o .:? "VolumeARN"
-        <*> o .:? "VolumeType"
-
-instance ToJSON VolumeInfo where
-    toJSON VolumeInfo{..} = object
-        [ "VolumeARN"  .= _viVolumeARN
-        , "VolumeType" .= _viVolumeType
-        ]
-
-data GatewayInfo = GatewayInfo
-    { _giGatewayARN              :: Maybe Text
-    , _giGatewayOperationalState :: Maybe Text
-    , _giGatewayType             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'GatewayInfo' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'giGatewayARN' @::@ 'Maybe' 'Text'
---
--- * 'giGatewayOperationalState' @::@ 'Maybe' 'Text'
---
--- * 'giGatewayType' @::@ 'Maybe' 'Text'
---
-gatewayInfo :: GatewayInfo
-gatewayInfo = GatewayInfo
-    { _giGatewayARN              = Nothing
-    , _giGatewayType             = Nothing
-    , _giGatewayOperationalState = Nothing
-    }
-
-giGatewayARN :: Lens' GatewayInfo (Maybe Text)
-giGatewayARN = lens _giGatewayARN (\s a -> s { _giGatewayARN = a })
-
-giGatewayOperationalState :: Lens' GatewayInfo (Maybe Text)
-giGatewayOperationalState =
-    lens _giGatewayOperationalState
-        (\s a -> s { _giGatewayOperationalState = a })
-
-giGatewayType :: Lens' GatewayInfo (Maybe Text)
-giGatewayType = lens _giGatewayType (\s a -> s { _giGatewayType = a })
-
-instance FromJSON GatewayInfo where
-    parseJSON = withObject "GatewayInfo" $ \o -> GatewayInfo
-        <$> o .:? "GatewayARN"
-        <*> o .:? "GatewayOperationalState"
-        <*> o .:? "GatewayType"
-
-instance ToJSON GatewayInfo where
-    toJSON GatewayInfo{..} = object
-        [ "GatewayARN"              .= _giGatewayARN
-        , "GatewayType"             .= _giGatewayType
-        , "GatewayOperationalState" .= _giGatewayOperationalState
-        ]
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.StorageGateway.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.StorageGateway.Types
+    (
+    -- * Service
+      StorageGateway
+
+    -- * Errors
+    , _InvalidGatewayRequestException
+    , _InternalServerError
+
+    -- * CachediSCSIVolume
+    , CachediSCSIVolume
+    , cachediSCSIVolume
+    , cscsivVolumeStatus
+    , cscsivVolumeiSCSIAttributes
+    , cscsivSourceSnapshotId
+    , cscsivVolumeARN
+    , cscsivVolumeProgress
+    , cscsivVolumeSizeInBytes
+    , cscsivVolumeId
+    , cscsivVolumeType
+
+    -- * ChapInfo
+    , ChapInfo
+    , chapInfo
+    , ciTargetARN
+    , ciSecretToAuthenticateInitiator
+    , ciInitiatorName
+    , ciSecretToAuthenticateTarget
+
+    -- * DeviceiSCSIAttributes
+    , DeviceiSCSIAttributes
+    , deviceiSCSIAttributes
+    , dscsiaTargetARN
+    , dscsiaChapEnabled
+    , dscsiaNetworkInterfaceId
+    , dscsiaNetworkInterfacePort
+
+    -- * Disk
+    , Disk
+    , disk
+    , dDiskAllocationResource
+    , dDiskAllocationType
+    , dDiskNode
+    , dDiskPath
+    , dDiskSizeInBytes
+    , dDiskStatus
+    , dDiskId
+
+    -- * GatewayInfo
+    , GatewayInfo
+    , gatewayInfo
+    , giGatewayARN
+    , giGatewayOperationalState
+    , giGatewayType
+
+    -- * NetworkInterface
+    , NetworkInterface
+    , networkInterface
+    , niIPv6Address
+    , niMACAddress
+    , niIPv4Address
+
+    -- * StorediSCSIVolume
+    , StorediSCSIVolume
+    , storediSCSIVolume
+    , sscsivVolumeStatus
+    , sscsivVolumeiSCSIAttributes
+    , sscsivSourceSnapshotId
+    , sscsivPreservedExistingData
+    , sscsivVolumeARN
+    , sscsivVolumeProgress
+    , sscsivVolumeSizeInBytes
+    , sscsivVolumeId
+    , sscsivVolumeType
+    , sscsivVolumeDiskId
+
+    -- * Tape
+    , Tape
+    , tape
+    , tTapeBarcode
+    , tTapeStatus
+    , tProgress
+    , tTapeARN
+    , tTapeSizeInBytes
+    , tVTLDevice
+
+    -- * TapeArchive
+    , TapeArchive
+    , tapeArchive
+    , taTapeBarcode
+    , taTapeStatus
+    , taTapeARN
+    , taTapeSizeInBytes
+    , taCompletionTime
+    , taRetrievedTo
+
+    -- * TapeRecoveryPointInfo
+    , TapeRecoveryPointInfo
+    , tapeRecoveryPointInfo
+    , trpiTapeStatus
+    , trpiTapeRecoveryPointTime
+    , trpiTapeARN
+    , trpiTapeSizeInBytes
+
+    -- * VTLDevice
+    , VTLDevice
+    , vTLDevice
+    , vtldDeviceiSCSIAttributes
+    , vtldVTLDeviceVendor
+    , vtldVTLDeviceARN
+    , vtldVTLDeviceType
+    , vtldVTLDeviceProductIdentifier
+
+    -- * VolumeInfo
+    , VolumeInfo
+    , volumeInfo
+    , viVolumeARN
+    , viVolumeType
+
+    -- * VolumeRecoveryPointInfo
+    , VolumeRecoveryPointInfo
+    , volumeRecoveryPointInfo
+    , vrpiVolumeRecoveryPointTime
+    , vrpiVolumeARN
+    , vrpiVolumeSizeInBytes
+    , vrpiVolumeUsageInBytes
+
+    -- * VolumeiSCSIAttributes
+    , VolumeiSCSIAttributes
+    , volumeiSCSIAttributes
+    , vscsiaLunNumber
+    , vscsiaTargetARN
+    , vscsiaChapEnabled
+    , vscsiaNetworkInterfaceId
+    , vscsiaNetworkInterfacePort
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+import           Network.AWS.StorageGateway.Types.Product
+import           Network.AWS.StorageGateway.Types.Sum
+
+-- | Version @2013-06-30@ of the Amazon Storage Gateway SDK.
+data StorageGateway
+
+instance AWSService StorageGateway where
+    type Sg StorageGateway = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "StorageGateway"
+            , _svcPrefix = "storagegateway"
+            , _svcVersion = "2013-06-30"
+            , _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
+
+-- | An exception occurred because an invalid gateway request was issued to
+-- the service. See the error and message fields for more information.
+_InvalidGatewayRequestException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidGatewayRequestException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidGatewayRequestException"
+
+-- | An internal server error has occurred during the request. See the error
+-- and message fields for more information.
+_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalServerError =
+    _ServiceError . hasStatus 500 . hasCode "InternalServerError"
diff --git a/gen/Network/AWS/StorageGateway/Types/Product.hs b/gen/Network/AWS/StorageGateway/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/Types/Product.hs
@@ -0,0 +1,963 @@
+{-# 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.StorageGateway.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.StorageGateway.Types.Product where
+
+import           Network.AWS.Prelude
+import           Network.AWS.StorageGateway.Types.Sum
+
+-- | /See:/ 'cachediSCSIVolume' smart constructor.
+data CachediSCSIVolume = CachediSCSIVolume'
+    { _cscsivVolumeStatus          :: !(Maybe Text)
+    , _cscsivVolumeiSCSIAttributes :: !(Maybe VolumeiSCSIAttributes)
+    , _cscsivSourceSnapshotId      :: !(Maybe Text)
+    , _cscsivVolumeARN             :: !(Maybe Text)
+    , _cscsivVolumeProgress        :: !(Maybe Double)
+    , _cscsivVolumeSizeInBytes     :: !(Maybe Integer)
+    , _cscsivVolumeId              :: !(Maybe Text)
+    , _cscsivVolumeType            :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CachediSCSIVolume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cscsivVolumeStatus'
+--
+-- * 'cscsivVolumeiSCSIAttributes'
+--
+-- * 'cscsivSourceSnapshotId'
+--
+-- * 'cscsivVolumeARN'
+--
+-- * 'cscsivVolumeProgress'
+--
+-- * 'cscsivVolumeSizeInBytes'
+--
+-- * 'cscsivVolumeId'
+--
+-- * 'cscsivVolumeType'
+cachediSCSIVolume
+    :: CachediSCSIVolume
+cachediSCSIVolume =
+    CachediSCSIVolume'
+    { _cscsivVolumeStatus = Nothing
+    , _cscsivVolumeiSCSIAttributes = Nothing
+    , _cscsivSourceSnapshotId = Nothing
+    , _cscsivVolumeARN = Nothing
+    , _cscsivVolumeProgress = Nothing
+    , _cscsivVolumeSizeInBytes = Nothing
+    , _cscsivVolumeId = Nothing
+    , _cscsivVolumeType = Nothing
+    }
+
+-- | Undocumented member.
+cscsivVolumeStatus :: Lens' CachediSCSIVolume (Maybe Text)
+cscsivVolumeStatus = lens _cscsivVolumeStatus (\ s a -> s{_cscsivVolumeStatus = a});
+
+-- | Undocumented member.
+cscsivVolumeiSCSIAttributes :: Lens' CachediSCSIVolume (Maybe VolumeiSCSIAttributes)
+cscsivVolumeiSCSIAttributes = lens _cscsivVolumeiSCSIAttributes (\ s a -> s{_cscsivVolumeiSCSIAttributes = a});
+
+-- | Undocumented member.
+cscsivSourceSnapshotId :: Lens' CachediSCSIVolume (Maybe Text)
+cscsivSourceSnapshotId = lens _cscsivSourceSnapshotId (\ s a -> s{_cscsivSourceSnapshotId = a});
+
+-- | Undocumented member.
+cscsivVolumeARN :: Lens' CachediSCSIVolume (Maybe Text)
+cscsivVolumeARN = lens _cscsivVolumeARN (\ s a -> s{_cscsivVolumeARN = a});
+
+-- | Undocumented member.
+cscsivVolumeProgress :: Lens' CachediSCSIVolume (Maybe Double)
+cscsivVolumeProgress = lens _cscsivVolumeProgress (\ s a -> s{_cscsivVolumeProgress = a});
+
+-- | Undocumented member.
+cscsivVolumeSizeInBytes :: Lens' CachediSCSIVolume (Maybe Integer)
+cscsivVolumeSizeInBytes = lens _cscsivVolumeSizeInBytes (\ s a -> s{_cscsivVolumeSizeInBytes = a});
+
+-- | Undocumented member.
+cscsivVolumeId :: Lens' CachediSCSIVolume (Maybe Text)
+cscsivVolumeId = lens _cscsivVolumeId (\ s a -> s{_cscsivVolumeId = a});
+
+-- | Undocumented member.
+cscsivVolumeType :: Lens' CachediSCSIVolume (Maybe Text)
+cscsivVolumeType = lens _cscsivVolumeType (\ s a -> s{_cscsivVolumeType = a});
+
+instance FromJSON CachediSCSIVolume where
+        parseJSON
+          = withObject "CachediSCSIVolume"
+              (\ x ->
+                 CachediSCSIVolume' <$>
+                   (x .:? "VolumeStatus") <*>
+                     (x .:? "VolumeiSCSIAttributes")
+                     <*> (x .:? "SourceSnapshotId")
+                     <*> (x .:? "VolumeARN")
+                     <*> (x .:? "VolumeProgress")
+                     <*> (x .:? "VolumeSizeInBytes")
+                     <*> (x .:? "VolumeId")
+                     <*> (x .:? "VolumeType"))
+
+-- | Describes Challenge-Handshake Authentication Protocol (CHAP) information
+-- that supports authentication between your gateway and iSCSI initiators.
+--
+-- /See:/ 'chapInfo' smart constructor.
+data ChapInfo = ChapInfo'
+    { _ciTargetARN                     :: !(Maybe Text)
+    , _ciSecretToAuthenticateInitiator :: !(Maybe Text)
+    , _ciInitiatorName                 :: !(Maybe Text)
+    , _ciSecretToAuthenticateTarget    :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ChapInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ciTargetARN'
+--
+-- * 'ciSecretToAuthenticateInitiator'
+--
+-- * 'ciInitiatorName'
+--
+-- * 'ciSecretToAuthenticateTarget'
+chapInfo
+    :: ChapInfo
+chapInfo =
+    ChapInfo'
+    { _ciTargetARN = Nothing
+    , _ciSecretToAuthenticateInitiator = Nothing
+    , _ciInitiatorName = Nothing
+    , _ciSecretToAuthenticateTarget = Nothing
+    }
+
+-- | The Amazon Resource Name (ARN) of the volume.
+--
+-- /Valid Values/: 50 to 500 lowercase letters, numbers, periods (.), and
+-- hyphens (-).
+ciTargetARN :: Lens' ChapInfo (Maybe Text)
+ciTargetARN = lens _ciTargetARN (\ s a -> s{_ciTargetARN = a});
+
+-- | The secret key that the initiator (for example, the Windows client) must
+-- provide to participate in mutual CHAP with the target.
+ciSecretToAuthenticateInitiator :: Lens' ChapInfo (Maybe Text)
+ciSecretToAuthenticateInitiator = lens _ciSecretToAuthenticateInitiator (\ s a -> s{_ciSecretToAuthenticateInitiator = a});
+
+-- | The iSCSI initiator that connects to the target.
+ciInitiatorName :: Lens' ChapInfo (Maybe Text)
+ciInitiatorName = lens _ciInitiatorName (\ s a -> s{_ciInitiatorName = a});
+
+-- | The secret key that the target must provide to participate in mutual
+-- CHAP with the initiator (e.g. Windows client).
+ciSecretToAuthenticateTarget :: Lens' ChapInfo (Maybe Text)
+ciSecretToAuthenticateTarget = lens _ciSecretToAuthenticateTarget (\ s a -> s{_ciSecretToAuthenticateTarget = a});
+
+instance FromJSON ChapInfo where
+        parseJSON
+          = withObject "ChapInfo"
+              (\ x ->
+                 ChapInfo' <$>
+                   (x .:? "TargetARN") <*>
+                     (x .:? "SecretToAuthenticateInitiator")
+                     <*> (x .:? "InitiatorName")
+                     <*> (x .:? "SecretToAuthenticateTarget"))
+
+-- | Lists iSCSI information about a VTL device.
+--
+-- /See:/ 'deviceiSCSIAttributes' smart constructor.
+data DeviceiSCSIAttributes = DeviceiSCSIAttributes'
+    { _dscsiaTargetARN            :: !(Maybe Text)
+    , _dscsiaChapEnabled          :: !(Maybe Bool)
+    , _dscsiaNetworkInterfaceId   :: !(Maybe Text)
+    , _dscsiaNetworkInterfacePort :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeviceiSCSIAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dscsiaTargetARN'
+--
+-- * 'dscsiaChapEnabled'
+--
+-- * 'dscsiaNetworkInterfaceId'
+--
+-- * 'dscsiaNetworkInterfacePort'
+deviceiSCSIAttributes
+    :: DeviceiSCSIAttributes
+deviceiSCSIAttributes =
+    DeviceiSCSIAttributes'
+    { _dscsiaTargetARN = Nothing
+    , _dscsiaChapEnabled = Nothing
+    , _dscsiaNetworkInterfaceId = Nothing
+    , _dscsiaNetworkInterfacePort = Nothing
+    }
+
+-- | Specifies the unique Amazon Resource Name(ARN) that encodes the iSCSI
+-- qualified name(iqn) of a tape drive or media changer target.
+dscsiaTargetARN :: Lens' DeviceiSCSIAttributes (Maybe Text)
+dscsiaTargetARN = lens _dscsiaTargetARN (\ s a -> s{_dscsiaTargetARN = a});
+
+-- | Indicates whether mutual CHAP is enabled for the iSCSI target.
+dscsiaChapEnabled :: Lens' DeviceiSCSIAttributes (Maybe Bool)
+dscsiaChapEnabled = lens _dscsiaChapEnabled (\ s a -> s{_dscsiaChapEnabled = a});
+
+-- | The network interface identifier of the VTL device.
+dscsiaNetworkInterfaceId :: Lens' DeviceiSCSIAttributes (Maybe Text)
+dscsiaNetworkInterfaceId = lens _dscsiaNetworkInterfaceId (\ s a -> s{_dscsiaNetworkInterfaceId = a});
+
+-- | The port used to communicate with iSCSI VTL device targets.
+dscsiaNetworkInterfacePort :: Lens' DeviceiSCSIAttributes (Maybe Int)
+dscsiaNetworkInterfacePort = lens _dscsiaNetworkInterfacePort (\ s a -> s{_dscsiaNetworkInterfacePort = a});
+
+instance FromJSON DeviceiSCSIAttributes where
+        parseJSON
+          = withObject "DeviceiSCSIAttributes"
+              (\ x ->
+                 DeviceiSCSIAttributes' <$>
+                   (x .:? "TargetARN") <*> (x .:? "ChapEnabled") <*>
+                     (x .:? "NetworkInterfaceId")
+                     <*> (x .:? "NetworkInterfacePort"))
+
+-- | /See:/ 'disk' smart constructor.
+data Disk = Disk'
+    { _dDiskAllocationResource :: !(Maybe Text)
+    , _dDiskAllocationType     :: !(Maybe Text)
+    , _dDiskNode               :: !(Maybe Text)
+    , _dDiskPath               :: !(Maybe Text)
+    , _dDiskSizeInBytes        :: !(Maybe Integer)
+    , _dDiskStatus             :: !(Maybe Text)
+    , _dDiskId                 :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Disk' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dDiskAllocationResource'
+--
+-- * 'dDiskAllocationType'
+--
+-- * 'dDiskNode'
+--
+-- * 'dDiskPath'
+--
+-- * 'dDiskSizeInBytes'
+--
+-- * 'dDiskStatus'
+--
+-- * 'dDiskId'
+disk
+    :: Disk
+disk =
+    Disk'
+    { _dDiskAllocationResource = Nothing
+    , _dDiskAllocationType = Nothing
+    , _dDiskNode = Nothing
+    , _dDiskPath = Nothing
+    , _dDiskSizeInBytes = Nothing
+    , _dDiskStatus = Nothing
+    , _dDiskId = Nothing
+    }
+
+-- | Undocumented member.
+dDiskAllocationResource :: Lens' Disk (Maybe Text)
+dDiskAllocationResource = lens _dDiskAllocationResource (\ s a -> s{_dDiskAllocationResource = a});
+
+-- | Undocumented member.
+dDiskAllocationType :: Lens' Disk (Maybe Text)
+dDiskAllocationType = lens _dDiskAllocationType (\ s a -> s{_dDiskAllocationType = a});
+
+-- | Undocumented member.
+dDiskNode :: Lens' Disk (Maybe Text)
+dDiskNode = lens _dDiskNode (\ s a -> s{_dDiskNode = a});
+
+-- | Undocumented member.
+dDiskPath :: Lens' Disk (Maybe Text)
+dDiskPath = lens _dDiskPath (\ s a -> s{_dDiskPath = a});
+
+-- | Undocumented member.
+dDiskSizeInBytes :: Lens' Disk (Maybe Integer)
+dDiskSizeInBytes = lens _dDiskSizeInBytes (\ s a -> s{_dDiskSizeInBytes = a});
+
+-- | Undocumented member.
+dDiskStatus :: Lens' Disk (Maybe Text)
+dDiskStatus = lens _dDiskStatus (\ s a -> s{_dDiskStatus = a});
+
+-- | Undocumented member.
+dDiskId :: Lens' Disk (Maybe Text)
+dDiskId = lens _dDiskId (\ s a -> s{_dDiskId = a});
+
+instance FromJSON Disk where
+        parseJSON
+          = withObject "Disk"
+              (\ x ->
+                 Disk' <$>
+                   (x .:? "DiskAllocationResource") <*>
+                     (x .:? "DiskAllocationType")
+                     <*> (x .:? "DiskNode")
+                     <*> (x .:? "DiskPath")
+                     <*> (x .:? "DiskSizeInBytes")
+                     <*> (x .:? "DiskStatus")
+                     <*> (x .:? "DiskId"))
+
+-- | /See:/ 'gatewayInfo' smart constructor.
+data GatewayInfo = GatewayInfo'
+    { _giGatewayARN              :: !(Maybe Text)
+    , _giGatewayOperationalState :: !(Maybe Text)
+    , _giGatewayType             :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GatewayInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giGatewayARN'
+--
+-- * 'giGatewayOperationalState'
+--
+-- * 'giGatewayType'
+gatewayInfo
+    :: GatewayInfo
+gatewayInfo =
+    GatewayInfo'
+    { _giGatewayARN = Nothing
+    , _giGatewayOperationalState = Nothing
+    , _giGatewayType = Nothing
+    }
+
+-- | Undocumented member.
+giGatewayARN :: Lens' GatewayInfo (Maybe Text)
+giGatewayARN = lens _giGatewayARN (\ s a -> s{_giGatewayARN = a});
+
+-- | Undocumented member.
+giGatewayOperationalState :: Lens' GatewayInfo (Maybe Text)
+giGatewayOperationalState = lens _giGatewayOperationalState (\ s a -> s{_giGatewayOperationalState = a});
+
+-- | Undocumented member.
+giGatewayType :: Lens' GatewayInfo (Maybe Text)
+giGatewayType = lens _giGatewayType (\ s a -> s{_giGatewayType = a});
+
+instance FromJSON GatewayInfo where
+        parseJSON
+          = withObject "GatewayInfo"
+              (\ x ->
+                 GatewayInfo' <$>
+                   (x .:? "GatewayARN") <*>
+                     (x .:? "GatewayOperationalState")
+                     <*> (x .:? "GatewayType"))
+
+-- | Describes a gateway\'s network interface.
+--
+-- /See:/ 'networkInterface' smart constructor.
+data NetworkInterface = NetworkInterface'
+    { _niIPv6Address :: !(Maybe Text)
+    , _niMACAddress  :: !(Maybe Text)
+    , _niIPv4Address :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'NetworkInterface' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'niIPv6Address'
+--
+-- * 'niMACAddress'
+--
+-- * 'niIPv4Address'
+networkInterface
+    :: NetworkInterface
+networkInterface =
+    NetworkInterface'
+    { _niIPv6Address = Nothing
+    , _niMACAddress = Nothing
+    , _niIPv4Address = Nothing
+    }
+
+-- | The Internet Protocol version 6 (IPv6) address of the interface.
+-- /Currently not supported/.
+niIPv6Address :: Lens' NetworkInterface (Maybe Text)
+niIPv6Address = lens _niIPv6Address (\ s a -> s{_niIPv6Address = a});
+
+-- | The Media Access Control (MAC) address of the interface.
+--
+-- This is currently unsupported and will not be returned in output.
+niMACAddress :: Lens' NetworkInterface (Maybe Text)
+niMACAddress = lens _niMACAddress (\ s a -> s{_niMACAddress = a});
+
+-- | The Internet Protocol version 4 (IPv4) address of the interface.
+niIPv4Address :: Lens' NetworkInterface (Maybe Text)
+niIPv4Address = lens _niIPv4Address (\ s a -> s{_niIPv4Address = a});
+
+instance FromJSON NetworkInterface where
+        parseJSON
+          = withObject "NetworkInterface"
+              (\ x ->
+                 NetworkInterface' <$>
+                   (x .:? "Ipv6Address") <*> (x .:? "MacAddress") <*>
+                     (x .:? "Ipv4Address"))
+
+-- | /See:/ 'storediSCSIVolume' smart constructor.
+data StorediSCSIVolume = StorediSCSIVolume'
+    { _sscsivVolumeStatus          :: !(Maybe Text)
+    , _sscsivVolumeiSCSIAttributes :: !(Maybe VolumeiSCSIAttributes)
+    , _sscsivSourceSnapshotId      :: !(Maybe Text)
+    , _sscsivPreservedExistingData :: !(Maybe Bool)
+    , _sscsivVolumeARN             :: !(Maybe Text)
+    , _sscsivVolumeProgress        :: !(Maybe Double)
+    , _sscsivVolumeSizeInBytes     :: !(Maybe Integer)
+    , _sscsivVolumeId              :: !(Maybe Text)
+    , _sscsivVolumeType            :: !(Maybe Text)
+    , _sscsivVolumeDiskId          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StorediSCSIVolume' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sscsivVolumeStatus'
+--
+-- * 'sscsivVolumeiSCSIAttributes'
+--
+-- * 'sscsivSourceSnapshotId'
+--
+-- * 'sscsivPreservedExistingData'
+--
+-- * 'sscsivVolumeARN'
+--
+-- * 'sscsivVolumeProgress'
+--
+-- * 'sscsivVolumeSizeInBytes'
+--
+-- * 'sscsivVolumeId'
+--
+-- * 'sscsivVolumeType'
+--
+-- * 'sscsivVolumeDiskId'
+storediSCSIVolume
+    :: StorediSCSIVolume
+storediSCSIVolume =
+    StorediSCSIVolume'
+    { _sscsivVolumeStatus = Nothing
+    , _sscsivVolumeiSCSIAttributes = Nothing
+    , _sscsivSourceSnapshotId = Nothing
+    , _sscsivPreservedExistingData = Nothing
+    , _sscsivVolumeARN = Nothing
+    , _sscsivVolumeProgress = Nothing
+    , _sscsivVolumeSizeInBytes = Nothing
+    , _sscsivVolumeId = Nothing
+    , _sscsivVolumeType = Nothing
+    , _sscsivVolumeDiskId = Nothing
+    }
+
+-- | Undocumented member.
+sscsivVolumeStatus :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivVolumeStatus = lens _sscsivVolumeStatus (\ s a -> s{_sscsivVolumeStatus = a});
+
+-- | Undocumented member.
+sscsivVolumeiSCSIAttributes :: Lens' StorediSCSIVolume (Maybe VolumeiSCSIAttributes)
+sscsivVolumeiSCSIAttributes = lens _sscsivVolumeiSCSIAttributes (\ s a -> s{_sscsivVolumeiSCSIAttributes = a});
+
+-- | Undocumented member.
+sscsivSourceSnapshotId :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivSourceSnapshotId = lens _sscsivSourceSnapshotId (\ s a -> s{_sscsivSourceSnapshotId = a});
+
+-- | Undocumented member.
+sscsivPreservedExistingData :: Lens' StorediSCSIVolume (Maybe Bool)
+sscsivPreservedExistingData = lens _sscsivPreservedExistingData (\ s a -> s{_sscsivPreservedExistingData = a});
+
+-- | Undocumented member.
+sscsivVolumeARN :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivVolumeARN = lens _sscsivVolumeARN (\ s a -> s{_sscsivVolumeARN = a});
+
+-- | Undocumented member.
+sscsivVolumeProgress :: Lens' StorediSCSIVolume (Maybe Double)
+sscsivVolumeProgress = lens _sscsivVolumeProgress (\ s a -> s{_sscsivVolumeProgress = a});
+
+-- | Undocumented member.
+sscsivVolumeSizeInBytes :: Lens' StorediSCSIVolume (Maybe Integer)
+sscsivVolumeSizeInBytes = lens _sscsivVolumeSizeInBytes (\ s a -> s{_sscsivVolumeSizeInBytes = a});
+
+-- | Undocumented member.
+sscsivVolumeId :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivVolumeId = lens _sscsivVolumeId (\ s a -> s{_sscsivVolumeId = a});
+
+-- | Undocumented member.
+sscsivVolumeType :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivVolumeType = lens _sscsivVolumeType (\ s a -> s{_sscsivVolumeType = a});
+
+-- | Undocumented member.
+sscsivVolumeDiskId :: Lens' StorediSCSIVolume (Maybe Text)
+sscsivVolumeDiskId = lens _sscsivVolumeDiskId (\ s a -> s{_sscsivVolumeDiskId = a});
+
+instance FromJSON StorediSCSIVolume where
+        parseJSON
+          = withObject "StorediSCSIVolume"
+              (\ x ->
+                 StorediSCSIVolume' <$>
+                   (x .:? "VolumeStatus") <*>
+                     (x .:? "VolumeiSCSIAttributes")
+                     <*> (x .:? "SourceSnapshotId")
+                     <*> (x .:? "PreservedExistingData")
+                     <*> (x .:? "VolumeARN")
+                     <*> (x .:? "VolumeProgress")
+                     <*> (x .:? "VolumeSizeInBytes")
+                     <*> (x .:? "VolumeId")
+                     <*> (x .:? "VolumeType")
+                     <*> (x .:? "VolumeDiskId"))
+
+-- | Describes a virtual tape object.
+--
+-- /See:/ 'tape' smart constructor.
+data Tape = Tape'
+    { _tTapeBarcode     :: !(Maybe Text)
+    , _tTapeStatus      :: !(Maybe Text)
+    , _tProgress        :: !(Maybe Double)
+    , _tTapeARN         :: !(Maybe Text)
+    , _tTapeSizeInBytes :: !(Maybe Integer)
+    , _tVTLDevice       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Tape' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tTapeBarcode'
+--
+-- * 'tTapeStatus'
+--
+-- * 'tProgress'
+--
+-- * 'tTapeARN'
+--
+-- * 'tTapeSizeInBytes'
+--
+-- * 'tVTLDevice'
+tape
+    :: Tape
+tape =
+    Tape'
+    { _tTapeBarcode = Nothing
+    , _tTapeStatus = Nothing
+    , _tProgress = Nothing
+    , _tTapeARN = Nothing
+    , _tTapeSizeInBytes = Nothing
+    , _tVTLDevice = Nothing
+    }
+
+-- | The barcode that identifies a specific virtual tape.
+tTapeBarcode :: Lens' Tape (Maybe Text)
+tTapeBarcode = lens _tTapeBarcode (\ s a -> s{_tTapeBarcode = a});
+
+-- | The current state of the virtual tape.
+tTapeStatus :: Lens' Tape (Maybe Text)
+tTapeStatus = lens _tTapeStatus (\ s a -> s{_tTapeStatus = a});
+
+-- | For archiving virtual tapes, indicates how much data remains to be
+-- uploaded before archiving is complete.
+--
+-- Range: 0 (not started) to 100 (complete).
+tProgress :: Lens' Tape (Maybe Double)
+tProgress = lens _tProgress (\ s a -> s{_tProgress = a});
+
+-- | The Amazon Resource Name (ARN) of the virtual tape.
+tTapeARN :: Lens' Tape (Maybe Text)
+tTapeARN = lens _tTapeARN (\ s a -> s{_tTapeARN = a});
+
+-- | The size, in bytes, of the virtual tape.
+tTapeSizeInBytes :: Lens' Tape (Maybe Integer)
+tTapeSizeInBytes = lens _tTapeSizeInBytes (\ s a -> s{_tTapeSizeInBytes = a});
+
+-- | The virtual tape library (VTL) device that the virtual tape is
+-- associated with.
+tVTLDevice :: Lens' Tape (Maybe Text)
+tVTLDevice = lens _tVTLDevice (\ s a -> s{_tVTLDevice = a});
+
+instance FromJSON Tape where
+        parseJSON
+          = withObject "Tape"
+              (\ x ->
+                 Tape' <$>
+                   (x .:? "TapeBarcode") <*> (x .:? "TapeStatus") <*>
+                     (x .:? "Progress")
+                     <*> (x .:? "TapeARN")
+                     <*> (x .:? "TapeSizeInBytes")
+                     <*> (x .:? "VTLDevice"))
+
+-- | Represents a virtual tape that is archived in the virtual tape shelf
+-- (VTS).
+--
+-- /See:/ 'tapeArchive' smart constructor.
+data TapeArchive = TapeArchive'
+    { _taTapeBarcode     :: !(Maybe Text)
+    , _taTapeStatus      :: !(Maybe Text)
+    , _taTapeARN         :: !(Maybe Text)
+    , _taTapeSizeInBytes :: !(Maybe Integer)
+    , _taCompletionTime  :: !(Maybe POSIX)
+    , _taRetrievedTo     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TapeArchive' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'taTapeBarcode'
+--
+-- * 'taTapeStatus'
+--
+-- * 'taTapeARN'
+--
+-- * 'taTapeSizeInBytes'
+--
+-- * 'taCompletionTime'
+--
+-- * 'taRetrievedTo'
+tapeArchive
+    :: TapeArchive
+tapeArchive =
+    TapeArchive'
+    { _taTapeBarcode = Nothing
+    , _taTapeStatus = Nothing
+    , _taTapeARN = Nothing
+    , _taTapeSizeInBytes = Nothing
+    , _taCompletionTime = Nothing
+    , _taRetrievedTo = Nothing
+    }
+
+-- | The barcode that identifies the archived virtual tape.
+taTapeBarcode :: Lens' TapeArchive (Maybe Text)
+taTapeBarcode = lens _taTapeBarcode (\ s a -> s{_taTapeBarcode = a});
+
+-- | The current state of the archived virtual tape.
+taTapeStatus :: Lens' TapeArchive (Maybe Text)
+taTapeStatus = lens _taTapeStatus (\ s a -> s{_taTapeStatus = a});
+
+-- | The Amazon Resource Name (ARN) of an archived virtual tape.
+taTapeARN :: Lens' TapeArchive (Maybe Text)
+taTapeARN = lens _taTapeARN (\ s a -> s{_taTapeARN = a});
+
+-- | The size, in bytes, of the archived virtual tape.
+taTapeSizeInBytes :: Lens' TapeArchive (Maybe Integer)
+taTapeSizeInBytes = lens _taTapeSizeInBytes (\ s a -> s{_taTapeSizeInBytes = a});
+
+-- | The time that the archiving of the virtual tape was completed.
+--
+-- The string format of the completion time is in the ISO8601 extended
+-- YYYY-MM-DD\'T\'HH:MM:SS\'Z\' format.
+taCompletionTime :: Lens' TapeArchive (Maybe UTCTime)
+taCompletionTime = lens _taCompletionTime (\ s a -> s{_taCompletionTime = a}) . mapping _Time;
+
+-- | The Amazon Resource Name (ARN) of the gateway-VTL that the virtual tape
+-- is being retrieved to.
+--
+-- The virtual tape is retrieved from the virtual tape shelf (VTS).
+taRetrievedTo :: Lens' TapeArchive (Maybe Text)
+taRetrievedTo = lens _taRetrievedTo (\ s a -> s{_taRetrievedTo = a});
+
+instance FromJSON TapeArchive where
+        parseJSON
+          = withObject "TapeArchive"
+              (\ x ->
+                 TapeArchive' <$>
+                   (x .:? "TapeBarcode") <*> (x .:? "TapeStatus") <*>
+                     (x .:? "TapeARN")
+                     <*> (x .:? "TapeSizeInBytes")
+                     <*> (x .:? "CompletionTime")
+                     <*> (x .:? "RetrievedTo"))
+
+-- | Describes a recovery point.
+--
+-- /See:/ 'tapeRecoveryPointInfo' smart constructor.
+data TapeRecoveryPointInfo = TapeRecoveryPointInfo'
+    { _trpiTapeStatus            :: !(Maybe Text)
+    , _trpiTapeRecoveryPointTime :: !(Maybe POSIX)
+    , _trpiTapeARN               :: !(Maybe Text)
+    , _trpiTapeSizeInBytes       :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TapeRecoveryPointInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'trpiTapeStatus'
+--
+-- * 'trpiTapeRecoveryPointTime'
+--
+-- * 'trpiTapeARN'
+--
+-- * 'trpiTapeSizeInBytes'
+tapeRecoveryPointInfo
+    :: TapeRecoveryPointInfo
+tapeRecoveryPointInfo =
+    TapeRecoveryPointInfo'
+    { _trpiTapeStatus = Nothing
+    , _trpiTapeRecoveryPointTime = Nothing
+    , _trpiTapeARN = Nothing
+    , _trpiTapeSizeInBytes = Nothing
+    }
+
+-- | Undocumented member.
+trpiTapeStatus :: Lens' TapeRecoveryPointInfo (Maybe Text)
+trpiTapeStatus = lens _trpiTapeStatus (\ s a -> s{_trpiTapeStatus = a});
+
+-- | The time when the point-in-time view of the virtual tape was replicated
+-- for later recovery.
+--
+-- The string format of the tape recovery point time is in the ISO8601
+-- extended YYYY-MM-DD\'T\'HH:MM:SS\'Z\' format.
+trpiTapeRecoveryPointTime :: Lens' TapeRecoveryPointInfo (Maybe UTCTime)
+trpiTapeRecoveryPointTime = lens _trpiTapeRecoveryPointTime (\ s a -> s{_trpiTapeRecoveryPointTime = a}) . mapping _Time;
+
+-- | The Amazon Resource Name (ARN) of the virtual tape.
+trpiTapeARN :: Lens' TapeRecoveryPointInfo (Maybe Text)
+trpiTapeARN = lens _trpiTapeARN (\ s a -> s{_trpiTapeARN = a});
+
+-- | The size, in bytes, of the virtual tapes to recover.
+trpiTapeSizeInBytes :: Lens' TapeRecoveryPointInfo (Maybe Integer)
+trpiTapeSizeInBytes = lens _trpiTapeSizeInBytes (\ s a -> s{_trpiTapeSizeInBytes = a});
+
+instance FromJSON TapeRecoveryPointInfo where
+        parseJSON
+          = withObject "TapeRecoveryPointInfo"
+              (\ x ->
+                 TapeRecoveryPointInfo' <$>
+                   (x .:? "TapeStatus") <*>
+                     (x .:? "TapeRecoveryPointTime")
+                     <*> (x .:? "TapeARN")
+                     <*> (x .:? "TapeSizeInBytes"))
+
+-- | Represents a device object associated with a gateway-VTL.
+--
+-- /See:/ 'vTLDevice' smart constructor.
+data VTLDevice = VTLDevice'
+    { _vtldDeviceiSCSIAttributes      :: !(Maybe DeviceiSCSIAttributes)
+    , _vtldVTLDeviceVendor            :: !(Maybe Text)
+    , _vtldVTLDeviceARN               :: !(Maybe Text)
+    , _vtldVTLDeviceType              :: !(Maybe Text)
+    , _vtldVTLDeviceProductIdentifier :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VTLDevice' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vtldDeviceiSCSIAttributes'
+--
+-- * 'vtldVTLDeviceVendor'
+--
+-- * 'vtldVTLDeviceARN'
+--
+-- * 'vtldVTLDeviceType'
+--
+-- * 'vtldVTLDeviceProductIdentifier'
+vTLDevice
+    :: VTLDevice
+vTLDevice =
+    VTLDevice'
+    { _vtldDeviceiSCSIAttributes = Nothing
+    , _vtldVTLDeviceVendor = Nothing
+    , _vtldVTLDeviceARN = Nothing
+    , _vtldVTLDeviceType = Nothing
+    , _vtldVTLDeviceProductIdentifier = Nothing
+    }
+
+-- | A list of iSCSI information about a VTL device.
+vtldDeviceiSCSIAttributes :: Lens' VTLDevice (Maybe DeviceiSCSIAttributes)
+vtldDeviceiSCSIAttributes = lens _vtldDeviceiSCSIAttributes (\ s a -> s{_vtldDeviceiSCSIAttributes = a});
+
+-- | Undocumented member.
+vtldVTLDeviceVendor :: Lens' VTLDevice (Maybe Text)
+vtldVTLDeviceVendor = lens _vtldVTLDeviceVendor (\ s a -> s{_vtldVTLDeviceVendor = a});
+
+-- | Specifies the unique Amazon Resource Name (ARN) of the device (tape
+-- drive or media changer).
+vtldVTLDeviceARN :: Lens' VTLDevice (Maybe Text)
+vtldVTLDeviceARN = lens _vtldVTLDeviceARN (\ s a -> s{_vtldVTLDeviceARN = a});
+
+-- | Undocumented member.
+vtldVTLDeviceType :: Lens' VTLDevice (Maybe Text)
+vtldVTLDeviceType = lens _vtldVTLDeviceType (\ s a -> s{_vtldVTLDeviceType = a});
+
+-- | Undocumented member.
+vtldVTLDeviceProductIdentifier :: Lens' VTLDevice (Maybe Text)
+vtldVTLDeviceProductIdentifier = lens _vtldVTLDeviceProductIdentifier (\ s a -> s{_vtldVTLDeviceProductIdentifier = a});
+
+instance FromJSON VTLDevice where
+        parseJSON
+          = withObject "VTLDevice"
+              (\ x ->
+                 VTLDevice' <$>
+                   (x .:? "DeviceiSCSIAttributes") <*>
+                     (x .:? "VTLDeviceVendor")
+                     <*> (x .:? "VTLDeviceARN")
+                     <*> (x .:? "VTLDeviceType")
+                     <*> (x .:? "VTLDeviceProductIdentifier"))
+
+-- | /See:/ 'volumeInfo' smart constructor.
+data VolumeInfo = VolumeInfo'
+    { _viVolumeARN  :: !(Maybe Text)
+    , _viVolumeType :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'viVolumeARN'
+--
+-- * 'viVolumeType'
+volumeInfo
+    :: VolumeInfo
+volumeInfo =
+    VolumeInfo'
+    { _viVolumeARN = Nothing
+    , _viVolumeType = Nothing
+    }
+
+-- | Undocumented member.
+viVolumeARN :: Lens' VolumeInfo (Maybe Text)
+viVolumeARN = lens _viVolumeARN (\ s a -> s{_viVolumeARN = a});
+
+-- | Undocumented member.
+viVolumeType :: Lens' VolumeInfo (Maybe Text)
+viVolumeType = lens _viVolumeType (\ s a -> s{_viVolumeType = a});
+
+instance FromJSON VolumeInfo where
+        parseJSON
+          = withObject "VolumeInfo"
+              (\ x ->
+                 VolumeInfo' <$>
+                   (x .:? "VolumeARN") <*> (x .:? "VolumeType"))
+
+-- | /See:/ 'volumeRecoveryPointInfo' smart constructor.
+data VolumeRecoveryPointInfo = VolumeRecoveryPointInfo'
+    { _vrpiVolumeRecoveryPointTime :: !(Maybe Text)
+    , _vrpiVolumeARN               :: !(Maybe Text)
+    , _vrpiVolumeSizeInBytes       :: !(Maybe Integer)
+    , _vrpiVolumeUsageInBytes      :: !(Maybe Integer)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeRecoveryPointInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vrpiVolumeRecoveryPointTime'
+--
+-- * 'vrpiVolumeARN'
+--
+-- * 'vrpiVolumeSizeInBytes'
+--
+-- * 'vrpiVolumeUsageInBytes'
+volumeRecoveryPointInfo
+    :: VolumeRecoveryPointInfo
+volumeRecoveryPointInfo =
+    VolumeRecoveryPointInfo'
+    { _vrpiVolumeRecoveryPointTime = Nothing
+    , _vrpiVolumeARN = Nothing
+    , _vrpiVolumeSizeInBytes = Nothing
+    , _vrpiVolumeUsageInBytes = Nothing
+    }
+
+-- | Undocumented member.
+vrpiVolumeRecoveryPointTime :: Lens' VolumeRecoveryPointInfo (Maybe Text)
+vrpiVolumeRecoveryPointTime = lens _vrpiVolumeRecoveryPointTime (\ s a -> s{_vrpiVolumeRecoveryPointTime = a});
+
+-- | Undocumented member.
+vrpiVolumeARN :: Lens' VolumeRecoveryPointInfo (Maybe Text)
+vrpiVolumeARN = lens _vrpiVolumeARN (\ s a -> s{_vrpiVolumeARN = a});
+
+-- | Undocumented member.
+vrpiVolumeSizeInBytes :: Lens' VolumeRecoveryPointInfo (Maybe Integer)
+vrpiVolumeSizeInBytes = lens _vrpiVolumeSizeInBytes (\ s a -> s{_vrpiVolumeSizeInBytes = a});
+
+-- | Undocumented member.
+vrpiVolumeUsageInBytes :: Lens' VolumeRecoveryPointInfo (Maybe Integer)
+vrpiVolumeUsageInBytes = lens _vrpiVolumeUsageInBytes (\ s a -> s{_vrpiVolumeUsageInBytes = a});
+
+instance FromJSON VolumeRecoveryPointInfo where
+        parseJSON
+          = withObject "VolumeRecoveryPointInfo"
+              (\ x ->
+                 VolumeRecoveryPointInfo' <$>
+                   (x .:? "VolumeRecoveryPointTime") <*>
+                     (x .:? "VolumeARN")
+                     <*> (x .:? "VolumeSizeInBytes")
+                     <*> (x .:? "VolumeUsageInBytes"))
+
+-- | Lists iSCSI information about a volume.
+--
+-- /See:/ 'volumeiSCSIAttributes' smart constructor.
+data VolumeiSCSIAttributes = VolumeiSCSIAttributes'
+    { _vscsiaLunNumber            :: !(Maybe Nat)
+    , _vscsiaTargetARN            :: !(Maybe Text)
+    , _vscsiaChapEnabled          :: !(Maybe Bool)
+    , _vscsiaNetworkInterfaceId   :: !(Maybe Text)
+    , _vscsiaNetworkInterfacePort :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'VolumeiSCSIAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'vscsiaLunNumber'
+--
+-- * 'vscsiaTargetARN'
+--
+-- * 'vscsiaChapEnabled'
+--
+-- * 'vscsiaNetworkInterfaceId'
+--
+-- * 'vscsiaNetworkInterfacePort'
+volumeiSCSIAttributes
+    :: VolumeiSCSIAttributes
+volumeiSCSIAttributes =
+    VolumeiSCSIAttributes'
+    { _vscsiaLunNumber = Nothing
+    , _vscsiaTargetARN = Nothing
+    , _vscsiaChapEnabled = Nothing
+    , _vscsiaNetworkInterfaceId = Nothing
+    , _vscsiaNetworkInterfacePort = Nothing
+    }
+
+-- | The logical disk number.
+vscsiaLunNumber :: Lens' VolumeiSCSIAttributes (Maybe Natural)
+vscsiaLunNumber = lens _vscsiaLunNumber (\ s a -> s{_vscsiaLunNumber = a}) . mapping _Nat;
+
+-- | The Amazon Resource Name (ARN) of the volume target.
+vscsiaTargetARN :: Lens' VolumeiSCSIAttributes (Maybe Text)
+vscsiaTargetARN = lens _vscsiaTargetARN (\ s a -> s{_vscsiaTargetARN = a});
+
+-- | Indicates whether mutual CHAP is enabled for the iSCSI target.
+vscsiaChapEnabled :: Lens' VolumeiSCSIAttributes (Maybe Bool)
+vscsiaChapEnabled = lens _vscsiaChapEnabled (\ s a -> s{_vscsiaChapEnabled = a});
+
+-- | The network interface identifier.
+vscsiaNetworkInterfaceId :: Lens' VolumeiSCSIAttributes (Maybe Text)
+vscsiaNetworkInterfaceId = lens _vscsiaNetworkInterfaceId (\ s a -> s{_vscsiaNetworkInterfaceId = a});
+
+-- | The port used to communicate with iSCSI targets.
+vscsiaNetworkInterfacePort :: Lens' VolumeiSCSIAttributes (Maybe Int)
+vscsiaNetworkInterfacePort = lens _vscsiaNetworkInterfacePort (\ s a -> s{_vscsiaNetworkInterfacePort = a});
+
+instance FromJSON VolumeiSCSIAttributes where
+        parseJSON
+          = withObject "VolumeiSCSIAttributes"
+              (\ x ->
+                 VolumeiSCSIAttributes' <$>
+                   (x .:? "LunNumber") <*> (x .:? "TargetARN") <*>
+                     (x .:? "ChapEnabled")
+                     <*> (x .:? "NetworkInterfaceId")
+                     <*> (x .:? "NetworkInterfacePort"))
diff --git a/gen/Network/AWS/StorageGateway/Types/Sum.hs b/gen/Network/AWS/StorageGateway/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/Types/Sum.hs
@@ -0,0 +1,20 @@
+{-# 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.StorageGateway.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.StorageGateway.Types.Sum where
+
+import           Network.AWS.Prelude
diff --git a/gen/Network/AWS/StorageGateway/UpdateBandwidthRateLimit.hs b/gen/Network/AWS/StorageGateway/UpdateBandwidthRateLimit.hs
--- a/gen/Network/AWS/StorageGateway/UpdateBandwidthRateLimit.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateBandwidthRateLimit.hs
@@ -1,145 +1,169 @@
-{-# 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.StorageGateway.UpdateBandwidthRateLimit
--- 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 operation updates the bandwidth rate limits of a gateway. You can update
--- both the upload and download bandwidth rate limit or specify only one of the
--- two. If you don't set a bandwidth rate limit, the existing rate limit remains.
+-- This operation updates the bandwidth rate limits of a gateway. You can
+-- update both the upload and download bandwidth rate limit or specify only
+-- one of the two. If you don\'t set a bandwidth rate limit, the existing
+-- rate limit remains.
 --
--- By default, a gateway's bandwidth rate limits are not set. If you don't set
--- any limit, the gateway does not have any limitations on its bandwidth usage
--- and could potentially use the maximum available bandwidth.
+-- By default, a gateway\'s bandwidth rate limits are not set. If you
+-- don\'t set any limit, the gateway does not have any limitations on its
+-- bandwidth usage and could potentially use the maximum available
+-- bandwidth.
 --
--- To specify which gateway to update, use the Amazon Resource Name (ARN) of
--- the gateway in your request.
+-- To specify which gateway to update, use the Amazon Resource Name (ARN)
+-- of the gateway in your request.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateBandwidthRateLimit.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateBandwidthRateLimit.html AWS API Reference> for UpdateBandwidthRateLimit.
 module Network.AWS.StorageGateway.UpdateBandwidthRateLimit
     (
-    -- * Request
-      UpdateBandwidthRateLimit
-    -- ** Request constructor
-    , updateBandwidthRateLimit
-    -- ** Request lenses
-    , ubrlAverageDownloadRateLimitInBitsPerSec
+    -- * Creating a Request
+      updateBandwidthRateLimit
+    , UpdateBandwidthRateLimit
+    -- * Request Lenses
     , ubrlAverageUploadRateLimitInBitsPerSec
+    , ubrlAverageDownloadRateLimitInBitsPerSec
     , ubrlGatewayARN
 
-    -- * Response
-    , UpdateBandwidthRateLimitResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateBandwidthRateLimitResponse
-    -- ** Response lenses
-    , ubrlrGatewayARN
+    , UpdateBandwidthRateLimitResponse
+    -- * Response Lenses
+    , ubrlrsGatewayARN
+    , ubrlrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data UpdateBandwidthRateLimit = UpdateBandwidthRateLimit
-    { _ubrlAverageDownloadRateLimitInBitsPerSec :: Maybe Nat
-    , _ubrlAverageUploadRateLimitInBitsPerSec   :: Maybe Nat
-    , _ubrlGatewayARN                           :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'UpdateBandwidthRateLimit' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   UpdateBandwidthRateLimitInput$AverageDownloadRateLimitInBitsPerSec
+-- -   UpdateBandwidthRateLimitInput$AverageUploadRateLimitInBitsPerSec
 --
--- * 'ubrlAverageDownloadRateLimitInBitsPerSec' @::@ 'Maybe' 'Natural'
+-- /See:/ 'updateBandwidthRateLimit' smart constructor.
+data UpdateBandwidthRateLimit = UpdateBandwidthRateLimit'
+    { _ubrlAverageUploadRateLimitInBitsPerSec   :: !(Maybe Nat)
+    , _ubrlAverageDownloadRateLimitInBitsPerSec :: !(Maybe Nat)
+    , _ubrlGatewayARN                           :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateBandwidthRateLimit' with the minimum fields required to make a request.
 --
--- * 'ubrlAverageUploadRateLimitInBitsPerSec' @::@ 'Maybe' 'Natural'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ubrlGatewayARN' @::@ 'Text'
+-- * 'ubrlAverageUploadRateLimitInBitsPerSec'
 --
-updateBandwidthRateLimit :: Text -- ^ 'ubrlGatewayARN'
-                         -> UpdateBandwidthRateLimit
-updateBandwidthRateLimit p1 = UpdateBandwidthRateLimit
-    { _ubrlGatewayARN                           = p1
-    , _ubrlAverageUploadRateLimitInBitsPerSec   = Nothing
+-- * 'ubrlAverageDownloadRateLimitInBitsPerSec'
+--
+-- * 'ubrlGatewayARN'
+updateBandwidthRateLimit
+    :: Text -- ^ 'ubrlGatewayARN'
+    -> UpdateBandwidthRateLimit
+updateBandwidthRateLimit pGatewayARN_ =
+    UpdateBandwidthRateLimit'
+    { _ubrlAverageUploadRateLimitInBitsPerSec = Nothing
     , _ubrlAverageDownloadRateLimitInBitsPerSec = Nothing
+    , _ubrlGatewayARN = pGatewayARN_
     }
 
--- | The average download bandwidth rate limit in bits per second.
-ubrlAverageDownloadRateLimitInBitsPerSec :: Lens' UpdateBandwidthRateLimit (Maybe Natural)
-ubrlAverageDownloadRateLimitInBitsPerSec =
-    lens _ubrlAverageDownloadRateLimitInBitsPerSec
-        (\s a -> s { _ubrlAverageDownloadRateLimitInBitsPerSec = a })
-            . mapping _Nat
-
 -- | The average upload bandwidth rate limit in bits per second.
 ubrlAverageUploadRateLimitInBitsPerSec :: Lens' UpdateBandwidthRateLimit (Maybe Natural)
-ubrlAverageUploadRateLimitInBitsPerSec =
-    lens _ubrlAverageUploadRateLimitInBitsPerSec
-        (\s a -> s { _ubrlAverageUploadRateLimitInBitsPerSec = a })
-            . mapping _Nat
+ubrlAverageUploadRateLimitInBitsPerSec = lens _ubrlAverageUploadRateLimitInBitsPerSec (\ s a -> s{_ubrlAverageUploadRateLimitInBitsPerSec = a}) . mapping _Nat;
 
+-- | The average download bandwidth rate limit in bits per second.
+ubrlAverageDownloadRateLimitInBitsPerSec :: Lens' UpdateBandwidthRateLimit (Maybe Natural)
+ubrlAverageDownloadRateLimitInBitsPerSec = lens _ubrlAverageDownloadRateLimitInBitsPerSec (\ s a -> s{_ubrlAverageDownloadRateLimitInBitsPerSec = a}) . mapping _Nat;
+
+-- | Undocumented member.
 ubrlGatewayARN :: Lens' UpdateBandwidthRateLimit Text
-ubrlGatewayARN = lens _ubrlGatewayARN (\s a -> s { _ubrlGatewayARN = a })
+ubrlGatewayARN = lens _ubrlGatewayARN (\ s a -> s{_ubrlGatewayARN = a});
 
-newtype UpdateBandwidthRateLimitResponse = UpdateBandwidthRateLimitResponse
-    { _ubrlrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest UpdateBandwidthRateLimit where
+        type Sv UpdateBandwidthRateLimit = StorageGateway
+        type Rs UpdateBandwidthRateLimit =
+             UpdateBandwidthRateLimitResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateBandwidthRateLimitResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'UpdateBandwidthRateLimitResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ubrlrGatewayARN' @::@ 'Maybe' 'Text'
---
-updateBandwidthRateLimitResponse :: UpdateBandwidthRateLimitResponse
-updateBandwidthRateLimitResponse = UpdateBandwidthRateLimitResponse
-    { _ubrlrGatewayARN = Nothing
-    }
+instance ToHeaders UpdateBandwidthRateLimit where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateBandwidthRateLimit"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ubrlrGatewayARN :: Lens' UpdateBandwidthRateLimitResponse (Maybe Text)
-ubrlrGatewayARN = lens _ubrlrGatewayARN (\s a -> s { _ubrlrGatewayARN = a })
+instance ToJSON UpdateBandwidthRateLimit where
+        toJSON UpdateBandwidthRateLimit'{..}
+          = object
+              ["AverageUploadRateLimitInBitsPerSec" .=
+                 _ubrlAverageUploadRateLimitInBitsPerSec,
+               "AverageDownloadRateLimitInBitsPerSec" .=
+                 _ubrlAverageDownloadRateLimitInBitsPerSec,
+               "GatewayARN" .= _ubrlGatewayARN]
 
 instance ToPath UpdateBandwidthRateLimit where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateBandwidthRateLimit where
-    toQuery = const mempty
-
-instance ToHeaders UpdateBandwidthRateLimit
+        toQuery = const mempty
 
-instance ToJSON UpdateBandwidthRateLimit where
-    toJSON UpdateBandwidthRateLimit{..} = object
-        [ "GatewayARN"                           .= _ubrlGatewayARN
-        , "AverageUploadRateLimitInBitsPerSec"   .= _ubrlAverageUploadRateLimitInBitsPerSec
-        , "AverageDownloadRateLimitInBitsPerSec" .= _ubrlAverageDownloadRateLimitInBitsPerSec
-        ]
+-- | A JSON object containing the of the gateway whose throttle information
+-- was updated.
+--
+-- /See:/ 'updateBandwidthRateLimitResponse' smart constructor.
+data UpdateBandwidthRateLimitResponse = UpdateBandwidthRateLimitResponse'
+    { _ubrlrsGatewayARN :: !(Maybe Text)
+    , _ubrlrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateBandwidthRateLimit where
-    type Sv UpdateBandwidthRateLimit = StorageGateway
-    type Rs UpdateBandwidthRateLimit = UpdateBandwidthRateLimitResponse
+-- | Creates a value of 'UpdateBandwidthRateLimitResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ubrlrsGatewayARN'
+--
+-- * 'ubrlrsStatus'
+updateBandwidthRateLimitResponse
+    :: Int -- ^ 'ubrlrsStatus'
+    -> UpdateBandwidthRateLimitResponse
+updateBandwidthRateLimitResponse pStatus_ =
+    UpdateBandwidthRateLimitResponse'
+    { _ubrlrsGatewayARN = Nothing
+    , _ubrlrsStatus = pStatus_
+    }
 
-    request  = post "UpdateBandwidthRateLimit"
-    response = jsonResponse
+-- | Undocumented member.
+ubrlrsGatewayARN :: Lens' UpdateBandwidthRateLimitResponse (Maybe Text)
+ubrlrsGatewayARN = lens _ubrlrsGatewayARN (\ s a -> s{_ubrlrsGatewayARN = a});
 
-instance FromJSON UpdateBandwidthRateLimitResponse where
-    parseJSON = withObject "UpdateBandwidthRateLimitResponse" $ \o -> UpdateBandwidthRateLimitResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+ubrlrsStatus :: Lens' UpdateBandwidthRateLimitResponse Int
+ubrlrsStatus = lens _ubrlrsStatus (\ s a -> s{_ubrlrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateChapCredentials.hs b/gen/Network/AWS/StorageGateway/UpdateChapCredentials.hs
--- a/gen/Network/AWS/StorageGateway/UpdateChapCredentials.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateChapCredentials.hs
@@ -1,170 +1,199 @@
-{-# 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.StorageGateway.UpdateChapCredentials
--- 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 operation updates the Challenge-Handshake Authentication Protocol (CHAP)
--- credentials for a specified iSCSI target. By default, a gateway does not have
--- CHAP enabled; however, for added security, you might use it.
+-- This operation updates the Challenge-Handshake Authentication Protocol
+-- (CHAP) credentials for a specified iSCSI target. By default, a gateway
+-- does not have CHAP enabled; however, for added security, you might use
+-- it.
 --
 -- When you update CHAP credentials, all existing connections on the target
 -- are closed and initiators must reconnect with the new credentials.
 --
---
---
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateChapCredentials.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateChapCredentials.html AWS API Reference> for UpdateChapCredentials.
 module Network.AWS.StorageGateway.UpdateChapCredentials
     (
-    -- * Request
-      UpdateChapCredentials
-    -- ** Request constructor
-    , updateChapCredentials
-    -- ** Request lenses
-    , uccInitiatorName
-    , uccSecretToAuthenticateInitiator
+    -- * Creating a Request
+      updateChapCredentials
+    , UpdateChapCredentials
+    -- * Request Lenses
     , uccSecretToAuthenticateTarget
     , uccTargetARN
+    , uccSecretToAuthenticateInitiator
+    , uccInitiatorName
 
-    -- * Response
-    , UpdateChapCredentialsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateChapCredentialsResponse
-    -- ** Response lenses
-    , uccrInitiatorName
-    , uccrTargetARN
+    , UpdateChapCredentialsResponse
+    -- * Response Lenses
+    , uccrsTargetARN
+    , uccrsInitiatorName
+    , uccrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data UpdateChapCredentials = UpdateChapCredentials
-    { _uccInitiatorName                 :: Text
-    , _uccSecretToAuthenticateInitiator :: Text
-    , _uccSecretToAuthenticateTarget    :: Maybe Text
-    , _uccTargetARN                     :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'UpdateChapCredentials' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   UpdateChapCredentialsInput$InitiatorName
+-- -   UpdateChapCredentialsInput$SecretToAuthenticateInitiator
+-- -   UpdateChapCredentialsInput$SecretToAuthenticateTarget
+-- -   UpdateChapCredentialsInput$TargetARN
 --
--- * 'uccInitiatorName' @::@ 'Text'
+-- /See:/ 'updateChapCredentials' smart constructor.
+data UpdateChapCredentials = UpdateChapCredentials'
+    { _uccSecretToAuthenticateTarget    :: !(Maybe Text)
+    , _uccTargetARN                     :: !Text
+    , _uccSecretToAuthenticateInitiator :: !Text
+    , _uccInitiatorName                 :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateChapCredentials' with the minimum fields required to make a request.
 --
--- * 'uccSecretToAuthenticateInitiator' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uccSecretToAuthenticateTarget' @::@ 'Maybe' 'Text'
+-- * 'uccSecretToAuthenticateTarget'
 --
--- * 'uccTargetARN' @::@ 'Text'
+-- * 'uccTargetARN'
 --
-updateChapCredentials :: Text -- ^ 'uccTargetARN'
-                      -> Text -- ^ 'uccSecretToAuthenticateInitiator'
-                      -> Text -- ^ 'uccInitiatorName'
-                      -> UpdateChapCredentials
-updateChapCredentials p1 p2 p3 = UpdateChapCredentials
-    { _uccTargetARN                     = p1
-    , _uccSecretToAuthenticateInitiator = p2
-    , _uccInitiatorName                 = p3
-    , _uccSecretToAuthenticateTarget    = Nothing
+-- * 'uccSecretToAuthenticateInitiator'
+--
+-- * 'uccInitiatorName'
+updateChapCredentials
+    :: Text -- ^ 'uccTargetARN'
+    -> Text -- ^ 'uccSecretToAuthenticateInitiator'
+    -> Text -- ^ 'uccInitiatorName'
+    -> UpdateChapCredentials
+updateChapCredentials pTargetARN_ pSecretToAuthenticateInitiator_ pInitiatorName_ =
+    UpdateChapCredentials'
+    { _uccSecretToAuthenticateTarget = Nothing
+    , _uccTargetARN = pTargetARN_
+    , _uccSecretToAuthenticateInitiator = pSecretToAuthenticateInitiator_
+    , _uccInitiatorName = pInitiatorName_
     }
 
+-- | The secret key that the target must provide to participate in mutual
+-- CHAP with the initiator (e.g. Windows client).
+--
+-- Byte constraints: Minimum bytes of 12. Maximum bytes of 16.
+--
+-- The secret key must be between 12 and 16 bytes when encoded in UTF-8.
+uccSecretToAuthenticateTarget :: Lens' UpdateChapCredentials (Maybe Text)
+uccSecretToAuthenticateTarget = lens _uccSecretToAuthenticateTarget (\ s a -> s{_uccSecretToAuthenticateTarget = a});
+
+-- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the
+-- DescribeStorediSCSIVolumes operation to return the TargetARN for
+-- specified VolumeARN.
+uccTargetARN :: Lens' UpdateChapCredentials Text
+uccTargetARN = lens _uccTargetARN (\ s a -> s{_uccTargetARN = a});
+
+-- | The secret key that the initiator (for example, the Windows client) must
+-- provide to participate in mutual CHAP with the target.
+--
+-- The secret key must be between 12 and 16 bytes when encoded in UTF-8.
+uccSecretToAuthenticateInitiator :: Lens' UpdateChapCredentials Text
+uccSecretToAuthenticateInitiator = lens _uccSecretToAuthenticateInitiator (\ s a -> s{_uccSecretToAuthenticateInitiator = a});
+
 -- | The iSCSI initiator that connects to the target.
 uccInitiatorName :: Lens' UpdateChapCredentials Text
-uccInitiatorName = lens _uccInitiatorName (\s a -> s { _uccInitiatorName = a })
+uccInitiatorName = lens _uccInitiatorName (\ s a -> s{_uccInitiatorName = a});
 
--- | The secret key that the initiator (e.g. Windows client) must provide to
--- participate in mutual CHAP with the target.
-uccSecretToAuthenticateInitiator :: Lens' UpdateChapCredentials Text
-uccSecretToAuthenticateInitiator =
-    lens _uccSecretToAuthenticateInitiator
-        (\s a -> s { _uccSecretToAuthenticateInitiator = a })
+instance AWSRequest UpdateChapCredentials where
+        type Sv UpdateChapCredentials = StorageGateway
+        type Rs UpdateChapCredentials =
+             UpdateChapCredentialsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateChapCredentialsResponse' <$>
+                   (x .?> "TargetARN") <*> (x .?> "InitiatorName") <*>
+                     (pure (fromEnum s)))
 
--- | The secret key that the target must provide to participate in mutual CHAP
--- with the initiator (e.g. Windows client).
-uccSecretToAuthenticateTarget :: Lens' UpdateChapCredentials (Maybe Text)
-uccSecretToAuthenticateTarget =
-    lens _uccSecretToAuthenticateTarget
-        (\s a -> s { _uccSecretToAuthenticateTarget = a })
+instance ToHeaders UpdateChapCredentials where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateChapCredentials" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the iSCSI volume target. Use the 'DescribeStorediSCSIVolumes' operation to return to retrieve the TargetARN for specified VolumeARN.
-uccTargetARN :: Lens' UpdateChapCredentials Text
-uccTargetARN = lens _uccTargetARN (\s a -> s { _uccTargetARN = a })
+instance ToJSON UpdateChapCredentials where
+        toJSON UpdateChapCredentials'{..}
+          = object
+              ["SecretToAuthenticateTarget" .=
+                 _uccSecretToAuthenticateTarget,
+               "TargetARN" .= _uccTargetARN,
+               "SecretToAuthenticateInitiator" .=
+                 _uccSecretToAuthenticateInitiator,
+               "InitiatorName" .= _uccInitiatorName]
 
-data UpdateChapCredentialsResponse = UpdateChapCredentialsResponse
-    { _uccrInitiatorName :: Maybe Text
-    , _uccrTargetARN     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToPath UpdateChapCredentials where
+        toPath = const "/"
 
--- | 'UpdateChapCredentialsResponse' constructor.
+instance ToQuery UpdateChapCredentials where
+        toQuery = const mempty
+
+-- | A JSON object containing the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateChapCredentialsResponse' smart constructor.
+data UpdateChapCredentialsResponse = UpdateChapCredentialsResponse'
+    { _uccrsTargetARN     :: !(Maybe Text)
+    , _uccrsInitiatorName :: !(Maybe Text)
+    , _uccrsStatus        :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateChapCredentialsResponse' with the minimum fields required to make a request.
 --
--- * 'uccrInitiatorName' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uccrTargetARN' @::@ 'Maybe' 'Text'
+-- * 'uccrsTargetARN'
 --
-updateChapCredentialsResponse :: UpdateChapCredentialsResponse
-updateChapCredentialsResponse = UpdateChapCredentialsResponse
-    { _uccrTargetARN     = Nothing
-    , _uccrInitiatorName = Nothing
+-- * 'uccrsInitiatorName'
+--
+-- * 'uccrsStatus'
+updateChapCredentialsResponse
+    :: Int -- ^ 'uccrsStatus'
+    -> UpdateChapCredentialsResponse
+updateChapCredentialsResponse pStatus_ =
+    UpdateChapCredentialsResponse'
+    { _uccrsTargetARN = Nothing
+    , _uccrsInitiatorName = Nothing
+    , _uccrsStatus = pStatus_
     }
 
--- | The iSCSI initiator that connects to the target. This is the same initiator
--- name specified in the request.
-uccrInitiatorName :: Lens' UpdateChapCredentialsResponse (Maybe Text)
-uccrInitiatorName =
-    lens _uccrInitiatorName (\s a -> s { _uccrInitiatorName = a })
-
 -- | The Amazon Resource Name (ARN) of the target. This is the same target
 -- specified in the request.
-uccrTargetARN :: Lens' UpdateChapCredentialsResponse (Maybe Text)
-uccrTargetARN = lens _uccrTargetARN (\s a -> s { _uccrTargetARN = a })
-
-instance ToPath UpdateChapCredentials where
-    toPath = const "/"
-
-instance ToQuery UpdateChapCredentials where
-    toQuery = const mempty
-
-instance ToHeaders UpdateChapCredentials
-
-instance ToJSON UpdateChapCredentials where
-    toJSON UpdateChapCredentials{..} = object
-        [ "TargetARN"                     .= _uccTargetARN
-        , "SecretToAuthenticateInitiator" .= _uccSecretToAuthenticateInitiator
-        , "InitiatorName"                 .= _uccInitiatorName
-        , "SecretToAuthenticateTarget"    .= _uccSecretToAuthenticateTarget
-        ]
-
-instance AWSRequest UpdateChapCredentials where
-    type Sv UpdateChapCredentials = StorageGateway
-    type Rs UpdateChapCredentials = UpdateChapCredentialsResponse
+uccrsTargetARN :: Lens' UpdateChapCredentialsResponse (Maybe Text)
+uccrsTargetARN = lens _uccrsTargetARN (\ s a -> s{_uccrsTargetARN = a});
 
-    request  = post "UpdateChapCredentials"
-    response = jsonResponse
+-- | The iSCSI initiator that connects to the target. This is the same
+-- initiator name specified in the request.
+uccrsInitiatorName :: Lens' UpdateChapCredentialsResponse (Maybe Text)
+uccrsInitiatorName = lens _uccrsInitiatorName (\ s a -> s{_uccrsInitiatorName = a});
 
-instance FromJSON UpdateChapCredentialsResponse where
-    parseJSON = withObject "UpdateChapCredentialsResponse" $ \o -> UpdateChapCredentialsResponse
-        <$> o .:? "InitiatorName"
-        <*> o .:? "TargetARN"
+-- | The response status code.
+uccrsStatus :: Lens' UpdateChapCredentialsResponse Int
+uccrsStatus = lens _uccrsStatus (\ s a -> s{_uccrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs b/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
--- a/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateGatewayInformation.hs
@@ -1,131 +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.StorageGateway.UpdateGatewayInformation
--- 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 operation updates a gateway's metadata, which includes the gateway's
--- name and time zone. To specify which gateway to update, use the Amazon
--- Resource Name (ARN) of the gateway in your request.
+-- This operation updates a gateway\'s metadata, which includes the
+-- gateway\'s name and time zone. To specify which gateway to update, use
+-- the Amazon Resource Name (ARN) of the gateway in your request.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateGatewayInformation.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateGatewayInformation.html AWS API Reference> for UpdateGatewayInformation.
 module Network.AWS.StorageGateway.UpdateGatewayInformation
     (
-    -- * Request
-      UpdateGatewayInformation
-    -- ** Request constructor
-    , updateGatewayInformation
-    -- ** Request lenses
-    , ugiGatewayARN
+    -- * Creating a Request
+      updateGatewayInformation
+    , UpdateGatewayInformation
+    -- * Request Lenses
     , ugiGatewayName
     , ugiGatewayTimezone
+    , ugiGatewayARN
 
-    -- * Response
-    , UpdateGatewayInformationResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateGatewayInformationResponse
-    -- ** Response lenses
-    , ugirGatewayARN
+    , UpdateGatewayInformationResponse
+    -- * Response Lenses
+    , ugirsGatewayARN
+    , ugirsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-data UpdateGatewayInformation = UpdateGatewayInformation
-    { _ugiGatewayARN      :: Text
-    , _ugiGatewayName     :: Maybe Text
-    , _ugiGatewayTimezone :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'updateGatewayInformation' smart constructor.
+data UpdateGatewayInformation = UpdateGatewayInformation'
+    { _ugiGatewayName     :: !(Maybe Text)
+    , _ugiGatewayTimezone :: !(Maybe Text)
+    , _ugiGatewayARN      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateGatewayInformation' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateGatewayInformation' with the minimum fields required to make a request.
 --
--- * 'ugiGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ugiGatewayName' @::@ 'Maybe' 'Text'
+-- * 'ugiGatewayName'
 --
--- * 'ugiGatewayTimezone' @::@ 'Maybe' 'Text'
+-- * 'ugiGatewayTimezone'
 --
-updateGatewayInformation :: Text -- ^ 'ugiGatewayARN'
-                         -> UpdateGatewayInformation
-updateGatewayInformation p1 = UpdateGatewayInformation
-    { _ugiGatewayARN      = p1
-    , _ugiGatewayName     = Nothing
+-- * 'ugiGatewayARN'
+updateGatewayInformation
+    :: Text -- ^ 'ugiGatewayARN'
+    -> UpdateGatewayInformation
+updateGatewayInformation pGatewayARN_ =
+    UpdateGatewayInformation'
+    { _ugiGatewayName = Nothing
     , _ugiGatewayTimezone = Nothing
+    , _ugiGatewayARN = pGatewayARN_
     }
 
-ugiGatewayARN :: Lens' UpdateGatewayInformation Text
-ugiGatewayARN = lens _ugiGatewayARN (\s a -> s { _ugiGatewayARN = a })
-
+-- | Undocumented member.
 ugiGatewayName :: Lens' UpdateGatewayInformation (Maybe Text)
-ugiGatewayName = lens _ugiGatewayName (\s a -> s { _ugiGatewayName = a })
+ugiGatewayName = lens _ugiGatewayName (\ s a -> s{_ugiGatewayName = a});
 
+-- | Undocumented member.
 ugiGatewayTimezone :: Lens' UpdateGatewayInformation (Maybe Text)
-ugiGatewayTimezone =
-    lens _ugiGatewayTimezone (\s a -> s { _ugiGatewayTimezone = a })
+ugiGatewayTimezone = lens _ugiGatewayTimezone (\ s a -> s{_ugiGatewayTimezone = a});
 
-newtype UpdateGatewayInformationResponse = UpdateGatewayInformationResponse
-    { _ugirGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | Undocumented member.
+ugiGatewayARN :: Lens' UpdateGatewayInformation Text
+ugiGatewayARN = lens _ugiGatewayARN (\ s a -> s{_ugiGatewayARN = a});
 
--- | 'UpdateGatewayInformationResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ugirGatewayARN' @::@ 'Maybe' 'Text'
---
-updateGatewayInformationResponse :: UpdateGatewayInformationResponse
-updateGatewayInformationResponse = UpdateGatewayInformationResponse
-    { _ugirGatewayARN = Nothing
-    }
+instance AWSRequest UpdateGatewayInformation where
+        type Sv UpdateGatewayInformation = StorageGateway
+        type Rs UpdateGatewayInformation =
+             UpdateGatewayInformationResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateGatewayInformationResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
-ugirGatewayARN :: Lens' UpdateGatewayInformationResponse (Maybe Text)
-ugirGatewayARN = lens _ugirGatewayARN (\s a -> s { _ugirGatewayARN = a })
+instance ToHeaders UpdateGatewayInformation where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateGatewayInformation"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UpdateGatewayInformation where
+        toJSON UpdateGatewayInformation'{..}
+          = object
+              ["GatewayName" .= _ugiGatewayName,
+               "GatewayTimezone" .= _ugiGatewayTimezone,
+               "GatewayARN" .= _ugiGatewayARN]
+
 instance ToPath UpdateGatewayInformation where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateGatewayInformation where
-    toQuery = const mempty
-
-instance ToHeaders UpdateGatewayInformation
+        toQuery = const mempty
 
-instance ToJSON UpdateGatewayInformation where
-    toJSON UpdateGatewayInformation{..} = object
-        [ "GatewayARN"      .= _ugiGatewayARN
-        , "GatewayName"     .= _ugiGatewayName
-        , "GatewayTimezone" .= _ugiGatewayTimezone
-        ]
+-- | A JSON object containing the of the gateway that was updated.
+--
+-- /See:/ 'updateGatewayInformationResponse' smart constructor.
+data UpdateGatewayInformationResponse = UpdateGatewayInformationResponse'
+    { _ugirsGatewayARN :: !(Maybe Text)
+    , _ugirsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateGatewayInformation where
-    type Sv UpdateGatewayInformation = StorageGateway
-    type Rs UpdateGatewayInformation = UpdateGatewayInformationResponse
+-- | Creates a value of 'UpdateGatewayInformationResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ugirsGatewayARN'
+--
+-- * 'ugirsStatus'
+updateGatewayInformationResponse
+    :: Int -- ^ 'ugirsStatus'
+    -> UpdateGatewayInformationResponse
+updateGatewayInformationResponse pStatus_ =
+    UpdateGatewayInformationResponse'
+    { _ugirsGatewayARN = Nothing
+    , _ugirsStatus = pStatus_
+    }
 
-    request  = post "UpdateGatewayInformation"
-    response = jsonResponse
+-- | Undocumented member.
+ugirsGatewayARN :: Lens' UpdateGatewayInformationResponse (Maybe Text)
+ugirsGatewayARN = lens _ugirsGatewayARN (\ s a -> s{_ugirsGatewayARN = a});
 
-instance FromJSON UpdateGatewayInformationResponse where
-    parseJSON = withObject "UpdateGatewayInformationResponse" $ \o -> UpdateGatewayInformationResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+ugirsStatus :: Lens' UpdateGatewayInformationResponse Int
+ugirsStatus = lens _ugirsStatus (\ s a -> s{_ugirsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateGatewaySoftwareNow.hs b/gen/Network/AWS/StorageGateway/UpdateGatewaySoftwareNow.hs
--- a/gen/Network/AWS/StorageGateway/UpdateGatewaySoftwareNow.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateGatewaySoftwareNow.hs
@@ -1,118 +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.StorageGateway.UpdateGatewaySoftwareNow
--- 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 operation updates the gateway virtual machine (VM) software. The request
--- immediately triggers the software update.
+-- This operation updates the gateway virtual machine (VM) software. The
+-- request immediately triggers the software update.
 --
--- When you make this request, you get a '200 OK' success response immediately.
--- However, it might take some time for the update to complete. You can call 'DescribeGatewayInformation' to verify the gateway is in the 'STATE_RUNNING' state. A software update
--- forces a system restart of your gateway. You can minimize the chance of any
--- disruption to your applications by increasing your iSCSI Initiators'
--- timeouts. For more information about increasing iSCSI Initiator timeouts for
--- Windows and Linux, see <http://docs.aws.amazon.com/storagegateway/latest/userguide/ConfiguringiSCSIClientInitiatorWindowsClient.html#CustomizeWindowsiSCSISettings Customizing Your Windows iSCSI Settings> and <http://docs.aws.amazon.com/storagegateway/latest/userguide/ConfiguringiSCSIClientInitiatorRedHatClient.html#CustomizeLinuxiSCSISettings Customizing Your Linux iSCSI Settings>, respectively.
+-- When you make this request, you get a '200 OK' success response
+-- immediately. However, it might take some time for the update to
+-- complete. You can call DescribeGatewayInformation to verify the gateway
+-- is in the 'STATE_RUNNING' state.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateGatewaySoftwareNow.html>
+-- A software update forces a system restart of your gateway. You can
+-- minimize the chance of any disruption to your applications by increasing
+-- your iSCSI Initiators\' timeouts. For more information about increasing
+-- iSCSI Initiator timeouts for Windows and Linux, see
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/ConfiguringiSCSIClientInitiatorWindowsClient.html#CustomizeWindowsiSCSISettings Customizing Your Windows iSCSI Settings>
+-- and
+-- <http://docs.aws.amazon.com/storagegateway/latest/userguide/ConfiguringiSCSIClientInitiatorRedHatClient.html#CustomizeLinuxiSCSISettings Customizing Your Linux iSCSI Settings>,
+-- respectively.
+--
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateGatewaySoftwareNow.html AWS API Reference> for UpdateGatewaySoftwareNow.
 module Network.AWS.StorageGateway.UpdateGatewaySoftwareNow
     (
-    -- * Request
-      UpdateGatewaySoftwareNow
-    -- ** Request constructor
-    , updateGatewaySoftwareNow
-    -- ** Request lenses
+    -- * Creating a Request
+      updateGatewaySoftwareNow
+    , UpdateGatewaySoftwareNow
+    -- * Request Lenses
     , ugsnGatewayARN
 
-    -- * Response
-    , UpdateGatewaySoftwareNowResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateGatewaySoftwareNowResponse
-    -- ** Response lenses
-    , ugsnrGatewayARN
+    , UpdateGatewaySoftwareNowResponse
+    -- * Response Lenses
+    , ugsnrsGatewayARN
+    , ugsnrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
-newtype UpdateGatewaySoftwareNow = UpdateGatewaySoftwareNow
+-- | A JSON object containing the of the gateway to update.
+--
+-- /See:/ 'updateGatewaySoftwareNow' smart constructor.
+newtype UpdateGatewaySoftwareNow = UpdateGatewaySoftwareNow'
     { _ugsnGatewayARN :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'UpdateGatewaySoftwareNow' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'UpdateGatewaySoftwareNow' with the minimum fields required to make a request.
 --
--- * 'ugsnGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-updateGatewaySoftwareNow :: Text -- ^ 'ugsnGatewayARN'
-                         -> UpdateGatewaySoftwareNow
-updateGatewaySoftwareNow p1 = UpdateGatewaySoftwareNow
-    { _ugsnGatewayARN = p1
+-- * 'ugsnGatewayARN'
+updateGatewaySoftwareNow
+    :: Text -- ^ 'ugsnGatewayARN'
+    -> UpdateGatewaySoftwareNow
+updateGatewaySoftwareNow pGatewayARN_ =
+    UpdateGatewaySoftwareNow'
+    { _ugsnGatewayARN = pGatewayARN_
     }
 
+-- | Undocumented member.
 ugsnGatewayARN :: Lens' UpdateGatewaySoftwareNow Text
-ugsnGatewayARN = lens _ugsnGatewayARN (\s a -> s { _ugsnGatewayARN = a })
+ugsnGatewayARN = lens _ugsnGatewayARN (\ s a -> s{_ugsnGatewayARN = a});
 
-newtype UpdateGatewaySoftwareNowResponse = UpdateGatewaySoftwareNowResponse
-    { _ugsnrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest UpdateGatewaySoftwareNow where
+        type Sv UpdateGatewaySoftwareNow = StorageGateway
+        type Rs UpdateGatewaySoftwareNow =
+             UpdateGatewaySoftwareNowResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateGatewaySoftwareNowResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
--- | 'UpdateGatewaySoftwareNowResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ugsnrGatewayARN' @::@ 'Maybe' 'Text'
---
-updateGatewaySoftwareNowResponse :: UpdateGatewaySoftwareNowResponse
-updateGatewaySoftwareNowResponse = UpdateGatewaySoftwareNowResponse
-    { _ugsnrGatewayARN = Nothing
-    }
+instance ToHeaders UpdateGatewaySoftwareNow where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateGatewaySoftwareNow"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ugsnrGatewayARN :: Lens' UpdateGatewaySoftwareNowResponse (Maybe Text)
-ugsnrGatewayARN = lens _ugsnrGatewayARN (\s a -> s { _ugsnrGatewayARN = a })
+instance ToJSON UpdateGatewaySoftwareNow where
+        toJSON UpdateGatewaySoftwareNow'{..}
+          = object ["GatewayARN" .= _ugsnGatewayARN]
 
 instance ToPath UpdateGatewaySoftwareNow where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateGatewaySoftwareNow where
-    toQuery = const mempty
-
-instance ToHeaders UpdateGatewaySoftwareNow
+        toQuery = const mempty
 
-instance ToJSON UpdateGatewaySoftwareNow where
-    toJSON UpdateGatewaySoftwareNow{..} = object
-        [ "GatewayARN" .= _ugsnGatewayARN
-        ]
+-- | A JSON object containing the of the gateway that was updated.
+--
+-- /See:/ 'updateGatewaySoftwareNowResponse' smart constructor.
+data UpdateGatewaySoftwareNowResponse = UpdateGatewaySoftwareNowResponse'
+    { _ugsnrsGatewayARN :: !(Maybe Text)
+    , _ugsnrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateGatewaySoftwareNow where
-    type Sv UpdateGatewaySoftwareNow = StorageGateway
-    type Rs UpdateGatewaySoftwareNow = UpdateGatewaySoftwareNowResponse
+-- | Creates a value of 'UpdateGatewaySoftwareNowResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ugsnrsGatewayARN'
+--
+-- * 'ugsnrsStatus'
+updateGatewaySoftwareNowResponse
+    :: Int -- ^ 'ugsnrsStatus'
+    -> UpdateGatewaySoftwareNowResponse
+updateGatewaySoftwareNowResponse pStatus_ =
+    UpdateGatewaySoftwareNowResponse'
+    { _ugsnrsGatewayARN = Nothing
+    , _ugsnrsStatus = pStatus_
+    }
 
-    request  = post "UpdateGatewaySoftwareNow"
-    response = jsonResponse
+-- | Undocumented member.
+ugsnrsGatewayARN :: Lens' UpdateGatewaySoftwareNowResponse (Maybe Text)
+ugsnrsGatewayARN = lens _ugsnrsGatewayARN (\ s a -> s{_ugsnrsGatewayARN = a});
 
-instance FromJSON UpdateGatewaySoftwareNowResponse where
-    parseJSON = withObject "UpdateGatewaySoftwareNowResponse" $ \o -> UpdateGatewaySoftwareNowResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+ugsnrsStatus :: Lens' UpdateGatewaySoftwareNowResponse Int
+ugsnrsStatus = lens _ugsnrsStatus (\ s a -> s{_ugsnrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs b/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
--- a/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateMaintenanceStartTime.hs
@@ -1,149 +1,176 @@
-{-# 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.StorageGateway.UpdateMaintenanceStartTime
--- 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 operation updates a gateway's weekly maintenance start time information,
--- including day and time of the week. The maintenance time is the time in your
--- gateway's time zone.
+-- This operation updates a gateway\'s weekly maintenance start time
+-- information, including day and time of the week. The maintenance time is
+-- the time in your gateway\'s time zone.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateMaintenanceStartTime.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateMaintenanceStartTime.html AWS API Reference> for UpdateMaintenanceStartTime.
 module Network.AWS.StorageGateway.UpdateMaintenanceStartTime
     (
-    -- * Request
-      UpdateMaintenanceStartTime
-    -- ** Request constructor
-    , updateMaintenanceStartTime
-    -- ** Request lenses
-    , umstDayOfWeek
+    -- * Creating a Request
+      updateMaintenanceStartTime
+    , UpdateMaintenanceStartTime
+    -- * Request Lenses
     , umstGatewayARN
     , umstHourOfDay
     , umstMinuteOfHour
+    , umstDayOfWeek
 
-    -- * Response
-    , UpdateMaintenanceStartTimeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateMaintenanceStartTimeResponse
-    -- ** Response lenses
-    , umstrGatewayARN
+    , UpdateMaintenanceStartTimeResponse
+    -- * Response Lenses
+    , umstrsGatewayARN
+    , umstrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data UpdateMaintenanceStartTime = UpdateMaintenanceStartTime
-    { _umstDayOfWeek    :: Nat
-    , _umstGatewayARN   :: Text
-    , _umstHourOfDay    :: Nat
-    , _umstMinuteOfHour :: Nat
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'UpdateMaintenanceStartTime' constructor.
+-- | A JSON object containing the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   UpdateMaintenanceStartTimeInput$DayOfWeek
+-- -   UpdateMaintenanceStartTimeInput$HourOfDay
+-- -   UpdateMaintenanceStartTimeInput$MinuteOfHour
 --
--- * 'umstDayOfWeek' @::@ 'Natural'
+-- /See:/ 'updateMaintenanceStartTime' smart constructor.
+data UpdateMaintenanceStartTime = UpdateMaintenanceStartTime'
+    { _umstGatewayARN   :: !Text
+    , _umstHourOfDay    :: !Nat
+    , _umstMinuteOfHour :: !Nat
+    , _umstDayOfWeek    :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateMaintenanceStartTime' with the minimum fields required to make a request.
 --
--- * 'umstGatewayARN' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'umstHourOfDay' @::@ 'Natural'
+-- * 'umstGatewayARN'
 --
--- * 'umstMinuteOfHour' @::@ 'Natural'
+-- * 'umstHourOfDay'
 --
-updateMaintenanceStartTime :: Text -- ^ 'umstGatewayARN'
-                           -> Natural -- ^ 'umstHourOfDay'
-                           -> Natural -- ^ 'umstMinuteOfHour'
-                           -> Natural -- ^ 'umstDayOfWeek'
-                           -> UpdateMaintenanceStartTime
-updateMaintenanceStartTime p1 p2 p3 p4 = UpdateMaintenanceStartTime
-    { _umstGatewayARN   = p1
-    , _umstHourOfDay    = withIso _Nat (const id) p2
-    , _umstMinuteOfHour = withIso _Nat (const id) p3
-    , _umstDayOfWeek    = withIso _Nat (const id) p4
+-- * 'umstMinuteOfHour'
+--
+-- * 'umstDayOfWeek'
+updateMaintenanceStartTime
+    :: Text -- ^ 'umstGatewayARN'
+    -> Natural -- ^ 'umstHourOfDay'
+    -> Natural -- ^ 'umstMinuteOfHour'
+    -> Natural -- ^ 'umstDayOfWeek'
+    -> UpdateMaintenanceStartTime
+updateMaintenanceStartTime pGatewayARN_ pHourOfDay_ pMinuteOfHour_ pDayOfWeek_ =
+    UpdateMaintenanceStartTime'
+    { _umstGatewayARN = pGatewayARN_
+    , _umstHourOfDay = _Nat # pHourOfDay_
+    , _umstMinuteOfHour = _Nat # pMinuteOfHour_
+    , _umstDayOfWeek = _Nat # pDayOfWeek_
     }
 
--- | The maintenance start time day of the week.
-umstDayOfWeek :: Lens' UpdateMaintenanceStartTime Natural
-umstDayOfWeek = lens _umstDayOfWeek (\s a -> s { _umstDayOfWeek = a }) . _Nat
-
+-- | Undocumented member.
 umstGatewayARN :: Lens' UpdateMaintenanceStartTime Text
-umstGatewayARN = lens _umstGatewayARN (\s a -> s { _umstGatewayARN = a })
+umstGatewayARN = lens _umstGatewayARN (\ s a -> s{_umstGatewayARN = a});
 
--- | The hour component of the maintenance start time represented as hh, where /hh/
--- is the hour (00 to 23). The hour of the day is in the time zone of the
--- gateway.
+-- | The hour component of the maintenance start time represented as hh,
+-- where /hh/ is the hour (00 to 23). The hour of the day is in the time
+-- zone of the gateway.
 umstHourOfDay :: Lens' UpdateMaintenanceStartTime Natural
-umstHourOfDay = lens _umstHourOfDay (\s a -> s { _umstHourOfDay = a }) . _Nat
+umstHourOfDay = lens _umstHourOfDay (\ s a -> s{_umstHourOfDay = a}) . _Nat;
 
--- | The minute component of the maintenance start time represented as /mm/, where /mm/
--- is the minute (00 to 59). The minute of the hour is in the time zone of the
--- gateway.
+-- | The minute component of the maintenance start time represented as /mm/,
+-- where /mm/ is the minute (00 to 59). The minute of the hour is in the
+-- time zone of the gateway.
 umstMinuteOfHour :: Lens' UpdateMaintenanceStartTime Natural
-umstMinuteOfHour = lens _umstMinuteOfHour (\s a -> s { _umstMinuteOfHour = a }) . _Nat
+umstMinuteOfHour = lens _umstMinuteOfHour (\ s a -> s{_umstMinuteOfHour = a}) . _Nat;
 
-newtype UpdateMaintenanceStartTimeResponse = UpdateMaintenanceStartTimeResponse
-    { _umstrGatewayARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | The maintenance start time day of the week.
+umstDayOfWeek :: Lens' UpdateMaintenanceStartTime Natural
+umstDayOfWeek = lens _umstDayOfWeek (\ s a -> s{_umstDayOfWeek = a}) . _Nat;
 
--- | 'UpdateMaintenanceStartTimeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'umstrGatewayARN' @::@ 'Maybe' 'Text'
---
-updateMaintenanceStartTimeResponse :: UpdateMaintenanceStartTimeResponse
-updateMaintenanceStartTimeResponse = UpdateMaintenanceStartTimeResponse
-    { _umstrGatewayARN = Nothing
-    }
+instance AWSRequest UpdateMaintenanceStartTime where
+        type Sv UpdateMaintenanceStartTime = StorageGateway
+        type Rs UpdateMaintenanceStartTime =
+             UpdateMaintenanceStartTimeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateMaintenanceStartTimeResponse' <$>
+                   (x .?> "GatewayARN") <*> (pure (fromEnum s)))
 
-umstrGatewayARN :: Lens' UpdateMaintenanceStartTimeResponse (Maybe Text)
-umstrGatewayARN = lens _umstrGatewayARN (\s a -> s { _umstrGatewayARN = a })
+instance ToHeaders UpdateMaintenanceStartTime where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateMaintenanceStartTime"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON UpdateMaintenanceStartTime where
+        toJSON UpdateMaintenanceStartTime'{..}
+          = object
+              ["GatewayARN" .= _umstGatewayARN,
+               "HourOfDay" .= _umstHourOfDay,
+               "MinuteOfHour" .= _umstMinuteOfHour,
+               "DayOfWeek" .= _umstDayOfWeek]
+
 instance ToPath UpdateMaintenanceStartTime where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateMaintenanceStartTime where
-    toQuery = const mempty
-
-instance ToHeaders UpdateMaintenanceStartTime
+        toQuery = const mempty
 
-instance ToJSON UpdateMaintenanceStartTime where
-    toJSON UpdateMaintenanceStartTime{..} = object
-        [ "GatewayARN"   .= _umstGatewayARN
-        , "HourOfDay"    .= _umstHourOfDay
-        , "MinuteOfHour" .= _umstMinuteOfHour
-        , "DayOfWeek"    .= _umstDayOfWeek
-        ]
+-- | A JSON object containing the of the gateway whose maintenance start time
+-- is updated.
+--
+-- /See:/ 'updateMaintenanceStartTimeResponse' smart constructor.
+data UpdateMaintenanceStartTimeResponse = UpdateMaintenanceStartTimeResponse'
+    { _umstrsGatewayARN :: !(Maybe Text)
+    , _umstrsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateMaintenanceStartTime where
-    type Sv UpdateMaintenanceStartTime = StorageGateway
-    type Rs UpdateMaintenanceStartTime = UpdateMaintenanceStartTimeResponse
+-- | Creates a value of 'UpdateMaintenanceStartTimeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'umstrsGatewayARN'
+--
+-- * 'umstrsStatus'
+updateMaintenanceStartTimeResponse
+    :: Int -- ^ 'umstrsStatus'
+    -> UpdateMaintenanceStartTimeResponse
+updateMaintenanceStartTimeResponse pStatus_ =
+    UpdateMaintenanceStartTimeResponse'
+    { _umstrsGatewayARN = Nothing
+    , _umstrsStatus = pStatus_
+    }
 
-    request  = post "UpdateMaintenanceStartTime"
-    response = jsonResponse
+-- | Undocumented member.
+umstrsGatewayARN :: Lens' UpdateMaintenanceStartTimeResponse (Maybe Text)
+umstrsGatewayARN = lens _umstrsGatewayARN (\ s a -> s{_umstrsGatewayARN = a});
 
-instance FromJSON UpdateMaintenanceStartTimeResponse where
-    parseJSON = withObject "UpdateMaintenanceStartTimeResponse" $ \o -> UpdateMaintenanceStartTimeResponse
-        <$> o .:? "GatewayARN"
+-- | The response status code.
+umstrsStatus :: Lens' UpdateMaintenanceStartTimeResponse Int
+umstrsStatus = lens _umstrsStatus (\ s a -> s{_umstrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateSnapshotSchedule.hs b/gen/Network/AWS/StorageGateway/UpdateSnapshotSchedule.hs
--- a/gen/Network/AWS/StorageGateway/UpdateSnapshotSchedule.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateSnapshotSchedule.hs
@@ -1,156 +1,183 @@
-{-# 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.StorageGateway.UpdateSnapshotSchedule
--- 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 operation updates a snapshot schedule configured for a gateway volume.
+-- This operation updates a snapshot schedule configured for a gateway
+-- volume.
 --
--- The default snapshot schedule for volume is once every 24 hours, starting at
--- the creation time of the volume. You can use this API to change the snapshot
--- schedule configured for the volume.
+-- The default snapshot schedule for volume is once every 24 hours,
+-- starting at the creation time of the volume. You can use this API to
+-- change the snapshot schedule configured for the volume.
 --
--- In the request you must identify the gateway volume whose snapshot schedule
--- you want to update, and the schedule information, including when you want the
--- snapshot to begin on a day and the frequency (in hours) of snapshots.
+-- In the request you must identify the gateway volume whose snapshot
+-- schedule you want to update, and the schedule information, including
+-- when you want the snapshot to begin on a day and the frequency (in
+-- hours) of snapshots.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateSnapshotSchedule.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateSnapshotSchedule.html AWS API Reference> for UpdateSnapshotSchedule.
 module Network.AWS.StorageGateway.UpdateSnapshotSchedule
     (
-    -- * Request
-      UpdateSnapshotSchedule
-    -- ** Request constructor
-    , updateSnapshotSchedule
-    -- ** Request lenses
+    -- * Creating a Request
+      updateSnapshotSchedule
+    , UpdateSnapshotSchedule
+    -- * Request Lenses
     , ussDescription
-    , ussRecurrenceInHours
-    , ussStartAt
     , ussVolumeARN
+    , ussStartAt
+    , ussRecurrenceInHours
 
-    -- * Response
-    , UpdateSnapshotScheduleResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateSnapshotScheduleResponse
-    -- ** Response lenses
-    , ussrVolumeARN
+    , UpdateSnapshotScheduleResponse
+    -- * Response Lenses
+    , ussrsVolumeARN
+    , ussrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data UpdateSnapshotSchedule = UpdateSnapshotSchedule
-    { _ussDescription       :: Maybe Text
-    , _ussRecurrenceInHours :: Nat
-    , _ussStartAt           :: Nat
-    , _ussVolumeARN         :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'UpdateSnapshotSchedule' constructor.
+-- | A JSON object containing one or more of the following fields:
 --
--- The fields accessible through corresponding lenses are:
+-- -   UpdateSnapshotScheduleInput$Description
+-- -   UpdateSnapshotScheduleInput$RecurrenceInHours
+-- -   UpdateSnapshotScheduleInput$StartAt
+-- -   UpdateSnapshotScheduleInput$VolumeARN
 --
--- * 'ussDescription' @::@ 'Maybe' 'Text'
+-- /See:/ 'updateSnapshotSchedule' smart constructor.
+data UpdateSnapshotSchedule = UpdateSnapshotSchedule'
+    { _ussDescription       :: !(Maybe Text)
+    , _ussVolumeARN         :: !Text
+    , _ussStartAt           :: !Nat
+    , _ussRecurrenceInHours :: !Nat
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateSnapshotSchedule' with the minimum fields required to make a request.
 --
--- * 'ussRecurrenceInHours' @::@ 'Natural'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ussStartAt' @::@ 'Natural'
+-- * 'ussDescription'
 --
--- * 'ussVolumeARN' @::@ 'Text'
+-- * 'ussVolumeARN'
 --
-updateSnapshotSchedule :: Text -- ^ 'ussVolumeARN'
-                       -> Natural -- ^ 'ussStartAt'
-                       -> Natural -- ^ 'ussRecurrenceInHours'
-                       -> UpdateSnapshotSchedule
-updateSnapshotSchedule p1 p2 p3 = UpdateSnapshotSchedule
-    { _ussVolumeARN         = p1
-    , _ussStartAt           = withIso _Nat (const id) p2
-    , _ussRecurrenceInHours = withIso _Nat (const id) p3
-    , _ussDescription       = Nothing
+-- * 'ussStartAt'
+--
+-- * 'ussRecurrenceInHours'
+updateSnapshotSchedule
+    :: Text -- ^ 'ussVolumeARN'
+    -> Natural -- ^ 'ussStartAt'
+    -> Natural -- ^ 'ussRecurrenceInHours'
+    -> UpdateSnapshotSchedule
+updateSnapshotSchedule pVolumeARN_ pStartAt_ pRecurrenceInHours_ =
+    UpdateSnapshotSchedule'
+    { _ussDescription = Nothing
+    , _ussVolumeARN = pVolumeARN_
+    , _ussStartAt = _Nat # pStartAt_
+    , _ussRecurrenceInHours = _Nat # pRecurrenceInHours_
     }
 
--- | Optional description of the snapshot that overwrites the existing description.
+-- | Optional description of the snapshot that overwrites the existing
+-- description.
 ussDescription :: Lens' UpdateSnapshotSchedule (Maybe Text)
-ussDescription = lens _ussDescription (\s a -> s { _ussDescription = a })
+ussDescription = lens _ussDescription (\ s a -> s{_ussDescription = a});
 
--- | Frequency of snapshots. Specify the number of hours between snapshots.
-ussRecurrenceInHours :: Lens' UpdateSnapshotSchedule Natural
-ussRecurrenceInHours =
-    lens _ussRecurrenceInHours (\s a -> s { _ussRecurrenceInHours = a })
-        . _Nat
+-- | The Amazon Resource Name (ARN) of the volume. Use the ListVolumes
+-- operation to return a list of gateway volumes.
+ussVolumeARN :: Lens' UpdateSnapshotSchedule Text
+ussVolumeARN = lens _ussVolumeARN (\ s a -> s{_ussVolumeARN = a});
 
--- | The hour of the day at which the snapshot schedule begins represented as /hh/,
--- where /hh/ is the hour (0 to 23). The hour of the day is in the time zone of
--- the gateway.
+-- | The hour of the day at which the snapshot schedule begins represented as
+-- /hh/, where /hh/ is the hour (0 to 23). The hour of the day is in the
+-- time zone of the gateway.
 ussStartAt :: Lens' UpdateSnapshotSchedule Natural
-ussStartAt = lens _ussStartAt (\s a -> s { _ussStartAt = a }) . _Nat
+ussStartAt = lens _ussStartAt (\ s a -> s{_ussStartAt = a}) . _Nat;
 
--- | The Amazon Resource Name (ARN) of the volume. Use the 'ListVolumes' operation
--- to return a list of gateway volumes.
-ussVolumeARN :: Lens' UpdateSnapshotSchedule Text
-ussVolumeARN = lens _ussVolumeARN (\s a -> s { _ussVolumeARN = a })
+-- | Frequency of snapshots. Specify the number of hours between snapshots.
+ussRecurrenceInHours :: Lens' UpdateSnapshotSchedule Natural
+ussRecurrenceInHours = lens _ussRecurrenceInHours (\ s a -> s{_ussRecurrenceInHours = a}) . _Nat;
 
-newtype UpdateSnapshotScheduleResponse = UpdateSnapshotScheduleResponse
-    { _ussrVolumeARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest UpdateSnapshotSchedule where
+        type Sv UpdateSnapshotSchedule = StorageGateway
+        type Rs UpdateSnapshotSchedule =
+             UpdateSnapshotScheduleResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateSnapshotScheduleResponse' <$>
+                   (x .?> "VolumeARN") <*> (pure (fromEnum s)))
 
--- | 'UpdateSnapshotScheduleResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ussrVolumeARN' @::@ 'Maybe' 'Text'
---
-updateSnapshotScheduleResponse :: UpdateSnapshotScheduleResponse
-updateSnapshotScheduleResponse = UpdateSnapshotScheduleResponse
-    { _ussrVolumeARN = Nothing
-    }
+instance ToHeaders UpdateSnapshotSchedule where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateSnapshotSchedule" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-ussrVolumeARN :: Lens' UpdateSnapshotScheduleResponse (Maybe Text)
-ussrVolumeARN = lens _ussrVolumeARN (\s a -> s { _ussrVolumeARN = a })
+instance ToJSON UpdateSnapshotSchedule where
+        toJSON UpdateSnapshotSchedule'{..}
+          = object
+              ["Description" .= _ussDescription,
+               "VolumeARN" .= _ussVolumeARN,
+               "StartAt" .= _ussStartAt,
+               "RecurrenceInHours" .= _ussRecurrenceInHours]
 
 instance ToPath UpdateSnapshotSchedule where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateSnapshotSchedule where
-    toQuery = const mempty
-
-instance ToHeaders UpdateSnapshotSchedule
+        toQuery = const mempty
 
-instance ToJSON UpdateSnapshotSchedule where
-    toJSON UpdateSnapshotSchedule{..} = object
-        [ "VolumeARN"         .= _ussVolumeARN
-        , "StartAt"           .= _ussStartAt
-        , "RecurrenceInHours" .= _ussRecurrenceInHours
-        , "Description"       .= _ussDescription
-        ]
+-- | A JSON object containing the of the updated storage volume.
+--
+-- /See:/ 'updateSnapshotScheduleResponse' smart constructor.
+data UpdateSnapshotScheduleResponse = UpdateSnapshotScheduleResponse'
+    { _ussrsVolumeARN :: !(Maybe Text)
+    , _ussrsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateSnapshotSchedule where
-    type Sv UpdateSnapshotSchedule = StorageGateway
-    type Rs UpdateSnapshotSchedule = UpdateSnapshotScheduleResponse
+-- | Creates a value of 'UpdateSnapshotScheduleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ussrsVolumeARN'
+--
+-- * 'ussrsStatus'
+updateSnapshotScheduleResponse
+    :: Int -- ^ 'ussrsStatus'
+    -> UpdateSnapshotScheduleResponse
+updateSnapshotScheduleResponse pStatus_ =
+    UpdateSnapshotScheduleResponse'
+    { _ussrsVolumeARN = Nothing
+    , _ussrsStatus = pStatus_
+    }
 
-    request  = post "UpdateSnapshotSchedule"
-    response = jsonResponse
+-- | Undocumented member.
+ussrsVolumeARN :: Lens' UpdateSnapshotScheduleResponse (Maybe Text)
+ussrsVolumeARN = lens _ussrsVolumeARN (\ s a -> s{_ussrsVolumeARN = a});
 
-instance FromJSON UpdateSnapshotScheduleResponse where
-    parseJSON = withObject "UpdateSnapshotScheduleResponse" $ \o -> UpdateSnapshotScheduleResponse
-        <$> o .:? "VolumeARN"
+-- | The response status code.
+ussrsStatus :: Lens' UpdateSnapshotScheduleResponse Int
+ussrsStatus = lens _ussrsStatus (\ s a -> s{_ussrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/UpdateVTLDeviceType.hs b/gen/Network/AWS/StorageGateway/UpdateVTLDeviceType.hs
--- a/gen/Network/AWS/StorageGateway/UpdateVTLDeviceType.hs
+++ b/gen/Network/AWS/StorageGateway/UpdateVTLDeviceType.hs
@@ -1,130 +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.StorageGateway.UpdateVTLDeviceType
--- 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 operation updates the type of medium changer in a gateway-VTL. When you
--- activate a gateway-VTL, you select a medium changer type for the gateway-VTL.
--- This operation enables you to select a different type of medium changer after
--- a gateway-VTL is activated.
+-- This operation updates the type of medium changer in a gateway-VTL. When
+-- you activate a gateway-VTL, you select a medium changer type for the
+-- gateway-VTL. This operation enables you to select a different type of
+-- medium changer after a gateway-VTL is activated.
 --
--- <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateVTLDeviceType.html>
+-- /See:/ <http://docs.aws.amazon.com/storagegateway/latest/APIReference/API_UpdateVTLDeviceType.html AWS API Reference> for UpdateVTLDeviceType.
 module Network.AWS.StorageGateway.UpdateVTLDeviceType
     (
-    -- * Request
-      UpdateVTLDeviceType
-    -- ** Request constructor
-    , updateVTLDeviceType
-    -- ** Request lenses
-    , uvtldtDeviceType
+    -- * Creating a Request
+      updateVTLDeviceType
+    , UpdateVTLDeviceType
+    -- * Request Lenses
     , uvtldtVTLDeviceARN
+    , uvtldtDeviceType
 
-    -- * Response
-    , UpdateVTLDeviceTypeResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateVTLDeviceTypeResponse
-    -- ** Response lenses
-    , uvtldtrVTLDeviceARN
+    , UpdateVTLDeviceTypeResponse
+    -- * Response Lenses
+    , uvtldtrsVTLDeviceARN
+    , uvtldtrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.StorageGateway.Types
-import qualified GHC.Exts
-
-data UpdateVTLDeviceType = UpdateVTLDeviceType
-    { _uvtldtDeviceType   :: Text
-    , _uvtldtVTLDeviceARN :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.StorageGateway.Types
+import           Network.AWS.StorageGateway.Types.Product
 
--- | 'UpdateVTLDeviceType' constructor.
+-- | UpdateVTLDeviceTypeInput
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateVTLDeviceType' smart constructor.
+data UpdateVTLDeviceType = UpdateVTLDeviceType'
+    { _uvtldtVTLDeviceARN :: !Text
+    , _uvtldtDeviceType   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateVTLDeviceType' with the minimum fields required to make a request.
 --
--- * 'uvtldtDeviceType' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'uvtldtVTLDeviceARN' @::@ 'Text'
+-- * 'uvtldtVTLDeviceARN'
 --
-updateVTLDeviceType :: Text -- ^ 'uvtldtVTLDeviceARN'
-                    -> Text -- ^ 'uvtldtDeviceType'
-                    -> UpdateVTLDeviceType
-updateVTLDeviceType p1 p2 = UpdateVTLDeviceType
-    { _uvtldtVTLDeviceARN = p1
-    , _uvtldtDeviceType   = p2
+-- * 'uvtldtDeviceType'
+updateVTLDeviceType
+    :: Text -- ^ 'uvtldtVTLDeviceARN'
+    -> Text -- ^ 'uvtldtDeviceType'
+    -> UpdateVTLDeviceType
+updateVTLDeviceType pVTLDeviceARN_ pDeviceType_ =
+    UpdateVTLDeviceType'
+    { _uvtldtVTLDeviceARN = pVTLDeviceARN_
+    , _uvtldtDeviceType = pDeviceType_
     }
 
+-- | The Amazon Resource Name (ARN) of the medium changer you want to select.
+uvtldtVTLDeviceARN :: Lens' UpdateVTLDeviceType Text
+uvtldtVTLDeviceARN = lens _uvtldtVTLDeviceARN (\ s a -> s{_uvtldtVTLDeviceARN = a});
+
 -- | The type of medium changer you want to select.
 --
--- /Valid Values/: "STK-L700", "AWS-Gateway-VTL"
+-- /Valid Values/: \"STK-L700\", \"AWS-Gateway-VTL\"
 uvtldtDeviceType :: Lens' UpdateVTLDeviceType Text
-uvtldtDeviceType = lens _uvtldtDeviceType (\s a -> s { _uvtldtDeviceType = a })
-
--- | The Amazon Resource Name (ARN) of the medium changer you want to select.
-uvtldtVTLDeviceARN :: Lens' UpdateVTLDeviceType Text
-uvtldtVTLDeviceARN =
-    lens _uvtldtVTLDeviceARN (\s a -> s { _uvtldtVTLDeviceARN = a })
+uvtldtDeviceType = lens _uvtldtDeviceType (\ s a -> s{_uvtldtDeviceType = a});
 
-newtype UpdateVTLDeviceTypeResponse = UpdateVTLDeviceTypeResponse
-    { _uvtldtrVTLDeviceARN :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+instance AWSRequest UpdateVTLDeviceType where
+        type Sv UpdateVTLDeviceType = StorageGateway
+        type Rs UpdateVTLDeviceType =
+             UpdateVTLDeviceTypeResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 UpdateVTLDeviceTypeResponse' <$>
+                   (x .?> "VTLDeviceARN") <*> (pure (fromEnum s)))
 
--- | 'UpdateVTLDeviceTypeResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'uvtldtrVTLDeviceARN' @::@ 'Maybe' 'Text'
---
-updateVTLDeviceTypeResponse :: UpdateVTLDeviceTypeResponse
-updateVTLDeviceTypeResponse = UpdateVTLDeviceTypeResponse
-    { _uvtldtrVTLDeviceARN = Nothing
-    }
+instance ToHeaders UpdateVTLDeviceType where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("StorageGateway_20130630.UpdateVTLDeviceType" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The Amazon Resource Name (ARN) of the medium changer you have selected.
-uvtldtrVTLDeviceARN :: Lens' UpdateVTLDeviceTypeResponse (Maybe Text)
-uvtldtrVTLDeviceARN =
-    lens _uvtldtrVTLDeviceARN (\s a -> s { _uvtldtrVTLDeviceARN = a })
+instance ToJSON UpdateVTLDeviceType where
+        toJSON UpdateVTLDeviceType'{..}
+          = object
+              ["VTLDeviceARN" .= _uvtldtVTLDeviceARN,
+               "DeviceType" .= _uvtldtDeviceType]
 
 instance ToPath UpdateVTLDeviceType where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery UpdateVTLDeviceType where
-    toQuery = const mempty
-
-instance ToHeaders UpdateVTLDeviceType
+        toQuery = const mempty
 
-instance ToJSON UpdateVTLDeviceType where
-    toJSON UpdateVTLDeviceType{..} = object
-        [ "VTLDeviceARN" .= _uvtldtVTLDeviceARN
-        , "DeviceType"   .= _uvtldtDeviceType
-        ]
+-- | UpdateVTLDeviceTypeOutput
+--
+-- /See:/ 'updateVTLDeviceTypeResponse' smart constructor.
+data UpdateVTLDeviceTypeResponse = UpdateVTLDeviceTypeResponse'
+    { _uvtldtrsVTLDeviceARN :: !(Maybe Text)
+    , _uvtldtrsStatus       :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest UpdateVTLDeviceType where
-    type Sv UpdateVTLDeviceType = StorageGateway
-    type Rs UpdateVTLDeviceType = UpdateVTLDeviceTypeResponse
+-- | Creates a value of 'UpdateVTLDeviceTypeResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'uvtldtrsVTLDeviceARN'
+--
+-- * 'uvtldtrsStatus'
+updateVTLDeviceTypeResponse
+    :: Int -- ^ 'uvtldtrsStatus'
+    -> UpdateVTLDeviceTypeResponse
+updateVTLDeviceTypeResponse pStatus_ =
+    UpdateVTLDeviceTypeResponse'
+    { _uvtldtrsVTLDeviceARN = Nothing
+    , _uvtldtrsStatus = pStatus_
+    }
 
-    request  = post "UpdateVTLDeviceType"
-    response = jsonResponse
+-- | The Amazon Resource Name (ARN) of the medium changer you have selected.
+uvtldtrsVTLDeviceARN :: Lens' UpdateVTLDeviceTypeResponse (Maybe Text)
+uvtldtrsVTLDeviceARN = lens _uvtldtrsVTLDeviceARN (\ s a -> s{_uvtldtrsVTLDeviceARN = a});
 
-instance FromJSON UpdateVTLDeviceTypeResponse where
-    parseJSON = withObject "UpdateVTLDeviceTypeResponse" $ \o -> UpdateVTLDeviceTypeResponse
-        <$> o .:? "VTLDeviceARN"
+-- | The response status code.
+uvtldtrsStatus :: Lens' UpdateVTLDeviceTypeResponse Int
+uvtldtrsStatus = lens _uvtldtrsStatus (\ s a -> s{_uvtldtrsStatus = a});
diff --git a/gen/Network/AWS/StorageGateway/Waiters.hs b/gen/Network/AWS/StorageGateway/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/StorageGateway/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.StorageGateway.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.StorageGateway.Waiters where
+
+import           Network.AWS.Prelude
+import           Network.AWS.StorageGateway.Types
+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.StorageGateway
+import Test.AWS.StorageGateway.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "StorageGateway"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/StorageGateway.hs b/test/Test/AWS/Gen/StorageGateway.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/StorageGateway.hs
@@ -0,0 +1,889 @@
+{-# 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.StorageGateway
+-- 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.StorageGateway where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.StorageGateway
+import Test.AWS.StorageGateway.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"
+--         [ testCancelArchival $
+--             cancelArchival
+--
+--         , testCreateStorediSCSIVolume $
+--             createStorediSCSIVolume
+--
+--         , testCreateTapes $
+--             createTapes
+--
+--         , testCreateCachediSCSIVolume $
+--             createCachediSCSIVolume
+--
+--         , testUpdateVTLDeviceType $
+--             updateVTLDeviceType
+--
+--         , testDescribeChapCredentials $
+--             describeChapCredentials
+--
+--         , testAddUploadBuffer $
+--             addUploadBuffer
+--
+--         , testListVolumeInitiators $
+--             listVolumeInitiators
+--
+--         , testDescribeWorkingStorage $
+--             describeWorkingStorage
+--
+--         , testDescribeCachediSCSIVolumes $
+--             describeCachediSCSIVolumes
+--
+--         , testUpdateGatewayInformation $
+--             updateGatewayInformation
+--
+--         , testDescribeMaintenanceStartTime $
+--             describeMaintenanceStartTime
+--
+--         , testAddCache $
+--             addCache
+--
+--         , testStartGateway $
+--             startGateway
+--
+--         , testShutdownGateway $
+--             shutdownGateway
+--
+--         , testUpdateGatewaySoftwareNow $
+--             updateGatewaySoftwareNow
+--
+--         , testDeleteChapCredentials $
+--             deleteChapCredentials
+--
+--         , testUpdateChapCredentials $
+--             updateChapCredentials
+--
+--         , testDescribeStorediSCSIVolumes $
+--             describeStorediSCSIVolumes
+--
+--         , testDescribeTapes $
+--             describeTapes
+--
+--         , testDescribeUploadBuffer $
+--             describeUploadBuffer
+--
+--         , testCreateSnapshotFromVolumeRecoveryPoint $
+--             createSnapshotFromVolumeRecoveryPoint
+--
+--         , testDescribeGatewayInformation $
+--             describeGatewayInformation
+--
+--         , testRetrieveTapeRecoveryPoint $
+--             retrieveTapeRecoveryPoint
+--
+--         , testUpdateMaintenanceStartTime $
+--             updateMaintenanceStartTime
+--
+--         , testDeleteGateway $
+--             deleteGateway
+--
+--         , testDisableGateway $
+--             disableGateway
+--
+--         , testDescribeSnapshotSchedule $
+--             describeSnapshotSchedule
+--
+--         , testDescribeTapeArchives $
+--             describeTapeArchives
+--
+--         , testRetrieveTapeArchive $
+--             retrieveTapeArchive
+--
+--         , testDescribeBandwidthRateLimit $
+--             describeBandwidthRateLimit
+--
+--         , testDescribeVTLDevices $
+--             describeVTLDevices
+--
+--         , testCreateSnapshot $
+--             createSnapshot
+--
+--         , testUpdateSnapshotSchedule $
+--             updateSnapshotSchedule
+--
+--         , testCancelRetrieval $
+--             cancelRetrieval
+--
+--         , testDeleteSnapshotSchedule $
+--             deleteSnapshotSchedule
+--
+--         , testDeleteTapeArchive $
+--             deleteTapeArchive
+--
+--         , testListVolumeRecoveryPoints $
+--             listVolumeRecoveryPoints
+--
+--         , testAddWorkingStorage $
+--             addWorkingStorage
+--
+--         , testListGateways $
+--             listGateways
+--
+--         , testListVolumes $
+--             listVolumes
+--
+--         , testDescribeTapeRecoveryPoints $
+--             describeTapeRecoveryPoints
+--
+--         , testDeleteVolume $
+--             deleteVolume
+--
+--         , testResetCache $
+--             resetCache
+--
+--         , testActivateGateway $
+--             activateGateway
+--
+--         , testDescribeCache $
+--             describeCache
+--
+--         , testUpdateBandwidthRateLimit $
+--             updateBandwidthRateLimit
+--
+--         , testDeleteBandwidthRateLimit $
+--             deleteBandwidthRateLimit
+--
+--         , testListLocalDisks $
+--             listLocalDisks
+--
+--         , testDeleteTape $
+--             deleteTape
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testCancelArchivalResponse $
+--             cancelArchivalResponse
+--
+--         , testCreateStorediSCSIVolumeResponse $
+--             createStorediSCSIVolumeResponse
+--
+--         , testCreateTapesResponse $
+--             createTapesResponse
+--
+--         , testCreateCachediSCSIVolumeResponse $
+--             createCachediSCSIVolumeResponse
+--
+--         , testUpdateVTLDeviceTypeResponse $
+--             updateVTLDeviceTypeResponse
+--
+--         , testDescribeChapCredentialsResponse $
+--             describeChapCredentialsResponse
+--
+--         , testAddUploadBufferResponse $
+--             addUploadBufferResponse
+--
+--         , testListVolumeInitiatorsResponse $
+--             listVolumeInitiatorsResponse
+--
+--         , testDescribeWorkingStorageResponse $
+--             describeWorkingStorageResponse
+--
+--         , testDescribeCachediSCSIVolumesResponse $
+--             describeCachediSCSIVolumesResponse
+--
+--         , testUpdateGatewayInformationResponse $
+--             updateGatewayInformationResponse
+--
+--         , testDescribeMaintenanceStartTimeResponse $
+--             describeMaintenanceStartTimeResponse
+--
+--         , testAddCacheResponse $
+--             addCacheResponse
+--
+--         , testStartGatewayResponse $
+--             startGatewayResponse
+--
+--         , testShutdownGatewayResponse $
+--             shutdownGatewayResponse
+--
+--         , testUpdateGatewaySoftwareNowResponse $
+--             updateGatewaySoftwareNowResponse
+--
+--         , testDeleteChapCredentialsResponse $
+--             deleteChapCredentialsResponse
+--
+--         , testUpdateChapCredentialsResponse $
+--             updateChapCredentialsResponse
+--
+--         , testDescribeStorediSCSIVolumesResponse $
+--             describeStorediSCSIVolumesResponse
+--
+--         , testDescribeTapesResponse $
+--             describeTapesResponse
+--
+--         , testDescribeUploadBufferResponse $
+--             describeUploadBufferResponse
+--
+--         , testCreateSnapshotFromVolumeRecoveryPointResponse $
+--             createSnapshotFromVolumeRecoveryPointResponse
+--
+--         , testDescribeGatewayInformationResponse $
+--             describeGatewayInformationResponse
+--
+--         , testRetrieveTapeRecoveryPointResponse $
+--             retrieveTapeRecoveryPointResponse
+--
+--         , testUpdateMaintenanceStartTimeResponse $
+--             updateMaintenanceStartTimeResponse
+--
+--         , testDeleteGatewayResponse $
+--             deleteGatewayResponse
+--
+--         , testDisableGatewayResponse $
+--             disableGatewayResponse
+--
+--         , testDescribeSnapshotScheduleResponse $
+--             describeSnapshotScheduleResponse
+--
+--         , testDescribeTapeArchivesResponse $
+--             describeTapeArchivesResponse
+--
+--         , testRetrieveTapeArchiveResponse $
+--             retrieveTapeArchiveResponse
+--
+--         , testDescribeBandwidthRateLimitResponse $
+--             describeBandwidthRateLimitResponse
+--
+--         , testDescribeVTLDevicesResponse $
+--             describeVTLDevicesResponse
+--
+--         , testCreateSnapshotResponse $
+--             createSnapshotResponse
+--
+--         , testUpdateSnapshotScheduleResponse $
+--             updateSnapshotScheduleResponse
+--
+--         , testCancelRetrievalResponse $
+--             cancelRetrievalResponse
+--
+--         , testDeleteSnapshotScheduleResponse $
+--             deleteSnapshotScheduleResponse
+--
+--         , testDeleteTapeArchiveResponse $
+--             deleteTapeArchiveResponse
+--
+--         , testListVolumeRecoveryPointsResponse $
+--             listVolumeRecoveryPointsResponse
+--
+--         , testAddWorkingStorageResponse $
+--             addWorkingStorageResponse
+--
+--         , testListGatewaysResponse $
+--             listGatewaysResponse
+--
+--         , testListVolumesResponse $
+--             listVolumesResponse
+--
+--         , testDescribeTapeRecoveryPointsResponse $
+--             describeTapeRecoveryPointsResponse
+--
+--         , testDeleteVolumeResponse $
+--             deleteVolumeResponse
+--
+--         , testResetCacheResponse $
+--             resetCacheResponse
+--
+--         , testActivateGatewayResponse $
+--             activateGatewayResponse
+--
+--         , testDescribeCacheResponse $
+--             describeCacheResponse
+--
+--         , testUpdateBandwidthRateLimitResponse $
+--             updateBandwidthRateLimitResponse
+--
+--         , testDeleteBandwidthRateLimitResponse $
+--             deleteBandwidthRateLimitResponse
+--
+--         , testListLocalDisksResponse $
+--             listLocalDisksResponse
+--
+--         , testDeleteTapeResponse $
+--             deleteTapeResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testCancelArchival :: CancelArchival -> TestTree
+testCancelArchival = req
+    "CancelArchival"
+    "fixture/CancelArchival"
+
+testCreateStorediSCSIVolume :: CreateStorediSCSIVolume -> TestTree
+testCreateStorediSCSIVolume = req
+    "CreateStorediSCSIVolume"
+    "fixture/CreateStorediSCSIVolume"
+
+testCreateTapes :: CreateTapes -> TestTree
+testCreateTapes = req
+    "CreateTapes"
+    "fixture/CreateTapes"
+
+testCreateCachediSCSIVolume :: CreateCachediSCSIVolume -> TestTree
+testCreateCachediSCSIVolume = req
+    "CreateCachediSCSIVolume"
+    "fixture/CreateCachediSCSIVolume"
+
+testUpdateVTLDeviceType :: UpdateVTLDeviceType -> TestTree
+testUpdateVTLDeviceType = req
+    "UpdateVTLDeviceType"
+    "fixture/UpdateVTLDeviceType"
+
+testDescribeChapCredentials :: DescribeChapCredentials -> TestTree
+testDescribeChapCredentials = req
+    "DescribeChapCredentials"
+    "fixture/DescribeChapCredentials"
+
+testAddUploadBuffer :: AddUploadBuffer -> TestTree
+testAddUploadBuffer = req
+    "AddUploadBuffer"
+    "fixture/AddUploadBuffer"
+
+testListVolumeInitiators :: ListVolumeInitiators -> TestTree
+testListVolumeInitiators = req
+    "ListVolumeInitiators"
+    "fixture/ListVolumeInitiators"
+
+testDescribeWorkingStorage :: DescribeWorkingStorage -> TestTree
+testDescribeWorkingStorage = req
+    "DescribeWorkingStorage"
+    "fixture/DescribeWorkingStorage"
+
+testDescribeCachediSCSIVolumes :: DescribeCachediSCSIVolumes -> TestTree
+testDescribeCachediSCSIVolumes = req
+    "DescribeCachediSCSIVolumes"
+    "fixture/DescribeCachediSCSIVolumes"
+
+testUpdateGatewayInformation :: UpdateGatewayInformation -> TestTree
+testUpdateGatewayInformation = req
+    "UpdateGatewayInformation"
+    "fixture/UpdateGatewayInformation"
+
+testDescribeMaintenanceStartTime :: DescribeMaintenanceStartTime -> TestTree
+testDescribeMaintenanceStartTime = req
+    "DescribeMaintenanceStartTime"
+    "fixture/DescribeMaintenanceStartTime"
+
+testAddCache :: AddCache -> TestTree
+testAddCache = req
+    "AddCache"
+    "fixture/AddCache"
+
+testStartGateway :: StartGateway -> TestTree
+testStartGateway = req
+    "StartGateway"
+    "fixture/StartGateway"
+
+testShutdownGateway :: ShutdownGateway -> TestTree
+testShutdownGateway = req
+    "ShutdownGateway"
+    "fixture/ShutdownGateway"
+
+testUpdateGatewaySoftwareNow :: UpdateGatewaySoftwareNow -> TestTree
+testUpdateGatewaySoftwareNow = req
+    "UpdateGatewaySoftwareNow"
+    "fixture/UpdateGatewaySoftwareNow"
+
+testDeleteChapCredentials :: DeleteChapCredentials -> TestTree
+testDeleteChapCredentials = req
+    "DeleteChapCredentials"
+    "fixture/DeleteChapCredentials"
+
+testUpdateChapCredentials :: UpdateChapCredentials -> TestTree
+testUpdateChapCredentials = req
+    "UpdateChapCredentials"
+    "fixture/UpdateChapCredentials"
+
+testDescribeStorediSCSIVolumes :: DescribeStorediSCSIVolumes -> TestTree
+testDescribeStorediSCSIVolumes = req
+    "DescribeStorediSCSIVolumes"
+    "fixture/DescribeStorediSCSIVolumes"
+
+testDescribeTapes :: DescribeTapes -> TestTree
+testDescribeTapes = req
+    "DescribeTapes"
+    "fixture/DescribeTapes"
+
+testDescribeUploadBuffer :: DescribeUploadBuffer -> TestTree
+testDescribeUploadBuffer = req
+    "DescribeUploadBuffer"
+    "fixture/DescribeUploadBuffer"
+
+testCreateSnapshotFromVolumeRecoveryPoint :: CreateSnapshotFromVolumeRecoveryPoint -> TestTree
+testCreateSnapshotFromVolumeRecoveryPoint = req
+    "CreateSnapshotFromVolumeRecoveryPoint"
+    "fixture/CreateSnapshotFromVolumeRecoveryPoint"
+
+testDescribeGatewayInformation :: DescribeGatewayInformation -> TestTree
+testDescribeGatewayInformation = req
+    "DescribeGatewayInformation"
+    "fixture/DescribeGatewayInformation"
+
+testRetrieveTapeRecoveryPoint :: RetrieveTapeRecoveryPoint -> TestTree
+testRetrieveTapeRecoveryPoint = req
+    "RetrieveTapeRecoveryPoint"
+    "fixture/RetrieveTapeRecoveryPoint"
+
+testUpdateMaintenanceStartTime :: UpdateMaintenanceStartTime -> TestTree
+testUpdateMaintenanceStartTime = req
+    "UpdateMaintenanceStartTime"
+    "fixture/UpdateMaintenanceStartTime"
+
+testDeleteGateway :: DeleteGateway -> TestTree
+testDeleteGateway = req
+    "DeleteGateway"
+    "fixture/DeleteGateway"
+
+testDisableGateway :: DisableGateway -> TestTree
+testDisableGateway = req
+    "DisableGateway"
+    "fixture/DisableGateway"
+
+testDescribeSnapshotSchedule :: DescribeSnapshotSchedule -> TestTree
+testDescribeSnapshotSchedule = req
+    "DescribeSnapshotSchedule"
+    "fixture/DescribeSnapshotSchedule"
+
+testDescribeTapeArchives :: DescribeTapeArchives -> TestTree
+testDescribeTapeArchives = req
+    "DescribeTapeArchives"
+    "fixture/DescribeTapeArchives"
+
+testRetrieveTapeArchive :: RetrieveTapeArchive -> TestTree
+testRetrieveTapeArchive = req
+    "RetrieveTapeArchive"
+    "fixture/RetrieveTapeArchive"
+
+testDescribeBandwidthRateLimit :: DescribeBandwidthRateLimit -> TestTree
+testDescribeBandwidthRateLimit = req
+    "DescribeBandwidthRateLimit"
+    "fixture/DescribeBandwidthRateLimit"
+
+testDescribeVTLDevices :: DescribeVTLDevices -> TestTree
+testDescribeVTLDevices = req
+    "DescribeVTLDevices"
+    "fixture/DescribeVTLDevices"
+
+testCreateSnapshot :: CreateSnapshot -> TestTree
+testCreateSnapshot = req
+    "CreateSnapshot"
+    "fixture/CreateSnapshot"
+
+testUpdateSnapshotSchedule :: UpdateSnapshotSchedule -> TestTree
+testUpdateSnapshotSchedule = req
+    "UpdateSnapshotSchedule"
+    "fixture/UpdateSnapshotSchedule"
+
+testCancelRetrieval :: CancelRetrieval -> TestTree
+testCancelRetrieval = req
+    "CancelRetrieval"
+    "fixture/CancelRetrieval"
+
+testDeleteSnapshotSchedule :: DeleteSnapshotSchedule -> TestTree
+testDeleteSnapshotSchedule = req
+    "DeleteSnapshotSchedule"
+    "fixture/DeleteSnapshotSchedule"
+
+testDeleteTapeArchive :: DeleteTapeArchive -> TestTree
+testDeleteTapeArchive = req
+    "DeleteTapeArchive"
+    "fixture/DeleteTapeArchive"
+
+testListVolumeRecoveryPoints :: ListVolumeRecoveryPoints -> TestTree
+testListVolumeRecoveryPoints = req
+    "ListVolumeRecoveryPoints"
+    "fixture/ListVolumeRecoveryPoints"
+
+testAddWorkingStorage :: AddWorkingStorage -> TestTree
+testAddWorkingStorage = req
+    "AddWorkingStorage"
+    "fixture/AddWorkingStorage"
+
+testListGateways :: ListGateways -> TestTree
+testListGateways = req
+    "ListGateways"
+    "fixture/ListGateways"
+
+testListVolumes :: ListVolumes -> TestTree
+testListVolumes = req
+    "ListVolumes"
+    "fixture/ListVolumes"
+
+testDescribeTapeRecoveryPoints :: DescribeTapeRecoveryPoints -> TestTree
+testDescribeTapeRecoveryPoints = req
+    "DescribeTapeRecoveryPoints"
+    "fixture/DescribeTapeRecoveryPoints"
+
+testDeleteVolume :: DeleteVolume -> TestTree
+testDeleteVolume = req
+    "DeleteVolume"
+    "fixture/DeleteVolume"
+
+testResetCache :: ResetCache -> TestTree
+testResetCache = req
+    "ResetCache"
+    "fixture/ResetCache"
+
+testActivateGateway :: ActivateGateway -> TestTree
+testActivateGateway = req
+    "ActivateGateway"
+    "fixture/ActivateGateway"
+
+testDescribeCache :: DescribeCache -> TestTree
+testDescribeCache = req
+    "DescribeCache"
+    "fixture/DescribeCache"
+
+testUpdateBandwidthRateLimit :: UpdateBandwidthRateLimit -> TestTree
+testUpdateBandwidthRateLimit = req
+    "UpdateBandwidthRateLimit"
+    "fixture/UpdateBandwidthRateLimit"
+
+testDeleteBandwidthRateLimit :: DeleteBandwidthRateLimit -> TestTree
+testDeleteBandwidthRateLimit = req
+    "DeleteBandwidthRateLimit"
+    "fixture/DeleteBandwidthRateLimit"
+
+testListLocalDisks :: ListLocalDisks -> TestTree
+testListLocalDisks = req
+    "ListLocalDisks"
+    "fixture/ListLocalDisks"
+
+testDeleteTape :: DeleteTape -> TestTree
+testDeleteTape = req
+    "DeleteTape"
+    "fixture/DeleteTape"
+
+-- Responses
+
+testCancelArchivalResponse :: CancelArchivalResponse -> TestTree
+testCancelArchivalResponse = res
+    "CancelArchivalResponse"
+    "fixture/CancelArchivalResponse"
+    (Proxy :: Proxy CancelArchival)
+
+testCreateStorediSCSIVolumeResponse :: CreateStorediSCSIVolumeResponse -> TestTree
+testCreateStorediSCSIVolumeResponse = res
+    "CreateStorediSCSIVolumeResponse"
+    "fixture/CreateStorediSCSIVolumeResponse"
+    (Proxy :: Proxy CreateStorediSCSIVolume)
+
+testCreateTapesResponse :: CreateTapesResponse -> TestTree
+testCreateTapesResponse = res
+    "CreateTapesResponse"
+    "fixture/CreateTapesResponse"
+    (Proxy :: Proxy CreateTapes)
+
+testCreateCachediSCSIVolumeResponse :: CreateCachediSCSIVolumeResponse -> TestTree
+testCreateCachediSCSIVolumeResponse = res
+    "CreateCachediSCSIVolumeResponse"
+    "fixture/CreateCachediSCSIVolumeResponse"
+    (Proxy :: Proxy CreateCachediSCSIVolume)
+
+testUpdateVTLDeviceTypeResponse :: UpdateVTLDeviceTypeResponse -> TestTree
+testUpdateVTLDeviceTypeResponse = res
+    "UpdateVTLDeviceTypeResponse"
+    "fixture/UpdateVTLDeviceTypeResponse"
+    (Proxy :: Proxy UpdateVTLDeviceType)
+
+testDescribeChapCredentialsResponse :: DescribeChapCredentialsResponse -> TestTree
+testDescribeChapCredentialsResponse = res
+    "DescribeChapCredentialsResponse"
+    "fixture/DescribeChapCredentialsResponse"
+    (Proxy :: Proxy DescribeChapCredentials)
+
+testAddUploadBufferResponse :: AddUploadBufferResponse -> TestTree
+testAddUploadBufferResponse = res
+    "AddUploadBufferResponse"
+    "fixture/AddUploadBufferResponse"
+    (Proxy :: Proxy AddUploadBuffer)
+
+testListVolumeInitiatorsResponse :: ListVolumeInitiatorsResponse -> TestTree
+testListVolumeInitiatorsResponse = res
+    "ListVolumeInitiatorsResponse"
+    "fixture/ListVolumeInitiatorsResponse"
+    (Proxy :: Proxy ListVolumeInitiators)
+
+testDescribeWorkingStorageResponse :: DescribeWorkingStorageResponse -> TestTree
+testDescribeWorkingStorageResponse = res
+    "DescribeWorkingStorageResponse"
+    "fixture/DescribeWorkingStorageResponse"
+    (Proxy :: Proxy DescribeWorkingStorage)
+
+testDescribeCachediSCSIVolumesResponse :: DescribeCachediSCSIVolumesResponse -> TestTree
+testDescribeCachediSCSIVolumesResponse = res
+    "DescribeCachediSCSIVolumesResponse"
+    "fixture/DescribeCachediSCSIVolumesResponse"
+    (Proxy :: Proxy DescribeCachediSCSIVolumes)
+
+testUpdateGatewayInformationResponse :: UpdateGatewayInformationResponse -> TestTree
+testUpdateGatewayInformationResponse = res
+    "UpdateGatewayInformationResponse"
+    "fixture/UpdateGatewayInformationResponse"
+    (Proxy :: Proxy UpdateGatewayInformation)
+
+testDescribeMaintenanceStartTimeResponse :: DescribeMaintenanceStartTimeResponse -> TestTree
+testDescribeMaintenanceStartTimeResponse = res
+    "DescribeMaintenanceStartTimeResponse"
+    "fixture/DescribeMaintenanceStartTimeResponse"
+    (Proxy :: Proxy DescribeMaintenanceStartTime)
+
+testAddCacheResponse :: AddCacheResponse -> TestTree
+testAddCacheResponse = res
+    "AddCacheResponse"
+    "fixture/AddCacheResponse"
+    (Proxy :: Proxy AddCache)
+
+testStartGatewayResponse :: StartGatewayResponse -> TestTree
+testStartGatewayResponse = res
+    "StartGatewayResponse"
+    "fixture/StartGatewayResponse"
+    (Proxy :: Proxy StartGateway)
+
+testShutdownGatewayResponse :: ShutdownGatewayResponse -> TestTree
+testShutdownGatewayResponse = res
+    "ShutdownGatewayResponse"
+    "fixture/ShutdownGatewayResponse"
+    (Proxy :: Proxy ShutdownGateway)
+
+testUpdateGatewaySoftwareNowResponse :: UpdateGatewaySoftwareNowResponse -> TestTree
+testUpdateGatewaySoftwareNowResponse = res
+    "UpdateGatewaySoftwareNowResponse"
+    "fixture/UpdateGatewaySoftwareNowResponse"
+    (Proxy :: Proxy UpdateGatewaySoftwareNow)
+
+testDeleteChapCredentialsResponse :: DeleteChapCredentialsResponse -> TestTree
+testDeleteChapCredentialsResponse = res
+    "DeleteChapCredentialsResponse"
+    "fixture/DeleteChapCredentialsResponse"
+    (Proxy :: Proxy DeleteChapCredentials)
+
+testUpdateChapCredentialsResponse :: UpdateChapCredentialsResponse -> TestTree
+testUpdateChapCredentialsResponse = res
+    "UpdateChapCredentialsResponse"
+    "fixture/UpdateChapCredentialsResponse"
+    (Proxy :: Proxy UpdateChapCredentials)
+
+testDescribeStorediSCSIVolumesResponse :: DescribeStorediSCSIVolumesResponse -> TestTree
+testDescribeStorediSCSIVolumesResponse = res
+    "DescribeStorediSCSIVolumesResponse"
+    "fixture/DescribeStorediSCSIVolumesResponse"
+    (Proxy :: Proxy DescribeStorediSCSIVolumes)
+
+testDescribeTapesResponse :: DescribeTapesResponse -> TestTree
+testDescribeTapesResponse = res
+    "DescribeTapesResponse"
+    "fixture/DescribeTapesResponse"
+    (Proxy :: Proxy DescribeTapes)
+
+testDescribeUploadBufferResponse :: DescribeUploadBufferResponse -> TestTree
+testDescribeUploadBufferResponse = res
+    "DescribeUploadBufferResponse"
+    "fixture/DescribeUploadBufferResponse"
+    (Proxy :: Proxy DescribeUploadBuffer)
+
+testCreateSnapshotFromVolumeRecoveryPointResponse :: CreateSnapshotFromVolumeRecoveryPointResponse -> TestTree
+testCreateSnapshotFromVolumeRecoveryPointResponse = res
+    "CreateSnapshotFromVolumeRecoveryPointResponse"
+    "fixture/CreateSnapshotFromVolumeRecoveryPointResponse"
+    (Proxy :: Proxy CreateSnapshotFromVolumeRecoveryPoint)
+
+testDescribeGatewayInformationResponse :: DescribeGatewayInformationResponse -> TestTree
+testDescribeGatewayInformationResponse = res
+    "DescribeGatewayInformationResponse"
+    "fixture/DescribeGatewayInformationResponse"
+    (Proxy :: Proxy DescribeGatewayInformation)
+
+testRetrieveTapeRecoveryPointResponse :: RetrieveTapeRecoveryPointResponse -> TestTree
+testRetrieveTapeRecoveryPointResponse = res
+    "RetrieveTapeRecoveryPointResponse"
+    "fixture/RetrieveTapeRecoveryPointResponse"
+    (Proxy :: Proxy RetrieveTapeRecoveryPoint)
+
+testUpdateMaintenanceStartTimeResponse :: UpdateMaintenanceStartTimeResponse -> TestTree
+testUpdateMaintenanceStartTimeResponse = res
+    "UpdateMaintenanceStartTimeResponse"
+    "fixture/UpdateMaintenanceStartTimeResponse"
+    (Proxy :: Proxy UpdateMaintenanceStartTime)
+
+testDeleteGatewayResponse :: DeleteGatewayResponse -> TestTree
+testDeleteGatewayResponse = res
+    "DeleteGatewayResponse"
+    "fixture/DeleteGatewayResponse"
+    (Proxy :: Proxy DeleteGateway)
+
+testDisableGatewayResponse :: DisableGatewayResponse -> TestTree
+testDisableGatewayResponse = res
+    "DisableGatewayResponse"
+    "fixture/DisableGatewayResponse"
+    (Proxy :: Proxy DisableGateway)
+
+testDescribeSnapshotScheduleResponse :: DescribeSnapshotScheduleResponse -> TestTree
+testDescribeSnapshotScheduleResponse = res
+    "DescribeSnapshotScheduleResponse"
+    "fixture/DescribeSnapshotScheduleResponse"
+    (Proxy :: Proxy DescribeSnapshotSchedule)
+
+testDescribeTapeArchivesResponse :: DescribeTapeArchivesResponse -> TestTree
+testDescribeTapeArchivesResponse = res
+    "DescribeTapeArchivesResponse"
+    "fixture/DescribeTapeArchivesResponse"
+    (Proxy :: Proxy DescribeTapeArchives)
+
+testRetrieveTapeArchiveResponse :: RetrieveTapeArchiveResponse -> TestTree
+testRetrieveTapeArchiveResponse = res
+    "RetrieveTapeArchiveResponse"
+    "fixture/RetrieveTapeArchiveResponse"
+    (Proxy :: Proxy RetrieveTapeArchive)
+
+testDescribeBandwidthRateLimitResponse :: DescribeBandwidthRateLimitResponse -> TestTree
+testDescribeBandwidthRateLimitResponse = res
+    "DescribeBandwidthRateLimitResponse"
+    "fixture/DescribeBandwidthRateLimitResponse"
+    (Proxy :: Proxy DescribeBandwidthRateLimit)
+
+testDescribeVTLDevicesResponse :: DescribeVTLDevicesResponse -> TestTree
+testDescribeVTLDevicesResponse = res
+    "DescribeVTLDevicesResponse"
+    "fixture/DescribeVTLDevicesResponse"
+    (Proxy :: Proxy DescribeVTLDevices)
+
+testCreateSnapshotResponse :: CreateSnapshotResponse -> TestTree
+testCreateSnapshotResponse = res
+    "CreateSnapshotResponse"
+    "fixture/CreateSnapshotResponse"
+    (Proxy :: Proxy CreateSnapshot)
+
+testUpdateSnapshotScheduleResponse :: UpdateSnapshotScheduleResponse -> TestTree
+testUpdateSnapshotScheduleResponse = res
+    "UpdateSnapshotScheduleResponse"
+    "fixture/UpdateSnapshotScheduleResponse"
+    (Proxy :: Proxy UpdateSnapshotSchedule)
+
+testCancelRetrievalResponse :: CancelRetrievalResponse -> TestTree
+testCancelRetrievalResponse = res
+    "CancelRetrievalResponse"
+    "fixture/CancelRetrievalResponse"
+    (Proxy :: Proxy CancelRetrieval)
+
+testDeleteSnapshotScheduleResponse :: DeleteSnapshotScheduleResponse -> TestTree
+testDeleteSnapshotScheduleResponse = res
+    "DeleteSnapshotScheduleResponse"
+    "fixture/DeleteSnapshotScheduleResponse"
+    (Proxy :: Proxy DeleteSnapshotSchedule)
+
+testDeleteTapeArchiveResponse :: DeleteTapeArchiveResponse -> TestTree
+testDeleteTapeArchiveResponse = res
+    "DeleteTapeArchiveResponse"
+    "fixture/DeleteTapeArchiveResponse"
+    (Proxy :: Proxy DeleteTapeArchive)
+
+testListVolumeRecoveryPointsResponse :: ListVolumeRecoveryPointsResponse -> TestTree
+testListVolumeRecoveryPointsResponse = res
+    "ListVolumeRecoveryPointsResponse"
+    "fixture/ListVolumeRecoveryPointsResponse"
+    (Proxy :: Proxy ListVolumeRecoveryPoints)
+
+testAddWorkingStorageResponse :: AddWorkingStorageResponse -> TestTree
+testAddWorkingStorageResponse = res
+    "AddWorkingStorageResponse"
+    "fixture/AddWorkingStorageResponse"
+    (Proxy :: Proxy AddWorkingStorage)
+
+testListGatewaysResponse :: ListGatewaysResponse -> TestTree
+testListGatewaysResponse = res
+    "ListGatewaysResponse"
+    "fixture/ListGatewaysResponse"
+    (Proxy :: Proxy ListGateways)
+
+testListVolumesResponse :: ListVolumesResponse -> TestTree
+testListVolumesResponse = res
+    "ListVolumesResponse"
+    "fixture/ListVolumesResponse"
+    (Proxy :: Proxy ListVolumes)
+
+testDescribeTapeRecoveryPointsResponse :: DescribeTapeRecoveryPointsResponse -> TestTree
+testDescribeTapeRecoveryPointsResponse = res
+    "DescribeTapeRecoveryPointsResponse"
+    "fixture/DescribeTapeRecoveryPointsResponse"
+    (Proxy :: Proxy DescribeTapeRecoveryPoints)
+
+testDeleteVolumeResponse :: DeleteVolumeResponse -> TestTree
+testDeleteVolumeResponse = res
+    "DeleteVolumeResponse"
+    "fixture/DeleteVolumeResponse"
+    (Proxy :: Proxy DeleteVolume)
+
+testResetCacheResponse :: ResetCacheResponse -> TestTree
+testResetCacheResponse = res
+    "ResetCacheResponse"
+    "fixture/ResetCacheResponse"
+    (Proxy :: Proxy ResetCache)
+
+testActivateGatewayResponse :: ActivateGatewayResponse -> TestTree
+testActivateGatewayResponse = res
+    "ActivateGatewayResponse"
+    "fixture/ActivateGatewayResponse"
+    (Proxy :: Proxy ActivateGateway)
+
+testDescribeCacheResponse :: DescribeCacheResponse -> TestTree
+testDescribeCacheResponse = res
+    "DescribeCacheResponse"
+    "fixture/DescribeCacheResponse"
+    (Proxy :: Proxy DescribeCache)
+
+testUpdateBandwidthRateLimitResponse :: UpdateBandwidthRateLimitResponse -> TestTree
+testUpdateBandwidthRateLimitResponse = res
+    "UpdateBandwidthRateLimitResponse"
+    "fixture/UpdateBandwidthRateLimitResponse"
+    (Proxy :: Proxy UpdateBandwidthRateLimit)
+
+testDeleteBandwidthRateLimitResponse :: DeleteBandwidthRateLimitResponse -> TestTree
+testDeleteBandwidthRateLimitResponse = res
+    "DeleteBandwidthRateLimitResponse"
+    "fixture/DeleteBandwidthRateLimitResponse"
+    (Proxy :: Proxy DeleteBandwidthRateLimit)
+
+testListLocalDisksResponse :: ListLocalDisksResponse -> TestTree
+testListLocalDisksResponse = res
+    "ListLocalDisksResponse"
+    "fixture/ListLocalDisksResponse"
+    (Proxy :: Proxy ListLocalDisks)
+
+testDeleteTapeResponse :: DeleteTapeResponse -> TestTree
+testDeleteTapeResponse = res
+    "DeleteTapeResponse"
+    "fixture/DeleteTapeResponse"
+    (Proxy :: Proxy DeleteTape)
diff --git a/test/Test/AWS/StorageGateway.hs b/test/Test/AWS/StorageGateway.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/StorageGateway.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.StorageGateway
+-- 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.StorageGateway
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.StorageGateway
+import           Test.AWS.Gen.StorageGateway
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/StorageGateway/Internal.hs b/test/Test/AWS/StorageGateway/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/StorageGateway/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.StorageGateway.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.StorageGateway.Internal where
+
+import Test.AWS.Prelude
