diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,26 +1,83 @@
 # Amazon Support 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 Support is a one-on-one, fast-response support channel that is staffed
-with experienced support personnel. The service helps customers get the most
-from the products and features provided by Amazon Web Services. There are
-four levels, or tiers, of AWS Support: Basic, Developer, Business, and
-Enterprise. The Basic tier is free of charge and offers support for account
-and billing questions and service limit increases. The other tiers offer an
-unlimited number of technical support cases with pay-by-the-month pricing and
-no long-term contracts, providing developers and businesses flexibility to
-choose the level of support that meets their needs.
+AWS Support
 
+The AWS Support API reference is intended for programmers who need
+detailed information about the AWS Support operations and data types.
+This service enables you to manage your AWS Support cases
+programmatically. It uses HTTP methods that return results in JSON
+format.
+
+The AWS Support service also exposes a set of
+<https://aws.amazon.com/premiumsupport/trustedadvisor/ Trusted Advisor>
+features. You can retrieve a list of checks and their descriptions, get
+check results, specify checks to refresh, and get the refresh status of
+checks.
+
+The following list describes the AWS Support case management operations:
+
+-   __Service names, issue categories, and available severity levels.__
+    The DescribeServices and DescribeSeverityLevels operations return
+    AWS service names, service codes, service categories, and problem
+    severity levels. You use these values when you call the CreateCase
+    operation.
+-   __Case creation, case details, and case resolution.__ The
+    CreateCase, DescribeCases, DescribeAttachment, and ResolveCase
+    operations create AWS Support cases, retrieve information about
+    cases, and resolve cases.
+-   __Case communication.__ The DescribeCommunications,
+    AddCommunicationToCase, and AddAttachmentsToSet operations retrieve
+    and add communications and attachments to AWS Support cases.
+
+The following list describes the operations available from the AWS
+Support service for Trusted Advisor:
+
+-   DescribeTrustedAdvisorChecks returns the list of checks that run
+    against your AWS resources.
+-   Using the @CheckId@ for a specific check returned by
+    DescribeTrustedAdvisorChecks, you can call
+    DescribeTrustedAdvisorCheckResult to obtain the results for the
+    check you specified.
+-   DescribeTrustedAdvisorCheckSummaries returns summarized results for
+    one or more Trusted Advisor checks.
+-   RefreshTrustedAdvisorCheck requests that Trusted Advisor rerun a
+    specified check.
+-   DescribeTrustedAdvisorCheckRefreshStatuses reports the refresh
+    status of one or more checks.
+
+For authentication of requests, AWS Support uses
+<http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+
+See
+<http://docs.aws.amazon.com/awssupport/latest/user/Welcome.html About the AWS Support API>
+in the /AWS Support User Guide/ for information about how to use this
+service to create and manage your support cases, and how to call Trusted
+Advisor for results of checks on your resources.
+
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-support)
 and the [AWS API Reference](http://docs.aws.amazon.com/awssupport/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-support.cabal b/amazonka-support.cabal
--- a/amazonka-support.cabal
+++ b/amazonka-support.cabal
@@ -1,33 +1,85 @@
 name:                  amazonka-support
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Support 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 Support is a one-on-one, fast-response support channel that is staffed
-    with experienced support personnel. The service helps customers get the most
-    from the products and features provided by Amazon Web Services. There are
-    four levels, or tiers, of AWS Support: Basic, Developer, Business, and
-    Enterprise. The Basic tier is free of charge and offers support for account
-    and billing questions and service limit increases. The other tiers offer an
-    unlimited number of technical support cases with pay-by-the-month pricing and
-    no long-term contracts, providing developers and businesses flexibility to
-    choose the level of support that meets their needs.
+    AWS Support
 
+    The AWS Support API reference is intended for programmers who need
+    detailed information about the AWS Support operations and data types.
+    This service enables you to manage your AWS Support cases
+    programmatically. It uses HTTP methods that return results in JSON
+    format.
+
+    The AWS Support service also exposes a set of
+    <https://aws.amazon.com/premiumsupport/trustedadvisor/ Trusted Advisor>
+    features. You can retrieve a list of checks and their descriptions, get
+    check results, specify checks to refresh, and get the refresh status of
+    checks.
+
+    The following list describes the AWS Support case management operations:
+
+    -   __Service names, issue categories, and available severity levels.__
+        The DescribeServices and DescribeSeverityLevels operations return
+        AWS service names, service codes, service categories, and problem
+        severity levels. You use these values when you call the CreateCase
+        operation.
+    -   __Case creation, case details, and case resolution.__ The
+        CreateCase, DescribeCases, DescribeAttachment, and ResolveCase
+        operations create AWS Support cases, retrieve information about
+        cases, and resolve cases.
+    -   __Case communication.__ The DescribeCommunications,
+        AddCommunicationToCase, and AddAttachmentsToSet operations retrieve
+        and add communications and attachments to AWS Support cases.
+
+    The following list describes the operations available from the AWS
+    Support service for Trusted Advisor:
+
+    -   DescribeTrustedAdvisorChecks returns the list of checks that run
+        against your AWS resources.
+    -   Using the @CheckId@ for a specific check returned by
+        DescribeTrustedAdvisorChecks, you can call
+        DescribeTrustedAdvisorCheckResult to obtain the results for the
+        check you specified.
+    -   DescribeTrustedAdvisorCheckSummaries returns summarized results for
+        one or more Trusted Advisor checks.
+    -   RefreshTrustedAdvisorCheck requests that Trusted Advisor rerun a
+        specified check.
+    -   DescribeTrustedAdvisorCheckRefreshStatuses reports the refresh
+        status of one or more checks.
+
+    For authentication of requests, AWS Support uses
+    <http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+
+    See
+    <http://docs.aws.amazon.com/awssupport/latest/user/Welcome.html About the AWS Support API>
+    in the /AWS Support User Guide/ for information about how to use this
+    service to create and manage your support cases, and how to call Trusted
+    Advisor for results of checks on your resources.
     .
-    /See:/ <http://docs.aws.amazon.com/awssupport/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.Support" and the <http://docs.aws.amazon.com/awssupport/latest/APIReference/Welcome.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -56,9 +108,40 @@
         , Network.AWS.Support.RefreshTrustedAdvisorCheck
         , Network.AWS.Support.ResolveCase
         , Network.AWS.Support.Types
+        , Network.AWS.Support.Waiters
 
     other-modules:
+          Network.AWS.Support.Types.Product
+        , Network.AWS.Support.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-support-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.Support
+        , Test.AWS.Gen.Support
+        , Test.AWS.Support.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-support == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/Support.hs b/gen/Network/AWS/Support.hs
--- a/gen/Network/AWS/Support.hs
+++ b/gen/Network/AWS/Support.hs
@@ -1,54 +1,326 @@
+{-# 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.Support
--- 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 Support is a one-on-one, fast-response support channel that is staffed
--- with experienced support personnel. The service helps customers get the most
--- from the products and features provided by Amazon Web Services. There are
--- four levels, or tiers, of AWS Support: Basic, Developer, Business, and
--- Enterprise. The Basic tier is free of charge and offers support for account
--- and billing questions and service limit increases. The other tiers offer an
--- unlimited number of technical support cases with pay-by-the-month pricing and
--- no long-term contracts, providing developers and businesses flexibility to
--- choose the level of support that meets their needs.
+-- AWS Support
+--
+-- The AWS Support API reference is intended for programmers who need
+-- detailed information about the AWS Support operations and data types.
+-- This service enables you to manage your AWS Support cases
+-- programmatically. It uses HTTP methods that return results in JSON
+-- format.
+--
+-- The AWS Support service also exposes a set of
+-- <https://aws.amazon.com/premiumsupport/trustedadvisor/ Trusted Advisor>
+-- features. You can retrieve a list of checks and their descriptions, get
+-- check results, specify checks to refresh, and get the refresh status of
+-- checks.
+--
+-- The following list describes the AWS Support case management operations:
+--
+-- -   __Service names, issue categories, and available severity levels.__
+--     The DescribeServices and DescribeSeverityLevels operations return
+--     AWS service names, service codes, service categories, and problem
+--     severity levels. You use these values when you call the CreateCase
+--     operation.
+-- -   __Case creation, case details, and case resolution.__ The
+--     CreateCase, DescribeCases, DescribeAttachment, and ResolveCase
+--     operations create AWS Support cases, retrieve information about
+--     cases, and resolve cases.
+-- -   __Case communication.__ The DescribeCommunications,
+--     AddCommunicationToCase, and AddAttachmentsToSet operations retrieve
+--     and add communications and attachments to AWS Support cases.
+--
+-- The following list describes the operations available from the AWS
+-- Support service for Trusted Advisor:
+--
+-- -   DescribeTrustedAdvisorChecks returns the list of checks that run
+--     against your AWS resources.
+-- -   Using the 'CheckId' for a specific check returned by
+--     DescribeTrustedAdvisorChecks, you can call
+--     DescribeTrustedAdvisorCheckResult to obtain the results for the
+--     check you specified.
+-- -   DescribeTrustedAdvisorCheckSummaries returns summarized results for
+--     one or more Trusted Advisor checks.
+-- -   RefreshTrustedAdvisorCheck requests that Trusted Advisor rerun a
+--     specified check.
+-- -   DescribeTrustedAdvisorCheckRefreshStatuses reports the refresh
+--     status of one or more checks.
+--
+-- For authentication of requests, AWS Support uses
+-- <http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html Signature Version 4 Signing Process>.
+--
+-- See
+-- <http://docs.aws.amazon.com/awssupport/latest/user/Welcome.html About the AWS Support API>
+-- in the /AWS Support User Guide/ for information about how to use this
+-- service to create and manage your support cases, and how to call Trusted
+-- Advisor for results of checks on your resources.
+--
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/Welcome.html AWS API Reference>
 module Network.AWS.Support
-    ( module Network.AWS.Support.AddAttachmentsToSet
-    , module Network.AWS.Support.AddCommunicationToCase
-    , module Network.AWS.Support.CreateCase
-    , module Network.AWS.Support.DescribeAttachment
+    (
+    -- * Service
+      Support
+
+    -- * Errors
+    -- $errors
+
+    -- ** AttachmentSetExpired
+    , _AttachmentSetExpired
+
+    -- ** AttachmentLimitExceeded
+    , _AttachmentLimitExceeded
+
+    -- ** DescribeAttachmentLimitExceeded
+    , _DescribeAttachmentLimitExceeded
+
+    -- ** CaseIdNotFound
+    , _CaseIdNotFound
+
+    -- ** AttachmentSetIdNotFound
+    , _AttachmentSetIdNotFound
+
+    -- ** AttachmentSetSizeLimitExceeded
+    , _AttachmentSetSizeLimitExceeded
+
+    -- ** AttachmentIdNotFound
+    , _AttachmentIdNotFound
+
+    -- ** InternalServerError
+    , _InternalServerError
+
+    -- ** CaseCreationLimitExceeded
+    , _CaseCreationLimitExceeded
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** RefreshTrustedAdvisorCheck
+    , module Network.AWS.Support.RefreshTrustedAdvisorCheck
+
+    -- ** DescribeCases (Paginated)
     , module Network.AWS.Support.DescribeCases
-    , module Network.AWS.Support.DescribeCommunications
-    , module Network.AWS.Support.DescribeServices
-    , module Network.AWS.Support.DescribeSeverityLevels
+
+    -- ** DescribeTrustedAdvisorCheckRefreshStatuses
     , module Network.AWS.Support.DescribeTrustedAdvisorCheckRefreshStatuses
-    , module Network.AWS.Support.DescribeTrustedAdvisorCheckResult
+
+    -- ** CreateCase
+    , module Network.AWS.Support.CreateCase
+
+    -- ** DescribeTrustedAdvisorCheckSummaries
     , module Network.AWS.Support.DescribeTrustedAdvisorCheckSummaries
-    , module Network.AWS.Support.DescribeTrustedAdvisorChecks
-    , module Network.AWS.Support.RefreshTrustedAdvisorCheck
+
+    -- ** ResolveCase
     , module Network.AWS.Support.ResolveCase
-    , module Network.AWS.Support.Types
+
+    -- ** DescribeSeverityLevels
+    , module Network.AWS.Support.DescribeSeverityLevels
+
+    -- ** DescribeTrustedAdvisorChecks
+    , module Network.AWS.Support.DescribeTrustedAdvisorChecks
+
+    -- ** DescribeAttachment
+    , module Network.AWS.Support.DescribeAttachment
+
+    -- ** AddAttachmentsToSet
+    , module Network.AWS.Support.AddAttachmentsToSet
+
+    -- ** DescribeTrustedAdvisorCheckResult
+    , module Network.AWS.Support.DescribeTrustedAdvisorCheckResult
+
+    -- ** DescribeServices
+    , module Network.AWS.Support.DescribeServices
+
+    -- ** DescribeCommunications (Paginated)
+    , module Network.AWS.Support.DescribeCommunications
+
+    -- ** AddCommunicationToCase
+    , module Network.AWS.Support.AddCommunicationToCase
+
+    -- * Types
+
+    -- ** Attachment
+    , Attachment
+    , attachment
+    , aData
+    , aFileName
+
+    -- ** AttachmentDetails
+    , AttachmentDetails
+    , attachmentDetails
+    , adAttachmentId
+    , adFileName
+
+    -- ** CaseDetails
+    , CaseDetails
+    , caseDetails
+    , cdSubject
+    , cdStatus
+    , cdRecentCommunications
+    , cdSeverityCode
+    , cdCaseId
+    , cdCcEmailAddresses
+    , cdDisplayId
+    , cdSubmittedBy
+    , cdLanguage
+    , cdCategoryCode
+    , cdTimeCreated
+    , cdServiceCode
+
+    -- ** Category
+    , Category
+    , category
+    , cName
+    , cCode
+
+    -- ** Communication
+    , Communication
+    , communication
+    , cBody
+    , cCaseId
+    , cSubmittedBy
+    , cTimeCreated
+    , cAttachmentSet
+
+    -- ** RecentCaseCommunications
+    , RecentCaseCommunications
+    , recentCaseCommunications
+    , rccNextToken
+    , rccCommunications
+
+    -- ** SeverityLevel
+    , SeverityLevel
+    , severityLevel
+    , slName
+    , slCode
+
+    -- ** SupportService
+    , SupportService
+    , supportService
+    , ssCategories
+    , ssName
+    , ssCode
+
+    -- ** TrustedAdvisorCategorySpecificSummary
+    , TrustedAdvisorCategorySpecificSummary
+    , trustedAdvisorCategorySpecificSummary
+    , tacssCostOptimizing
+
+    -- ** TrustedAdvisorCheckDescription
+    , TrustedAdvisorCheckDescription
+    , trustedAdvisorCheckDescription
+    , tacdId
+    , tacdName
+    , tacdDescription
+    , tacdCategory
+    , tacdMetadata
+
+    -- ** TrustedAdvisorCheckRefreshStatus
+    , TrustedAdvisorCheckRefreshStatus
+    , trustedAdvisorCheckRefreshStatus
+    , tacrsCheckId
+    , tacrsStatus
+    , tacrsMillisUntilNextRefreshable
+
+    -- ** TrustedAdvisorCheckResult
+    , TrustedAdvisorCheckResult
+    , trustedAdvisorCheckResult
+    , tacrCheckId
+    , tacrTimestamp
+    , tacrStatus
+    , tacrResourcesSummary
+    , tacrCategorySpecificSummary
+    , tacrFlaggedResources
+
+    -- ** TrustedAdvisorCheckSummary
+    , TrustedAdvisorCheckSummary
+    , trustedAdvisorCheckSummary
+    , tacsHasFlaggedResources
+    , tacsCheckId
+    , tacsTimestamp
+    , tacsStatus
+    , tacsResourcesSummary
+    , tacsCategorySpecificSummary
+
+    -- ** TrustedAdvisorCostOptimizingSummary
+    , TrustedAdvisorCostOptimizingSummary
+    , trustedAdvisorCostOptimizingSummary
+    , tacosEstimatedMonthlySavings
+    , tacosEstimatedPercentMonthlySavings
+
+    -- ** TrustedAdvisorResourceDetail
+    , TrustedAdvisorResourceDetail
+    , trustedAdvisorResourceDetail
+    , tardIsSuppressed
+    , tardStatus
+    , tardRegion
+    , tardResourceId
+    , tardMetadata
+
+    -- ** TrustedAdvisorResourcesSummary
+    , TrustedAdvisorResourcesSummary
+    , trustedAdvisorResourcesSummary
+    , tarsResourcesProcessed
+    , tarsResourcesFlagged
+    , tarsResourcesIgnored
+    , tarsResourcesSuppressed
     ) where
 
-import Network.AWS.Support.AddAttachmentsToSet
-import Network.AWS.Support.AddCommunicationToCase
-import Network.AWS.Support.CreateCase
-import Network.AWS.Support.DescribeAttachment
-import Network.AWS.Support.DescribeCases
-import Network.AWS.Support.DescribeCommunications
-import Network.AWS.Support.DescribeServices
-import Network.AWS.Support.DescribeSeverityLevels
-import Network.AWS.Support.DescribeTrustedAdvisorCheckRefreshStatuses
-import Network.AWS.Support.DescribeTrustedAdvisorCheckResult
-import Network.AWS.Support.DescribeTrustedAdvisorCheckSummaries
-import Network.AWS.Support.DescribeTrustedAdvisorChecks
-import Network.AWS.Support.RefreshTrustedAdvisorCheck
-import Network.AWS.Support.ResolveCase
-import Network.AWS.Support.Types
+import           Network.AWS.Support.AddAttachmentsToSet
+import           Network.AWS.Support.AddCommunicationToCase
+import           Network.AWS.Support.CreateCase
+import           Network.AWS.Support.DescribeAttachment
+import           Network.AWS.Support.DescribeCases
+import           Network.AWS.Support.DescribeCommunications
+import           Network.AWS.Support.DescribeServices
+import           Network.AWS.Support.DescribeSeverityLevels
+import           Network.AWS.Support.DescribeTrustedAdvisorCheckRefreshStatuses
+import           Network.AWS.Support.DescribeTrustedAdvisorCheckResult
+import           Network.AWS.Support.DescribeTrustedAdvisorChecks
+import           Network.AWS.Support.DescribeTrustedAdvisorCheckSummaries
+import           Network.AWS.Support.RefreshTrustedAdvisorCheck
+import           Network.AWS.Support.ResolveCase
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.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 'Support'.
+-}
+
+{- $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/Support/AddAttachmentsToSet.hs b/gen/Network/AWS/Support/AddAttachmentsToSet.hs
--- a/gen/Network/AWS/Support/AddAttachmentsToSet.hs
+++ b/gen/Network/AWS/Support/AddAttachmentsToSet.hs
@@ -1,149 +1,167 @@
-{-# 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.Support.AddAttachmentsToSet
--- 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.
-
--- | Adds one or more attachments to an attachment set. If an 'AttachmentSetId' is
--- not specified, a new attachment set is created, and the ID of the set is
--- returned in the response. If an 'AttachmentSetId' is specified, the attachments
--- are added to the specified set, if it exists.
+-- Adds one or more attachments to an attachment set. If an
+-- 'AttachmentSetId' is not specified, a new attachment set is created, and
+-- the ID of the set is returned in the response. If an 'AttachmentSetId'
+-- is specified, the attachments are added to the specified set, if it
+-- exists.
 --
--- An attachment set is a temporary container for attachments that are to be
--- added to a case or case communication. The set is available for one hour
--- after it is created; the 'ExpiryTime' returned in the response indicates when
--- the set expires. The maximum number of attachments in a set is 3, and the
--- maximum size of any attachment in the set is 5 MB.
+-- An attachment set is a temporary container for attachments that are to
+-- be added to a case or case communication. The set is available for one
+-- hour after it is created; the 'ExpiryTime' returned in the response
+-- indicates when the set expires. The maximum number of attachments in a
+-- set is 3, and the maximum size of any attachment in the set is 5 MB.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddAttachmentsToSet.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddAttachmentsToSet.html AWS API Reference> for AddAttachmentsToSet.
 module Network.AWS.Support.AddAttachmentsToSet
     (
-    -- * Request
-      AddAttachmentsToSet
-    -- ** Request constructor
-    , addAttachmentsToSet
-    -- ** Request lenses
+    -- * Creating a Request
+      addAttachmentsToSet
+    , AddAttachmentsToSet
+    -- * Request Lenses
     , aatsAttachmentSetId
     , aatsAttachments
 
-    -- * Response
-    , AddAttachmentsToSetResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addAttachmentsToSetResponse
-    -- ** Response lenses
-    , aatsrAttachmentSetId
-    , aatsrExpiryTime
+    , AddAttachmentsToSetResponse
+    -- * Response Lenses
+    , aatsrsExpiryTime
+    , aatsrsAttachmentSetId
+    , aatsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data AddAttachmentsToSet = AddAttachmentsToSet
-    { _aatsAttachmentSetId :: Maybe Text
-    , _aatsAttachments     :: List "attachments" Attachment
-    } deriving (Eq, Read, Show)
+-- | /See:/ 'addAttachmentsToSet' smart constructor.
+data AddAttachmentsToSet = AddAttachmentsToSet'
+    { _aatsAttachmentSetId :: !(Maybe Text)
+    , _aatsAttachments     :: ![Attachment]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'AddAttachmentsToSet' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'AddAttachmentsToSet' with the minimum fields required to make a request.
 --
--- * 'aatsAttachmentSetId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'aatsAttachments' @::@ ['Attachment']
+-- * 'aatsAttachmentSetId'
 --
-addAttachmentsToSet :: AddAttachmentsToSet
-addAttachmentsToSet = AddAttachmentsToSet
+-- * 'aatsAttachments'
+addAttachmentsToSet
+    :: AddAttachmentsToSet
+addAttachmentsToSet =
+    AddAttachmentsToSet'
     { _aatsAttachmentSetId = Nothing
-    , _aatsAttachments     = mempty
+    , _aatsAttachments = mempty
     }
 
--- | The ID of the attachment set. If an 'AttachmentSetId' is not specified, a new
--- attachment set is created, and the ID of the set is returned in the response.
--- If an 'AttachmentSetId' is specified, the attachments are added to the
--- specified set, if it exists.
+-- | The ID of the attachment set. If an 'AttachmentSetId' is not specified,
+-- a new attachment set is created, and the ID of the set is returned in
+-- the response. If an 'AttachmentSetId' is specified, the attachments are
+-- added to the specified set, if it exists.
 aatsAttachmentSetId :: Lens' AddAttachmentsToSet (Maybe Text)
-aatsAttachmentSetId =
-    lens _aatsAttachmentSetId (\s a -> s { _aatsAttachmentSetId = a })
+aatsAttachmentSetId = lens _aatsAttachmentSetId (\ s a -> s{_aatsAttachmentSetId = a});
 
--- | One or more attachments to add to the set. The limit is 3 attachments per
--- set, and the size limit is 5 MB per attachment.
+-- | One or more attachments to add to the set. The limit is 3 attachments
+-- per set, and the size limit is 5 MB per attachment.
 aatsAttachments :: Lens' AddAttachmentsToSet [Attachment]
-aatsAttachments = lens _aatsAttachments (\s a -> s { _aatsAttachments = a }) . _List
-
-data AddAttachmentsToSetResponse = AddAttachmentsToSetResponse
-    { _aatsrAttachmentSetId :: Maybe Text
-    , _aatsrExpiryTime      :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+aatsAttachments = lens _aatsAttachments (\ s a -> s{_aatsAttachments = a}) . _Coerce;
 
--- | 'AddAttachmentsToSetResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aatsrAttachmentSetId' @::@ 'Maybe' 'Text'
---
--- * 'aatsrExpiryTime' @::@ 'Maybe' 'Text'
---
-addAttachmentsToSetResponse :: AddAttachmentsToSetResponse
-addAttachmentsToSetResponse = AddAttachmentsToSetResponse
-    { _aatsrAttachmentSetId = Nothing
-    , _aatsrExpiryTime      = Nothing
-    }
+instance AWSRequest AddAttachmentsToSet where
+        type Sv AddAttachmentsToSet = Support
+        type Rs AddAttachmentsToSet =
+             AddAttachmentsToSetResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddAttachmentsToSetResponse' <$>
+                   (x .?> "expiryTime") <*> (x .?> "attachmentSetId")
+                     <*> (pure (fromEnum s)))
 
--- | The ID of the attachment set. If an 'AttachmentSetId' was not specified, a new
--- attachment set is created, and the ID of the set is returned in the response.
--- If an 'AttachmentSetId' was specified, the attachments are added to the
--- specified set, if it exists.
-aatsrAttachmentSetId :: Lens' AddAttachmentsToSetResponse (Maybe Text)
-aatsrAttachmentSetId =
-    lens _aatsrAttachmentSetId (\s a -> s { _aatsrAttachmentSetId = a })
+instance ToHeaders AddAttachmentsToSet where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.AddAttachmentsToSet" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The time and date when the attachment set expires.
-aatsrExpiryTime :: Lens' AddAttachmentsToSetResponse (Maybe Text)
-aatsrExpiryTime = lens _aatsrExpiryTime (\s a -> s { _aatsrExpiryTime = a })
+instance ToJSON AddAttachmentsToSet where
+        toJSON AddAttachmentsToSet'{..}
+          = object
+              ["attachmentSetId" .= _aatsAttachmentSetId,
+               "attachments" .= _aatsAttachments]
 
 instance ToPath AddAttachmentsToSet where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddAttachmentsToSet where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders AddAttachmentsToSet
+-- | The ID and expiry time of the attachment set returned by the
+-- AddAttachmentsToSet operation.
+--
+-- /See:/ 'addAttachmentsToSetResponse' smart constructor.
+data AddAttachmentsToSetResponse = AddAttachmentsToSetResponse'
+    { _aatsrsExpiryTime      :: !(Maybe Text)
+    , _aatsrsAttachmentSetId :: !(Maybe Text)
+    , _aatsrsStatus          :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON AddAttachmentsToSet where
-    toJSON AddAttachmentsToSet{..} = object
-        [ "attachmentSetId" .= _aatsAttachmentSetId
-        , "attachments"     .= _aatsAttachments
-        ]
+-- | Creates a value of 'AddAttachmentsToSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aatsrsExpiryTime'
+--
+-- * 'aatsrsAttachmentSetId'
+--
+-- * 'aatsrsStatus'
+addAttachmentsToSetResponse
+    :: Int -- ^ 'aatsrsStatus'
+    -> AddAttachmentsToSetResponse
+addAttachmentsToSetResponse pStatus_ =
+    AddAttachmentsToSetResponse'
+    { _aatsrsExpiryTime = Nothing
+    , _aatsrsAttachmentSetId = Nothing
+    , _aatsrsStatus = pStatus_
+    }
 
-instance AWSRequest AddAttachmentsToSet where
-    type Sv AddAttachmentsToSet = Support
-    type Rs AddAttachmentsToSet = AddAttachmentsToSetResponse
+-- | The time and date when the attachment set expires.
+aatsrsExpiryTime :: Lens' AddAttachmentsToSetResponse (Maybe Text)
+aatsrsExpiryTime = lens _aatsrsExpiryTime (\ s a -> s{_aatsrsExpiryTime = a});
 
-    request  = post "AddAttachmentsToSet"
-    response = jsonResponse
+-- | The ID of the attachment set. If an 'AttachmentSetId' was not specified,
+-- a new attachment set is created, and the ID of the set is returned in
+-- the response. If an 'AttachmentSetId' was specified, the attachments are
+-- added to the specified set, if it exists.
+aatsrsAttachmentSetId :: Lens' AddAttachmentsToSetResponse (Maybe Text)
+aatsrsAttachmentSetId = lens _aatsrsAttachmentSetId (\ s a -> s{_aatsrsAttachmentSetId = a});
 
-instance FromJSON AddAttachmentsToSetResponse where
-    parseJSON = withObject "AddAttachmentsToSetResponse" $ \o -> AddAttachmentsToSetResponse
-        <$> o .:? "attachmentSetId"
-        <*> o .:? "expiryTime"
+-- | The response status code.
+aatsrsStatus :: Lens' AddAttachmentsToSetResponse Int
+aatsrsStatus = lens _aatsrsStatus (\ s a -> s{_aatsrsStatus = a});
diff --git a/gen/Network/AWS/Support/AddCommunicationToCase.hs b/gen/Network/AWS/Support/AddCommunicationToCase.hs
--- a/gen/Network/AWS/Support/AddCommunicationToCase.hs
+++ b/gen/Network/AWS/Support/AddCommunicationToCase.hs
@@ -1,155 +1,175 @@
-{-# 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.Support.AddCommunicationToCase
--- 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.
-
--- | Adds additional customer communication to an AWS Support case. You use the 'CaseId' value to identify the case to add communication to. You can list a set of
--- email addresses to copy on the communication using the 'CcEmailAddresses'
--- value. The 'CommunicationBody' value contains the text of the communication.
+-- Adds additional customer communication to an AWS Support case. You use
+-- the 'CaseId' value to identify the case to add communication to. You can
+-- list a set of email addresses to copy on the communication using the
+-- 'CcEmailAddresses' value. The 'CommunicationBody' value contains the
+-- text of the communication.
 --
 -- The response indicates the success or failure of the request.
 --
--- This operation implements a subset of the features of the AWS Support Center.
+-- This operation implements a subset of the features of the AWS Support
+-- Center.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddCommunicationToCase.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_AddCommunicationToCase.html AWS API Reference> for AddCommunicationToCase.
 module Network.AWS.Support.AddCommunicationToCase
     (
-    -- * Request
-      AddCommunicationToCase
-    -- ** Request constructor
-    , addCommunicationToCase
-    -- ** Request lenses
-    , actcAttachmentSetId
+    -- * Creating a Request
+      addCommunicationToCase
+    , AddCommunicationToCase
+    -- * Request Lenses
     , actcCaseId
     , actcCcEmailAddresses
+    , actcAttachmentSetId
     , actcCommunicationBody
 
-    -- * Response
-    , AddCommunicationToCaseResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , addCommunicationToCaseResponse
-    -- ** Response lenses
-    , actcrResult
+    , AddCommunicationToCaseResponse
+    -- * Response Lenses
+    , actcrsResult
+    , actcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
-
-data AddCommunicationToCase = AddCommunicationToCase
-    { _actcAttachmentSetId   :: Maybe Text
-    , _actcCaseId            :: Maybe Text
-    , _actcCcEmailAddresses  :: List "ccEmailAddresses" Text
-    , _actcCommunicationBody :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
--- | 'AddCommunicationToCase' constructor.
+-- | To be written.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'addCommunicationToCase' smart constructor.
+data AddCommunicationToCase = AddCommunicationToCase'
+    { _actcCaseId            :: !(Maybe Text)
+    , _actcCcEmailAddresses  :: !(Maybe [Text])
+    , _actcAttachmentSetId   :: !(Maybe Text)
+    , _actcCommunicationBody :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddCommunicationToCase' with the minimum fields required to make a request.
 --
--- * 'actcAttachmentSetId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'actcCaseId' @::@ 'Maybe' 'Text'
+-- * 'actcCaseId'
 --
--- * 'actcCcEmailAddresses' @::@ ['Text']
+-- * 'actcCcEmailAddresses'
 --
--- * 'actcCommunicationBody' @::@ 'Text'
+-- * 'actcAttachmentSetId'
 --
-addCommunicationToCase :: Text -- ^ 'actcCommunicationBody'
-                       -> AddCommunicationToCase
-addCommunicationToCase p1 = AddCommunicationToCase
-    { _actcCommunicationBody = p1
-    , _actcCaseId            = Nothing
-    , _actcCcEmailAddresses  = mempty
-    , _actcAttachmentSetId   = Nothing
+-- * 'actcCommunicationBody'
+addCommunicationToCase
+    :: Text -- ^ 'actcCommunicationBody'
+    -> AddCommunicationToCase
+addCommunicationToCase pCommunicationBody_ =
+    AddCommunicationToCase'
+    { _actcCaseId = Nothing
+    , _actcCcEmailAddresses = Nothing
+    , _actcAttachmentSetId = Nothing
+    , _actcCommunicationBody = pCommunicationBody_
     }
 
--- | The ID of a set of one or more attachments for the communication to add to
--- the case. Create the set by calling 'AddAttachmentsToSet'
-actcAttachmentSetId :: Lens' AddCommunicationToCase (Maybe Text)
-actcAttachmentSetId =
-    lens _actcAttachmentSetId (\s a -> s { _actcAttachmentSetId = a })
-
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
 actcCaseId :: Lens' AddCommunicationToCase (Maybe Text)
-actcCaseId = lens _actcCaseId (\s a -> s { _actcCaseId = a })
+actcCaseId = lens _actcCaseId (\ s a -> s{_actcCaseId = a});
 
--- | The email addresses in the CC line of an email to be added to the support
--- case.
+-- | The email addresses in the CC line of an email to be added to the
+-- support case.
 actcCcEmailAddresses :: Lens' AddCommunicationToCase [Text]
-actcCcEmailAddresses =
-    lens _actcCcEmailAddresses (\s a -> s { _actcCcEmailAddresses = a })
-        . _List
+actcCcEmailAddresses = lens _actcCcEmailAddresses (\ s a -> s{_actcCcEmailAddresses = a}) . _Default . _Coerce;
 
+-- | The ID of a set of one or more attachments for the communication to add
+-- to the case. Create the set by calling AddAttachmentsToSet
+actcAttachmentSetId :: Lens' AddCommunicationToCase (Maybe Text)
+actcAttachmentSetId = lens _actcAttachmentSetId (\ s a -> s{_actcAttachmentSetId = a});
+
 -- | The body of an email communication to add to the support case.
 actcCommunicationBody :: Lens' AddCommunicationToCase Text
-actcCommunicationBody =
-    lens _actcCommunicationBody (\s a -> s { _actcCommunicationBody = a })
+actcCommunicationBody = lens _actcCommunicationBody (\ s a -> s{_actcCommunicationBody = a});
 
-newtype AddCommunicationToCaseResponse = AddCommunicationToCaseResponse
-    { _actcrResult :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+instance AWSRequest AddCommunicationToCase where
+        type Sv AddCommunicationToCase = Support
+        type Rs AddCommunicationToCase =
+             AddCommunicationToCaseResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 AddCommunicationToCaseResponse' <$>
+                   (x .?> "result") <*> (pure (fromEnum s)))
 
--- | 'AddCommunicationToCaseResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'actcrResult' @::@ 'Maybe' 'Bool'
---
-addCommunicationToCaseResponse :: AddCommunicationToCaseResponse
-addCommunicationToCaseResponse = AddCommunicationToCaseResponse
-    { _actcrResult = Nothing
-    }
+instance ToHeaders AddCommunicationToCase where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.AddCommunicationToCase" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | True if 'AddCommunicationToCase' succeeds. Otherwise, returns an error.
-actcrResult :: Lens' AddCommunicationToCaseResponse (Maybe Bool)
-actcrResult = lens _actcrResult (\s a -> s { _actcrResult = a })
+instance ToJSON AddCommunicationToCase where
+        toJSON AddCommunicationToCase'{..}
+          = object
+              ["caseId" .= _actcCaseId,
+               "ccEmailAddresses" .= _actcCcEmailAddresses,
+               "attachmentSetId" .= _actcAttachmentSetId,
+               "communicationBody" .= _actcCommunicationBody]
 
 instance ToPath AddCommunicationToCase where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery AddCommunicationToCase where
-    toQuery = const mempty
-
-instance ToHeaders AddCommunicationToCase
+        toQuery = const mempty
 
-instance ToJSON AddCommunicationToCase where
-    toJSON AddCommunicationToCase{..} = object
-        [ "caseId"            .= _actcCaseId
-        , "communicationBody" .= _actcCommunicationBody
-        , "ccEmailAddresses"  .= _actcCcEmailAddresses
-        , "attachmentSetId"   .= _actcAttachmentSetId
-        ]
+-- | The result of the AddCommunicationToCase operation.
+--
+-- /See:/ 'addCommunicationToCaseResponse' smart constructor.
+data AddCommunicationToCaseResponse = AddCommunicationToCaseResponse'
+    { _actcrsResult :: !(Maybe Bool)
+    , _actcrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest AddCommunicationToCase where
-    type Sv AddCommunicationToCase = Support
-    type Rs AddCommunicationToCase = AddCommunicationToCaseResponse
+-- | Creates a value of 'AddCommunicationToCaseResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'actcrsResult'
+--
+-- * 'actcrsStatus'
+addCommunicationToCaseResponse
+    :: Int -- ^ 'actcrsStatus'
+    -> AddCommunicationToCaseResponse
+addCommunicationToCaseResponse pStatus_ =
+    AddCommunicationToCaseResponse'
+    { _actcrsResult = Nothing
+    , _actcrsStatus = pStatus_
+    }
 
-    request  = post "AddCommunicationToCase"
-    response = jsonResponse
+-- | True if AddCommunicationToCase succeeds. Otherwise, returns an error.
+actcrsResult :: Lens' AddCommunicationToCaseResponse (Maybe Bool)
+actcrsResult = lens _actcrsResult (\ s a -> s{_actcrsResult = a});
 
-instance FromJSON AddCommunicationToCaseResponse where
-    parseJSON = withObject "AddCommunicationToCaseResponse" $ \o -> AddCommunicationToCaseResponse
-        <$> o .:? "result"
+-- | The response status code.
+actcrsStatus :: Lens' AddCommunicationToCaseResponse Int
+actcrsStatus = lens _actcrsStatus (\ s a -> s{_actcrsStatus = a});
diff --git a/gen/Network/AWS/Support/CreateCase.hs b/gen/Network/AWS/Support/CreateCase.hs
--- a/gen/Network/AWS/Support/CreateCase.hs
+++ b/gen/Network/AWS/Support/CreateCase.hs
@@ -1,235 +1,267 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.Support.CreateCase
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Creates a new case in the AWS Support Center. This operation is modeled on
--- the behavior of the AWS Support Center <https://console.aws.amazon.com/support/home#/case/create Create Case> page. Its parameters
--- require you to specify the following information:
+-- Creates a new case in the AWS Support Center. This operation is modeled
+-- on the behavior of the AWS Support Center
+-- <https://console.aws.amazon.com/support/home#/case/create Create Case>
+-- page. Its parameters require you to specify the following information:
 --
--- IssueType. The type of issue for the case. You can specify either
--- "customer-service" or "technical." If you do not indicate a value, the
--- default is "technical."   ServiceCode. The code for an AWS service. You
--- obtain the 'ServiceCode' by calling 'DescribeServices'.   CategoryCode. The
--- category for the service defined for the 'ServiceCode' value. You also obtain
--- the category code for a service by calling 'DescribeServices'. Each AWS service
--- defines its own set of category codes.   SeverityCode. A value that indicates
--- the urgency of the case, which in turn determines the response time according
--- to your service level agreement with AWS Support. You obtain the SeverityCode
--- by calling 'DescribeSeverityLevels'.  Subject. The Subject field on the AWS
--- Support Center <https://console.aws.amazon.com/support/home#/case/create Create Case> page.  CommunicationBody. The Description field on
--- the AWS Support Center <https://console.aws.amazon.com/support/home#/case/create Create Case> page.  AttachmentSetId. The ID of a set of
--- attachments that has been created by using 'AddAttachmentsToSet'.  Language.
--- The human language in which AWS Support handles the case. English and
--- Japanese are currently supported.  CcEmailAddresses. The AWS Support Center CC
--- field on the <https://console.aws.amazon.com/support/home#/case/create Create Case> page. You can list email addresses to be copied on
--- any correspondence about the case. The account that opens the case is already
--- identified by passing the AWS Credentials in the HTTP POST method or in a
--- method or function call from one of the programming languages supported by an <http://aws.amazon.com/tools/ AWS SDK>.   To add additional communication or attachments to an existing
--- case, use 'AddCommunicationToCase'.
+-- 1.  __IssueType.__ The type of issue for the case. You can specify
+--     either \"customer-service\" or \"technical.\" If you do not indicate
+--     a value, the default is \"technical.\"
+-- 2.  __ServiceCode.__ The code for an AWS service. You obtain the
+--     'ServiceCode' by calling DescribeServices.
+-- 3.  __CategoryCode.__ The category for the service defined for the
+--     'ServiceCode' value. You also obtain the category code for a service
+--     by calling DescribeServices. Each AWS service defines its own set of
+--     category codes.
+-- 4.  __SeverityCode.__ A value that indicates the urgency of the case,
+--     which in turn determines the response time according to your service
+--     level agreement with AWS Support. You obtain the SeverityCode by
+--     calling DescribeSeverityLevels.
+-- 5.  __Subject.__ The __Subject__ field on the AWS Support Center
+--     <https://console.aws.amazon.com/support/home#/case/create Create Case>
+--     page.
+-- 6.  __CommunicationBody.__ The __Description__ field on the AWS Support
+--     Center
+--     <https://console.aws.amazon.com/support/home#/case/create Create Case>
+--     page.
+-- 7.  __AttachmentSetId.__ The ID of a set of attachments that has been
+--     created by using AddAttachmentsToSet.
+-- 8.  __Language.__ The human language in which AWS Support handles the
+--     case. English and Japanese are currently supported.
+-- 9.  __CcEmailAddresses.__ The AWS Support Center __CC__ field on the
+--     <https://console.aws.amazon.com/support/home#/case/create Create Case>
+--     page. You can list email addresses to be copied on any
+--     correspondence about the case. The account that opens the case is
+--     already identified by passing the AWS Credentials in the HTTP POST
+--     method or in a method or function call from one of the programming
+--     languages supported by an <http://aws.amazon.com/tools/ AWS SDK>.
 --
--- A successful 'CreateCase' request returns an AWS Support case number. Case
--- numbers are used by the 'DescribeCases' operation to retrieve existing AWS
+-- To add additional communication or attachments to an existing case, use
+-- AddCommunicationToCase.
+--
+-- A successful CreateCase request returns an AWS Support case number. Case
+-- numbers are used by the DescribeCases operation to retrieve existing AWS
 -- Support cases.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_CreateCase.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_CreateCase.html AWS API Reference> for CreateCase.
 module Network.AWS.Support.CreateCase
     (
-    -- * Request
-      CreateCase
-    -- ** Request constructor
-    , createCase
-    -- ** Request lenses
-    , ccAttachmentSetId
-    , ccCategoryCode
-    , ccCcEmailAddresses
-    , ccCommunicationBody
+    -- * Creating a Request
+      createCase
+    , CreateCase
+    -- * Request Lenses
+    , ccSeverityCode
     , ccIssueType
+    , ccCcEmailAddresses
     , ccLanguage
+    , ccCategoryCode
     , ccServiceCode
-    , ccSeverityCode
+    , ccAttachmentSetId
     , ccSubject
+    , ccCommunicationBody
 
-    -- * Response
-    , CreateCaseResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createCaseResponse
-    -- ** Response lenses
-    , ccrCaseId
+    , CreateCaseResponse
+    -- * Response Lenses
+    , ccrsCaseId
+    , ccrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data CreateCase = CreateCase
-    { _ccAttachmentSetId   :: Maybe Text
-    , _ccCategoryCode      :: Maybe Text
-    , _ccCcEmailAddresses  :: List "ccEmailAddresses" Text
-    , _ccCommunicationBody :: Text
-    , _ccIssueType         :: Maybe Text
-    , _ccLanguage          :: Maybe Text
-    , _ccServiceCode       :: Maybe Text
-    , _ccSeverityCode      :: Maybe Text
-    , _ccSubject           :: Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'createCase' smart constructor.
+data CreateCase = CreateCase'
+    { _ccSeverityCode      :: !(Maybe Text)
+    , _ccIssueType         :: !(Maybe Text)
+    , _ccCcEmailAddresses  :: !(Maybe [Text])
+    , _ccLanguage          :: !(Maybe Text)
+    , _ccCategoryCode      :: !(Maybe Text)
+    , _ccServiceCode       :: !(Maybe Text)
+    , _ccAttachmentSetId   :: !(Maybe Text)
+    , _ccSubject           :: !Text
+    , _ccCommunicationBody :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'CreateCase' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'CreateCase' with the minimum fields required to make a request.
 --
--- * 'ccAttachmentSetId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ccCategoryCode' @::@ 'Maybe' 'Text'
+-- * 'ccSeverityCode'
 --
--- * 'ccCcEmailAddresses' @::@ ['Text']
+-- * 'ccIssueType'
 --
--- * 'ccCommunicationBody' @::@ 'Text'
+-- * 'ccCcEmailAddresses'
 --
--- * 'ccIssueType' @::@ 'Maybe' 'Text'
+-- * 'ccLanguage'
 --
--- * 'ccLanguage' @::@ 'Maybe' 'Text'
+-- * 'ccCategoryCode'
 --
--- * 'ccServiceCode' @::@ 'Maybe' 'Text'
+-- * 'ccServiceCode'
 --
--- * 'ccSeverityCode' @::@ 'Maybe' 'Text'
+-- * 'ccAttachmentSetId'
 --
--- * 'ccSubject' @::@ 'Text'
+-- * 'ccSubject'
 --
-createCase :: Text -- ^ 'ccSubject'
-           -> Text -- ^ 'ccCommunicationBody'
-           -> CreateCase
-createCase p1 p2 = CreateCase
-    { _ccSubject           = p1
-    , _ccCommunicationBody = p2
-    , _ccServiceCode       = Nothing
-    , _ccSeverityCode      = Nothing
-    , _ccCategoryCode      = Nothing
-    , _ccCcEmailAddresses  = mempty
-    , _ccLanguage          = Nothing
-    , _ccIssueType         = Nothing
-    , _ccAttachmentSetId   = Nothing
+-- * 'ccCommunicationBody'
+createCase
+    :: Text -- ^ 'ccSubject'
+    -> Text -- ^ 'ccCommunicationBody'
+    -> CreateCase
+createCase pSubject_ pCommunicationBody_ =
+    CreateCase'
+    { _ccSeverityCode = Nothing
+    , _ccIssueType = Nothing
+    , _ccCcEmailAddresses = Nothing
+    , _ccLanguage = Nothing
+    , _ccCategoryCode = Nothing
+    , _ccServiceCode = Nothing
+    , _ccAttachmentSetId = Nothing
+    , _ccSubject = pSubject_
+    , _ccCommunicationBody = pCommunicationBody_
     }
 
--- | The ID of a set of one or more attachments for the case. Create the set by
--- using 'AddAttachmentsToSet'.
-ccAttachmentSetId :: Lens' CreateCase (Maybe Text)
-ccAttachmentSetId =
-    lens _ccAttachmentSetId (\s a -> s { _ccAttachmentSetId = a })
+-- | The code for the severity level returned by the call to
+-- DescribeSeverityLevels.
+--
+-- The availability of severity levels depends on each customer\'s support
+-- subscription. In other words, your subscription may not necessarily
+-- require the urgent level of response time.
+ccSeverityCode :: Lens' CreateCase (Maybe Text)
+ccSeverityCode = lens _ccSeverityCode (\ s a -> s{_ccSeverityCode = a});
 
--- | The category of problem for the AWS Support case.
-ccCategoryCode :: Lens' CreateCase (Maybe Text)
-ccCategoryCode = lens _ccCategoryCode (\s a -> s { _ccCategoryCode = a })
+-- | The type of issue for the case. You can specify either
+-- \"customer-service\" or \"technical.\" If you do not indicate a value,
+-- the default is \"technical.\"
+ccIssueType :: Lens' CreateCase (Maybe Text)
+ccIssueType = lens _ccIssueType (\ s a -> s{_ccIssueType = a});
 
--- | A list of email addresses that AWS Support copies on case correspondence.
+-- | A list of email addresses that AWS Support copies on case
+-- correspondence.
 ccCcEmailAddresses :: Lens' CreateCase [Text]
-ccCcEmailAddresses =
-    lens _ccCcEmailAddresses (\s a -> s { _ccCcEmailAddresses = a })
-        . _List
-
--- | The communication body text when you create an AWS Support case by calling 'CreateCase'.
-ccCommunicationBody :: Lens' CreateCase Text
-ccCommunicationBody =
-    lens _ccCommunicationBody (\s a -> s { _ccCommunicationBody = a })
-
--- | The type of issue for the case. You can specify either "customer-service" or
--- "technical." If you do not indicate a value, the default is "technical."
-ccIssueType :: Lens' CreateCase (Maybe Text)
-ccIssueType = lens _ccIssueType (\s a -> s { _ccIssueType = a })
+ccCcEmailAddresses = lens _ccCcEmailAddresses (\ s a -> s{_ccCcEmailAddresses = a}) . _Default . _Coerce;
 
 -- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
 ccLanguage :: Lens' CreateCase (Maybe Text)
-ccLanguage = lens _ccLanguage (\s a -> s { _ccLanguage = a })
+ccLanguage = lens _ccLanguage (\ s a -> s{_ccLanguage = a});
 
--- | The code for the AWS service returned by the call to 'DescribeServices'.
+-- | The category of problem for the AWS Support case.
+ccCategoryCode :: Lens' CreateCase (Maybe Text)
+ccCategoryCode = lens _ccCategoryCode (\ s a -> s{_ccCategoryCode = a});
+
+-- | The code for the AWS service returned by the call to DescribeServices.
 ccServiceCode :: Lens' CreateCase (Maybe Text)
-ccServiceCode = lens _ccServiceCode (\s a -> s { _ccServiceCode = a })
+ccServiceCode = lens _ccServiceCode (\ s a -> s{_ccServiceCode = a});
 
--- | The code for the severity level returned by the call to 'DescribeSeverityLevels'
--- .
---
--- The availability of severity levels depends on each customer's support
--- subscription. In other words, your subscription may not necessarily require
--- the urgent level of response time.
---
-ccSeverityCode :: Lens' CreateCase (Maybe Text)
-ccSeverityCode = lens _ccSeverityCode (\s a -> s { _ccSeverityCode = a })
+-- | The ID of a set of one or more attachments for the case. Create the set
+-- by using AddAttachmentsToSet.
+ccAttachmentSetId :: Lens' CreateCase (Maybe Text)
+ccAttachmentSetId = lens _ccAttachmentSetId (\ s a -> s{_ccAttachmentSetId = a});
 
 -- | The title of the AWS Support case.
 ccSubject :: Lens' CreateCase Text
-ccSubject = lens _ccSubject (\s a -> s { _ccSubject = a })
+ccSubject = lens _ccSubject (\ s a -> s{_ccSubject = a});
 
-newtype CreateCaseResponse = CreateCaseResponse
-    { _ccrCaseId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+-- | The communication body text when you create an AWS Support case by
+-- calling CreateCase.
+ccCommunicationBody :: Lens' CreateCase Text
+ccCommunicationBody = lens _ccCommunicationBody (\ s a -> s{_ccCommunicationBody = a});
 
--- | 'CreateCaseResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ccrCaseId' @::@ 'Maybe' 'Text'
---
-createCaseResponse :: CreateCaseResponse
-createCaseResponse = CreateCaseResponse
-    { _ccrCaseId = Nothing
-    }
+instance AWSRequest CreateCase where
+        type Sv CreateCase = Support
+        type Rs CreateCase = CreateCaseResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 CreateCaseResponse' <$>
+                   (x .?> "caseId") <*> (pure (fromEnum s)))
 
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
-ccrCaseId :: Lens' CreateCaseResponse (Maybe Text)
-ccrCaseId = lens _ccrCaseId (\s a -> s { _ccrCaseId = a })
+instance ToHeaders CreateCase where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.CreateCase" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
+instance ToJSON CreateCase where
+        toJSON CreateCase'{..}
+          = object
+              ["severityCode" .= _ccSeverityCode,
+               "issueType" .= _ccIssueType,
+               "ccEmailAddresses" .= _ccCcEmailAddresses,
+               "language" .= _ccLanguage,
+               "categoryCode" .= _ccCategoryCode,
+               "serviceCode" .= _ccServiceCode,
+               "attachmentSetId" .= _ccAttachmentSetId,
+               "subject" .= _ccSubject,
+               "communicationBody" .= _ccCommunicationBody]
+
 instance ToPath CreateCase where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CreateCase where
-    toQuery = const mempty
-
-instance ToHeaders CreateCase
+        toQuery = const mempty
 
-instance ToJSON CreateCase where
-    toJSON CreateCase{..} = object
-        [ "subject"           .= _ccSubject
-        , "serviceCode"       .= _ccServiceCode
-        , "severityCode"      .= _ccSeverityCode
-        , "categoryCode"      .= _ccCategoryCode
-        , "communicationBody" .= _ccCommunicationBody
-        , "ccEmailAddresses"  .= _ccCcEmailAddresses
-        , "language"          .= _ccLanguage
-        , "issueType"         .= _ccIssueType
-        , "attachmentSetId"   .= _ccAttachmentSetId
-        ]
+-- | The AWS Support case ID returned by a successful completion of the
+-- CreateCase operation.
+--
+-- /See:/ 'createCaseResponse' smart constructor.
+data CreateCaseResponse = CreateCaseResponse'
+    { _ccrsCaseId :: !(Maybe Text)
+    , _ccrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CreateCase where
-    type Sv CreateCase = Support
-    type Rs CreateCase = CreateCaseResponse
+-- | Creates a value of 'CreateCaseResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ccrsCaseId'
+--
+-- * 'ccrsStatus'
+createCaseResponse
+    :: Int -- ^ 'ccrsStatus'
+    -> CreateCaseResponse
+createCaseResponse pStatus_ =
+    CreateCaseResponse'
+    { _ccrsCaseId = Nothing
+    , _ccrsStatus = pStatus_
+    }
 
-    request  = post "CreateCase"
-    response = jsonResponse
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
+ccrsCaseId :: Lens' CreateCaseResponse (Maybe Text)
+ccrsCaseId = lens _ccrsCaseId (\ s a -> s{_ccrsCaseId = a});
 
-instance FromJSON CreateCaseResponse where
-    parseJSON = withObject "CreateCaseResponse" $ \o -> CreateCaseResponse
-        <$> o .:? "caseId"
+-- | The response status code.
+ccrsStatus :: Lens' CreateCaseResponse Int
+ccrsStatus = lens _ccrsStatus (\ s a -> s{_ccrsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeAttachment.hs b/gen/Network/AWS/Support/DescribeAttachment.hs
--- a/gen/Network/AWS/Support/DescribeAttachment.hs
+++ b/gen/Network/AWS/Support/DescribeAttachment.hs
@@ -1,115 +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.Support.DescribeAttachment
--- 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 the attachment that has the specified ID. Attachment IDs are
--- generated by the case management system when you add an attachment to a case
--- or case communication. Attachment IDs are returned in the 'AttachmentDetails'
--- objects that are returned by the 'DescribeCommunications' operation.
+-- Returns the attachment that has the specified ID. Attachment IDs are
+-- generated by the case management system when you add an attachment to a
+-- case or case communication. Attachment IDs are returned in the
+-- AttachmentDetails objects that are returned by the
+-- DescribeCommunications operation.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeAttachment.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeAttachment.html AWS API Reference> for DescribeAttachment.
 module Network.AWS.Support.DescribeAttachment
     (
-    -- * Request
-      DescribeAttachment
-    -- ** Request constructor
-    , describeAttachment
-    -- ** Request lenses
+    -- * Creating a Request
+      describeAttachment
+    , DescribeAttachment
+    -- * Request Lenses
     , daAttachmentId
 
-    -- * Response
-    , DescribeAttachmentResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeAttachmentResponse
-    -- ** Response lenses
-    , darAttachment
+    , DescribeAttachmentResponse
+    -- * Response Lenses
+    , darsAttachment
+    , darsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-newtype DescribeAttachment = DescribeAttachment
+-- | /See:/ 'describeAttachment' smart constructor.
+newtype DescribeAttachment = DescribeAttachment'
     { _daAttachmentId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeAttachment' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeAttachment' with the minimum fields required to make a request.
 --
--- * 'daAttachmentId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeAttachment :: Text -- ^ 'daAttachmentId'
-                   -> DescribeAttachment
-describeAttachment p1 = DescribeAttachment
-    { _daAttachmentId = p1
+-- * 'daAttachmentId'
+describeAttachment
+    :: Text -- ^ 'daAttachmentId'
+    -> DescribeAttachment
+describeAttachment pAttachmentId_ =
+    DescribeAttachment'
+    { _daAttachmentId = pAttachmentId_
     }
 
--- | The ID of the attachment to return. Attachment IDs are returned by the 'DescribeCommunications' operation.
+-- | The ID of the attachment to return. Attachment IDs are returned by the
+-- DescribeCommunications operation.
 daAttachmentId :: Lens' DescribeAttachment Text
-daAttachmentId = lens _daAttachmentId (\s a -> s { _daAttachmentId = a })
+daAttachmentId = lens _daAttachmentId (\ s a -> s{_daAttachmentId = a});
 
-newtype DescribeAttachmentResponse = DescribeAttachmentResponse
-    { _darAttachment :: Maybe Attachment
-    } deriving (Eq, Read, Show)
+instance AWSRequest DescribeAttachment where
+        type Sv DescribeAttachment = Support
+        type Rs DescribeAttachment =
+             DescribeAttachmentResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeAttachmentResponse' <$>
+                   (x .?> "attachment") <*> (pure (fromEnum s)))
 
--- | 'DescribeAttachmentResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'darAttachment' @::@ 'Maybe' 'Attachment'
---
-describeAttachmentResponse :: DescribeAttachmentResponse
-describeAttachmentResponse = DescribeAttachmentResponse
-    { _darAttachment = Nothing
-    }
+instance ToHeaders DescribeAttachment where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeAttachment" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The attachment content and file name.
-darAttachment :: Lens' DescribeAttachmentResponse (Maybe Attachment)
-darAttachment = lens _darAttachment (\s a -> s { _darAttachment = a })
+instance ToJSON DescribeAttachment where
+        toJSON DescribeAttachment'{..}
+          = object ["attachmentId" .= _daAttachmentId]
 
 instance ToPath DescribeAttachment where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeAttachment where
-    toQuery = const mempty
-
-instance ToHeaders DescribeAttachment
+        toQuery = const mempty
 
-instance ToJSON DescribeAttachment where
-    toJSON DescribeAttachment{..} = object
-        [ "attachmentId" .= _daAttachmentId
-        ]
+-- | The content and file name of the attachment returned by the
+-- DescribeAttachment operation.
+--
+-- /See:/ 'describeAttachmentResponse' smart constructor.
+data DescribeAttachmentResponse = DescribeAttachmentResponse'
+    { _darsAttachment :: !(Maybe Attachment)
+    , _darsStatus     :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeAttachment where
-    type Sv DescribeAttachment = Support
-    type Rs DescribeAttachment = DescribeAttachmentResponse
+-- | Creates a value of 'DescribeAttachmentResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'darsAttachment'
+--
+-- * 'darsStatus'
+describeAttachmentResponse
+    :: Int -- ^ 'darsStatus'
+    -> DescribeAttachmentResponse
+describeAttachmentResponse pStatus_ =
+    DescribeAttachmentResponse'
+    { _darsAttachment = Nothing
+    , _darsStatus = pStatus_
+    }
 
-    request  = post "DescribeAttachment"
-    response = jsonResponse
+-- | The attachment content and file name.
+darsAttachment :: Lens' DescribeAttachmentResponse (Maybe Attachment)
+darsAttachment = lens _darsAttachment (\ s a -> s{_darsAttachment = a});
 
-instance FromJSON DescribeAttachmentResponse where
-    parseJSON = withObject "DescribeAttachmentResponse" $ \o -> DescribeAttachmentResponse
-        <$> o .:? "attachment"
+-- | The response status code.
+darsStatus :: Lens' DescribeAttachmentResponse Int
+darsStatus = lens _darsStatus (\ s a -> s{_darsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeCases.hs b/gen/Network/AWS/Support/DescribeCases.hs
--- a/gen/Network/AWS/Support/DescribeCases.hs
+++ b/gen/Network/AWS/Support/DescribeCases.hs
@@ -1,227 +1,251 @@
-{-# 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.Support.DescribeCases
--- 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 cases that you specify by passing one or more case IDs. In
--- addition, you can filter the cases by date by setting values for the 'AfterTime'
--- and 'BeforeTime' request parameters. You can set values for the 'IncludeResolvedCases' and 'IncludeCommunications' request parameters to control how much information
--- is returned.
+-- Returns a list of cases that you specify by passing one or more case
+-- IDs. In addition, you can filter the cases by date by setting values for
+-- the 'AfterTime' and 'BeforeTime' request parameters. You can set values
+-- for the 'IncludeResolvedCases' and 'IncludeCommunications' request
+-- parameters to control how much information is returned.
 --
--- Case data is available for 12 months after creation. If a case was created
--- more than 12 months ago, a request for data might cause an error.
+-- Case data is available for 12 months after creation. If a case was
+-- created more than 12 months ago, a request for data might cause an
+-- error.
 --
 -- The response returns the following in JSON format:
 --
--- One or more 'CaseDetails' data types.  One or more 'NextToken' values, which
--- specify where to paginate the returned records represented by the 'CaseDetails'
--- objects.
+-- 1.  One or more CaseDetails data types.
+-- 2.  One or more 'NextToken' values, which specify where to paginate the
+--     returned records represented by the 'CaseDetails' objects.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCases.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCases.html AWS API Reference> for DescribeCases.
+--
+-- This operation returns paginated results.
 module Network.AWS.Support.DescribeCases
     (
-    -- * Request
-      DescribeCases
-    -- ** Request constructor
-    , describeCases
-    -- ** Request lenses
+    -- * Creating a Request
+      describeCases
+    , DescribeCases
+    -- * Request Lenses
+    , dcIncludeResolvedCases
+    , dcCaseIdList
     , dcAfterTime
+    , dcNextToken
     , dcBeforeTime
-    , dcCaseIdList
-    , dcDisplayId
     , dcIncludeCommunications
-    , dcIncludeResolvedCases
+    , dcDisplayId
     , dcLanguage
     , dcMaxResults
-    , dcNextToken
 
-    -- * Response
-    , DescribeCasesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCasesResponse
-    -- ** Response lenses
-    , dcr1Cases
-    , dcr1NextToken
+    , DescribeCasesResponse
+    -- * Response Lenses
+    , drsCases
+    , drsNextToken
+    , drsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data DescribeCases = DescribeCases
-    { _dcAfterTime             :: Maybe Text
-    , _dcBeforeTime            :: Maybe Text
-    , _dcCaseIdList            :: List "caseIdList" Text
-    , _dcDisplayId             :: Maybe Text
-    , _dcIncludeCommunications :: Maybe Bool
-    , _dcIncludeResolvedCases  :: Maybe Bool
-    , _dcLanguage              :: Maybe Text
-    , _dcMaxResults            :: Maybe Nat
-    , _dcNextToken             :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeCases' smart constructor.
+data DescribeCases = DescribeCases'
+    { _dcIncludeResolvedCases  :: !(Maybe Bool)
+    , _dcCaseIdList            :: !(Maybe [Text])
+    , _dcAfterTime             :: !(Maybe Text)
+    , _dcNextToken             :: !(Maybe Text)
+    , _dcBeforeTime            :: !(Maybe Text)
+    , _dcIncludeCommunications :: !(Maybe Bool)
+    , _dcDisplayId             :: !(Maybe Text)
+    , _dcLanguage              :: !(Maybe Text)
+    , _dcMaxResults            :: !(Maybe Nat)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeCases' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeCases' with the minimum fields required to make a request.
 --
--- * 'dcAfterTime' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dcBeforeTime' @::@ 'Maybe' 'Text'
+-- * 'dcIncludeResolvedCases'
 --
--- * 'dcCaseIdList' @::@ ['Text']
+-- * 'dcCaseIdList'
 --
--- * 'dcDisplayId' @::@ 'Maybe' 'Text'
+-- * 'dcAfterTime'
 --
--- * 'dcIncludeCommunications' @::@ 'Maybe' 'Bool'
+-- * 'dcNextToken'
 --
--- * 'dcIncludeResolvedCases' @::@ 'Maybe' 'Bool'
+-- * 'dcBeforeTime'
 --
--- * 'dcLanguage' @::@ 'Maybe' 'Text'
+-- * 'dcIncludeCommunications'
 --
--- * 'dcMaxResults' @::@ 'Maybe' 'Natural'
+-- * 'dcDisplayId'
 --
--- * 'dcNextToken' @::@ 'Maybe' 'Text'
+-- * 'dcLanguage'
 --
-describeCases :: DescribeCases
-describeCases = DescribeCases
-    { _dcCaseIdList            = mempty
-    , _dcDisplayId             = Nothing
-    , _dcAfterTime             = Nothing
-    , _dcBeforeTime            = Nothing
-    , _dcIncludeResolvedCases  = Nothing
-    , _dcNextToken             = Nothing
-    , _dcMaxResults            = Nothing
-    , _dcLanguage              = Nothing
+-- * 'dcMaxResults'
+describeCases
+    :: DescribeCases
+describeCases =
+    DescribeCases'
+    { _dcIncludeResolvedCases = Nothing
+    , _dcCaseIdList = Nothing
+    , _dcAfterTime = Nothing
+    , _dcNextToken = Nothing
+    , _dcBeforeTime = Nothing
     , _dcIncludeCommunications = Nothing
+    , _dcDisplayId = Nothing
+    , _dcLanguage = Nothing
+    , _dcMaxResults = Nothing
     }
 
--- | The start date for a filtered date search on support case communications.
--- Case communications are available for 12 months after creation.
-dcAfterTime :: Lens' DescribeCases (Maybe Text)
-dcAfterTime = lens _dcAfterTime (\s a -> s { _dcAfterTime = a })
-
--- | The end date for a filtered date search on support case communications. Case
--- communications are available for 12 months after creation.
-dcBeforeTime :: Lens' DescribeCases (Maybe Text)
-dcBeforeTime = lens _dcBeforeTime (\s a -> s { _dcBeforeTime = a })
+-- | Specifies whether resolved support cases should be included in the
+-- DescribeCases results. The default is /false/.
+dcIncludeResolvedCases :: Lens' DescribeCases (Maybe Bool)
+dcIncludeResolvedCases = lens _dcIncludeResolvedCases (\ s a -> s{_dcIncludeResolvedCases = a});
 
 -- | A list of ID numbers of the support cases you want returned. The maximum
 -- number of cases is 100.
 dcCaseIdList :: Lens' DescribeCases [Text]
-dcCaseIdList = lens _dcCaseIdList (\s a -> s { _dcCaseIdList = a }) . _List
+dcCaseIdList = lens _dcCaseIdList (\ s a -> s{_dcCaseIdList = a}) . _Default . _Coerce;
 
--- | The ID displayed for a case in the AWS Support Center user interface.
-dcDisplayId :: Lens' DescribeCases (Maybe Text)
-dcDisplayId = lens _dcDisplayId (\s a -> s { _dcDisplayId = a })
+-- | The start date for a filtered date search on support case
+-- communications. Case communications are available for 12 months after
+-- creation.
+dcAfterTime :: Lens' DescribeCases (Maybe Text)
+dcAfterTime = lens _dcAfterTime (\ s a -> s{_dcAfterTime = a});
 
--- | Specifies whether communications should be included in the 'DescribeCases'
+-- | A resumption point for pagination.
+dcNextToken :: Lens' DescribeCases (Maybe Text)
+dcNextToken = lens _dcNextToken (\ s a -> s{_dcNextToken = a});
+
+-- | The end date for a filtered date search on support case communications.
+-- Case communications are available for 12 months after creation.
+dcBeforeTime :: Lens' DescribeCases (Maybe Text)
+dcBeforeTime = lens _dcBeforeTime (\ s a -> s{_dcBeforeTime = a});
+
+-- | Specifies whether communications should be included in the DescribeCases
 -- results. The default is /true/.
 dcIncludeCommunications :: Lens' DescribeCases (Maybe Bool)
-dcIncludeCommunications =
-    lens _dcIncludeCommunications (\s a -> s { _dcIncludeCommunications = a })
+dcIncludeCommunications = lens _dcIncludeCommunications (\ s a -> s{_dcIncludeCommunications = a});
 
--- | Specifies whether resolved support cases should be included in the 'DescribeCases' results. The default is /false/.
-dcIncludeResolvedCases :: Lens' DescribeCases (Maybe Bool)
-dcIncludeResolvedCases =
-    lens _dcIncludeResolvedCases (\s a -> s { _dcIncludeResolvedCases = a })
+-- | The ID displayed for a case in the AWS Support Center user interface.
+dcDisplayId :: Lens' DescribeCases (Maybe Text)
+dcDisplayId = lens _dcDisplayId (\ s a -> s{_dcDisplayId = a});
 
 -- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
 dcLanguage :: Lens' DescribeCases (Maybe Text)
-dcLanguage = lens _dcLanguage (\s a -> s { _dcLanguage = a })
+dcLanguage = lens _dcLanguage (\ s a -> s{_dcLanguage = a});
 
 -- | The maximum number of results to return before paginating.
 dcMaxResults :: Lens' DescribeCases (Maybe Natural)
-dcMaxResults = lens _dcMaxResults (\s a -> s { _dcMaxResults = a }) . mapping _Nat
-
--- | A resumption point for pagination.
-dcNextToken :: Lens' DescribeCases (Maybe Text)
-dcNextToken = lens _dcNextToken (\s a -> s { _dcNextToken = a })
+dcMaxResults = lens _dcMaxResults (\ s a -> s{_dcMaxResults = a}) . mapping _Nat;
 
-data DescribeCasesResponse = DescribeCasesResponse
-    { _dcr1Cases     :: List "cases" CaseDetails
-    , _dcr1NextToken :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSPager DescribeCases where
+        page rq rs
+          | stop (rs ^. drsNextToken) = Nothing
+          | stop (rs ^. drsCases) = Nothing
+          | otherwise =
+            Just $ rq & dcNextToken .~ rs ^. drsNextToken
 
--- | 'DescribeCasesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcr1Cases' @::@ ['CaseDetails']
---
--- * 'dcr1NextToken' @::@ 'Maybe' 'Text'
---
-describeCasesResponse :: DescribeCasesResponse
-describeCasesResponse = DescribeCasesResponse
-    { _dcr1Cases     = mempty
-    , _dcr1NextToken = Nothing
-    }
+instance AWSRequest DescribeCases where
+        type Sv DescribeCases = Support
+        type Rs DescribeCases = DescribeCasesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCasesResponse' <$>
+                   (x .?> "cases" .!@ mempty) <*> (x .?> "nextToken")
+                     <*> (pure (fromEnum s)))
 
--- | The details for the cases that match the request.
-dcr1Cases :: Lens' DescribeCasesResponse [CaseDetails]
-dcr1Cases = lens _dcr1Cases (\s a -> s { _dcr1Cases = a }) . _List
+instance ToHeaders DescribeCases where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeCases" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A resumption point for pagination.
-dcr1NextToken :: Lens' DescribeCasesResponse (Maybe Text)
-dcr1NextToken = lens _dcr1NextToken (\s a -> s { _dcr1NextToken = a })
+instance ToJSON DescribeCases where
+        toJSON DescribeCases'{..}
+          = object
+              ["includeResolvedCases" .= _dcIncludeResolvedCases,
+               "caseIdList" .= _dcCaseIdList,
+               "afterTime" .= _dcAfterTime,
+               "nextToken" .= _dcNextToken,
+               "beforeTime" .= _dcBeforeTime,
+               "includeCommunications" .= _dcIncludeCommunications,
+               "displayId" .= _dcDisplayId,
+               "language" .= _dcLanguage,
+               "maxResults" .= _dcMaxResults]
 
 instance ToPath DescribeCases where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeCases where
-    toQuery = const mempty
-
-instance ToHeaders DescribeCases
+        toQuery = const mempty
 
-instance ToJSON DescribeCases where
-    toJSON DescribeCases{..} = object
-        [ "caseIdList"            .= _dcCaseIdList
-        , "displayId"             .= _dcDisplayId
-        , "afterTime"             .= _dcAfterTime
-        , "beforeTime"            .= _dcBeforeTime
-        , "includeResolvedCases"  .= _dcIncludeResolvedCases
-        , "nextToken"             .= _dcNextToken
-        , "maxResults"            .= _dcMaxResults
-        , "language"              .= _dcLanguage
-        , "includeCommunications" .= _dcIncludeCommunications
-        ]
+-- | Returns an array of CaseDetails objects and a 'NextToken' that defines a
+-- point for pagination in the result set.
+--
+-- /See:/ 'describeCasesResponse' smart constructor.
+data DescribeCasesResponse = DescribeCasesResponse'
+    { _drsCases     :: !(Maybe [CaseDetails])
+    , _drsNextToken :: !(Maybe Text)
+    , _drsStatus    :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeCases where
-    type Sv DescribeCases = Support
-    type Rs DescribeCases = DescribeCasesResponse
+-- | Creates a value of 'DescribeCasesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsCases'
+--
+-- * 'drsNextToken'
+--
+-- * 'drsStatus'
+describeCasesResponse
+    :: Int -- ^ 'drsStatus'
+    -> DescribeCasesResponse
+describeCasesResponse pStatus_ =
+    DescribeCasesResponse'
+    { _drsCases = Nothing
+    , _drsNextToken = Nothing
+    , _drsStatus = pStatus_
+    }
 
-    request  = post "DescribeCases"
-    response = jsonResponse
+-- | The details for the cases that match the request.
+drsCases :: Lens' DescribeCasesResponse [CaseDetails]
+drsCases = lens _drsCases (\ s a -> s{_drsCases = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeCasesResponse where
-    parseJSON = withObject "DescribeCasesResponse" $ \o -> DescribeCasesResponse
-        <$> o .:? "cases" .!= mempty
-        <*> o .:? "nextToken"
+-- | A resumption point for pagination.
+drsNextToken :: Lens' DescribeCasesResponse (Maybe Text)
+drsNextToken = lens _drsNextToken (\ s a -> s{_drsNextToken = a});
 
-instance AWSPager DescribeCases where
-    page rq rs
-        | stop (rs ^. dcr1NextToken) = Nothing
-        | otherwise = (\x -> rq & dcNextToken ?~ x)
-            <$> (rs ^. dcr1NextToken)
+-- | The response status code.
+drsStatus :: Lens' DescribeCasesResponse Int
+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeCommunications.hs b/gen/Network/AWS/Support/DescribeCommunications.hs
--- a/gen/Network/AWS/Support/DescribeCommunications.hs
+++ b/gen/Network/AWS/Support/DescribeCommunications.hs
@@ -1,183 +1,207 @@
-{-# 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.Support.DescribeCommunications
--- 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 communications (and attachments) for one or more support cases. You
--- can use the 'AfterTime' and 'BeforeTime' parameters to filter by date. You can
--- use the 'CaseId' parameter to restrict the results to a particular case.
+-- Returns communications (and attachments) for one or more support cases.
+-- You can use the 'AfterTime' and 'BeforeTime' parameters to filter by
+-- date. You can use the 'CaseId' parameter to restrict the results to a
+-- particular case.
 --
--- Case data is available for 12 months after creation. If a case was created
--- more than 12 months ago, a request for data might cause an error.
+-- Case data is available for 12 months after creation. If a case was
+-- created more than 12 months ago, a request for data might cause an
+-- error.
 --
 -- You can use the 'MaxResults' and 'NextToken' parameters to control the
--- pagination of the result set. Set 'MaxResults' to the number of cases you want
--- displayed on each page, and use 'NextToken' to specify the resumption of
--- pagination.
+-- pagination of the result set. Set 'MaxResults' to the number of cases
+-- you want displayed on each page, and use 'NextToken' to specify the
+-- resumption of pagination.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCommunications.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeCommunications.html AWS API Reference> for DescribeCommunications.
+--
+-- This operation returns paginated results.
 module Network.AWS.Support.DescribeCommunications
     (
-    -- * Request
-      DescribeCommunications
-    -- ** Request constructor
-    , describeCommunications
-    -- ** Request lenses
-    , dc1AfterTime
-    , dc1BeforeTime
-    , dc1CaseId
-    , dc1MaxResults
-    , dc1NextToken
+    -- * Creating a Request
+      describeCommunications
+    , DescribeCommunications
+    -- * Request Lenses
+    , dAfterTime
+    , dNextToken
+    , dBeforeTime
+    , dMaxResults
+    , dCaseId
 
-    -- * Response
-    , DescribeCommunicationsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeCommunicationsResponse
-    -- ** Response lenses
-    , dcrCommunications
-    , dcrNextToken
+    , DescribeCommunicationsResponse
+    -- * Response Lenses
+    , dcrsNextToken
+    , dcrsCommunications
+    , dcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data DescribeCommunications = DescribeCommunications
-    { _dc1AfterTime  :: Maybe Text
-    , _dc1BeforeTime :: Maybe Text
-    , _dc1CaseId     :: Text
-    , _dc1MaxResults :: Maybe Nat
-    , _dc1NextToken  :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeCommunications' smart constructor.
+data DescribeCommunications = DescribeCommunications'
+    { _dAfterTime  :: !(Maybe Text)
+    , _dNextToken  :: !(Maybe Text)
+    , _dBeforeTime :: !(Maybe Text)
+    , _dMaxResults :: !(Maybe Nat)
+    , _dCaseId     :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeCommunications' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeCommunications' with the minimum fields required to make a request.
 --
--- * 'dc1AfterTime' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dc1BeforeTime' @::@ 'Maybe' 'Text'
+-- * 'dAfterTime'
 --
--- * 'dc1CaseId' @::@ 'Text'
+-- * 'dNextToken'
 --
--- * 'dc1MaxResults' @::@ 'Maybe' 'Natural'
+-- * 'dBeforeTime'
 --
--- * 'dc1NextToken' @::@ 'Maybe' 'Text'
+-- * 'dMaxResults'
 --
-describeCommunications :: Text -- ^ 'dc1CaseId'
-                       -> DescribeCommunications
-describeCommunications p1 = DescribeCommunications
-    { _dc1CaseId     = p1
-    , _dc1BeforeTime = Nothing
-    , _dc1AfterTime  = Nothing
-    , _dc1NextToken  = Nothing
-    , _dc1MaxResults = Nothing
+-- * 'dCaseId'
+describeCommunications
+    :: Text -- ^ 'dCaseId'
+    -> DescribeCommunications
+describeCommunications pCaseId_ =
+    DescribeCommunications'
+    { _dAfterTime = Nothing
+    , _dNextToken = Nothing
+    , _dBeforeTime = Nothing
+    , _dMaxResults = Nothing
+    , _dCaseId = pCaseId_
     }
 
--- | The start date for a filtered date search on support case communications.
--- Case communications are available for 12 months after creation.
-dc1AfterTime :: Lens' DescribeCommunications (Maybe Text)
-dc1AfterTime = lens _dc1AfterTime (\s a -> s { _dc1AfterTime = a })
+-- | The start date for a filtered date search on support case
+-- communications. Case communications are available for 12 months after
+-- creation.
+dAfterTime :: Lens' DescribeCommunications (Maybe Text)
+dAfterTime = lens _dAfterTime (\ s a -> s{_dAfterTime = a});
 
--- | The end date for a filtered date search on support case communications. Case
--- communications are available for 12 months after creation.
-dc1BeforeTime :: Lens' DescribeCommunications (Maybe Text)
-dc1BeforeTime = lens _dc1BeforeTime (\s a -> s { _dc1BeforeTime = a })
+-- | A resumption point for pagination.
+dNextToken :: Lens' DescribeCommunications (Maybe Text)
+dNextToken = lens _dNextToken (\ s a -> s{_dNextToken = a});
 
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
-dc1CaseId :: Lens' DescribeCommunications Text
-dc1CaseId = lens _dc1CaseId (\s a -> s { _dc1CaseId = a })
+-- | The end date for a filtered date search on support case communications.
+-- Case communications are available for 12 months after creation.
+dBeforeTime :: Lens' DescribeCommunications (Maybe Text)
+dBeforeTime = lens _dBeforeTime (\ s a -> s{_dBeforeTime = a});
 
 -- | The maximum number of results to return before paginating.
-dc1MaxResults :: Lens' DescribeCommunications (Maybe Natural)
-dc1MaxResults = lens _dc1MaxResults (\s a -> s { _dc1MaxResults = a }) . mapping _Nat
+dMaxResults :: Lens' DescribeCommunications (Maybe Natural)
+dMaxResults = lens _dMaxResults (\ s a -> s{_dMaxResults = a}) . mapping _Nat;
 
--- | A resumption point for pagination.
-dc1NextToken :: Lens' DescribeCommunications (Maybe Text)
-dc1NextToken = lens _dc1NextToken (\s a -> s { _dc1NextToken = a })
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
+dCaseId :: Lens' DescribeCommunications Text
+dCaseId = lens _dCaseId (\ s a -> s{_dCaseId = a});
 
-data DescribeCommunicationsResponse = DescribeCommunicationsResponse
-    { _dcrCommunications :: List "communications" Communication
-    , _dcrNextToken      :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSPager DescribeCommunications where
+        page rq rs
+          | stop (rs ^. dcrsNextToken) = Nothing
+          | stop (rs ^. dcrsCommunications) = Nothing
+          | otherwise =
+            Just $ rq & dNextToken .~ rs ^. dcrsNextToken
 
--- | 'DescribeCommunicationsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dcrCommunications' @::@ ['Communication']
---
--- * 'dcrNextToken' @::@ 'Maybe' 'Text'
---
-describeCommunicationsResponse :: DescribeCommunicationsResponse
-describeCommunicationsResponse = DescribeCommunicationsResponse
-    { _dcrCommunications = mempty
-    , _dcrNextToken      = Nothing
-    }
+instance AWSRequest DescribeCommunications where
+        type Sv DescribeCommunications = Support
+        type Rs DescribeCommunications =
+             DescribeCommunicationsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeCommunicationsResponse' <$>
+                   (x .?> "nextToken") <*>
+                     (x .?> "communications" .!@ mempty)
+                     <*> (pure (fromEnum s)))
 
--- | The communications for the case.
-dcrCommunications :: Lens' DescribeCommunicationsResponse [Communication]
-dcrCommunications =
-    lens _dcrCommunications (\s a -> s { _dcrCommunications = a })
-        . _List
+instance ToHeaders DescribeCommunications where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeCommunications" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A resumption point for pagination.
-dcrNextToken :: Lens' DescribeCommunicationsResponse (Maybe Text)
-dcrNextToken = lens _dcrNextToken (\s a -> s { _dcrNextToken = a })
+instance ToJSON DescribeCommunications where
+        toJSON DescribeCommunications'{..}
+          = object
+              ["afterTime" .= _dAfterTime,
+               "nextToken" .= _dNextToken,
+               "beforeTime" .= _dBeforeTime,
+               "maxResults" .= _dMaxResults, "caseId" .= _dCaseId]
 
 instance ToPath DescribeCommunications where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeCommunications where
-    toQuery = const mempty
-
-instance ToHeaders DescribeCommunications
+        toQuery = const mempty
 
-instance ToJSON DescribeCommunications where
-    toJSON DescribeCommunications{..} = object
-        [ "caseId"     .= _dc1CaseId
-        , "beforeTime" .= _dc1BeforeTime
-        , "afterTime"  .= _dc1AfterTime
-        , "nextToken"  .= _dc1NextToken
-        , "maxResults" .= _dc1MaxResults
-        ]
+-- | The communications returned by the DescribeCommunications operation.
+--
+-- /See:/ 'describeCommunicationsResponse' smart constructor.
+data DescribeCommunicationsResponse = DescribeCommunicationsResponse'
+    { _dcrsNextToken      :: !(Maybe Text)
+    , _dcrsCommunications :: !(Maybe [Communication])
+    , _dcrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeCommunications where
-    type Sv DescribeCommunications = Support
-    type Rs DescribeCommunications = DescribeCommunicationsResponse
+-- | Creates a value of 'DescribeCommunicationsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcrsNextToken'
+--
+-- * 'dcrsCommunications'
+--
+-- * 'dcrsStatus'
+describeCommunicationsResponse
+    :: Int -- ^ 'dcrsStatus'
+    -> DescribeCommunicationsResponse
+describeCommunicationsResponse pStatus_ =
+    DescribeCommunicationsResponse'
+    { _dcrsNextToken = Nothing
+    , _dcrsCommunications = Nothing
+    , _dcrsStatus = pStatus_
+    }
 
-    request  = post "DescribeCommunications"
-    response = jsonResponse
+-- | A resumption point for pagination.
+dcrsNextToken :: Lens' DescribeCommunicationsResponse (Maybe Text)
+dcrsNextToken = lens _dcrsNextToken (\ s a -> s{_dcrsNextToken = a});
 
-instance FromJSON DescribeCommunicationsResponse where
-    parseJSON = withObject "DescribeCommunicationsResponse" $ \o -> DescribeCommunicationsResponse
-        <$> o .:? "communications" .!= mempty
-        <*> o .:? "nextToken"
+-- | The communications for the case.
+dcrsCommunications :: Lens' DescribeCommunicationsResponse [Communication]
+dcrsCommunications = lens _dcrsCommunications (\ s a -> s{_dcrsCommunications = a}) . _Default . _Coerce;
 
-instance AWSPager DescribeCommunications where
-    page rq rs
-        | stop (rs ^. dcrNextToken) = Nothing
-        | otherwise = (\x -> rq & dc1NextToken ?~ x)
-            <$> (rs ^. dcrNextToken)
+-- | The response status code.
+dcrsStatus :: Lens' DescribeCommunicationsResponse Int
+dcrsStatus = lens _dcrsStatus (\ s a -> s{_dcrsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeServices.hs b/gen/Network/AWS/Support/DescribeServices.hs
--- a/gen/Network/AWS/Support/DescribeServices.hs
+++ b/gen/Network/AWS/Support/DescribeServices.hs
@@ -1,139 +1,155 @@
-{-# 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.Support.DescribeServices
--- 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 the current list of AWS services and a list of service categories
--- that applies to each one. You then use service names and categories in your 'CreateCase' requests. Each AWS service has its own set of categories.
+-- Returns the current list of AWS services and a list of service
+-- categories that applies to each one. You then use service names and
+-- categories in your CreateCase requests. Each AWS service has its own set
+-- of categories.
 --
 -- The service codes and category codes correspond to the values that are
--- displayed in the Service and Category drop-down lists on the AWS Support
--- Center <https://console.aws.amazon.com/support/home#/case/create Create Case> page. The values in those fields, however, do not
--- necessarily match the service codes and categories returned by the 'DescribeServices' request. Always use the service codes and categories obtained
--- programmatically. This practice ensures that you always have the most recent
--- set of service and category codes.
+-- displayed in the __Service__ and __Category__ drop-down lists on the AWS
+-- Support Center
+-- <https://console.aws.amazon.com/support/home#/case/create Create Case>
+-- page. The values in those fields, however, do not necessarily match the
+-- service codes and categories returned by the 'DescribeServices' request.
+-- Always use the service codes and categories obtained programmatically.
+-- This practice ensures that you always have the most recent set of
+-- service and category codes.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeServices.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeServices.html AWS API Reference> for DescribeServices.
 module Network.AWS.Support.DescribeServices
     (
-    -- * Request
-      DescribeServices
-    -- ** Request constructor
-    , describeServices
-    -- ** Request lenses
-    , dsLanguage
+    -- * Creating a Request
+      describeServices
+    , DescribeServices
+    -- * Request Lenses
     , dsServiceCodeList
+    , dsLanguage
 
-    -- * Response
-    , DescribeServicesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeServicesResponse
-    -- ** Response lenses
-    , dsrServices
+    , DescribeServicesResponse
+    -- * Response Lenses
+    , dsrsServices
+    , dsrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data DescribeServices = DescribeServices
-    { _dsLanguage        :: Maybe Text
-    , _dsServiceCodeList :: List "serviceCodeList" Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeServices' smart constructor.
+data DescribeServices = DescribeServices'
+    { _dsServiceCodeList :: !(Maybe [Text])
+    , _dsLanguage        :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeServices' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeServices' with the minimum fields required to make a request.
 --
--- * 'dsLanguage' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dsServiceCodeList' @::@ ['Text']
+-- * 'dsServiceCodeList'
 --
-describeServices :: DescribeServices
-describeServices = DescribeServices
-    { _dsServiceCodeList = mempty
-    , _dsLanguage        = Nothing
+-- * 'dsLanguage'
+describeServices
+    :: DescribeServices
+describeServices =
+    DescribeServices'
+    { _dsServiceCodeList = Nothing
+    , _dsLanguage = Nothing
     }
 
--- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
-dsLanguage :: Lens' DescribeServices (Maybe Text)
-dsLanguage = lens _dsLanguage (\s a -> s { _dsLanguage = a })
-
 -- | A JSON-formatted list of service codes available for AWS services.
 dsServiceCodeList :: Lens' DescribeServices [Text]
-dsServiceCodeList =
-    lens _dsServiceCodeList (\s a -> s { _dsServiceCodeList = a })
-        . _List
-
-newtype DescribeServicesResponse = DescribeServicesResponse
-    { _dsrServices :: List "services" SupportService
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+dsServiceCodeList = lens _dsServiceCodeList (\ s a -> s{_dsServiceCodeList = a}) . _Default . _Coerce;
 
-instance GHC.Exts.IsList DescribeServicesResponse where
-    type Item DescribeServicesResponse = SupportService
+-- | The ISO 639-1 code for the language in which AWS provides support. AWS
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
+dsLanguage :: Lens' DescribeServices (Maybe Text)
+dsLanguage = lens _dsLanguage (\ s a -> s{_dsLanguage = a});
 
-    fromList = DescribeServicesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dsrServices
+instance AWSRequest DescribeServices where
+        type Sv DescribeServices = Support
+        type Rs DescribeServices = DescribeServicesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeServicesResponse' <$>
+                   (x .?> "services" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeServicesResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dsrServices' @::@ ['SupportService']
---
-describeServicesResponse :: DescribeServicesResponse
-describeServicesResponse = DescribeServicesResponse
-    { _dsrServices = mempty
-    }
+instance ToHeaders DescribeServices where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeServices" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | A JSON-formatted list of AWS services.
-dsrServices :: Lens' DescribeServicesResponse [SupportService]
-dsrServices = lens _dsrServices (\s a -> s { _dsrServices = a }) . _List
+instance ToJSON DescribeServices where
+        toJSON DescribeServices'{..}
+          = object
+              ["serviceCodeList" .= _dsServiceCodeList,
+               "language" .= _dsLanguage]
 
 instance ToPath DescribeServices where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeServices where
-    toQuery = const mempty
-
-instance ToHeaders DescribeServices
+        toQuery = const mempty
 
-instance ToJSON DescribeServices where
-    toJSON DescribeServices{..} = object
-        [ "serviceCodeList" .= _dsServiceCodeList
-        , "language"        .= _dsLanguage
-        ]
+-- | The list of AWS services returned by the DescribeServices operation.
+--
+-- /See:/ 'describeServicesResponse' smart constructor.
+data DescribeServicesResponse = DescribeServicesResponse'
+    { _dsrsServices :: !(Maybe [SupportService])
+    , _dsrsStatus   :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeServices where
-    type Sv DescribeServices = Support
-    type Rs DescribeServices = DescribeServicesResponse
+-- | Creates a value of 'DescribeServicesResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dsrsServices'
+--
+-- * 'dsrsStatus'
+describeServicesResponse
+    :: Int -- ^ 'dsrsStatus'
+    -> DescribeServicesResponse
+describeServicesResponse pStatus_ =
+    DescribeServicesResponse'
+    { _dsrsServices = Nothing
+    , _dsrsStatus = pStatus_
+    }
 
-    request  = post "DescribeServices"
-    response = jsonResponse
+-- | A JSON-formatted list of AWS services.
+dsrsServices :: Lens' DescribeServicesResponse [SupportService]
+dsrsServices = lens _dsrsServices (\ s a -> s{_dsrsServices = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeServicesResponse where
-    parseJSON = withObject "DescribeServicesResponse" $ \o -> DescribeServicesResponse
-        <$> o .:? "services" .!= mempty
+-- | The response status code.
+dsrsStatus :: Lens' DescribeServicesResponse Int
+dsrsStatus = lens _dsrsStatus (\ s a -> s{_dsrsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeSeverityLevels.hs b/gen/Network/AWS/Support/DescribeSeverityLevels.hs
--- a/gen/Network/AWS/Support/DescribeSeverityLevels.hs
+++ b/gen/Network/AWS/Support/DescribeSeverityLevels.hs
@@ -1,124 +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.Support.DescribeSeverityLevels
--- 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 the list of severity levels that you can assign to an AWS Support
--- case. The severity level for a case is also a field in the 'CaseDetails' data
--- type included in any 'CreateCase' request.
+-- Returns the list of severity levels that you can assign to an AWS
+-- Support case. The severity level for a case is also a field in the
+-- CaseDetails data type included in any CreateCase request.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeSeverityLevels.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeSeverityLevels.html AWS API Reference> for DescribeSeverityLevels.
 module Network.AWS.Support.DescribeSeverityLevels
     (
-    -- * Request
-      DescribeSeverityLevels
-    -- ** Request constructor
-    , describeSeverityLevels
-    -- ** Request lenses
+    -- * Creating a Request
+      describeSeverityLevels
+    , DescribeSeverityLevels
+    -- * Request Lenses
     , dslLanguage
 
-    -- * Response
-    , DescribeSeverityLevelsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeSeverityLevelsResponse
-    -- ** Response lenses
-    , dslrSeverityLevels
+    , DescribeSeverityLevelsResponse
+    -- * Response Lenses
+    , dslrsSeverityLevels
+    , dslrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-newtype DescribeSeverityLevels = DescribeSeverityLevels
+-- | /See:/ 'describeSeverityLevels' smart constructor.
+newtype DescribeSeverityLevels = DescribeSeverityLevels'
     { _dslLanguage :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeSeverityLevels' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeSeverityLevels' with the minimum fields required to make a request.
 --
--- * 'dslLanguage' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeSeverityLevels :: DescribeSeverityLevels
-describeSeverityLevels = DescribeSeverityLevels
+-- * 'dslLanguage'
+describeSeverityLevels
+    :: DescribeSeverityLevels
+describeSeverityLevels =
+    DescribeSeverityLevels'
     { _dslLanguage = Nothing
     }
 
 -- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
 dslLanguage :: Lens' DescribeSeverityLevels (Maybe Text)
-dslLanguage = lens _dslLanguage (\s a -> s { _dslLanguage = a })
-
-newtype DescribeSeverityLevelsResponse = DescribeSeverityLevelsResponse
-    { _dslrSeverityLevels :: List "severityLevels" SeverityLevel
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeSeverityLevelsResponse where
-    type Item DescribeSeverityLevelsResponse = SeverityLevel
+dslLanguage = lens _dslLanguage (\ s a -> s{_dslLanguage = a});
 
-    fromList = DescribeSeverityLevelsResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dslrSeverityLevels
+instance AWSRequest DescribeSeverityLevels where
+        type Sv DescribeSeverityLevels = Support
+        type Rs DescribeSeverityLevels =
+             DescribeSeverityLevelsResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeSeverityLevelsResponse' <$>
+                   (x .?> "severityLevels" .!@ mempty) <*>
+                     (pure (fromEnum s)))
 
--- | 'DescribeSeverityLevelsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dslrSeverityLevels' @::@ ['SeverityLevel']
---
-describeSeverityLevelsResponse :: DescribeSeverityLevelsResponse
-describeSeverityLevelsResponse = DescribeSeverityLevelsResponse
-    { _dslrSeverityLevels = mempty
-    }
+instance ToHeaders DescribeSeverityLevels where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeSeverityLevels" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The available severity levels for the support case. Available severity levels
--- are defined by your service level agreement with AWS.
-dslrSeverityLevels :: Lens' DescribeSeverityLevelsResponse [SeverityLevel]
-dslrSeverityLevels =
-    lens _dslrSeverityLevels (\s a -> s { _dslrSeverityLevels = a })
-        . _List
+instance ToJSON DescribeSeverityLevels where
+        toJSON DescribeSeverityLevels'{..}
+          = object ["language" .= _dslLanguage]
 
 instance ToPath DescribeSeverityLevels where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeSeverityLevels where
-    toQuery = const mempty
-
-instance ToHeaders DescribeSeverityLevels
+        toQuery = const mempty
 
-instance ToJSON DescribeSeverityLevels where
-    toJSON DescribeSeverityLevels{..} = object
-        [ "language" .= _dslLanguage
-        ]
+-- | The list of severity levels returned by the DescribeSeverityLevels
+-- operation.
+--
+-- /See:/ 'describeSeverityLevelsResponse' smart constructor.
+data DescribeSeverityLevelsResponse = DescribeSeverityLevelsResponse'
+    { _dslrsSeverityLevels :: !(Maybe [SeverityLevel])
+    , _dslrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeSeverityLevels where
-    type Sv DescribeSeverityLevels = Support
-    type Rs DescribeSeverityLevels = DescribeSeverityLevelsResponse
+-- | Creates a value of 'DescribeSeverityLevelsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dslrsSeverityLevels'
+--
+-- * 'dslrsStatus'
+describeSeverityLevelsResponse
+    :: Int -- ^ 'dslrsStatus'
+    -> DescribeSeverityLevelsResponse
+describeSeverityLevelsResponse pStatus_ =
+    DescribeSeverityLevelsResponse'
+    { _dslrsSeverityLevels = Nothing
+    , _dslrsStatus = pStatus_
+    }
 
-    request  = post "DescribeSeverityLevels"
-    response = jsonResponse
+-- | The available severity levels for the support case. Available severity
+-- levels are defined by your service level agreement with AWS.
+dslrsSeverityLevels :: Lens' DescribeSeverityLevelsResponse [SeverityLevel]
+dslrsSeverityLevels = lens _dslrsSeverityLevels (\ s a -> s{_dslrsSeverityLevels = a}) . _Default . _Coerce;
 
-instance FromJSON DescribeSeverityLevelsResponse where
-    parseJSON = withObject "DescribeSeverityLevelsResponse" $ \o -> DescribeSeverityLevelsResponse
-        <$> o .:? "severityLevels" .!= mempty
+-- | The response status code.
+dslrsStatus :: Lens' DescribeSeverityLevelsResponse Int
+dslrsStatus = lens _dslrsStatus (\ s a -> s{_dslrsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckRefreshStatuses.hs b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckRefreshStatuses.hs
--- a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckRefreshStatuses.hs
+++ b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckRefreshStatuses.hs
@@ -1,124 +1,140 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.Support.DescribeTrustedAdvisorCheckRefreshStatuses
--- 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 the refresh status of the Trusted Advisor checks that have the
--- specified check IDs. Check IDs can be obtained by calling 'DescribeTrustedAdvisorChecks'.
+-- Returns the refresh status of the Trusted Advisor checks that have the
+-- specified check IDs. Check IDs can be obtained by calling
+-- DescribeTrustedAdvisorChecks.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckRefreshStatuses.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckRefreshStatuses.html AWS API Reference> for DescribeTrustedAdvisorCheckRefreshStatuses.
 module Network.AWS.Support.DescribeTrustedAdvisorCheckRefreshStatuses
     (
-    -- * Request
-      DescribeTrustedAdvisorCheckRefreshStatuses
-    -- ** Request constructor
-    , describeTrustedAdvisorCheckRefreshStatuses
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTrustedAdvisorCheckRefreshStatuses
+    , DescribeTrustedAdvisorCheckRefreshStatuses
+    -- * Request Lenses
     , dtacrsCheckIds
 
-    -- * Response
-    , DescribeTrustedAdvisorCheckRefreshStatusesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTrustedAdvisorCheckRefreshStatusesResponse
-    -- ** Response lenses
-    , dtacrsrStatuses
+    , DescribeTrustedAdvisorCheckRefreshStatusesResponse
+    -- * Response Lenses
+    , dtacrsrsStatus
+    , dtacrsrsStatuses
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
-
-newtype DescribeTrustedAdvisorCheckRefreshStatuses = DescribeTrustedAdvisorCheckRefreshStatuses
-    { _dtacrsCheckIds :: List "checkIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTrustedAdvisorCheckRefreshStatuses where
-    type Item DescribeTrustedAdvisorCheckRefreshStatuses = Text
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-    fromList = DescribeTrustedAdvisorCheckRefreshStatuses . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtacrsCheckIds
+-- | /See:/ 'describeTrustedAdvisorCheckRefreshStatuses' smart constructor.
+newtype DescribeTrustedAdvisorCheckRefreshStatuses = DescribeTrustedAdvisorCheckRefreshStatuses'
+    { _dtacrsCheckIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTrustedAdvisorCheckRefreshStatuses' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTrustedAdvisorCheckRefreshStatuses' with the minimum fields required to make a request.
 --
--- * 'dtacrsCheckIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTrustedAdvisorCheckRefreshStatuses :: DescribeTrustedAdvisorCheckRefreshStatuses
-describeTrustedAdvisorCheckRefreshStatuses = DescribeTrustedAdvisorCheckRefreshStatuses
+-- * 'dtacrsCheckIds'
+describeTrustedAdvisorCheckRefreshStatuses
+    :: DescribeTrustedAdvisorCheckRefreshStatuses
+describeTrustedAdvisorCheckRefreshStatuses =
+    DescribeTrustedAdvisorCheckRefreshStatuses'
     { _dtacrsCheckIds = mempty
     }
 
 -- | The IDs of the Trusted Advisor checks.
 dtacrsCheckIds :: Lens' DescribeTrustedAdvisorCheckRefreshStatuses [Text]
-dtacrsCheckIds = lens _dtacrsCheckIds (\s a -> s { _dtacrsCheckIds = a }) . _List
+dtacrsCheckIds = lens _dtacrsCheckIds (\ s a -> s{_dtacrsCheckIds = a}) . _Coerce;
 
-newtype DescribeTrustedAdvisorCheckRefreshStatusesResponse = DescribeTrustedAdvisorCheckRefreshStatusesResponse
-    { _dtacrsrStatuses :: List "statuses" TrustedAdvisorCheckRefreshStatus
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest
+         DescribeTrustedAdvisorCheckRefreshStatuses where
+        type Sv DescribeTrustedAdvisorCheckRefreshStatuses =
+             Support
+        type Rs DescribeTrustedAdvisorCheckRefreshStatuses =
+             DescribeTrustedAdvisorCheckRefreshStatusesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTrustedAdvisorCheckRefreshStatusesResponse'
+                   <$>
+                   (pure (fromEnum s)) <*>
+                     (x .?> "statuses" .!@ mempty))
 
-instance GHC.Exts.IsList DescribeTrustedAdvisorCheckRefreshStatusesResponse where
-    type Item DescribeTrustedAdvisorCheckRefreshStatusesResponse = TrustedAdvisorCheckRefreshStatus
+instance ToHeaders
+         DescribeTrustedAdvisorCheckRefreshStatuses where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeTrustedAdvisorCheckRefreshStatuses"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeTrustedAdvisorCheckRefreshStatusesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtacrsrStatuses
+instance ToJSON
+         DescribeTrustedAdvisorCheckRefreshStatuses where
+        toJSON
+          DescribeTrustedAdvisorCheckRefreshStatuses'{..}
+          = object ["checkIds" .= _dtacrsCheckIds]
 
--- | 'DescribeTrustedAdvisorCheckRefreshStatusesResponse' constructor.
+instance ToPath
+         DescribeTrustedAdvisorCheckRefreshStatuses where
+        toPath = const "/"
+
+instance ToQuery
+         DescribeTrustedAdvisorCheckRefreshStatuses where
+        toQuery = const mempty
+
+-- | The statuses of the Trusted Advisor checks returned by the
+-- DescribeTrustedAdvisorCheckRefreshStatuses operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeTrustedAdvisorCheckRefreshStatusesResponse' smart constructor.
+data DescribeTrustedAdvisorCheckRefreshStatusesResponse = DescribeTrustedAdvisorCheckRefreshStatusesResponse'
+    { _dtacrsrsStatus   :: !Int
+    , _dtacrsrsStatuses :: ![TrustedAdvisorCheckRefreshStatus]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTrustedAdvisorCheckRefreshStatusesResponse' with the minimum fields required to make a request.
 --
--- * 'dtacrsrStatuses' @::@ ['TrustedAdvisorCheckRefreshStatus']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTrustedAdvisorCheckRefreshStatusesResponse :: DescribeTrustedAdvisorCheckRefreshStatusesResponse
-describeTrustedAdvisorCheckRefreshStatusesResponse = DescribeTrustedAdvisorCheckRefreshStatusesResponse
-    { _dtacrsrStatuses = mempty
+-- * 'dtacrsrsStatus'
+--
+-- * 'dtacrsrsStatuses'
+describeTrustedAdvisorCheckRefreshStatusesResponse
+    :: Int -- ^ 'dtacrsrsStatus'
+    -> DescribeTrustedAdvisorCheckRefreshStatusesResponse
+describeTrustedAdvisorCheckRefreshStatusesResponse pStatus_ =
+    DescribeTrustedAdvisorCheckRefreshStatusesResponse'
+    { _dtacrsrsStatus = pStatus_
+    , _dtacrsrsStatuses = mempty
     }
 
--- | The refresh status of the specified Trusted Advisor checks.
-dtacrsrStatuses :: Lens' DescribeTrustedAdvisorCheckRefreshStatusesResponse [TrustedAdvisorCheckRefreshStatus]
-dtacrsrStatuses = lens _dtacrsrStatuses (\s a -> s { _dtacrsrStatuses = a }) . _List
-
-instance ToPath DescribeTrustedAdvisorCheckRefreshStatuses where
-    toPath = const "/"
-
-instance ToQuery DescribeTrustedAdvisorCheckRefreshStatuses where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTrustedAdvisorCheckRefreshStatuses
-
-instance ToJSON DescribeTrustedAdvisorCheckRefreshStatuses where
-    toJSON DescribeTrustedAdvisorCheckRefreshStatuses{..} = object
-        [ "checkIds" .= _dtacrsCheckIds
-        ]
-
-instance AWSRequest DescribeTrustedAdvisorCheckRefreshStatuses where
-    type Sv DescribeTrustedAdvisorCheckRefreshStatuses = Support
-    type Rs DescribeTrustedAdvisorCheckRefreshStatuses = DescribeTrustedAdvisorCheckRefreshStatusesResponse
-
-    request  = post "DescribeTrustedAdvisorCheckRefreshStatuses"
-    response = jsonResponse
+-- | The response status code.
+dtacrsrsStatus :: Lens' DescribeTrustedAdvisorCheckRefreshStatusesResponse Int
+dtacrsrsStatus = lens _dtacrsrsStatus (\ s a -> s{_dtacrsrsStatus = a});
 
-instance FromJSON DescribeTrustedAdvisorCheckRefreshStatusesResponse where
-    parseJSON = withObject "DescribeTrustedAdvisorCheckRefreshStatusesResponse" $ \o -> DescribeTrustedAdvisorCheckRefreshStatusesResponse
-        <$> o .:? "statuses" .!= mempty
+-- | The refresh status of the specified Trusted Advisor checks.
+dtacrsrsStatuses :: Lens' DescribeTrustedAdvisorCheckRefreshStatusesResponse [TrustedAdvisorCheckRefreshStatus]
+dtacrsrsStatuses = lens _dtacrsrsStatuses (\ s a -> s{_dtacrsrsStatuses = a}) . _Coerce;
diff --git a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckResult.hs b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckResult.hs
--- a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckResult.hs
+++ b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckResult.hs
@@ -1,134 +1,165 @@
-{-# 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.Support.DescribeTrustedAdvisorCheckResult
--- 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 the results of the Trusted Advisor check that has the specified check
--- ID. Check IDs can be obtained by calling 'DescribeTrustedAdvisorChecks'.
+-- Returns the results of the Trusted Advisor check that has the specified
+-- check ID. Check IDs can be obtained by calling
+-- DescribeTrustedAdvisorChecks.
 --
--- The response contains a 'TrustedAdvisorCheckResult' object, which contains
+-- The response contains a TrustedAdvisorCheckResult object, which contains
 -- these three objects:
 --
--- 'TrustedAdvisorCategorySpecificSummary' 'TrustedAdvisorResourceDetail' 'TrustedAdvisorResourcesSummary'  In addition, the response contains these fields:
+-- -   TrustedAdvisorCategorySpecificSummary
+-- -   TrustedAdvisorResourceDetail
+-- -   TrustedAdvisorResourcesSummary
 --
--- Status. The alert status of the check: "ok" (green), "warning" (yellow),
--- "error" (red), or "not_available".  Timestamp. The time of the last refresh
--- of the check.  CheckId. The unique identifier for the check.
+-- In addition, the response contains these fields:
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckResult.html>
+-- -   __Status.__ The alert status of the check: \"ok\" (green),
+--     \"warning\" (yellow), \"error\" (red), or \"not_available\".
+-- -   __Timestamp.__ The time of the last refresh of the check.
+-- -   __CheckId.__ The unique identifier for the check.
+--
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckResult.html AWS API Reference> for DescribeTrustedAdvisorCheckResult.
 module Network.AWS.Support.DescribeTrustedAdvisorCheckResult
     (
-    -- * Request
-      DescribeTrustedAdvisorCheckResult
-    -- ** Request constructor
-    , describeTrustedAdvisorCheckResult
-    -- ** Request lenses
-    , dtacrCheckId
+    -- * Creating a Request
+      describeTrustedAdvisorCheckResult
+    , DescribeTrustedAdvisorCheckResult
+    -- * Request Lenses
     , dtacrLanguage
+    , dtacrCheckId
 
-    -- * Response
-    , DescribeTrustedAdvisorCheckResultResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTrustedAdvisorCheckResultResponse
-    -- ** Response lenses
-    , dtacrrResult
+    , DescribeTrustedAdvisorCheckResultResponse
+    -- * Response Lenses
+    , dtacrrsResult
+    , dtacrrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-data DescribeTrustedAdvisorCheckResult = DescribeTrustedAdvisorCheckResult
-    { _dtacrCheckId  :: Text
-    , _dtacrLanguage :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'describeTrustedAdvisorCheckResult' smart constructor.
+data DescribeTrustedAdvisorCheckResult = DescribeTrustedAdvisorCheckResult'
+    { _dtacrLanguage :: !(Maybe Text)
+    , _dtacrCheckId  :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTrustedAdvisorCheckResult' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTrustedAdvisorCheckResult' with the minimum fields required to make a request.
 --
--- * 'dtacrCheckId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'dtacrLanguage' @::@ 'Maybe' 'Text'
+-- * 'dtacrLanguage'
 --
-describeTrustedAdvisorCheckResult :: Text -- ^ 'dtacrCheckId'
-                                  -> DescribeTrustedAdvisorCheckResult
-describeTrustedAdvisorCheckResult p1 = DescribeTrustedAdvisorCheckResult
-    { _dtacrCheckId  = p1
-    , _dtacrLanguage = Nothing
+-- * 'dtacrCheckId'
+describeTrustedAdvisorCheckResult
+    :: Text -- ^ 'dtacrCheckId'
+    -> DescribeTrustedAdvisorCheckResult
+describeTrustedAdvisorCheckResult pCheckId_ =
+    DescribeTrustedAdvisorCheckResult'
+    { _dtacrLanguage = Nothing
+    , _dtacrCheckId = pCheckId_
     }
 
--- | The unique identifier for the Trusted Advisor check.
-dtacrCheckId :: Lens' DescribeTrustedAdvisorCheckResult Text
-dtacrCheckId = lens _dtacrCheckId (\s a -> s { _dtacrCheckId = a })
-
 -- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
 dtacrLanguage :: Lens' DescribeTrustedAdvisorCheckResult (Maybe Text)
-dtacrLanguage = lens _dtacrLanguage (\s a -> s { _dtacrLanguage = a })
+dtacrLanguage = lens _dtacrLanguage (\ s a -> s{_dtacrLanguage = a});
 
-newtype DescribeTrustedAdvisorCheckResultResponse = DescribeTrustedAdvisorCheckResultResponse
-    { _dtacrrResult :: Maybe TrustedAdvisorCheckResult
-    } deriving (Eq, Read, Show)
+-- | The unique identifier for the Trusted Advisor check.
+dtacrCheckId :: Lens' DescribeTrustedAdvisorCheckResult Text
+dtacrCheckId = lens _dtacrCheckId (\ s a -> s{_dtacrCheckId = a});
 
--- | 'DescribeTrustedAdvisorCheckResultResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtacrrResult' @::@ 'Maybe' 'TrustedAdvisorCheckResult'
---
-describeTrustedAdvisorCheckResultResponse :: DescribeTrustedAdvisorCheckResultResponse
-describeTrustedAdvisorCheckResultResponse = DescribeTrustedAdvisorCheckResultResponse
-    { _dtacrrResult = Nothing
-    }
+instance AWSRequest DescribeTrustedAdvisorCheckResult
+         where
+        type Sv DescribeTrustedAdvisorCheckResult = Support
+        type Rs DescribeTrustedAdvisorCheckResult =
+             DescribeTrustedAdvisorCheckResultResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTrustedAdvisorCheckResultResponse' <$>
+                   (x .?> "result") <*> (pure (fromEnum s)))
 
--- | The detailed results of the Trusted Advisor check.
-dtacrrResult :: Lens' DescribeTrustedAdvisorCheckResultResponse (Maybe TrustedAdvisorCheckResult)
-dtacrrResult = lens _dtacrrResult (\s a -> s { _dtacrrResult = a })
+instance ToHeaders DescribeTrustedAdvisorCheckResult
+         where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeTrustedAdvisorCheckResult"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-instance ToPath DescribeTrustedAdvisorCheckResult where
-    toPath = const "/"
+instance ToJSON DescribeTrustedAdvisorCheckResult
+         where
+        toJSON DescribeTrustedAdvisorCheckResult'{..}
+          = object
+              ["language" .= _dtacrLanguage,
+               "checkId" .= _dtacrCheckId]
 
-instance ToQuery DescribeTrustedAdvisorCheckResult where
-    toQuery = const mempty
+instance ToPath DescribeTrustedAdvisorCheckResult
+         where
+        toPath = const "/"
 
-instance ToHeaders DescribeTrustedAdvisorCheckResult
+instance ToQuery DescribeTrustedAdvisorCheckResult
+         where
+        toQuery = const mempty
 
-instance ToJSON DescribeTrustedAdvisorCheckResult where
-    toJSON DescribeTrustedAdvisorCheckResult{..} = object
-        [ "checkId"  .= _dtacrCheckId
-        , "language" .= _dtacrLanguage
-        ]
+-- | The result of the Trusted Advisor check returned by the
+-- DescribeTrustedAdvisorCheckResult operation.
+--
+-- /See:/ 'describeTrustedAdvisorCheckResultResponse' smart constructor.
+data DescribeTrustedAdvisorCheckResultResponse = DescribeTrustedAdvisorCheckResultResponse'
+    { _dtacrrsResult :: !(Maybe TrustedAdvisorCheckResult)
+    , _dtacrrsStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTrustedAdvisorCheckResult where
-    type Sv DescribeTrustedAdvisorCheckResult = Support
-    type Rs DescribeTrustedAdvisorCheckResult = DescribeTrustedAdvisorCheckResultResponse
+-- | Creates a value of 'DescribeTrustedAdvisorCheckResultResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtacrrsResult'
+--
+-- * 'dtacrrsStatus'
+describeTrustedAdvisorCheckResultResponse
+    :: Int -- ^ 'dtacrrsStatus'
+    -> DescribeTrustedAdvisorCheckResultResponse
+describeTrustedAdvisorCheckResultResponse pStatus_ =
+    DescribeTrustedAdvisorCheckResultResponse'
+    { _dtacrrsResult = Nothing
+    , _dtacrrsStatus = pStatus_
+    }
 
-    request  = post "DescribeTrustedAdvisorCheckResult"
-    response = jsonResponse
+-- | The detailed results of the Trusted Advisor check.
+dtacrrsResult :: Lens' DescribeTrustedAdvisorCheckResultResponse (Maybe TrustedAdvisorCheckResult)
+dtacrrsResult = lens _dtacrrsResult (\ s a -> s{_dtacrrsResult = a});
 
-instance FromJSON DescribeTrustedAdvisorCheckResultResponse where
-    parseJSON = withObject "DescribeTrustedAdvisorCheckResultResponse" $ \o -> DescribeTrustedAdvisorCheckResultResponse
-        <$> o .:? "result"
+-- | The response status code.
+dtacrrsStatus :: Lens' DescribeTrustedAdvisorCheckResultResponse Int
+dtacrrsStatus = lens _dtacrrsStatus (\ s a -> s{_dtacrrsStatus = a});
diff --git a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckSummaries.hs b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckSummaries.hs
--- a/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckSummaries.hs
+++ b/gen/Network/AWS/Support/DescribeTrustedAdvisorCheckSummaries.hs
@@ -1,126 +1,140 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.Support.DescribeTrustedAdvisorCheckSummaries
--- 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 the summaries of the results of the Trusted Advisor checks that have
--- the specified check IDs. Check IDs can be obtained by calling 'DescribeTrustedAdvisorChecks'.
+-- Returns the summaries of the results of the Trusted Advisor checks that
+-- have the specified check IDs. Check IDs can be obtained by calling
+-- DescribeTrustedAdvisorChecks.
 --
--- The response contains an array of 'TrustedAdvisorCheckSummary' objects.
+-- The response contains an array of TrustedAdvisorCheckSummary objects.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckSummaries.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorCheckSummaries.html AWS API Reference> for DescribeTrustedAdvisorCheckSummaries.
 module Network.AWS.Support.DescribeTrustedAdvisorCheckSummaries
     (
-    -- * Request
-      DescribeTrustedAdvisorCheckSummaries
-    -- ** Request constructor
-    , describeTrustedAdvisorCheckSummaries
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTrustedAdvisorCheckSummaries
+    , DescribeTrustedAdvisorCheckSummaries
+    -- * Request Lenses
     , dtacsCheckIds
 
-    -- * Response
-    , DescribeTrustedAdvisorCheckSummariesResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTrustedAdvisorCheckSummariesResponse
-    -- ** Response lenses
-    , dtacsrSummaries
+    , DescribeTrustedAdvisorCheckSummariesResponse
+    -- * Response Lenses
+    , dtacsrsStatus
+    , dtacsrsSummaries
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
-
-newtype DescribeTrustedAdvisorCheckSummaries = DescribeTrustedAdvisorCheckSummaries
-    { _dtacsCheckIds :: List "checkIds" Text
-    } deriving (Eq, Ord, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTrustedAdvisorCheckSummaries where
-    type Item DescribeTrustedAdvisorCheckSummaries = Text
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-    fromList = DescribeTrustedAdvisorCheckSummaries . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtacsCheckIds
+-- | /See:/ 'describeTrustedAdvisorCheckSummaries' smart constructor.
+newtype DescribeTrustedAdvisorCheckSummaries = DescribeTrustedAdvisorCheckSummaries'
+    { _dtacsCheckIds :: [Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTrustedAdvisorCheckSummaries' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTrustedAdvisorCheckSummaries' with the minimum fields required to make a request.
 --
--- * 'dtacsCheckIds' @::@ ['Text']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTrustedAdvisorCheckSummaries :: DescribeTrustedAdvisorCheckSummaries
-describeTrustedAdvisorCheckSummaries = DescribeTrustedAdvisorCheckSummaries
+-- * 'dtacsCheckIds'
+describeTrustedAdvisorCheckSummaries
+    :: DescribeTrustedAdvisorCheckSummaries
+describeTrustedAdvisorCheckSummaries =
+    DescribeTrustedAdvisorCheckSummaries'
     { _dtacsCheckIds = mempty
     }
 
 -- | The IDs of the Trusted Advisor checks.
 dtacsCheckIds :: Lens' DescribeTrustedAdvisorCheckSummaries [Text]
-dtacsCheckIds = lens _dtacsCheckIds (\s a -> s { _dtacsCheckIds = a }) . _List
+dtacsCheckIds = lens _dtacsCheckIds (\ s a -> s{_dtacsCheckIds = a}) . _Coerce;
 
-newtype DescribeTrustedAdvisorCheckSummariesResponse = DescribeTrustedAdvisorCheckSummariesResponse
-    { _dtacsrSummaries :: List "summaries" TrustedAdvisorCheckSummary
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
+instance AWSRequest
+         DescribeTrustedAdvisorCheckSummaries where
+        type Sv DescribeTrustedAdvisorCheckSummaries =
+             Support
+        type Rs DescribeTrustedAdvisorCheckSummaries =
+             DescribeTrustedAdvisorCheckSummariesResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTrustedAdvisorCheckSummariesResponse' <$>
+                   (pure (fromEnum s)) <*>
+                     (x .?> "summaries" .!@ mempty))
 
-instance GHC.Exts.IsList DescribeTrustedAdvisorCheckSummariesResponse where
-    type Item DescribeTrustedAdvisorCheckSummariesResponse = TrustedAdvisorCheckSummary
+instance ToHeaders
+         DescribeTrustedAdvisorCheckSummaries where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeTrustedAdvisorCheckSummaries"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
-    fromList = DescribeTrustedAdvisorCheckSummariesResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtacsrSummaries
+instance ToJSON DescribeTrustedAdvisorCheckSummaries
+         where
+        toJSON DescribeTrustedAdvisorCheckSummaries'{..}
+          = object ["checkIds" .= _dtacsCheckIds]
 
--- | 'DescribeTrustedAdvisorCheckSummariesResponse' constructor.
+instance ToPath DescribeTrustedAdvisorCheckSummaries
+         where
+        toPath = const "/"
+
+instance ToQuery DescribeTrustedAdvisorCheckSummaries
+         where
+        toQuery = const mempty
+
+-- | The summaries of the Trusted Advisor checks returned by the
+-- DescribeTrustedAdvisorCheckSummaries operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'describeTrustedAdvisorCheckSummariesResponse' smart constructor.
+data DescribeTrustedAdvisorCheckSummariesResponse = DescribeTrustedAdvisorCheckSummariesResponse'
+    { _dtacsrsStatus    :: !Int
+    , _dtacsrsSummaries :: ![TrustedAdvisorCheckSummary]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeTrustedAdvisorCheckSummariesResponse' with the minimum fields required to make a request.
 --
--- * 'dtacsrSummaries' @::@ ['TrustedAdvisorCheckSummary']
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTrustedAdvisorCheckSummariesResponse :: DescribeTrustedAdvisorCheckSummariesResponse
-describeTrustedAdvisorCheckSummariesResponse = DescribeTrustedAdvisorCheckSummariesResponse
-    { _dtacsrSummaries = mempty
+-- * 'dtacsrsStatus'
+--
+-- * 'dtacsrsSummaries'
+describeTrustedAdvisorCheckSummariesResponse
+    :: Int -- ^ 'dtacsrsStatus'
+    -> DescribeTrustedAdvisorCheckSummariesResponse
+describeTrustedAdvisorCheckSummariesResponse pStatus_ =
+    DescribeTrustedAdvisorCheckSummariesResponse'
+    { _dtacsrsStatus = pStatus_
+    , _dtacsrsSummaries = mempty
     }
 
--- | The summary information for the requested Trusted Advisor checks.
-dtacsrSummaries :: Lens' DescribeTrustedAdvisorCheckSummariesResponse [TrustedAdvisorCheckSummary]
-dtacsrSummaries = lens _dtacsrSummaries (\s a -> s { _dtacsrSummaries = a }) . _List
-
-instance ToPath DescribeTrustedAdvisorCheckSummaries where
-    toPath = const "/"
-
-instance ToQuery DescribeTrustedAdvisorCheckSummaries where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTrustedAdvisorCheckSummaries
-
-instance ToJSON DescribeTrustedAdvisorCheckSummaries where
-    toJSON DescribeTrustedAdvisorCheckSummaries{..} = object
-        [ "checkIds" .= _dtacsCheckIds
-        ]
-
-instance AWSRequest DescribeTrustedAdvisorCheckSummaries where
-    type Sv DescribeTrustedAdvisorCheckSummaries = Support
-    type Rs DescribeTrustedAdvisorCheckSummaries = DescribeTrustedAdvisorCheckSummariesResponse
-
-    request  = post "DescribeTrustedAdvisorCheckSummaries"
-    response = jsonResponse
+-- | The response status code.
+dtacsrsStatus :: Lens' DescribeTrustedAdvisorCheckSummariesResponse Int
+dtacsrsStatus = lens _dtacsrsStatus (\ s a -> s{_dtacsrsStatus = a});
 
-instance FromJSON DescribeTrustedAdvisorCheckSummariesResponse where
-    parseJSON = withObject "DescribeTrustedAdvisorCheckSummariesResponse" $ \o -> DescribeTrustedAdvisorCheckSummariesResponse
-        <$> o .:? "summaries" .!= mempty
+-- | The summary information for the requested Trusted Advisor checks.
+dtacsrsSummaries :: Lens' DescribeTrustedAdvisorCheckSummariesResponse [TrustedAdvisorCheckSummary]
+dtacsrsSummaries = lens _dtacsrsSummaries (\ s a -> s{_dtacsrsSummaries = a}) . _Coerce;
diff --git a/gen/Network/AWS/Support/DescribeTrustedAdvisorChecks.hs b/gen/Network/AWS/Support/DescribeTrustedAdvisorChecks.hs
--- a/gen/Network/AWS/Support/DescribeTrustedAdvisorChecks.hs
+++ b/gen/Network/AWS/Support/DescribeTrustedAdvisorChecks.hs
@@ -1,123 +1,138 @@
-{-# 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.Support.DescribeTrustedAdvisorChecks
--- 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 information about all available Trusted Advisor checks, including
--- name, ID, category, description, and metadata. You must specify a language
--- code; English ("en") and Japanese ("ja") are currently supported. The
--- response contains a 'TrustedAdvisorCheckDescription' for each check.
+-- Returns information about all available Trusted Advisor checks,
+-- including name, ID, category, description, and metadata. You must
+-- specify a language code; English (\"en\") and Japanese (\"ja\") are
+-- currently supported. The response contains a
+-- TrustedAdvisorCheckDescription for each check.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_DescribeTrustedAdvisorChecks.html AWS API Reference> for DescribeTrustedAdvisorChecks.
 module Network.AWS.Support.DescribeTrustedAdvisorChecks
     (
-    -- * Request
-      DescribeTrustedAdvisorChecks
-    -- ** Request constructor
-    , describeTrustedAdvisorChecks
-    -- ** Request lenses
+    -- * Creating a Request
+      describeTrustedAdvisorChecks
+    , DescribeTrustedAdvisorChecks
+    -- * Request Lenses
     , dtacLanguage
 
-    -- * Response
-    , DescribeTrustedAdvisorChecksResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , describeTrustedAdvisorChecksResponse
-    -- ** Response lenses
-    , dtacrChecks
+    , DescribeTrustedAdvisorChecksResponse
+    -- * Response Lenses
+    , dtacrsStatus
+    , dtacrsChecks
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-newtype DescribeTrustedAdvisorChecks = DescribeTrustedAdvisorChecks
+-- | /See:/ 'describeTrustedAdvisorChecks' smart constructor.
+newtype DescribeTrustedAdvisorChecks = DescribeTrustedAdvisorChecks'
     { _dtacLanguage :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'DescribeTrustedAdvisorChecks' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'DescribeTrustedAdvisorChecks' with the minimum fields required to make a request.
 --
--- * 'dtacLanguage' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-describeTrustedAdvisorChecks :: Text -- ^ 'dtacLanguage'
-                             -> DescribeTrustedAdvisorChecks
-describeTrustedAdvisorChecks p1 = DescribeTrustedAdvisorChecks
-    { _dtacLanguage = p1
+-- * 'dtacLanguage'
+describeTrustedAdvisorChecks
+    :: Text -- ^ 'dtacLanguage'
+    -> DescribeTrustedAdvisorChecks
+describeTrustedAdvisorChecks pLanguage_ =
+    DescribeTrustedAdvisorChecks'
+    { _dtacLanguage = pLanguage_
     }
 
 -- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
 dtacLanguage :: Lens' DescribeTrustedAdvisorChecks Text
-dtacLanguage = lens _dtacLanguage (\s a -> s { _dtacLanguage = a })
-
-newtype DescribeTrustedAdvisorChecksResponse = DescribeTrustedAdvisorChecksResponse
-    { _dtacrChecks :: List "checks" TrustedAdvisorCheckDescription
-    } deriving (Eq, Read, Show, Monoid, Semigroup)
-
-instance GHC.Exts.IsList DescribeTrustedAdvisorChecksResponse where
-    type Item DescribeTrustedAdvisorChecksResponse = TrustedAdvisorCheckDescription
+dtacLanguage = lens _dtacLanguage (\ s a -> s{_dtacLanguage = a});
 
-    fromList = DescribeTrustedAdvisorChecksResponse . GHC.Exts.fromList
-    toList   = GHC.Exts.toList . _dtacrChecks
+instance AWSRequest DescribeTrustedAdvisorChecks
+         where
+        type Sv DescribeTrustedAdvisorChecks = Support
+        type Rs DescribeTrustedAdvisorChecks =
+             DescribeTrustedAdvisorChecksResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 DescribeTrustedAdvisorChecksResponse' <$>
+                   (pure (fromEnum s)) <*> (x .?> "checks" .!@ mempty))
 
--- | 'DescribeTrustedAdvisorChecksResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'dtacrChecks' @::@ ['TrustedAdvisorCheckDescription']
---
-describeTrustedAdvisorChecksResponse :: DescribeTrustedAdvisorChecksResponse
-describeTrustedAdvisorChecksResponse = DescribeTrustedAdvisorChecksResponse
-    { _dtacrChecks = mempty
-    }
+instance ToHeaders DescribeTrustedAdvisorChecks where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.DescribeTrustedAdvisorChecks"
+                       :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | Information about all available Trusted Advisor checks.
-dtacrChecks :: Lens' DescribeTrustedAdvisorChecksResponse [TrustedAdvisorCheckDescription]
-dtacrChecks = lens _dtacrChecks (\s a -> s { _dtacrChecks = a }) . _List
+instance ToJSON DescribeTrustedAdvisorChecks where
+        toJSON DescribeTrustedAdvisorChecks'{..}
+          = object ["language" .= _dtacLanguage]
 
 instance ToPath DescribeTrustedAdvisorChecks where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery DescribeTrustedAdvisorChecks where
-    toQuery = const mempty
-
-instance ToHeaders DescribeTrustedAdvisorChecks
+        toQuery = const mempty
 
-instance ToJSON DescribeTrustedAdvisorChecks where
-    toJSON DescribeTrustedAdvisorChecks{..} = object
-        [ "language" .= _dtacLanguage
-        ]
+-- | Information about the Trusted Advisor checks returned by the
+-- DescribeTrustedAdvisorChecks operation.
+--
+-- /See:/ 'describeTrustedAdvisorChecksResponse' smart constructor.
+data DescribeTrustedAdvisorChecksResponse = DescribeTrustedAdvisorChecksResponse'
+    { _dtacrsStatus :: !Int
+    , _dtacrsChecks :: ![TrustedAdvisorCheckDescription]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest DescribeTrustedAdvisorChecks where
-    type Sv DescribeTrustedAdvisorChecks = Support
-    type Rs DescribeTrustedAdvisorChecks = DescribeTrustedAdvisorChecksResponse
+-- | Creates a value of 'DescribeTrustedAdvisorChecksResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dtacrsStatus'
+--
+-- * 'dtacrsChecks'
+describeTrustedAdvisorChecksResponse
+    :: Int -- ^ 'dtacrsStatus'
+    -> DescribeTrustedAdvisorChecksResponse
+describeTrustedAdvisorChecksResponse pStatus_ =
+    DescribeTrustedAdvisorChecksResponse'
+    { _dtacrsStatus = pStatus_
+    , _dtacrsChecks = mempty
+    }
 
-    request  = post "DescribeTrustedAdvisorChecks"
-    response = jsonResponse
+-- | The response status code.
+dtacrsStatus :: Lens' DescribeTrustedAdvisorChecksResponse Int
+dtacrsStatus = lens _dtacrsStatus (\ s a -> s{_dtacrsStatus = a});
 
-instance FromJSON DescribeTrustedAdvisorChecksResponse where
-    parseJSON = withObject "DescribeTrustedAdvisorChecksResponse" $ \o -> DescribeTrustedAdvisorChecksResponse
-        <$> o .:? "checks" .!= mempty
+-- | Information about all available Trusted Advisor checks.
+dtacrsChecks :: Lens' DescribeTrustedAdvisorChecksResponse [TrustedAdvisorCheckDescription]
+dtacrsChecks = lens _dtacrsChecks (\ s a -> s{_dtacrsChecks = a}) . _Coerce;
diff --git a/gen/Network/AWS/Support/RefreshTrustedAdvisorCheck.hs b/gen/Network/AWS/Support/RefreshTrustedAdvisorCheck.hs
--- a/gen/Network/AWS/Support/RefreshTrustedAdvisorCheck.hs
+++ b/gen/Network/AWS/Support/RefreshTrustedAdvisorCheck.hs
@@ -1,123 +1,131 @@
-{-# 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.Support.RefreshTrustedAdvisorCheck
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | Requests a refresh of the Trusted Advisor check that has the specified check
--- ID. Check IDs can be obtained by calling 'DescribeTrustedAdvisorChecks'.
+-- Requests a refresh of the Trusted Advisor check that has the specified
+-- check ID. Check IDs can be obtained by calling
+-- DescribeTrustedAdvisorChecks.
 --
--- The response contains a 'TrustedAdvisorCheckRefreshStatus' object, which
+-- The response contains a TrustedAdvisorCheckRefreshStatus object, which
 -- contains these fields:
 --
--- Status. The refresh status of the check: "none", "enqueued", "processing",
--- "success", or "abandoned".  MillisUntilNextRefreshable. The amount of time,
--- in milliseconds, until the check is eligible for refresh.  CheckId. The
--- unique identifier for the check.
+-- -   __Status.__ The refresh status of the check: \"none\", \"enqueued\",
+--     \"processing\", \"success\", or \"abandoned\".
+-- -   __MillisUntilNextRefreshable.__ The amount of time, in milliseconds,
+--     until the check is eligible for refresh.
+-- -   __CheckId.__ The unique identifier for the check.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_RefreshTrustedAdvisorCheck.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_RefreshTrustedAdvisorCheck.html AWS API Reference> for RefreshTrustedAdvisorCheck.
 module Network.AWS.Support.RefreshTrustedAdvisorCheck
     (
-    -- * Request
-      RefreshTrustedAdvisorCheck
-    -- ** Request constructor
-    , refreshTrustedAdvisorCheck
-    -- ** Request lenses
+    -- * Creating a Request
+      refreshTrustedAdvisorCheck
+    , RefreshTrustedAdvisorCheck
+    -- * Request Lenses
     , rtacCheckId
 
-    -- * Response
-    , RefreshTrustedAdvisorCheckResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , refreshTrustedAdvisorCheckResponse
-    -- ** Response lenses
-    , rtacrStatus
+    , RefreshTrustedAdvisorCheckResponse
+    -- * Response Lenses
+    , rtacrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-newtype RefreshTrustedAdvisorCheck = RefreshTrustedAdvisorCheck
+-- | /See:/ 'refreshTrustedAdvisorCheck' smart constructor.
+newtype RefreshTrustedAdvisorCheck = RefreshTrustedAdvisorCheck'
     { _rtacCheckId :: Text
-    } deriving (Eq, Ord, Read, Show, Monoid, IsString)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'RefreshTrustedAdvisorCheck' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'RefreshTrustedAdvisorCheck' with the minimum fields required to make a request.
 --
--- * 'rtacCheckId' @::@ 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-refreshTrustedAdvisorCheck :: Text -- ^ 'rtacCheckId'
-                           -> RefreshTrustedAdvisorCheck
-refreshTrustedAdvisorCheck p1 = RefreshTrustedAdvisorCheck
-    { _rtacCheckId = p1
+-- * 'rtacCheckId'
+refreshTrustedAdvisorCheck
+    :: Text -- ^ 'rtacCheckId'
+    -> RefreshTrustedAdvisorCheck
+refreshTrustedAdvisorCheck pCheckId_ =
+    RefreshTrustedAdvisorCheck'
+    { _rtacCheckId = pCheckId_
     }
 
 -- | The unique identifier for the Trusted Advisor check.
 rtacCheckId :: Lens' RefreshTrustedAdvisorCheck Text
-rtacCheckId = lens _rtacCheckId (\s a -> s { _rtacCheckId = a })
+rtacCheckId = lens _rtacCheckId (\ s a -> s{_rtacCheckId = a});
 
-newtype RefreshTrustedAdvisorCheckResponse = RefreshTrustedAdvisorCheckResponse
-    { _rtacrStatus :: TrustedAdvisorCheckRefreshStatus
-    } deriving (Eq, Read, Show)
+instance AWSRequest RefreshTrustedAdvisorCheck where
+        type Sv RefreshTrustedAdvisorCheck = Support
+        type Rs RefreshTrustedAdvisorCheck =
+             RefreshTrustedAdvisorCheckResponse
+        request = postJSON
+        response
+          = receiveEmpty
+              (\ s h x ->
+                 RefreshTrustedAdvisorCheckResponse' <$>
+                   (pure (fromEnum s)))
 
--- | 'RefreshTrustedAdvisorCheckResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rtacrStatus' @::@ 'TrustedAdvisorCheckRefreshStatus'
---
-refreshTrustedAdvisorCheckResponse :: TrustedAdvisorCheckRefreshStatus -- ^ 'rtacrStatus'
-                                   -> RefreshTrustedAdvisorCheckResponse
-refreshTrustedAdvisorCheckResponse p1 = RefreshTrustedAdvisorCheckResponse
-    { _rtacrStatus = p1
-    }
+instance ToHeaders RefreshTrustedAdvisorCheck where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.RefreshTrustedAdvisorCheck" ::
+                       ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The current refresh status for a check, including the amount of time until
--- the check is eligible for refresh.
-rtacrStatus :: Lens' RefreshTrustedAdvisorCheckResponse TrustedAdvisorCheckRefreshStatus
-rtacrStatus = lens _rtacrStatus (\s a -> s { _rtacrStatus = a })
+instance ToJSON RefreshTrustedAdvisorCheck where
+        toJSON RefreshTrustedAdvisorCheck'{..}
+          = object ["checkId" .= _rtacCheckId]
 
 instance ToPath RefreshTrustedAdvisorCheck where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery RefreshTrustedAdvisorCheck where
-    toQuery = const mempty
-
-instance ToHeaders RefreshTrustedAdvisorCheck
-
-instance ToJSON RefreshTrustedAdvisorCheck where
-    toJSON RefreshTrustedAdvisorCheck{..} = object
-        [ "checkId" .= _rtacCheckId
-        ]
+        toQuery = const mempty
 
-instance AWSRequest RefreshTrustedAdvisorCheck where
-    type Sv RefreshTrustedAdvisorCheck = Support
-    type Rs RefreshTrustedAdvisorCheck = RefreshTrustedAdvisorCheckResponse
+-- | The current refresh status of a Trusted Advisor check.
+--
+-- /See:/ 'refreshTrustedAdvisorCheckResponse' smart constructor.
+newtype RefreshTrustedAdvisorCheckResponse = RefreshTrustedAdvisorCheckResponse'
+    { _rtacrsStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-    request  = post "RefreshTrustedAdvisorCheck"
-    response = jsonResponse
+-- | Creates a value of 'RefreshTrustedAdvisorCheckResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rtacrsStatus'
+refreshTrustedAdvisorCheckResponse
+    :: Int -- ^ 'rtacrsStatus'
+    -> RefreshTrustedAdvisorCheckResponse
+refreshTrustedAdvisorCheckResponse pStatus_ =
+    RefreshTrustedAdvisorCheckResponse'
+    { _rtacrsStatus = pStatus_
+    }
 
-instance FromJSON RefreshTrustedAdvisorCheckResponse where
-    parseJSON = withObject "RefreshTrustedAdvisorCheckResponse" $ \o -> RefreshTrustedAdvisorCheckResponse
-        <$> o .:  "status"
+-- | The response status code.
+rtacrsStatus :: Lens' RefreshTrustedAdvisorCheckResponse Int
+rtacrsStatus = lens _rtacrsStatus (\ s a -> s{_rtacrsStatus = a});
diff --git a/gen/Network/AWS/Support/ResolveCase.hs b/gen/Network/AWS/Support/ResolveCase.hs
--- a/gen/Network/AWS/Support/ResolveCase.hs
+++ b/gen/Network/AWS/Support/ResolveCase.hs
@@ -1,125 +1,140 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.Support.ResolveCase
--- 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.
-
--- | Takes a 'CaseId' and returns the initial state of the case along with the state
--- of the case after the call to 'ResolveCase' completed.
+-- Takes a 'CaseId' and returns the initial state of the case along with
+-- the state of the case after the call to ResolveCase completed.
 --
--- <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_ResolveCase.html>
+-- /See:/ <http://docs.aws.amazon.com/awssupport/latest/APIReference/API_ResolveCase.html AWS API Reference> for ResolveCase.
 module Network.AWS.Support.ResolveCase
     (
-    -- * Request
-      ResolveCase
-    -- ** Request constructor
-    , resolveCase
-    -- ** Request lenses
+    -- * Creating a Request
+      resolveCase
+    , ResolveCase
+    -- * Request Lenses
     , rcCaseId
 
-    -- * Response
-    , ResolveCaseResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , resolveCaseResponse
-    -- ** Response lenses
-    , rcrFinalCaseStatus
-    , rcrInitialCaseStatus
+    , ResolveCaseResponse
+    -- * Response Lenses
+    , rcrsInitialCaseStatus
+    , rcrsFinalCaseStatus
+    , rcrsStatus
     ) where
 
-import Network.AWS.Data (Object)
-import Network.AWS.Prelude
-import Network.AWS.Request.JSON
-import Network.AWS.Support.Types
-import qualified GHC.Exts
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.Support.Types
+import           Network.AWS.Support.Types.Product
 
-newtype ResolveCase = ResolveCase
+-- | /See:/ 'resolveCase' smart constructor.
+newtype ResolveCase = ResolveCase'
     { _rcCaseId :: Maybe Text
-    } deriving (Eq, Ord, Read, Show, Monoid)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'ResolveCase' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'ResolveCase' with the minimum fields required to make a request.
 --
--- * 'rcCaseId' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
-resolveCase :: ResolveCase
-resolveCase = ResolveCase
+-- * 'rcCaseId'
+resolveCase
+    :: ResolveCase
+resolveCase =
+    ResolveCase'
     { _rcCaseId = Nothing
     }
 
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
 rcCaseId :: Lens' ResolveCase (Maybe Text)
-rcCaseId = lens _rcCaseId (\s a -> s { _rcCaseId = a })
-
-data ResolveCaseResponse = ResolveCaseResponse
-    { _rcrFinalCaseStatus   :: Maybe Text
-    , _rcrInitialCaseStatus :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+rcCaseId = lens _rcCaseId (\ s a -> s{_rcCaseId = a});
 
--- | 'ResolveCaseResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rcrFinalCaseStatus' @::@ 'Maybe' 'Text'
---
--- * 'rcrInitialCaseStatus' @::@ 'Maybe' 'Text'
---
-resolveCaseResponse :: ResolveCaseResponse
-resolveCaseResponse = ResolveCaseResponse
-    { _rcrInitialCaseStatus = Nothing
-    , _rcrFinalCaseStatus   = Nothing
-    }
+instance AWSRequest ResolveCase where
+        type Sv ResolveCase = Support
+        type Rs ResolveCase = ResolveCaseResponse
+        request = postJSON
+        response
+          = receiveJSON
+              (\ s h x ->
+                 ResolveCaseResponse' <$>
+                   (x .?> "initialCaseStatus") <*>
+                     (x .?> "finalCaseStatus")
+                     <*> (pure (fromEnum s)))
 
--- | The status of the case after the 'ResolveCase' request was processed.
-rcrFinalCaseStatus :: Lens' ResolveCaseResponse (Maybe Text)
-rcrFinalCaseStatus =
-    lens _rcrFinalCaseStatus (\s a -> s { _rcrFinalCaseStatus = a })
+instance ToHeaders ResolveCase where
+        toHeaders
+          = const
+              (mconcat
+                 ["X-Amz-Target" =#
+                    ("AWSSupport_20130415.ResolveCase" :: ByteString),
+                  "Content-Type" =#
+                    ("application/x-amz-json-1.1" :: ByteString)])
 
--- | The status of the case when the 'ResolveCase' request was sent.
-rcrInitialCaseStatus :: Lens' ResolveCaseResponse (Maybe Text)
-rcrInitialCaseStatus =
-    lens _rcrInitialCaseStatus (\s a -> s { _rcrInitialCaseStatus = a })
+instance ToJSON ResolveCase where
+        toJSON ResolveCase'{..}
+          = object ["caseId" .= _rcCaseId]
 
 instance ToPath ResolveCase where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ResolveCase where
-    toQuery = const mempty
+        toQuery = const mempty
 
-instance ToHeaders ResolveCase
+-- | The status of the case returned by the ResolveCase operation.
+--
+-- /See:/ 'resolveCaseResponse' smart constructor.
+data ResolveCaseResponse = ResolveCaseResponse'
+    { _rcrsInitialCaseStatus :: !(Maybe Text)
+    , _rcrsFinalCaseStatus   :: !(Maybe Text)
+    , _rcrsStatus            :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance ToJSON ResolveCase where
-    toJSON ResolveCase{..} = object
-        [ "caseId" .= _rcCaseId
-        ]
+-- | Creates a value of 'ResolveCaseResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rcrsInitialCaseStatus'
+--
+-- * 'rcrsFinalCaseStatus'
+--
+-- * 'rcrsStatus'
+resolveCaseResponse
+    :: Int -- ^ 'rcrsStatus'
+    -> ResolveCaseResponse
+resolveCaseResponse pStatus_ =
+    ResolveCaseResponse'
+    { _rcrsInitialCaseStatus = Nothing
+    , _rcrsFinalCaseStatus = Nothing
+    , _rcrsStatus = pStatus_
+    }
 
-instance AWSRequest ResolveCase where
-    type Sv ResolveCase = Support
-    type Rs ResolveCase = ResolveCaseResponse
+-- | The status of the case when the ResolveCase request was sent.
+rcrsInitialCaseStatus :: Lens' ResolveCaseResponse (Maybe Text)
+rcrsInitialCaseStatus = lens _rcrsInitialCaseStatus (\ s a -> s{_rcrsInitialCaseStatus = a});
 
-    request  = post "ResolveCase"
-    response = jsonResponse
+-- | The status of the case after the ResolveCase request was processed.
+rcrsFinalCaseStatus :: Lens' ResolveCaseResponse (Maybe Text)
+rcrsFinalCaseStatus = lens _rcrsFinalCaseStatus (\ s a -> s{_rcrsFinalCaseStatus = a});
 
-instance FromJSON ResolveCaseResponse where
-    parseJSON = withObject "ResolveCaseResponse" $ \o -> ResolveCaseResponse
-        <$> o .:? "finalCaseStatus"
-        <*> o .:? "initialCaseStatus"
+-- | The response status code.
+rcrsStatus :: Lens' ResolveCaseResponse Int
+rcrsStatus = lens _rcrsStatus (\ s a -> s{_rcrsStatus = a});
diff --git a/gen/Network/AWS/Support/Types.hs b/gen/Network/AWS/Support/Types.hs
--- a/gen/Network/AWS/Support/Types.hs
+++ b/gen/Network/AWS/Support/Types.hs
@@ -1,1193 +1,237 @@
-{-# 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.Support.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.Support.Types
-    (
-    -- * Service
-      Support
-    -- ** Error
-    , JSONError
-
-    -- * TrustedAdvisorResourcesSummary
-    , TrustedAdvisorResourcesSummary
-    , trustedAdvisorResourcesSummary
-    , tarsResourcesFlagged
-    , tarsResourcesIgnored
-    , tarsResourcesProcessed
-    , tarsResourcesSuppressed
-
-    -- * TrustedAdvisorCategorySpecificSummary
-    , TrustedAdvisorCategorySpecificSummary
-    , trustedAdvisorCategorySpecificSummary
-    , tacssCostOptimizing
-
-    -- * Communication
-    , Communication
-    , communication
-    , cAttachmentSet
-    , cBody
-    , cCaseId
-    , cSubmittedBy
-    , cTimeCreated
-
-    -- * Category
-    , Category
-    , category
-    , cCode
-    , cName
-
-    -- * TrustedAdvisorCheckSummary
-    , TrustedAdvisorCheckSummary
-    , trustedAdvisorCheckSummary
-    , tacsCategorySpecificSummary
-    , tacsCheckId
-    , tacsHasFlaggedResources
-    , tacsResourcesSummary
-    , tacsStatus
-    , tacsTimestamp
-
-    -- * AttachmentDetails
-    , AttachmentDetails
-    , attachmentDetails
-    , adAttachmentId
-    , adFileName
-
-    -- * TrustedAdvisorCheckResult
-    , TrustedAdvisorCheckResult
-    , trustedAdvisorCheckResult
-    , tacrCategorySpecificSummary
-    , tacrCheckId
-    , tacrFlaggedResources
-    , tacrResourcesSummary
-    , tacrStatus
-    , tacrTimestamp
-
-    -- * TrustedAdvisorCheckDescription
-    , TrustedAdvisorCheckDescription
-    , trustedAdvisorCheckDescription
-    , tacdCategory
-    , tacdDescription
-    , tacdId
-    , tacdMetadata
-    , tacdName
-
-    -- * Attachment
-    , Attachment
-    , attachment
-    , aData
-    , aFileName
-
-    -- * RecentCaseCommunications
-    , RecentCaseCommunications
-    , recentCaseCommunications
-    , rccCommunications
-    , rccNextToken
-
-    -- * SupportService
-    , SupportService
-    , supportService
-    , ssCategories
-    , ssCode
-    , ssName
-
-    -- * TrustedAdvisorResourceDetail
-    , TrustedAdvisorResourceDetail
-    , trustedAdvisorResourceDetail
-    , tardIsSuppressed
-    , tardMetadata
-    , tardRegion
-    , tardResourceId
-    , tardStatus
-
-    -- * TrustedAdvisorCostOptimizingSummary
-    , TrustedAdvisorCostOptimizingSummary
-    , trustedAdvisorCostOptimizingSummary
-    , tacosEstimatedMonthlySavings
-    , tacosEstimatedPercentMonthlySavings
-
-    -- * SeverityLevel
-    , SeverityLevel
-    , severityLevel
-    , slCode
-    , slName
-
-    -- * CaseDetails
-    , CaseDetails
-    , caseDetails
-    , cdCaseId
-    , cdCategoryCode
-    , cdCcEmailAddresses
-    , cdDisplayId
-    , cdLanguage
-    , cdRecentCommunications
-    , cdServiceCode
-    , cdSeverityCode
-    , cdStatus
-    , cdSubject
-    , cdSubmittedBy
-    , cdTimeCreated
-
-    -- * TrustedAdvisorCheckRefreshStatus
-    , TrustedAdvisorCheckRefreshStatus
-    , trustedAdvisorCheckRefreshStatus
-    , tacrsCheckId
-    , tacrsMillisUntilNextRefreshable
-    , tacrsStatus
-    ) where
-
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
-
--- | Version @2013-04-15@ of the Amazon Support service.
-data Support
-
-instance AWSService Support where
-    type Sg Support = V4
-    type Er Support = JSONError
-
-    service = service'
-      where
-        service' :: Service Support
-        service' = Service
-            { _svcAbbrev       = "Support"
-            , _svcPrefix       = "support"
-            , _svcVersion      = "2013-04-15"
-            , _svcTargetPrefix = Just "AWSSupport_20130415"
-            , _svcJSONVersion  = Just "1.1"
-            , _svcHandle       = handle
-            , _svcRetry        = retry
-            }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError JSONError)
-        handle = jsonError statusSuccess service'
-
-        retry :: Retry Support
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
-            , _retryAttempts = 5
-            , _retryCheck    = check
-            }
-
-        check :: Status
-              -> JSONError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-data TrustedAdvisorResourcesSummary = TrustedAdvisorResourcesSummary
-    { _tarsResourcesFlagged    :: Integer
-    , _tarsResourcesIgnored    :: Integer
-    , _tarsResourcesProcessed  :: Integer
-    , _tarsResourcesSuppressed :: Integer
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TrustedAdvisorResourcesSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tarsResourcesFlagged' @::@ 'Integer'
---
--- * 'tarsResourcesIgnored' @::@ 'Integer'
---
--- * 'tarsResourcesProcessed' @::@ 'Integer'
---
--- * 'tarsResourcesSuppressed' @::@ 'Integer'
---
-trustedAdvisorResourcesSummary :: Integer -- ^ 'tarsResourcesProcessed'
-                               -> Integer -- ^ 'tarsResourcesFlagged'
-                               -> Integer -- ^ 'tarsResourcesIgnored'
-                               -> Integer -- ^ 'tarsResourcesSuppressed'
-                               -> TrustedAdvisorResourcesSummary
-trustedAdvisorResourcesSummary p1 p2 p3 p4 = TrustedAdvisorResourcesSummary
-    { _tarsResourcesProcessed  = p1
-    , _tarsResourcesFlagged    = p2
-    , _tarsResourcesIgnored    = p3
-    , _tarsResourcesSuppressed = p4
-    }
-
--- | The number of AWS resources that were flagged (listed) by the Trusted Advisor
--- check.
-tarsResourcesFlagged :: Lens' TrustedAdvisorResourcesSummary Integer
-tarsResourcesFlagged =
-    lens _tarsResourcesFlagged (\s a -> s { _tarsResourcesFlagged = a })
-
--- | The number of AWS resources ignored by Trusted Advisor because information
--- was unavailable.
-tarsResourcesIgnored :: Lens' TrustedAdvisorResourcesSummary Integer
-tarsResourcesIgnored =
-    lens _tarsResourcesIgnored (\s a -> s { _tarsResourcesIgnored = a })
-
--- | The number of AWS resources that were analyzed by the Trusted Advisor check.
-tarsResourcesProcessed :: Lens' TrustedAdvisorResourcesSummary Integer
-tarsResourcesProcessed =
-    lens _tarsResourcesProcessed (\s a -> s { _tarsResourcesProcessed = a })
-
--- | The number of AWS resources ignored by Trusted Advisor because they were
--- marked as suppressed by the user.
-tarsResourcesSuppressed :: Lens' TrustedAdvisorResourcesSummary Integer
-tarsResourcesSuppressed =
-    lens _tarsResourcesSuppressed (\s a -> s { _tarsResourcesSuppressed = a })
-
-instance FromJSON TrustedAdvisorResourcesSummary where
-    parseJSON = withObject "TrustedAdvisorResourcesSummary" $ \o -> TrustedAdvisorResourcesSummary
-        <$> o .:  "resourcesFlagged"
-        <*> o .:  "resourcesIgnored"
-        <*> o .:  "resourcesProcessed"
-        <*> o .:  "resourcesSuppressed"
-
-instance ToJSON TrustedAdvisorResourcesSummary where
-    toJSON TrustedAdvisorResourcesSummary{..} = object
-        [ "resourcesProcessed"  .= _tarsResourcesProcessed
-        , "resourcesFlagged"    .= _tarsResourcesFlagged
-        , "resourcesIgnored"    .= _tarsResourcesIgnored
-        , "resourcesSuppressed" .= _tarsResourcesSuppressed
-        ]
-
-newtype TrustedAdvisorCategorySpecificSummary = TrustedAdvisorCategorySpecificSummary
-    { _tacssCostOptimizing :: Maybe TrustedAdvisorCostOptimizingSummary
-    } deriving (Eq, Read, Show)
-
--- | 'TrustedAdvisorCategorySpecificSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacssCostOptimizing' @::@ 'Maybe' 'TrustedAdvisorCostOptimizingSummary'
---
-trustedAdvisorCategorySpecificSummary :: TrustedAdvisorCategorySpecificSummary
-trustedAdvisorCategorySpecificSummary = TrustedAdvisorCategorySpecificSummary
-    { _tacssCostOptimizing = Nothing
-    }
-
--- | The summary information about cost savings for a Trusted Advisor check that
--- is in the Cost Optimizing category.
-tacssCostOptimizing :: Lens' TrustedAdvisorCategorySpecificSummary (Maybe TrustedAdvisorCostOptimizingSummary)
-tacssCostOptimizing =
-    lens _tacssCostOptimizing (\s a -> s { _tacssCostOptimizing = a })
-
-instance FromJSON TrustedAdvisorCategorySpecificSummary where
-    parseJSON = withObject "TrustedAdvisorCategorySpecificSummary" $ \o -> TrustedAdvisorCategorySpecificSummary
-        <$> o .:? "costOptimizing"
-
-instance ToJSON TrustedAdvisorCategorySpecificSummary where
-    toJSON TrustedAdvisorCategorySpecificSummary{..} = object
-        [ "costOptimizing" .= _tacssCostOptimizing
-        ]
-
-data Communication = Communication
-    { _cAttachmentSet :: List "attachmentSet" AttachmentDetails
-    , _cBody          :: Maybe Text
-    , _cCaseId        :: Maybe Text
-    , _cSubmittedBy   :: Maybe Text
-    , _cTimeCreated   :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Communication' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cAttachmentSet' @::@ ['AttachmentDetails']
---
--- * 'cBody' @::@ 'Maybe' 'Text'
---
--- * 'cCaseId' @::@ 'Maybe' 'Text'
---
--- * 'cSubmittedBy' @::@ 'Maybe' 'Text'
---
--- * 'cTimeCreated' @::@ 'Maybe' 'Text'
---
-communication :: Communication
-communication = Communication
-    { _cCaseId        = Nothing
-    , _cBody          = Nothing
-    , _cSubmittedBy   = Nothing
-    , _cTimeCreated   = Nothing
-    , _cAttachmentSet = mempty
-    }
-
--- | Information about the attachments to the case communication.
-cAttachmentSet :: Lens' Communication [AttachmentDetails]
-cAttachmentSet = lens _cAttachmentSet (\s a -> s { _cAttachmentSet = a }) . _List
-
--- | The text of the communication between the customer and AWS Support.
-cBody :: Lens' Communication (Maybe Text)
-cBody = lens _cBody (\s a -> s { _cBody = a })
-
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
-cCaseId :: Lens' Communication (Maybe Text)
-cCaseId = lens _cCaseId (\s a -> s { _cCaseId = a })
-
--- | The email address of the account that submitted the AWS Support case.
-cSubmittedBy :: Lens' Communication (Maybe Text)
-cSubmittedBy = lens _cSubmittedBy (\s a -> s { _cSubmittedBy = a })
-
--- | The time the communication was created.
-cTimeCreated :: Lens' Communication (Maybe Text)
-cTimeCreated = lens _cTimeCreated (\s a -> s { _cTimeCreated = a })
-
-instance FromJSON Communication where
-    parseJSON = withObject "Communication" $ \o -> Communication
-        <$> o .:? "attachmentSet" .!= mempty
-        <*> o .:? "body"
-        <*> o .:? "caseId"
-        <*> o .:? "submittedBy"
-        <*> o .:? "timeCreated"
-
-instance ToJSON Communication where
-    toJSON Communication{..} = object
-        [ "caseId"        .= _cCaseId
-        , "body"          .= _cBody
-        , "submittedBy"   .= _cSubmittedBy
-        , "timeCreated"   .= _cTimeCreated
-        , "attachmentSet" .= _cAttachmentSet
-        ]
-
-data Category = Category
-    { _cCode :: Maybe Text
-    , _cName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'Category' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cCode' @::@ 'Maybe' 'Text'
---
--- * 'cName' @::@ 'Maybe' 'Text'
---
-category :: Category
-category = Category
-    { _cCode = Nothing
-    , _cName = Nothing
-    }
-
--- | The category code for the support case.
-cCode :: Lens' Category (Maybe Text)
-cCode = lens _cCode (\s a -> s { _cCode = a })
-
--- | The category name for the support case.
-cName :: Lens' Category (Maybe Text)
-cName = lens _cName (\s a -> s { _cName = a })
-
-instance FromJSON Category where
-    parseJSON = withObject "Category" $ \o -> Category
-        <$> o .:? "code"
-        <*> o .:? "name"
-
-instance ToJSON Category where
-    toJSON Category{..} = object
-        [ "code" .= _cCode
-        , "name" .= _cName
-        ]
-
-data TrustedAdvisorCheckSummary = TrustedAdvisorCheckSummary
-    { _tacsCategorySpecificSummary :: TrustedAdvisorCategorySpecificSummary
-    , _tacsCheckId                 :: Text
-    , _tacsHasFlaggedResources     :: Maybe Bool
-    , _tacsResourcesSummary        :: TrustedAdvisorResourcesSummary
-    , _tacsStatus                  :: Text
-    , _tacsTimestamp               :: Text
-    } deriving (Eq, Read, Show)
-
--- | 'TrustedAdvisorCheckSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacsCategorySpecificSummary' @::@ 'TrustedAdvisorCategorySpecificSummary'
---
--- * 'tacsCheckId' @::@ 'Text'
---
--- * 'tacsHasFlaggedResources' @::@ 'Maybe' 'Bool'
---
--- * 'tacsResourcesSummary' @::@ 'TrustedAdvisorResourcesSummary'
---
--- * 'tacsStatus' @::@ 'Text'
---
--- * 'tacsTimestamp' @::@ 'Text'
---
-trustedAdvisorCheckSummary :: Text -- ^ 'tacsCheckId'
-                           -> Text -- ^ 'tacsTimestamp'
-                           -> Text -- ^ 'tacsStatus'
-                           -> TrustedAdvisorResourcesSummary -- ^ 'tacsResourcesSummary'
-                           -> TrustedAdvisorCategorySpecificSummary -- ^ 'tacsCategorySpecificSummary'
-                           -> TrustedAdvisorCheckSummary
-trustedAdvisorCheckSummary p1 p2 p3 p4 p5 = TrustedAdvisorCheckSummary
-    { _tacsCheckId                 = p1
-    , _tacsTimestamp               = p2
-    , _tacsStatus                  = p3
-    , _tacsResourcesSummary        = p4
-    , _tacsCategorySpecificSummary = p5
-    , _tacsHasFlaggedResources     = Nothing
-    }
-
--- | Summary information that relates to the category of the check. Cost
--- Optimizing is the only category that is currently supported.
-tacsCategorySpecificSummary :: Lens' TrustedAdvisorCheckSummary TrustedAdvisorCategorySpecificSummary
-tacsCategorySpecificSummary =
-    lens _tacsCategorySpecificSummary
-        (\s a -> s { _tacsCategorySpecificSummary = a })
-
--- | The unique identifier for the Trusted Advisor check.
-tacsCheckId :: Lens' TrustedAdvisorCheckSummary Text
-tacsCheckId = lens _tacsCheckId (\s a -> s { _tacsCheckId = a })
-
--- | Specifies whether the Trusted Advisor check has flagged resources.
-tacsHasFlaggedResources :: Lens' TrustedAdvisorCheckSummary (Maybe Bool)
-tacsHasFlaggedResources =
-    lens _tacsHasFlaggedResources (\s a -> s { _tacsHasFlaggedResources = a })
-
-tacsResourcesSummary :: Lens' TrustedAdvisorCheckSummary TrustedAdvisorResourcesSummary
-tacsResourcesSummary =
-    lens _tacsResourcesSummary (\s a -> s { _tacsResourcesSummary = a })
-
--- | The alert status of the check: "ok" (green), "warning" (yellow), "error"
--- (red), or "not_available".
-tacsStatus :: Lens' TrustedAdvisorCheckSummary Text
-tacsStatus = lens _tacsStatus (\s a -> s { _tacsStatus = a })
-
--- | The time of the last refresh of the check.
-tacsTimestamp :: Lens' TrustedAdvisorCheckSummary Text
-tacsTimestamp = lens _tacsTimestamp (\s a -> s { _tacsTimestamp = a })
-
-instance FromJSON TrustedAdvisorCheckSummary where
-    parseJSON = withObject "TrustedAdvisorCheckSummary" $ \o -> TrustedAdvisorCheckSummary
-        <$> o .:  "categorySpecificSummary"
-        <*> o .:  "checkId"
-        <*> o .:? "hasFlaggedResources"
-        <*> o .:  "resourcesSummary"
-        <*> o .:  "status"
-        <*> o .:  "timestamp"
-
-instance ToJSON TrustedAdvisorCheckSummary where
-    toJSON TrustedAdvisorCheckSummary{..} = object
-        [ "checkId"                 .= _tacsCheckId
-        , "timestamp"               .= _tacsTimestamp
-        , "status"                  .= _tacsStatus
-        , "hasFlaggedResources"     .= _tacsHasFlaggedResources
-        , "resourcesSummary"        .= _tacsResourcesSummary
-        , "categorySpecificSummary" .= _tacsCategorySpecificSummary
-        ]
-
-data AttachmentDetails = AttachmentDetails
-    { _adAttachmentId :: Maybe Text
-    , _adFileName     :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'AttachmentDetails' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'adAttachmentId' @::@ 'Maybe' 'Text'
---
--- * 'adFileName' @::@ 'Maybe' 'Text'
---
-attachmentDetails :: AttachmentDetails
-attachmentDetails = AttachmentDetails
-    { _adAttachmentId = Nothing
-    , _adFileName     = Nothing
-    }
-
--- | The ID of the attachment.
-adAttachmentId :: Lens' AttachmentDetails (Maybe Text)
-adAttachmentId = lens _adAttachmentId (\s a -> s { _adAttachmentId = a })
-
--- | The file name of the attachment.
-adFileName :: Lens' AttachmentDetails (Maybe Text)
-adFileName = lens _adFileName (\s a -> s { _adFileName = a })
-
-instance FromJSON AttachmentDetails where
-    parseJSON = withObject "AttachmentDetails" $ \o -> AttachmentDetails
-        <$> o .:? "attachmentId"
-        <*> o .:? "fileName"
-
-instance ToJSON AttachmentDetails where
-    toJSON AttachmentDetails{..} = object
-        [ "attachmentId" .= _adAttachmentId
-        , "fileName"     .= _adFileName
-        ]
-
-data TrustedAdvisorCheckResult = TrustedAdvisorCheckResult
-    { _tacrCategorySpecificSummary :: TrustedAdvisorCategorySpecificSummary
-    , _tacrCheckId                 :: Text
-    , _tacrFlaggedResources        :: List "flaggedResources" TrustedAdvisorResourceDetail
-    , _tacrResourcesSummary        :: TrustedAdvisorResourcesSummary
-    , _tacrStatus                  :: Text
-    , _tacrTimestamp               :: Text
-    } deriving (Eq, Read, Show)
-
--- | 'TrustedAdvisorCheckResult' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacrCategorySpecificSummary' @::@ 'TrustedAdvisorCategorySpecificSummary'
---
--- * 'tacrCheckId' @::@ 'Text'
---
--- * 'tacrFlaggedResources' @::@ ['TrustedAdvisorResourceDetail']
---
--- * 'tacrResourcesSummary' @::@ 'TrustedAdvisorResourcesSummary'
---
--- * 'tacrStatus' @::@ 'Text'
---
--- * 'tacrTimestamp' @::@ 'Text'
---
-trustedAdvisorCheckResult :: Text -- ^ 'tacrCheckId'
-                          -> Text -- ^ 'tacrTimestamp'
-                          -> Text -- ^ 'tacrStatus'
-                          -> TrustedAdvisorResourcesSummary -- ^ 'tacrResourcesSummary'
-                          -> TrustedAdvisorCategorySpecificSummary -- ^ 'tacrCategorySpecificSummary'
-                          -> TrustedAdvisorCheckResult
-trustedAdvisorCheckResult p1 p2 p3 p4 p5 = TrustedAdvisorCheckResult
-    { _tacrCheckId                 = p1
-    , _tacrTimestamp               = p2
-    , _tacrStatus                  = p3
-    , _tacrResourcesSummary        = p4
-    , _tacrCategorySpecificSummary = p5
-    , _tacrFlaggedResources        = mempty
-    }
-
--- | Summary information that relates to the category of the check. Cost
--- Optimizing is the only category that is currently supported.
-tacrCategorySpecificSummary :: Lens' TrustedAdvisorCheckResult TrustedAdvisorCategorySpecificSummary
-tacrCategorySpecificSummary =
-    lens _tacrCategorySpecificSummary
-        (\s a -> s { _tacrCategorySpecificSummary = a })
-
--- | The unique identifier for the Trusted Advisor check.
-tacrCheckId :: Lens' TrustedAdvisorCheckResult Text
-tacrCheckId = lens _tacrCheckId (\s a -> s { _tacrCheckId = a })
-
--- | The details about each resource listed in the check result.
-tacrFlaggedResources :: Lens' TrustedAdvisorCheckResult [TrustedAdvisorResourceDetail]
-tacrFlaggedResources =
-    lens _tacrFlaggedResources (\s a -> s { _tacrFlaggedResources = a })
-        . _List
-
-tacrResourcesSummary :: Lens' TrustedAdvisorCheckResult TrustedAdvisorResourcesSummary
-tacrResourcesSummary =
-    lens _tacrResourcesSummary (\s a -> s { _tacrResourcesSummary = a })
-
--- | The alert status of the check: "ok" (green), "warning" (yellow), "error"
--- (red), or "not_available".
-tacrStatus :: Lens' TrustedAdvisorCheckResult Text
-tacrStatus = lens _tacrStatus (\s a -> s { _tacrStatus = a })
-
--- | The time of the last refresh of the check.
-tacrTimestamp :: Lens' TrustedAdvisorCheckResult Text
-tacrTimestamp = lens _tacrTimestamp (\s a -> s { _tacrTimestamp = a })
-
-instance FromJSON TrustedAdvisorCheckResult where
-    parseJSON = withObject "TrustedAdvisorCheckResult" $ \o -> TrustedAdvisorCheckResult
-        <$> o .:  "categorySpecificSummary"
-        <*> o .:  "checkId"
-        <*> o .:? "flaggedResources" .!= mempty
-        <*> o .:  "resourcesSummary"
-        <*> o .:  "status"
-        <*> o .:  "timestamp"
-
-instance ToJSON TrustedAdvisorCheckResult where
-    toJSON TrustedAdvisorCheckResult{..} = object
-        [ "checkId"                 .= _tacrCheckId
-        , "timestamp"               .= _tacrTimestamp
-        , "status"                  .= _tacrStatus
-        , "resourcesSummary"        .= _tacrResourcesSummary
-        , "categorySpecificSummary" .= _tacrCategorySpecificSummary
-        , "flaggedResources"        .= _tacrFlaggedResources
-        ]
-
-data TrustedAdvisorCheckDescription = TrustedAdvisorCheckDescription
-    { _tacdCategory    :: Text
-    , _tacdDescription :: Text
-    , _tacdId          :: Text
-    , _tacdMetadata    :: List "metadata" Text
-    , _tacdName        :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TrustedAdvisorCheckDescription' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacdCategory' @::@ 'Text'
---
--- * 'tacdDescription' @::@ 'Text'
---
--- * 'tacdId' @::@ 'Text'
---
--- * 'tacdMetadata' @::@ ['Text']
---
--- * 'tacdName' @::@ 'Text'
---
-trustedAdvisorCheckDescription :: Text -- ^ 'tacdId'
-                               -> Text -- ^ 'tacdName'
-                               -> Text -- ^ 'tacdDescription'
-                               -> Text -- ^ 'tacdCategory'
-                               -> TrustedAdvisorCheckDescription
-trustedAdvisorCheckDescription p1 p2 p3 p4 = TrustedAdvisorCheckDescription
-    { _tacdId          = p1
-    , _tacdName        = p2
-    , _tacdDescription = p3
-    , _tacdCategory    = p4
-    , _tacdMetadata    = mempty
-    }
-
--- | The category of the Trusted Advisor check.
-tacdCategory :: Lens' TrustedAdvisorCheckDescription Text
-tacdCategory = lens _tacdCategory (\s a -> s { _tacdCategory = a })
-
--- | The description of the Trusted Advisor check, which includes the alert
--- criteria and recommended actions (contains HTML markup).
-tacdDescription :: Lens' TrustedAdvisorCheckDescription Text
-tacdDescription = lens _tacdDescription (\s a -> s { _tacdDescription = a })
-
--- | The unique identifier for the Trusted Advisor check.
-tacdId :: Lens' TrustedAdvisorCheckDescription Text
-tacdId = lens _tacdId (\s a -> s { _tacdId = a })
-
--- | The column headings for the data returned by the Trusted Advisor check. The
--- order of the headings corresponds to the order of the data in the Metadata
--- element of the 'TrustedAdvisorResourceDetail' for the check. Metadata contains
--- all the data that is shown in the Excel download, even in those cases where
--- the UI shows just summary data.
-tacdMetadata :: Lens' TrustedAdvisorCheckDescription [Text]
-tacdMetadata = lens _tacdMetadata (\s a -> s { _tacdMetadata = a }) . _List
-
--- | The display name for the Trusted Advisor check.
-tacdName :: Lens' TrustedAdvisorCheckDescription Text
-tacdName = lens _tacdName (\s a -> s { _tacdName = a })
-
-instance FromJSON TrustedAdvisorCheckDescription where
-    parseJSON = withObject "TrustedAdvisorCheckDescription" $ \o -> TrustedAdvisorCheckDescription
-        <$> o .:  "category"
-        <*> o .:  "description"
-        <*> o .:  "id"
-        <*> o .:? "metadata" .!= mempty
-        <*> o .:  "name"
-
-instance ToJSON TrustedAdvisorCheckDescription where
-    toJSON TrustedAdvisorCheckDescription{..} = object
-        [ "id"          .= _tacdId
-        , "name"        .= _tacdName
-        , "description" .= _tacdDescription
-        , "category"    .= _tacdCategory
-        , "metadata"    .= _tacdMetadata
-        ]
-
-data Attachment = Attachment
-    { _aData     :: Maybe Base64
-    , _aFileName :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'Attachment' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aData' @::@ 'Maybe' 'Base64'
---
--- * 'aFileName' @::@ 'Maybe' 'Text'
---
-attachment :: Attachment
-attachment = Attachment
-    { _aFileName = Nothing
-    , _aData     = Nothing
-    }
-
--- | The content of the attachment file.
-aData :: Lens' Attachment (Maybe Base64)
-aData = lens _aData (\s a -> s { _aData = a })
-
--- | The name of the attachment file.
-aFileName :: Lens' Attachment (Maybe Text)
-aFileName = lens _aFileName (\s a -> s { _aFileName = a })
-
-instance FromJSON Attachment where
-    parseJSON = withObject "Attachment" $ \o -> Attachment
-        <$> o .:? "data"
-        <*> o .:? "fileName"
-
-instance ToJSON Attachment where
-    toJSON Attachment{..} = object
-        [ "fileName" .= _aFileName
-        , "data"     .= _aData
-        ]
-
-data RecentCaseCommunications = RecentCaseCommunications
-    { _rccCommunications :: List "communications" Communication
-    , _rccNextToken      :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'RecentCaseCommunications' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'rccCommunications' @::@ ['Communication']
---
--- * 'rccNextToken' @::@ 'Maybe' 'Text'
---
-recentCaseCommunications :: RecentCaseCommunications
-recentCaseCommunications = RecentCaseCommunications
-    { _rccCommunications = mempty
-    , _rccNextToken      = Nothing
-    }
-
--- | The five most recent communications associated with the case.
-rccCommunications :: Lens' RecentCaseCommunications [Communication]
-rccCommunications =
-    lens _rccCommunications (\s a -> s { _rccCommunications = a })
-        . _List
-
--- | A resumption point for pagination.
-rccNextToken :: Lens' RecentCaseCommunications (Maybe Text)
-rccNextToken = lens _rccNextToken (\s a -> s { _rccNextToken = a })
-
-instance FromJSON RecentCaseCommunications where
-    parseJSON = withObject "RecentCaseCommunications" $ \o -> RecentCaseCommunications
-        <$> o .:? "communications" .!= mempty
-        <*> o .:? "nextToken"
-
-instance ToJSON RecentCaseCommunications where
-    toJSON RecentCaseCommunications{..} = object
-        [ "communications" .= _rccCommunications
-        , "nextToken"      .= _rccNextToken
-        ]
-
-data SupportService = SupportService
-    { _ssCategories :: List "categories" Category
-    , _ssCode       :: Maybe Text
-    , _ssName       :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'SupportService' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ssCategories' @::@ ['Category']
---
--- * 'ssCode' @::@ 'Maybe' 'Text'
---
--- * 'ssName' @::@ 'Maybe' 'Text'
---
-supportService :: SupportService
-supportService = SupportService
-    { _ssCode       = Nothing
-    , _ssName       = Nothing
-    , _ssCategories = mempty
-    }
-
--- | A list of categories that describe the type of support issue a case
--- describes. Categories consist of a category name and a category code.
--- Category names and codes are passed to AWS Support when you call 'CreateCase'.
-ssCategories :: Lens' SupportService [Category]
-ssCategories = lens _ssCategories (\s a -> s { _ssCategories = a }) . _List
-
--- | The code for an AWS service returned by the 'DescribeServices' response. The 'Name' element contains the corresponding friendly name.
-ssCode :: Lens' SupportService (Maybe Text)
-ssCode = lens _ssCode (\s a -> s { _ssCode = a })
-
--- | The friendly name for an AWS service. The 'Code' element contains the
--- corresponding code.
-ssName :: Lens' SupportService (Maybe Text)
-ssName = lens _ssName (\s a -> s { _ssName = a })
-
-instance FromJSON SupportService where
-    parseJSON = withObject "SupportService" $ \o -> SupportService
-        <$> o .:? "categories" .!= mempty
-        <*> o .:? "code"
-        <*> o .:? "name"
-
-instance ToJSON SupportService where
-    toJSON SupportService{..} = object
-        [ "code"       .= _ssCode
-        , "name"       .= _ssName
-        , "categories" .= _ssCategories
-        ]
-
-data TrustedAdvisorResourceDetail = TrustedAdvisorResourceDetail
-    { _tardIsSuppressed :: Maybe Bool
-    , _tardMetadata     :: List "metadata" Text
-    , _tardRegion       :: Text
-    , _tardResourceId   :: Text
-    , _tardStatus       :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TrustedAdvisorResourceDetail' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tardIsSuppressed' @::@ 'Maybe' 'Bool'
---
--- * 'tardMetadata' @::@ ['Text']
---
--- * 'tardRegion' @::@ 'Text'
---
--- * 'tardResourceId' @::@ 'Text'
---
--- * 'tardStatus' @::@ 'Text'
---
-trustedAdvisorResourceDetail :: Text -- ^ 'tardStatus'
-                             -> Text -- ^ 'tardRegion'
-                             -> Text -- ^ 'tardResourceId'
-                             -> TrustedAdvisorResourceDetail
-trustedAdvisorResourceDetail p1 p2 p3 = TrustedAdvisorResourceDetail
-    { _tardStatus       = p1
-    , _tardRegion       = p2
-    , _tardResourceId   = p3
-    , _tardIsSuppressed = Nothing
-    , _tardMetadata     = mempty
-    }
-
--- | Specifies whether the AWS resource was ignored by Trusted Advisor because it
--- was marked as suppressed by the user.
-tardIsSuppressed :: Lens' TrustedAdvisorResourceDetail (Maybe Bool)
-tardIsSuppressed = lens _tardIsSuppressed (\s a -> s { _tardIsSuppressed = a })
-
--- | Additional information about the identified resource. The exact metadata and
--- its order can be obtained by inspecting the 'TrustedAdvisorCheckDescription'
--- object returned by the call to 'DescribeTrustedAdvisorChecks'. Metadata
--- contains all the data that is shown in the Excel download, even in those
--- cases where the UI shows just summary data.
-tardMetadata :: Lens' TrustedAdvisorResourceDetail [Text]
-tardMetadata = lens _tardMetadata (\s a -> s { _tardMetadata = a }) . _List
-
--- | The AWS region in which the identified resource is located.
-tardRegion :: Lens' TrustedAdvisorResourceDetail Text
-tardRegion = lens _tardRegion (\s a -> s { _tardRegion = a })
-
--- | The unique identifier for the identified resource.
-tardResourceId :: Lens' TrustedAdvisorResourceDetail Text
-tardResourceId = lens _tardResourceId (\s a -> s { _tardResourceId = a })
-
--- | The status code for the resource identified in the Trusted Advisor check.
-tardStatus :: Lens' TrustedAdvisorResourceDetail Text
-tardStatus = lens _tardStatus (\s a -> s { _tardStatus = a })
-
-instance FromJSON TrustedAdvisorResourceDetail where
-    parseJSON = withObject "TrustedAdvisorResourceDetail" $ \o -> TrustedAdvisorResourceDetail
-        <$> o .:? "isSuppressed"
-        <*> o .:? "metadata" .!= mempty
-        <*> o .:  "region"
-        <*> o .:  "resourceId"
-        <*> o .:  "status"
-
-instance ToJSON TrustedAdvisorResourceDetail where
-    toJSON TrustedAdvisorResourceDetail{..} = object
-        [ "status"       .= _tardStatus
-        , "region"       .= _tardRegion
-        , "resourceId"   .= _tardResourceId
-        , "isSuppressed" .= _tardIsSuppressed
-        , "metadata"     .= _tardMetadata
-        ]
-
-data TrustedAdvisorCostOptimizingSummary = TrustedAdvisorCostOptimizingSummary
-    { _tacosEstimatedMonthlySavings        :: Double
-    , _tacosEstimatedPercentMonthlySavings :: Double
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TrustedAdvisorCostOptimizingSummary' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacosEstimatedMonthlySavings' @::@ 'Double'
---
--- * 'tacosEstimatedPercentMonthlySavings' @::@ 'Double'
---
-trustedAdvisorCostOptimizingSummary :: Double -- ^ 'tacosEstimatedMonthlySavings'
-                                    -> Double -- ^ 'tacosEstimatedPercentMonthlySavings'
-                                    -> TrustedAdvisorCostOptimizingSummary
-trustedAdvisorCostOptimizingSummary p1 p2 = TrustedAdvisorCostOptimizingSummary
-    { _tacosEstimatedMonthlySavings        = p1
-    , _tacosEstimatedPercentMonthlySavings = p2
-    }
-
--- | The estimated monthly savings that might be realized if the recommended
--- actions are taken.
-tacosEstimatedMonthlySavings :: Lens' TrustedAdvisorCostOptimizingSummary Double
-tacosEstimatedMonthlySavings =
-    lens _tacosEstimatedMonthlySavings
-        (\s a -> s { _tacosEstimatedMonthlySavings = a })
-
--- | The estimated percentage of savings that might be realized if the recommended
--- actions are taken.
-tacosEstimatedPercentMonthlySavings :: Lens' TrustedAdvisorCostOptimizingSummary Double
-tacosEstimatedPercentMonthlySavings =
-    lens _tacosEstimatedPercentMonthlySavings
-        (\s a -> s { _tacosEstimatedPercentMonthlySavings = a })
-
-instance FromJSON TrustedAdvisorCostOptimizingSummary where
-    parseJSON = withObject "TrustedAdvisorCostOptimizingSummary" $ \o -> TrustedAdvisorCostOptimizingSummary
-        <$> o .:  "estimatedMonthlySavings"
-        <*> o .:  "estimatedPercentMonthlySavings"
-
-instance ToJSON TrustedAdvisorCostOptimizingSummary where
-    toJSON TrustedAdvisorCostOptimizingSummary{..} = object
-        [ "estimatedMonthlySavings"        .= _tacosEstimatedMonthlySavings
-        , "estimatedPercentMonthlySavings" .= _tacosEstimatedPercentMonthlySavings
-        ]
-
-data SeverityLevel = SeverityLevel
-    { _slCode :: Maybe Text
-    , _slName :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'SeverityLevel' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'slCode' @::@ 'Maybe' 'Text'
---
--- * 'slName' @::@ 'Maybe' 'Text'
---
-severityLevel :: SeverityLevel
-severityLevel = SeverityLevel
-    { _slCode = Nothing
-    , _slName = Nothing
-    }
-
--- | One of four values: "low," "medium," "high," and "urgent". These values
--- correspond to response times returned to the caller in 'SeverityLevel.name'.
-slCode :: Lens' SeverityLevel (Maybe Text)
-slCode = lens _slCode (\s a -> s { _slCode = a })
-
--- | The name of the severity level that corresponds to the severity level code.
-slName :: Lens' SeverityLevel (Maybe Text)
-slName = lens _slName (\s a -> s { _slName = a })
-
-instance FromJSON SeverityLevel where
-    parseJSON = withObject "SeverityLevel" $ \o -> SeverityLevel
-        <$> o .:? "code"
-        <*> o .:? "name"
-
-instance ToJSON SeverityLevel where
-    toJSON SeverityLevel{..} = object
-        [ "code" .= _slCode
-        , "name" .= _slName
-        ]
-
-data CaseDetails = CaseDetails
-    { _cdCaseId               :: Maybe Text
-    , _cdCategoryCode         :: Maybe Text
-    , _cdCcEmailAddresses     :: List "ccEmailAddresses" Text
-    , _cdDisplayId            :: Maybe Text
-    , _cdLanguage             :: Maybe Text
-    , _cdRecentCommunications :: Maybe RecentCaseCommunications
-    , _cdServiceCode          :: Maybe Text
-    , _cdSeverityCode         :: Maybe Text
-    , _cdStatus               :: Maybe Text
-    , _cdSubject              :: Maybe Text
-    , _cdSubmittedBy          :: Maybe Text
-    , _cdTimeCreated          :: Maybe Text
-    } deriving (Eq, Read, Show)
-
--- | 'CaseDetails' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cdCaseId' @::@ 'Maybe' 'Text'
---
--- * 'cdCategoryCode' @::@ 'Maybe' 'Text'
---
--- * 'cdCcEmailAddresses' @::@ ['Text']
---
--- * 'cdDisplayId' @::@ 'Maybe' 'Text'
---
--- * 'cdLanguage' @::@ 'Maybe' 'Text'
---
--- * 'cdRecentCommunications' @::@ 'Maybe' 'RecentCaseCommunications'
---
--- * 'cdServiceCode' @::@ 'Maybe' 'Text'
---
--- * 'cdSeverityCode' @::@ 'Maybe' 'Text'
---
--- * 'cdStatus' @::@ 'Maybe' 'Text'
---
--- * 'cdSubject' @::@ 'Maybe' 'Text'
---
--- * 'cdSubmittedBy' @::@ 'Maybe' 'Text'
---
--- * 'cdTimeCreated' @::@ 'Maybe' 'Text'
---
-caseDetails :: CaseDetails
-caseDetails = CaseDetails
-    { _cdCaseId               = Nothing
-    , _cdDisplayId            = Nothing
-    , _cdSubject              = Nothing
-    , _cdStatus               = Nothing
-    , _cdServiceCode          = Nothing
-    , _cdCategoryCode         = Nothing
-    , _cdSeverityCode         = Nothing
-    , _cdSubmittedBy          = Nothing
-    , _cdTimeCreated          = Nothing
-    , _cdRecentCommunications = Nothing
-    , _cdCcEmailAddresses     = mempty
-    , _cdLanguage             = Nothing
-    }
-
--- | The AWS Support case ID requested or returned in the call. The case ID is an
--- alphanumeric string formatted as shown in this example: case-/12345678910-2013-c4c1d2bf33c5cf47/
-cdCaseId :: Lens' CaseDetails (Maybe Text)
-cdCaseId = lens _cdCaseId (\s a -> s { _cdCaseId = a })
-
--- | The category of problem for the AWS Support case.
-cdCategoryCode :: Lens' CaseDetails (Maybe Text)
-cdCategoryCode = lens _cdCategoryCode (\s a -> s { _cdCategoryCode = a })
-
--- | The email addresses that receive copies of communication about the case.
-cdCcEmailAddresses :: Lens' CaseDetails [Text]
-cdCcEmailAddresses =
-    lens _cdCcEmailAddresses (\s a -> s { _cdCcEmailAddresses = a })
-        . _List
-
--- | The ID displayed for the case in the AWS Support Center. This is a numeric
--- string.
-cdDisplayId :: Lens' CaseDetails (Maybe Text)
-cdDisplayId = lens _cdDisplayId (\s a -> s { _cdDisplayId = a })
-
--- | The ISO 639-1 code for the language in which AWS provides support. AWS
--- Support currently supports English ("en") and Japanese ("ja"). Language
--- parameters must be passed explicitly for operations that take them.
-cdLanguage :: Lens' CaseDetails (Maybe Text)
-cdLanguage = lens _cdLanguage (\s a -> s { _cdLanguage = a })
-
--- | The five most recent communications between you and AWS Support Center,
--- including the IDs of any attachments to the communications. Also includes a 'nextToken' that you can use to retrieve earlier communications.
-cdRecentCommunications :: Lens' CaseDetails (Maybe RecentCaseCommunications)
-cdRecentCommunications =
-    lens _cdRecentCommunications (\s a -> s { _cdRecentCommunications = a })
-
--- | The code for the AWS service returned by the call to 'DescribeServices'.
-cdServiceCode :: Lens' CaseDetails (Maybe Text)
-cdServiceCode = lens _cdServiceCode (\s a -> s { _cdServiceCode = a })
-
--- | The code for the severity level returned by the call to 'DescribeSeverityLevels'
--- .
-cdSeverityCode :: Lens' CaseDetails (Maybe Text)
-cdSeverityCode = lens _cdSeverityCode (\s a -> s { _cdSeverityCode = a })
-
--- | The status of the case.
-cdStatus :: Lens' CaseDetails (Maybe Text)
-cdStatus = lens _cdStatus (\s a -> s { _cdStatus = a })
-
--- | The subject line for the case in the AWS Support Center.
-cdSubject :: Lens' CaseDetails (Maybe Text)
-cdSubject = lens _cdSubject (\s a -> s { _cdSubject = a })
-
--- | The email address of the account that submitted the case.
-cdSubmittedBy :: Lens' CaseDetails (Maybe Text)
-cdSubmittedBy = lens _cdSubmittedBy (\s a -> s { _cdSubmittedBy = a })
-
--- | The time that the case was case created in the AWS Support Center.
-cdTimeCreated :: Lens' CaseDetails (Maybe Text)
-cdTimeCreated = lens _cdTimeCreated (\s a -> s { _cdTimeCreated = a })
-
-instance FromJSON CaseDetails where
-    parseJSON = withObject "CaseDetails" $ \o -> CaseDetails
-        <$> o .:? "caseId"
-        <*> o .:? "categoryCode"
-        <*> o .:? "ccEmailAddresses" .!= mempty
-        <*> o .:? "displayId"
-        <*> o .:? "language"
-        <*> o .:? "recentCommunications"
-        <*> o .:? "serviceCode"
-        <*> o .:? "severityCode"
-        <*> o .:? "status"
-        <*> o .:? "subject"
-        <*> o .:? "submittedBy"
-        <*> o .:? "timeCreated"
-
-instance ToJSON CaseDetails where
-    toJSON CaseDetails{..} = object
-        [ "caseId"               .= _cdCaseId
-        , "displayId"            .= _cdDisplayId
-        , "subject"              .= _cdSubject
-        , "status"               .= _cdStatus
-        , "serviceCode"          .= _cdServiceCode
-        , "categoryCode"         .= _cdCategoryCode
-        , "severityCode"         .= _cdSeverityCode
-        , "submittedBy"          .= _cdSubmittedBy
-        , "timeCreated"          .= _cdTimeCreated
-        , "recentCommunications" .= _cdRecentCommunications
-        , "ccEmailAddresses"     .= _cdCcEmailAddresses
-        , "language"             .= _cdLanguage
-        ]
-
-data TrustedAdvisorCheckRefreshStatus = TrustedAdvisorCheckRefreshStatus
-    { _tacrsCheckId                    :: Text
-    , _tacrsMillisUntilNextRefreshable :: Integer
-    , _tacrsStatus                     :: Text
-    } deriving (Eq, Ord, Read, Show)
-
--- | 'TrustedAdvisorCheckRefreshStatus' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'tacrsCheckId' @::@ 'Text'
---
--- * 'tacrsMillisUntilNextRefreshable' @::@ 'Integer'
---
--- * 'tacrsStatus' @::@ 'Text'
---
-trustedAdvisorCheckRefreshStatus :: Text -- ^ 'tacrsCheckId'
-                                 -> Text -- ^ 'tacrsStatus'
-                                 -> Integer -- ^ 'tacrsMillisUntilNextRefreshable'
-                                 -> TrustedAdvisorCheckRefreshStatus
-trustedAdvisorCheckRefreshStatus p1 p2 p3 = TrustedAdvisorCheckRefreshStatus
-    { _tacrsCheckId                    = p1
-    , _tacrsStatus                     = p2
-    , _tacrsMillisUntilNextRefreshable = p3
-    }
-
--- | The unique identifier for the Trusted Advisor check.
-tacrsCheckId :: Lens' TrustedAdvisorCheckRefreshStatus Text
-tacrsCheckId = lens _tacrsCheckId (\s a -> s { _tacrsCheckId = a })
-
--- | The amount of time, in milliseconds, until the Trusted Advisor check is
--- eligible for refresh.
-tacrsMillisUntilNextRefreshable :: Lens' TrustedAdvisorCheckRefreshStatus Integer
-tacrsMillisUntilNextRefreshable =
-    lens _tacrsMillisUntilNextRefreshable
-        (\s a -> s { _tacrsMillisUntilNextRefreshable = a })
-
--- | The status of the Trusted Advisor check for which a refresh has been
--- requested: "none", "enqueued", "processing", "success", or "abandoned".
-tacrsStatus :: Lens' TrustedAdvisorCheckRefreshStatus Text
-tacrsStatus = lens _tacrsStatus (\s a -> s { _tacrsStatus = a })
-
-instance FromJSON TrustedAdvisorCheckRefreshStatus where
-    parseJSON = withObject "TrustedAdvisorCheckRefreshStatus" $ \o -> TrustedAdvisorCheckRefreshStatus
-        <$> o .:  "checkId"
-        <*> o .:  "millisUntilNextRefreshable"
-        <*> o .:  "status"
-
-instance ToJSON TrustedAdvisorCheckRefreshStatus where
-    toJSON TrustedAdvisorCheckRefreshStatus{..} = object
-        [ "checkId"                    .= _tacrsCheckId
-        , "status"                     .= _tacrsStatus
-        , "millisUntilNextRefreshable" .= _tacrsMillisUntilNextRefreshable
-        ]
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.Support.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.Support.Types
+    (
+    -- * Service
+      Support
+
+    -- * Errors
+    , _AttachmentSetExpired
+    , _AttachmentLimitExceeded
+    , _DescribeAttachmentLimitExceeded
+    , _CaseIdNotFound
+    , _AttachmentSetIdNotFound
+    , _AttachmentSetSizeLimitExceeded
+    , _AttachmentIdNotFound
+    , _InternalServerError
+    , _CaseCreationLimitExceeded
+
+    -- * Attachment
+    , Attachment
+    , attachment
+    , aData
+    , aFileName
+
+    -- * AttachmentDetails
+    , AttachmentDetails
+    , attachmentDetails
+    , adAttachmentId
+    , adFileName
+
+    -- * CaseDetails
+    , CaseDetails
+    , caseDetails
+    , cdSubject
+    , cdStatus
+    , cdRecentCommunications
+    , cdSeverityCode
+    , cdCaseId
+    , cdCcEmailAddresses
+    , cdDisplayId
+    , cdSubmittedBy
+    , cdLanguage
+    , cdCategoryCode
+    , cdTimeCreated
+    , cdServiceCode
+
+    -- * Category
+    , Category
+    , category
+    , cName
+    , cCode
+
+    -- * Communication
+    , Communication
+    , communication
+    , cBody
+    , cCaseId
+    , cSubmittedBy
+    , cTimeCreated
+    , cAttachmentSet
+
+    -- * RecentCaseCommunications
+    , RecentCaseCommunications
+    , recentCaseCommunications
+    , rccNextToken
+    , rccCommunications
+
+    -- * SeverityLevel
+    , SeverityLevel
+    , severityLevel
+    , slName
+    , slCode
+
+    -- * SupportService
+    , SupportService
+    , supportService
+    , ssCategories
+    , ssName
+    , ssCode
+
+    -- * TrustedAdvisorCategorySpecificSummary
+    , TrustedAdvisorCategorySpecificSummary
+    , trustedAdvisorCategorySpecificSummary
+    , tacssCostOptimizing
+
+    -- * TrustedAdvisorCheckDescription
+    , TrustedAdvisorCheckDescription
+    , trustedAdvisorCheckDescription
+    , tacdId
+    , tacdName
+    , tacdDescription
+    , tacdCategory
+    , tacdMetadata
+
+    -- * TrustedAdvisorCheckRefreshStatus
+    , TrustedAdvisorCheckRefreshStatus
+    , trustedAdvisorCheckRefreshStatus
+    , tacrsCheckId
+    , tacrsStatus
+    , tacrsMillisUntilNextRefreshable
+
+    -- * TrustedAdvisorCheckResult
+    , TrustedAdvisorCheckResult
+    , trustedAdvisorCheckResult
+    , tacrCheckId
+    , tacrTimestamp
+    , tacrStatus
+    , tacrResourcesSummary
+    , tacrCategorySpecificSummary
+    , tacrFlaggedResources
+
+    -- * TrustedAdvisorCheckSummary
+    , TrustedAdvisorCheckSummary
+    , trustedAdvisorCheckSummary
+    , tacsHasFlaggedResources
+    , tacsCheckId
+    , tacsTimestamp
+    , tacsStatus
+    , tacsResourcesSummary
+    , tacsCategorySpecificSummary
+
+    -- * TrustedAdvisorCostOptimizingSummary
+    , TrustedAdvisorCostOptimizingSummary
+    , trustedAdvisorCostOptimizingSummary
+    , tacosEstimatedMonthlySavings
+    , tacosEstimatedPercentMonthlySavings
+
+    -- * TrustedAdvisorResourceDetail
+    , TrustedAdvisorResourceDetail
+    , trustedAdvisorResourceDetail
+    , tardIsSuppressed
+    , tardStatus
+    , tardRegion
+    , tardResourceId
+    , tardMetadata
+
+    -- * TrustedAdvisorResourcesSummary
+    , TrustedAdvisorResourcesSummary
+    , trustedAdvisorResourcesSummary
+    , tarsResourcesProcessed
+    , tarsResourcesFlagged
+    , tarsResourcesIgnored
+    , tarsResourcesSuppressed
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V4
+import           Network.AWS.Support.Types.Product
+import           Network.AWS.Support.Types.Sum
+
+-- | Version @2013-04-15@ of the Amazon Support SDK.
+data Support
+
+instance AWSService Support where
+    type Sg Support = V4
+    service = const svc
+      where
+        svc =
+            Service
+            { _svcAbbrev = "Support"
+            , _svcPrefix = "support"
+            , _svcVersion = "2013-04-15"
+            , _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
+
+-- | The expiration time of the attachment set has passed. The set expires 1
+-- hour after it is created.
+_AttachmentSetExpired :: AsError a => Getting (First ServiceError) a ServiceError
+_AttachmentSetExpired = _ServiceError . hasCode "AttachmentSetExpired"
+
+-- | The limit for the number of attachment sets created in a short period of
+-- time has been exceeded.
+_AttachmentLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_AttachmentLimitExceeded = _ServiceError . hasCode "AttachmentLimitExceeded"
+
+-- | The limit for the number of DescribeAttachment requests in a short
+-- period of time has been exceeded.
+_DescribeAttachmentLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_DescribeAttachmentLimitExceeded =
+    _ServiceError . hasCode "DescribeAttachmentLimitExceeded"
+
+-- | The requested 'CaseId' could not be located.
+_CaseIdNotFound :: AsError a => Getting (First ServiceError) a ServiceError
+_CaseIdNotFound = _ServiceError . hasCode "CaseIdNotFound"
+
+-- | An attachment set with the specified ID could not be found.
+_AttachmentSetIdNotFound :: AsError a => Getting (First ServiceError) a ServiceError
+_AttachmentSetIdNotFound = _ServiceError . hasCode "AttachmentSetIdNotFound"
+
+-- | A limit for the size of an attachment set has been exceeded. The limits
+-- are 3 attachments and 5 MB per attachment.
+_AttachmentSetSizeLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_AttachmentSetSizeLimitExceeded =
+    _ServiceError . hasCode "AttachmentSetSizeLimitExceeded"
+
+-- | An attachment with the specified ID could not be found.
+_AttachmentIdNotFound :: AsError a => Getting (First ServiceError) a ServiceError
+_AttachmentIdNotFound = _ServiceError . hasCode "AttachmentIdNotFound"
+
+-- | An internal server error occurred.
+_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+_InternalServerError = _ServiceError . hasCode "InternalServerError"
+
+-- | The case creation limit for the account has been exceeded.
+_CaseCreationLimitExceeded :: AsError a => Getting (First ServiceError) a ServiceError
+_CaseCreationLimitExceeded =
+    _ServiceError . hasCode "CaseCreationLimitExceeded"
diff --git a/gen/Network/AWS/Support/Types/Product.hs b/gen/Network/AWS/Support/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Support/Types/Product.hs
@@ -0,0 +1,1026 @@
+{-# 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.Support.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.Support.Types.Product where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Support.Types.Sum
+
+-- | An attachment to a case communication. The attachment consists of the
+-- file name and the content of the file.
+--
+-- /See:/ 'attachment' smart constructor.
+data Attachment = Attachment'
+    { _aData     :: !(Maybe Base64)
+    , _aFileName :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Attachment' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aData'
+--
+-- * 'aFileName'
+attachment
+    :: Attachment
+attachment =
+    Attachment'
+    { _aData = Nothing
+    , _aFileName = Nothing
+    }
+
+-- | The content of the attachment file.
+aData :: Lens' Attachment (Maybe ByteString)
+aData = lens _aData (\ s a -> s{_aData = a}) . mapping _Base64;
+
+-- | The name of the attachment file.
+aFileName :: Lens' Attachment (Maybe Text)
+aFileName = lens _aFileName (\ s a -> s{_aFileName = a});
+
+instance FromJSON Attachment where
+        parseJSON
+          = withObject "Attachment"
+              (\ x ->
+                 Attachment' <$>
+                   (x .:? "data") <*> (x .:? "fileName"))
+
+instance ToJSON Attachment where
+        toJSON Attachment'{..}
+          = object ["data" .= _aData, "fileName" .= _aFileName]
+
+-- | The file name and ID of an attachment to a case communication. You can
+-- use the ID to retrieve the attachment with the DescribeAttachment
+-- operation.
+--
+-- /See:/ 'attachmentDetails' smart constructor.
+data AttachmentDetails = AttachmentDetails'
+    { _adAttachmentId :: !(Maybe Text)
+    , _adFileName     :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AttachmentDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adAttachmentId'
+--
+-- * 'adFileName'
+attachmentDetails
+    :: AttachmentDetails
+attachmentDetails =
+    AttachmentDetails'
+    { _adAttachmentId = Nothing
+    , _adFileName = Nothing
+    }
+
+-- | The ID of the attachment.
+adAttachmentId :: Lens' AttachmentDetails (Maybe Text)
+adAttachmentId = lens _adAttachmentId (\ s a -> s{_adAttachmentId = a});
+
+-- | The file name of the attachment.
+adFileName :: Lens' AttachmentDetails (Maybe Text)
+adFileName = lens _adFileName (\ s a -> s{_adFileName = a});
+
+instance FromJSON AttachmentDetails where
+        parseJSON
+          = withObject "AttachmentDetails"
+              (\ x ->
+                 AttachmentDetails' <$>
+                   (x .:? "attachmentId") <*> (x .:? "fileName"))
+
+-- | A JSON-formatted object that contains the metadata for a support case.
+-- It is contained the response from a DescribeCases request.
+-- __CaseDetails__ contains the following fields:
+--
+-- 1.  __CaseID.__ The AWS Support case ID requested or returned in the
+--     call. The case ID is an alphanumeric string formatted as shown in
+--     this example: case-/12345678910-2013-c4c1d2bf33c5cf47/.
+-- 2.  __CategoryCode.__ The category of problem for the AWS Support case.
+--     Corresponds to the CategoryCode values returned by a call to
+--     DescribeServices.
+-- 3.  __DisplayId.__ The identifier for the case on pages in the AWS
+--     Support Center.
+-- 4.  __Language.__ The ISO 639-1 code for the language in which AWS
+--     provides support. AWS Support currently supports English (\"en\")
+--     and Japanese (\"ja\"). Language parameters must be passed explicitly
+--     for operations that take them.
+-- 5.  __RecentCommunications.__ One or more Communication objects. Fields
+--     of these objects are 'Attachments', 'Body', 'CaseId', 'SubmittedBy',
+--     and 'TimeCreated'.
+-- 6.  __NextToken.__ A resumption point for pagination.
+-- 7.  __ServiceCode.__ The identifier for the AWS service that corresponds
+--     to the service code defined in the call to DescribeServices.
+-- 8.  __SeverityCode.__ The severity code assigned to the case. Contains
+--     one of the values returned by the call to DescribeSeverityLevels.
+-- 9.  __Status.__ The status of the case in the AWS Support Center.
+-- 10. __Subject.__ The subject line of the case.
+-- 11. __SubmittedBy.__ The email address of the account that submitted the
+--     case.
+-- 12. __TimeCreated.__ The time the case was created, in ISO-8601 format.
+--
+-- /See:/ 'caseDetails' smart constructor.
+data CaseDetails = CaseDetails'
+    { _cdSubject              :: !(Maybe Text)
+    , _cdStatus               :: !(Maybe Text)
+    , _cdRecentCommunications :: !(Maybe RecentCaseCommunications)
+    , _cdSeverityCode         :: !(Maybe Text)
+    , _cdCaseId               :: !(Maybe Text)
+    , _cdCcEmailAddresses     :: !(Maybe [Text])
+    , _cdDisplayId            :: !(Maybe Text)
+    , _cdSubmittedBy          :: !(Maybe Text)
+    , _cdLanguage             :: !(Maybe Text)
+    , _cdCategoryCode         :: !(Maybe Text)
+    , _cdTimeCreated          :: !(Maybe Text)
+    , _cdServiceCode          :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CaseDetails' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cdSubject'
+--
+-- * 'cdStatus'
+--
+-- * 'cdRecentCommunications'
+--
+-- * 'cdSeverityCode'
+--
+-- * 'cdCaseId'
+--
+-- * 'cdCcEmailAddresses'
+--
+-- * 'cdDisplayId'
+--
+-- * 'cdSubmittedBy'
+--
+-- * 'cdLanguage'
+--
+-- * 'cdCategoryCode'
+--
+-- * 'cdTimeCreated'
+--
+-- * 'cdServiceCode'
+caseDetails
+    :: CaseDetails
+caseDetails =
+    CaseDetails'
+    { _cdSubject = Nothing
+    , _cdStatus = Nothing
+    , _cdRecentCommunications = Nothing
+    , _cdSeverityCode = Nothing
+    , _cdCaseId = Nothing
+    , _cdCcEmailAddresses = Nothing
+    , _cdDisplayId = Nothing
+    , _cdSubmittedBy = Nothing
+    , _cdLanguage = Nothing
+    , _cdCategoryCode = Nothing
+    , _cdTimeCreated = Nothing
+    , _cdServiceCode = Nothing
+    }
+
+-- | The subject line for the case in the AWS Support Center.
+cdSubject :: Lens' CaseDetails (Maybe Text)
+cdSubject = lens _cdSubject (\ s a -> s{_cdSubject = a});
+
+-- | The status of the case.
+cdStatus :: Lens' CaseDetails (Maybe Text)
+cdStatus = lens _cdStatus (\ s a -> s{_cdStatus = a});
+
+-- | The five most recent communications between you and AWS Support Center,
+-- including the IDs of any attachments to the communications. Also
+-- includes a 'nextToken' that you can use to retrieve earlier
+-- communications.
+cdRecentCommunications :: Lens' CaseDetails (Maybe RecentCaseCommunications)
+cdRecentCommunications = lens _cdRecentCommunications (\ s a -> s{_cdRecentCommunications = a});
+
+-- | The code for the severity level returned by the call to
+-- DescribeSeverityLevels.
+cdSeverityCode :: Lens' CaseDetails (Maybe Text)
+cdSeverityCode = lens _cdSeverityCode (\ s a -> s{_cdSeverityCode = a});
+
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
+cdCaseId :: Lens' CaseDetails (Maybe Text)
+cdCaseId = lens _cdCaseId (\ s a -> s{_cdCaseId = a});
+
+-- | The email addresses that receive copies of communication about the case.
+cdCcEmailAddresses :: Lens' CaseDetails [Text]
+cdCcEmailAddresses = lens _cdCcEmailAddresses (\ s a -> s{_cdCcEmailAddresses = a}) . _Default . _Coerce;
+
+-- | The ID displayed for the case in the AWS Support Center. This is a
+-- numeric string.
+cdDisplayId :: Lens' CaseDetails (Maybe Text)
+cdDisplayId = lens _cdDisplayId (\ s a -> s{_cdDisplayId = a});
+
+-- | The email address of the account that submitted the case.
+cdSubmittedBy :: Lens' CaseDetails (Maybe Text)
+cdSubmittedBy = lens _cdSubmittedBy (\ s a -> s{_cdSubmittedBy = a});
+
+-- | The ISO 639-1 code for the language in which AWS provides support. AWS
+-- Support currently supports English (\"en\") and Japanese (\"ja\").
+-- Language parameters must be passed explicitly for operations that take
+-- them.
+cdLanguage :: Lens' CaseDetails (Maybe Text)
+cdLanguage = lens _cdLanguage (\ s a -> s{_cdLanguage = a});
+
+-- | The category of problem for the AWS Support case.
+cdCategoryCode :: Lens' CaseDetails (Maybe Text)
+cdCategoryCode = lens _cdCategoryCode (\ s a -> s{_cdCategoryCode = a});
+
+-- | The time that the case was case created in the AWS Support Center.
+cdTimeCreated :: Lens' CaseDetails (Maybe Text)
+cdTimeCreated = lens _cdTimeCreated (\ s a -> s{_cdTimeCreated = a});
+
+-- | The code for the AWS service returned by the call to DescribeServices.
+cdServiceCode :: Lens' CaseDetails (Maybe Text)
+cdServiceCode = lens _cdServiceCode (\ s a -> s{_cdServiceCode = a});
+
+instance FromJSON CaseDetails where
+        parseJSON
+          = withObject "CaseDetails"
+              (\ x ->
+                 CaseDetails' <$>
+                   (x .:? "subject") <*> (x .:? "status") <*>
+                     (x .:? "recentCommunications")
+                     <*> (x .:? "severityCode")
+                     <*> (x .:? "caseId")
+                     <*> (x .:? "ccEmailAddresses" .!= mempty)
+                     <*> (x .:? "displayId")
+                     <*> (x .:? "submittedBy")
+                     <*> (x .:? "language")
+                     <*> (x .:? "categoryCode")
+                     <*> (x .:? "timeCreated")
+                     <*> (x .:? "serviceCode"))
+
+-- | A JSON-formatted name\/value pair that represents the category name and
+-- category code of the problem, selected from the DescribeServices
+-- response for each AWS service.
+--
+-- /See:/ 'category' smart constructor.
+data Category = Category'
+    { _cName :: !(Maybe Text)
+    , _cCode :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Category' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cName'
+--
+-- * 'cCode'
+category
+    :: Category
+category =
+    Category'
+    { _cName = Nothing
+    , _cCode = Nothing
+    }
+
+-- | The category name for the support case.
+cName :: Lens' Category (Maybe Text)
+cName = lens _cName (\ s a -> s{_cName = a});
+
+-- | The category code for the support case.
+cCode :: Lens' Category (Maybe Text)
+cCode = lens _cCode (\ s a -> s{_cCode = a});
+
+instance FromJSON Category where
+        parseJSON
+          = withObject "Category"
+              (\ x ->
+                 Category' <$> (x .:? "name") <*> (x .:? "code"))
+
+-- | A communication associated with an AWS Support case. The communication
+-- consists of the case ID, the message body, attachment information, the
+-- account email address, and the date and time of the communication.
+--
+-- /See:/ 'communication' smart constructor.
+data Communication = Communication'
+    { _cBody          :: !(Maybe Text)
+    , _cCaseId        :: !(Maybe Text)
+    , _cSubmittedBy   :: !(Maybe Text)
+    , _cTimeCreated   :: !(Maybe Text)
+    , _cAttachmentSet :: !(Maybe [AttachmentDetails])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Communication' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cBody'
+--
+-- * 'cCaseId'
+--
+-- * 'cSubmittedBy'
+--
+-- * 'cTimeCreated'
+--
+-- * 'cAttachmentSet'
+communication
+    :: Communication
+communication =
+    Communication'
+    { _cBody = Nothing
+    , _cCaseId = Nothing
+    , _cSubmittedBy = Nothing
+    , _cTimeCreated = Nothing
+    , _cAttachmentSet = Nothing
+    }
+
+-- | The text of the communication between the customer and AWS Support.
+cBody :: Lens' Communication (Maybe Text)
+cBody = lens _cBody (\ s a -> s{_cBody = a});
+
+-- | The AWS Support case ID requested or returned in the call. The case ID
+-- is an alphanumeric string formatted as shown in this example:
+-- case-/12345678910-2013-c4c1d2bf33c5cf47/
+cCaseId :: Lens' Communication (Maybe Text)
+cCaseId = lens _cCaseId (\ s a -> s{_cCaseId = a});
+
+-- | The email address of the account that submitted the AWS Support case.
+cSubmittedBy :: Lens' Communication (Maybe Text)
+cSubmittedBy = lens _cSubmittedBy (\ s a -> s{_cSubmittedBy = a});
+
+-- | The time the communication was created.
+cTimeCreated :: Lens' Communication (Maybe Text)
+cTimeCreated = lens _cTimeCreated (\ s a -> s{_cTimeCreated = a});
+
+-- | Information about the attachments to the case communication.
+cAttachmentSet :: Lens' Communication [AttachmentDetails]
+cAttachmentSet = lens _cAttachmentSet (\ s a -> s{_cAttachmentSet = a}) . _Default . _Coerce;
+
+instance FromJSON Communication where
+        parseJSON
+          = withObject "Communication"
+              (\ x ->
+                 Communication' <$>
+                   (x .:? "body") <*> (x .:? "caseId") <*>
+                     (x .:? "submittedBy")
+                     <*> (x .:? "timeCreated")
+                     <*> (x .:? "attachmentSet" .!= mempty))
+
+-- | The five most recent communications associated with the case.
+--
+-- /See:/ 'recentCaseCommunications' smart constructor.
+data RecentCaseCommunications = RecentCaseCommunications'
+    { _rccNextToken      :: !(Maybe Text)
+    , _rccCommunications :: !(Maybe [Communication])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecentCaseCommunications' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rccNextToken'
+--
+-- * 'rccCommunications'
+recentCaseCommunications
+    :: RecentCaseCommunications
+recentCaseCommunications =
+    RecentCaseCommunications'
+    { _rccNextToken = Nothing
+    , _rccCommunications = Nothing
+    }
+
+-- | A resumption point for pagination.
+rccNextToken :: Lens' RecentCaseCommunications (Maybe Text)
+rccNextToken = lens _rccNextToken (\ s a -> s{_rccNextToken = a});
+
+-- | The five most recent communications associated with the case.
+rccCommunications :: Lens' RecentCaseCommunications [Communication]
+rccCommunications = lens _rccCommunications (\ s a -> s{_rccCommunications = a}) . _Default . _Coerce;
+
+instance FromJSON RecentCaseCommunications where
+        parseJSON
+          = withObject "RecentCaseCommunications"
+              (\ x ->
+                 RecentCaseCommunications' <$>
+                   (x .:? "nextToken") <*>
+                     (x .:? "communications" .!= mempty))
+
+-- | A code and name pair that represent a severity level that can be applied
+-- to a support case.
+--
+-- /See:/ 'severityLevel' smart constructor.
+data SeverityLevel = SeverityLevel'
+    { _slName :: !(Maybe Text)
+    , _slCode :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SeverityLevel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'slName'
+--
+-- * 'slCode'
+severityLevel
+    :: SeverityLevel
+severityLevel =
+    SeverityLevel'
+    { _slName = Nothing
+    , _slCode = Nothing
+    }
+
+-- | The name of the severity level that corresponds to the severity level
+-- code.
+slName :: Lens' SeverityLevel (Maybe Text)
+slName = lens _slName (\ s a -> s{_slName = a});
+
+-- | One of four values: \"low,\" \"medium,\" \"high,\" and \"urgent\". These
+-- values correspond to response times returned to the caller in
+-- 'SeverityLevel.name'.
+slCode :: Lens' SeverityLevel (Maybe Text)
+slCode = lens _slCode (\ s a -> s{_slCode = a});
+
+instance FromJSON SeverityLevel where
+        parseJSON
+          = withObject "SeverityLevel"
+              (\ x ->
+                 SeverityLevel' <$> (x .:? "name") <*> (x .:? "code"))
+
+-- | Information about an AWS service returned by the DescribeServices
+-- operation.
+--
+-- /See:/ 'supportService' smart constructor.
+data SupportService = SupportService'
+    { _ssCategories :: !(Maybe [Category])
+    , _ssName       :: !(Maybe Text)
+    , _ssCode       :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SupportService' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ssCategories'
+--
+-- * 'ssName'
+--
+-- * 'ssCode'
+supportService
+    :: SupportService
+supportService =
+    SupportService'
+    { _ssCategories = Nothing
+    , _ssName = Nothing
+    , _ssCode = Nothing
+    }
+
+-- | A list of categories that describe the type of support issue a case
+-- describes. Categories consist of a category name and a category code.
+-- Category names and codes are passed to AWS Support when you call
+-- CreateCase.
+ssCategories :: Lens' SupportService [Category]
+ssCategories = lens _ssCategories (\ s a -> s{_ssCategories = a}) . _Default . _Coerce;
+
+-- | The friendly name for an AWS service. The 'Code' element contains the
+-- corresponding code.
+ssName :: Lens' SupportService (Maybe Text)
+ssName = lens _ssName (\ s a -> s{_ssName = a});
+
+-- | The code for an AWS service returned by the DescribeServices response.
+-- The 'Name' element contains the corresponding friendly name.
+ssCode :: Lens' SupportService (Maybe Text)
+ssCode = lens _ssCode (\ s a -> s{_ssCode = a});
+
+instance FromJSON SupportService where
+        parseJSON
+          = withObject "SupportService"
+              (\ x ->
+                 SupportService' <$>
+                   (x .:? "categories" .!= mempty) <*> (x .:? "name")
+                     <*> (x .:? "code"))
+
+-- | The container for summary information that relates to the category of
+-- the Trusted Advisor check.
+--
+-- /See:/ 'trustedAdvisorCategorySpecificSummary' smart constructor.
+newtype TrustedAdvisorCategorySpecificSummary = TrustedAdvisorCategorySpecificSummary'
+    { _tacssCostOptimizing :: Maybe TrustedAdvisorCostOptimizingSummary
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCategorySpecificSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacssCostOptimizing'
+trustedAdvisorCategorySpecificSummary
+    :: TrustedAdvisorCategorySpecificSummary
+trustedAdvisorCategorySpecificSummary =
+    TrustedAdvisorCategorySpecificSummary'
+    { _tacssCostOptimizing = Nothing
+    }
+
+-- | The summary information about cost savings for a Trusted Advisor check
+-- that is in the Cost Optimizing category.
+tacssCostOptimizing :: Lens' TrustedAdvisorCategorySpecificSummary (Maybe TrustedAdvisorCostOptimizingSummary)
+tacssCostOptimizing = lens _tacssCostOptimizing (\ s a -> s{_tacssCostOptimizing = a});
+
+instance FromJSON
+         TrustedAdvisorCategorySpecificSummary where
+        parseJSON
+          = withObject "TrustedAdvisorCategorySpecificSummary"
+              (\ x ->
+                 TrustedAdvisorCategorySpecificSummary' <$>
+                   (x .:? "costOptimizing"))
+
+-- | The description and metadata for a Trusted Advisor check.
+--
+-- /See:/ 'trustedAdvisorCheckDescription' smart constructor.
+data TrustedAdvisorCheckDescription = TrustedAdvisorCheckDescription'
+    { _tacdId          :: !Text
+    , _tacdName        :: !Text
+    , _tacdDescription :: !Text
+    , _tacdCategory    :: !Text
+    , _tacdMetadata    :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCheckDescription' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacdId'
+--
+-- * 'tacdName'
+--
+-- * 'tacdDescription'
+--
+-- * 'tacdCategory'
+--
+-- * 'tacdMetadata'
+trustedAdvisorCheckDescription
+    :: Text -- ^ 'tacdId'
+    -> Text -- ^ 'tacdName'
+    -> Text -- ^ 'tacdDescription'
+    -> Text -- ^ 'tacdCategory'
+    -> TrustedAdvisorCheckDescription
+trustedAdvisorCheckDescription pId_ pName_ pDescription_ pCategory_ =
+    TrustedAdvisorCheckDescription'
+    { _tacdId = pId_
+    , _tacdName = pName_
+    , _tacdDescription = pDescription_
+    , _tacdCategory = pCategory_
+    , _tacdMetadata = mempty
+    }
+
+-- | The unique identifier for the Trusted Advisor check.
+tacdId :: Lens' TrustedAdvisorCheckDescription Text
+tacdId = lens _tacdId (\ s a -> s{_tacdId = a});
+
+-- | The display name for the Trusted Advisor check.
+tacdName :: Lens' TrustedAdvisorCheckDescription Text
+tacdName = lens _tacdName (\ s a -> s{_tacdName = a});
+
+-- | The description of the Trusted Advisor check, which includes the alert
+-- criteria and recommended actions (contains HTML markup).
+tacdDescription :: Lens' TrustedAdvisorCheckDescription Text
+tacdDescription = lens _tacdDescription (\ s a -> s{_tacdDescription = a});
+
+-- | The category of the Trusted Advisor check.
+tacdCategory :: Lens' TrustedAdvisorCheckDescription Text
+tacdCategory = lens _tacdCategory (\ s a -> s{_tacdCategory = a});
+
+-- | The column headings for the data returned by the Trusted Advisor check.
+-- The order of the headings corresponds to the order of the data in the
+-- __Metadata__ element of the TrustedAdvisorResourceDetail for the check.
+-- __Metadata__ contains all the data that is shown in the Excel download,
+-- even in those cases where the UI shows just summary data.
+tacdMetadata :: Lens' TrustedAdvisorCheckDescription [Text]
+tacdMetadata = lens _tacdMetadata (\ s a -> s{_tacdMetadata = a}) . _Coerce;
+
+instance FromJSON TrustedAdvisorCheckDescription
+         where
+        parseJSON
+          = withObject "TrustedAdvisorCheckDescription"
+              (\ x ->
+                 TrustedAdvisorCheckDescription' <$>
+                   (x .: "id") <*> (x .: "name") <*>
+                     (x .: "description")
+                     <*> (x .: "category")
+                     <*> (x .:? "metadata" .!= mempty))
+
+-- | The refresh status of a Trusted Advisor check.
+--
+-- /See:/ 'trustedAdvisorCheckRefreshStatus' smart constructor.
+data TrustedAdvisorCheckRefreshStatus = TrustedAdvisorCheckRefreshStatus'
+    { _tacrsCheckId                    :: !Text
+    , _tacrsStatus                     :: !Text
+    , _tacrsMillisUntilNextRefreshable :: !Integer
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCheckRefreshStatus' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacrsCheckId'
+--
+-- * 'tacrsStatus'
+--
+-- * 'tacrsMillisUntilNextRefreshable'
+trustedAdvisorCheckRefreshStatus
+    :: Text -- ^ 'tacrsCheckId'
+    -> Text -- ^ 'tacrsStatus'
+    -> Integer -- ^ 'tacrsMillisUntilNextRefreshable'
+    -> TrustedAdvisorCheckRefreshStatus
+trustedAdvisorCheckRefreshStatus pCheckId_ pStatus_ pMillisUntilNextRefreshable_ =
+    TrustedAdvisorCheckRefreshStatus'
+    { _tacrsCheckId = pCheckId_
+    , _tacrsStatus = pStatus_
+    , _tacrsMillisUntilNextRefreshable = pMillisUntilNextRefreshable_
+    }
+
+-- | The unique identifier for the Trusted Advisor check.
+tacrsCheckId :: Lens' TrustedAdvisorCheckRefreshStatus Text
+tacrsCheckId = lens _tacrsCheckId (\ s a -> s{_tacrsCheckId = a});
+
+-- | The status of the Trusted Advisor check for which a refresh has been
+-- requested: \"none\", \"enqueued\", \"processing\", \"success\", or
+-- \"abandoned\".
+tacrsStatus :: Lens' TrustedAdvisorCheckRefreshStatus Text
+tacrsStatus = lens _tacrsStatus (\ s a -> s{_tacrsStatus = a});
+
+-- | The amount of time, in milliseconds, until the Trusted Advisor check is
+-- eligible for refresh.
+tacrsMillisUntilNextRefreshable :: Lens' TrustedAdvisorCheckRefreshStatus Integer
+tacrsMillisUntilNextRefreshable = lens _tacrsMillisUntilNextRefreshable (\ s a -> s{_tacrsMillisUntilNextRefreshable = a});
+
+instance FromJSON TrustedAdvisorCheckRefreshStatus
+         where
+        parseJSON
+          = withObject "TrustedAdvisorCheckRefreshStatus"
+              (\ x ->
+                 TrustedAdvisorCheckRefreshStatus' <$>
+                   (x .: "checkId") <*> (x .: "status") <*>
+                     (x .: "millisUntilNextRefreshable"))
+
+-- | The results of a Trusted Advisor check returned by
+-- DescribeTrustedAdvisorCheckResult.
+--
+-- /See:/ 'trustedAdvisorCheckResult' smart constructor.
+data TrustedAdvisorCheckResult = TrustedAdvisorCheckResult'
+    { _tacrCheckId                 :: !Text
+    , _tacrTimestamp               :: !Text
+    , _tacrStatus                  :: !Text
+    , _tacrResourcesSummary        :: !TrustedAdvisorResourcesSummary
+    , _tacrCategorySpecificSummary :: !TrustedAdvisorCategorySpecificSummary
+    , _tacrFlaggedResources        :: ![TrustedAdvisorResourceDetail]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCheckResult' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacrCheckId'
+--
+-- * 'tacrTimestamp'
+--
+-- * 'tacrStatus'
+--
+-- * 'tacrResourcesSummary'
+--
+-- * 'tacrCategorySpecificSummary'
+--
+-- * 'tacrFlaggedResources'
+trustedAdvisorCheckResult
+    :: Text -- ^ 'tacrCheckId'
+    -> Text -- ^ 'tacrTimestamp'
+    -> Text -- ^ 'tacrStatus'
+    -> TrustedAdvisorResourcesSummary -- ^ 'tacrResourcesSummary'
+    -> TrustedAdvisorCategorySpecificSummary -- ^ 'tacrCategorySpecificSummary'
+    -> TrustedAdvisorCheckResult
+trustedAdvisorCheckResult pCheckId_ pTimestamp_ pStatus_ pResourcesSummary_ pCategorySpecificSummary_ =
+    TrustedAdvisorCheckResult'
+    { _tacrCheckId = pCheckId_
+    , _tacrTimestamp = pTimestamp_
+    , _tacrStatus = pStatus_
+    , _tacrResourcesSummary = pResourcesSummary_
+    , _tacrCategorySpecificSummary = pCategorySpecificSummary_
+    , _tacrFlaggedResources = mempty
+    }
+
+-- | The unique identifier for the Trusted Advisor check.
+tacrCheckId :: Lens' TrustedAdvisorCheckResult Text
+tacrCheckId = lens _tacrCheckId (\ s a -> s{_tacrCheckId = a});
+
+-- | The time of the last refresh of the check.
+tacrTimestamp :: Lens' TrustedAdvisorCheckResult Text
+tacrTimestamp = lens _tacrTimestamp (\ s a -> s{_tacrTimestamp = a});
+
+-- | The alert status of the check: \"ok\" (green), \"warning\" (yellow),
+-- \"error\" (red), or \"not_available\".
+tacrStatus :: Lens' TrustedAdvisorCheckResult Text
+tacrStatus = lens _tacrStatus (\ s a -> s{_tacrStatus = a});
+
+-- | Undocumented member.
+tacrResourcesSummary :: Lens' TrustedAdvisorCheckResult TrustedAdvisorResourcesSummary
+tacrResourcesSummary = lens _tacrResourcesSummary (\ s a -> s{_tacrResourcesSummary = a});
+
+-- | Summary information that relates to the category of the check. Cost
+-- Optimizing is the only category that is currently supported.
+tacrCategorySpecificSummary :: Lens' TrustedAdvisorCheckResult TrustedAdvisorCategorySpecificSummary
+tacrCategorySpecificSummary = lens _tacrCategorySpecificSummary (\ s a -> s{_tacrCategorySpecificSummary = a});
+
+-- | The details about each resource listed in the check result.
+tacrFlaggedResources :: Lens' TrustedAdvisorCheckResult [TrustedAdvisorResourceDetail]
+tacrFlaggedResources = lens _tacrFlaggedResources (\ s a -> s{_tacrFlaggedResources = a}) . _Coerce;
+
+instance FromJSON TrustedAdvisorCheckResult where
+        parseJSON
+          = withObject "TrustedAdvisorCheckResult"
+              (\ x ->
+                 TrustedAdvisorCheckResult' <$>
+                   (x .: "checkId") <*> (x .: "timestamp") <*>
+                     (x .: "status")
+                     <*> (x .: "resourcesSummary")
+                     <*> (x .: "categorySpecificSummary")
+                     <*> (x .:? "flaggedResources" .!= mempty))
+
+-- | A summary of a Trusted Advisor check result, including the alert status,
+-- last refresh, and number of resources examined.
+--
+-- /See:/ 'trustedAdvisorCheckSummary' smart constructor.
+data TrustedAdvisorCheckSummary = TrustedAdvisorCheckSummary'
+    { _tacsHasFlaggedResources     :: !(Maybe Bool)
+    , _tacsCheckId                 :: !Text
+    , _tacsTimestamp               :: !Text
+    , _tacsStatus                  :: !Text
+    , _tacsResourcesSummary        :: !TrustedAdvisorResourcesSummary
+    , _tacsCategorySpecificSummary :: !TrustedAdvisorCategorySpecificSummary
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCheckSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacsHasFlaggedResources'
+--
+-- * 'tacsCheckId'
+--
+-- * 'tacsTimestamp'
+--
+-- * 'tacsStatus'
+--
+-- * 'tacsResourcesSummary'
+--
+-- * 'tacsCategorySpecificSummary'
+trustedAdvisorCheckSummary
+    :: Text -- ^ 'tacsCheckId'
+    -> Text -- ^ 'tacsTimestamp'
+    -> Text -- ^ 'tacsStatus'
+    -> TrustedAdvisorResourcesSummary -- ^ 'tacsResourcesSummary'
+    -> TrustedAdvisorCategorySpecificSummary -- ^ 'tacsCategorySpecificSummary'
+    -> TrustedAdvisorCheckSummary
+trustedAdvisorCheckSummary pCheckId_ pTimestamp_ pStatus_ pResourcesSummary_ pCategorySpecificSummary_ =
+    TrustedAdvisorCheckSummary'
+    { _tacsHasFlaggedResources = Nothing
+    , _tacsCheckId = pCheckId_
+    , _tacsTimestamp = pTimestamp_
+    , _tacsStatus = pStatus_
+    , _tacsResourcesSummary = pResourcesSummary_
+    , _tacsCategorySpecificSummary = pCategorySpecificSummary_
+    }
+
+-- | Specifies whether the Trusted Advisor check has flagged resources.
+tacsHasFlaggedResources :: Lens' TrustedAdvisorCheckSummary (Maybe Bool)
+tacsHasFlaggedResources = lens _tacsHasFlaggedResources (\ s a -> s{_tacsHasFlaggedResources = a});
+
+-- | The unique identifier for the Trusted Advisor check.
+tacsCheckId :: Lens' TrustedAdvisorCheckSummary Text
+tacsCheckId = lens _tacsCheckId (\ s a -> s{_tacsCheckId = a});
+
+-- | The time of the last refresh of the check.
+tacsTimestamp :: Lens' TrustedAdvisorCheckSummary Text
+tacsTimestamp = lens _tacsTimestamp (\ s a -> s{_tacsTimestamp = a});
+
+-- | The alert status of the check: \"ok\" (green), \"warning\" (yellow),
+-- \"error\" (red), or \"not_available\".
+tacsStatus :: Lens' TrustedAdvisorCheckSummary Text
+tacsStatus = lens _tacsStatus (\ s a -> s{_tacsStatus = a});
+
+-- | Undocumented member.
+tacsResourcesSummary :: Lens' TrustedAdvisorCheckSummary TrustedAdvisorResourcesSummary
+tacsResourcesSummary = lens _tacsResourcesSummary (\ s a -> s{_tacsResourcesSummary = a});
+
+-- | Summary information that relates to the category of the check. Cost
+-- Optimizing is the only category that is currently supported.
+tacsCategorySpecificSummary :: Lens' TrustedAdvisorCheckSummary TrustedAdvisorCategorySpecificSummary
+tacsCategorySpecificSummary = lens _tacsCategorySpecificSummary (\ s a -> s{_tacsCategorySpecificSummary = a});
+
+instance FromJSON TrustedAdvisorCheckSummary where
+        parseJSON
+          = withObject "TrustedAdvisorCheckSummary"
+              (\ x ->
+                 TrustedAdvisorCheckSummary' <$>
+                   (x .:? "hasFlaggedResources") <*> (x .: "checkId")
+                     <*> (x .: "timestamp")
+                     <*> (x .: "status")
+                     <*> (x .: "resourcesSummary")
+                     <*> (x .: "categorySpecificSummary"))
+
+-- | The estimated cost savings that might be realized if the recommended
+-- actions are taken.
+--
+-- /See:/ 'trustedAdvisorCostOptimizingSummary' smart constructor.
+data TrustedAdvisorCostOptimizingSummary = TrustedAdvisorCostOptimizingSummary'
+    { _tacosEstimatedMonthlySavings        :: !Double
+    , _tacosEstimatedPercentMonthlySavings :: !Double
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorCostOptimizingSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tacosEstimatedMonthlySavings'
+--
+-- * 'tacosEstimatedPercentMonthlySavings'
+trustedAdvisorCostOptimizingSummary
+    :: Double -- ^ 'tacosEstimatedMonthlySavings'
+    -> Double -- ^ 'tacosEstimatedPercentMonthlySavings'
+    -> TrustedAdvisorCostOptimizingSummary
+trustedAdvisorCostOptimizingSummary pEstimatedMonthlySavings_ pEstimatedPercentMonthlySavings_ =
+    TrustedAdvisorCostOptimizingSummary'
+    { _tacosEstimatedMonthlySavings = pEstimatedMonthlySavings_
+    , _tacosEstimatedPercentMonthlySavings = pEstimatedPercentMonthlySavings_
+    }
+
+-- | The estimated monthly savings that might be realized if the recommended
+-- actions are taken.
+tacosEstimatedMonthlySavings :: Lens' TrustedAdvisorCostOptimizingSummary Double
+tacosEstimatedMonthlySavings = lens _tacosEstimatedMonthlySavings (\ s a -> s{_tacosEstimatedMonthlySavings = a});
+
+-- | The estimated percentage of savings that might be realized if the
+-- recommended actions are taken.
+tacosEstimatedPercentMonthlySavings :: Lens' TrustedAdvisorCostOptimizingSummary Double
+tacosEstimatedPercentMonthlySavings = lens _tacosEstimatedPercentMonthlySavings (\ s a -> s{_tacosEstimatedPercentMonthlySavings = a});
+
+instance FromJSON TrustedAdvisorCostOptimizingSummary
+         where
+        parseJSON
+          = withObject "TrustedAdvisorCostOptimizingSummary"
+              (\ x ->
+                 TrustedAdvisorCostOptimizingSummary' <$>
+                   (x .: "estimatedMonthlySavings") <*>
+                     (x .: "estimatedPercentMonthlySavings"))
+
+-- | Contains information about a resource identified by a Trusted Advisor
+-- check.
+--
+-- /See:/ 'trustedAdvisorResourceDetail' smart constructor.
+data TrustedAdvisorResourceDetail = TrustedAdvisorResourceDetail'
+    { _tardIsSuppressed :: !(Maybe Bool)
+    , _tardStatus       :: !Text
+    , _tardRegion       :: !Text
+    , _tardResourceId   :: !Text
+    , _tardMetadata     :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorResourceDetail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tardIsSuppressed'
+--
+-- * 'tardStatus'
+--
+-- * 'tardRegion'
+--
+-- * 'tardResourceId'
+--
+-- * 'tardMetadata'
+trustedAdvisorResourceDetail
+    :: Text -- ^ 'tardStatus'
+    -> Text -- ^ 'tardRegion'
+    -> Text -- ^ 'tardResourceId'
+    -> TrustedAdvisorResourceDetail
+trustedAdvisorResourceDetail pStatus_ pRegion_ pResourceId_ =
+    TrustedAdvisorResourceDetail'
+    { _tardIsSuppressed = Nothing
+    , _tardStatus = pStatus_
+    , _tardRegion = pRegion_
+    , _tardResourceId = pResourceId_
+    , _tardMetadata = mempty
+    }
+
+-- | Specifies whether the AWS resource was ignored by Trusted Advisor
+-- because it was marked as suppressed by the user.
+tardIsSuppressed :: Lens' TrustedAdvisorResourceDetail (Maybe Bool)
+tardIsSuppressed = lens _tardIsSuppressed (\ s a -> s{_tardIsSuppressed = a});
+
+-- | The status code for the resource identified in the Trusted Advisor
+-- check.
+tardStatus :: Lens' TrustedAdvisorResourceDetail Text
+tardStatus = lens _tardStatus (\ s a -> s{_tardStatus = a});
+
+-- | The AWS region in which the identified resource is located.
+tardRegion :: Lens' TrustedAdvisorResourceDetail Text
+tardRegion = lens _tardRegion (\ s a -> s{_tardRegion = a});
+
+-- | The unique identifier for the identified resource.
+tardResourceId :: Lens' TrustedAdvisorResourceDetail Text
+tardResourceId = lens _tardResourceId (\ s a -> s{_tardResourceId = a});
+
+-- | Additional information about the identified resource. The exact metadata
+-- and its order can be obtained by inspecting the
+-- TrustedAdvisorCheckDescription object returned by the call to
+-- DescribeTrustedAdvisorChecks. __Metadata__ contains all the data that is
+-- shown in the Excel download, even in those cases where the UI shows just
+-- summary data.
+tardMetadata :: Lens' TrustedAdvisorResourceDetail [Text]
+tardMetadata = lens _tardMetadata (\ s a -> s{_tardMetadata = a}) . _Coerce;
+
+instance FromJSON TrustedAdvisorResourceDetail where
+        parseJSON
+          = withObject "TrustedAdvisorResourceDetail"
+              (\ x ->
+                 TrustedAdvisorResourceDetail' <$>
+                   (x .:? "isSuppressed") <*> (x .: "status") <*>
+                     (x .: "region")
+                     <*> (x .: "resourceId")
+                     <*> (x .:? "metadata" .!= mempty))
+
+-- | Details about AWS resources that were analyzed in a call to Trusted
+-- Advisor DescribeTrustedAdvisorCheckSummaries.
+--
+-- /See:/ 'trustedAdvisorResourcesSummary' smart constructor.
+data TrustedAdvisorResourcesSummary = TrustedAdvisorResourcesSummary'
+    { _tarsResourcesProcessed  :: !Integer
+    , _tarsResourcesFlagged    :: !Integer
+    , _tarsResourcesIgnored    :: !Integer
+    , _tarsResourcesSuppressed :: !Integer
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'TrustedAdvisorResourcesSummary' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tarsResourcesProcessed'
+--
+-- * 'tarsResourcesFlagged'
+--
+-- * 'tarsResourcesIgnored'
+--
+-- * 'tarsResourcesSuppressed'
+trustedAdvisorResourcesSummary
+    :: Integer -- ^ 'tarsResourcesProcessed'
+    -> Integer -- ^ 'tarsResourcesFlagged'
+    -> Integer -- ^ 'tarsResourcesIgnored'
+    -> Integer -- ^ 'tarsResourcesSuppressed'
+    -> TrustedAdvisorResourcesSummary
+trustedAdvisorResourcesSummary pResourcesProcessed_ pResourcesFlagged_ pResourcesIgnored_ pResourcesSuppressed_ =
+    TrustedAdvisorResourcesSummary'
+    { _tarsResourcesProcessed = pResourcesProcessed_
+    , _tarsResourcesFlagged = pResourcesFlagged_
+    , _tarsResourcesIgnored = pResourcesIgnored_
+    , _tarsResourcesSuppressed = pResourcesSuppressed_
+    }
+
+-- | The number of AWS resources that were analyzed by the Trusted Advisor
+-- check.
+tarsResourcesProcessed :: Lens' TrustedAdvisorResourcesSummary Integer
+tarsResourcesProcessed = lens _tarsResourcesProcessed (\ s a -> s{_tarsResourcesProcessed = a});
+
+-- | The number of AWS resources that were flagged (listed) by the Trusted
+-- Advisor check.
+tarsResourcesFlagged :: Lens' TrustedAdvisorResourcesSummary Integer
+tarsResourcesFlagged = lens _tarsResourcesFlagged (\ s a -> s{_tarsResourcesFlagged = a});
+
+-- | The number of AWS resources ignored by Trusted Advisor because
+-- information was unavailable.
+tarsResourcesIgnored :: Lens' TrustedAdvisorResourcesSummary Integer
+tarsResourcesIgnored = lens _tarsResourcesIgnored (\ s a -> s{_tarsResourcesIgnored = a});
+
+-- | The number of AWS resources ignored by Trusted Advisor because they were
+-- marked as suppressed by the user.
+tarsResourcesSuppressed :: Lens' TrustedAdvisorResourcesSummary Integer
+tarsResourcesSuppressed = lens _tarsResourcesSuppressed (\ s a -> s{_tarsResourcesSuppressed = a});
+
+instance FromJSON TrustedAdvisorResourcesSummary
+         where
+        parseJSON
+          = withObject "TrustedAdvisorResourcesSummary"
+              (\ x ->
+                 TrustedAdvisorResourcesSummary' <$>
+                   (x .: "resourcesProcessed") <*>
+                     (x .: "resourcesFlagged")
+                     <*> (x .: "resourcesIgnored")
+                     <*> (x .: "resourcesSuppressed"))
diff --git a/gen/Network/AWS/Support/Types/Sum.hs b/gen/Network/AWS/Support/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Support/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.Support.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.Support.Types.Sum where
+
+import           Network.AWS.Prelude
diff --git a/gen/Network/AWS/Support/Waiters.hs b/gen/Network/AWS/Support/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/Support/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.Support.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.Support.Waiters where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Support.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.Support
+import Test.AWS.Support.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "Support"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/Support.hs b/test/Test/AWS/Gen/Support.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/Support.hs
@@ -0,0 +1,277 @@
+{-# 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.Support
+-- 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.Support where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.Support
+import Test.AWS.Support.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"
+--         [ testRefreshTrustedAdvisorCheck $
+--             refreshTrustedAdvisorCheck
+--
+--         , testDescribeCases $
+--             describeCases
+--
+--         , testDescribeTrustedAdvisorCheckRefreshStatuses $
+--             describeTrustedAdvisorCheckRefreshStatuses
+--
+--         , testCreateCase $
+--             createCase
+--
+--         , testDescribeTrustedAdvisorCheckSummaries $
+--             describeTrustedAdvisorCheckSummaries
+--
+--         , testResolveCase $
+--             resolveCase
+--
+--         , testDescribeSeverityLevels $
+--             describeSeverityLevels
+--
+--         , testDescribeTrustedAdvisorChecks $
+--             describeTrustedAdvisorChecks
+--
+--         , testDescribeAttachment $
+--             describeAttachment
+--
+--         , testAddAttachmentsToSet $
+--             addAttachmentsToSet
+--
+--         , testDescribeTrustedAdvisorCheckResult $
+--             describeTrustedAdvisorCheckResult
+--
+--         , testDescribeServices $
+--             describeServices
+--
+--         , testDescribeCommunications $
+--             describeCommunications
+--
+--         , testAddCommunicationToCase $
+--             addCommunicationToCase
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testRefreshTrustedAdvisorCheckResponse $
+--             refreshTrustedAdvisorCheckResponse
+--
+--         , testDescribeCasesResponse $
+--             describeCasesResponse
+--
+--         , testDescribeTrustedAdvisorCheckRefreshStatusesResponse $
+--             describeTrustedAdvisorCheckRefreshStatusesResponse
+--
+--         , testCreateCaseResponse $
+--             createCaseResponse
+--
+--         , testDescribeTrustedAdvisorCheckSummariesResponse $
+--             describeTrustedAdvisorCheckSummariesResponse
+--
+--         , testResolveCaseResponse $
+--             resolveCaseResponse
+--
+--         , testDescribeSeverityLevelsResponse $
+--             describeSeverityLevelsResponse
+--
+--         , testDescribeTrustedAdvisorChecksResponse $
+--             describeTrustedAdvisorChecksResponse
+--
+--         , testDescribeAttachmentResponse $
+--             describeAttachmentResponse
+--
+--         , testAddAttachmentsToSetResponse $
+--             addAttachmentsToSetResponse
+--
+--         , testDescribeTrustedAdvisorCheckResultResponse $
+--             describeTrustedAdvisorCheckResultResponse
+--
+--         , testDescribeServicesResponse $
+--             describeServicesResponse
+--
+--         , testDescribeCommunicationsResponse $
+--             describeCommunicationsResponse
+--
+--         , testAddCommunicationToCaseResponse $
+--             addCommunicationToCaseResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testRefreshTrustedAdvisorCheck :: RefreshTrustedAdvisorCheck -> TestTree
+testRefreshTrustedAdvisorCheck = req
+    "RefreshTrustedAdvisorCheck"
+    "fixture/RefreshTrustedAdvisorCheck"
+
+testDescribeCases :: DescribeCases -> TestTree
+testDescribeCases = req
+    "DescribeCases"
+    "fixture/DescribeCases"
+
+testDescribeTrustedAdvisorCheckRefreshStatuses :: DescribeTrustedAdvisorCheckRefreshStatuses -> TestTree
+testDescribeTrustedAdvisorCheckRefreshStatuses = req
+    "DescribeTrustedAdvisorCheckRefreshStatuses"
+    "fixture/DescribeTrustedAdvisorCheckRefreshStatuses"
+
+testCreateCase :: CreateCase -> TestTree
+testCreateCase = req
+    "CreateCase"
+    "fixture/CreateCase"
+
+testDescribeTrustedAdvisorCheckSummaries :: DescribeTrustedAdvisorCheckSummaries -> TestTree
+testDescribeTrustedAdvisorCheckSummaries = req
+    "DescribeTrustedAdvisorCheckSummaries"
+    "fixture/DescribeTrustedAdvisorCheckSummaries"
+
+testResolveCase :: ResolveCase -> TestTree
+testResolveCase = req
+    "ResolveCase"
+    "fixture/ResolveCase"
+
+testDescribeSeverityLevels :: DescribeSeverityLevels -> TestTree
+testDescribeSeverityLevels = req
+    "DescribeSeverityLevels"
+    "fixture/DescribeSeverityLevels"
+
+testDescribeTrustedAdvisorChecks :: DescribeTrustedAdvisorChecks -> TestTree
+testDescribeTrustedAdvisorChecks = req
+    "DescribeTrustedAdvisorChecks"
+    "fixture/DescribeTrustedAdvisorChecks"
+
+testDescribeAttachment :: DescribeAttachment -> TestTree
+testDescribeAttachment = req
+    "DescribeAttachment"
+    "fixture/DescribeAttachment"
+
+testAddAttachmentsToSet :: AddAttachmentsToSet -> TestTree
+testAddAttachmentsToSet = req
+    "AddAttachmentsToSet"
+    "fixture/AddAttachmentsToSet"
+
+testDescribeTrustedAdvisorCheckResult :: DescribeTrustedAdvisorCheckResult -> TestTree
+testDescribeTrustedAdvisorCheckResult = req
+    "DescribeTrustedAdvisorCheckResult"
+    "fixture/DescribeTrustedAdvisorCheckResult"
+
+testDescribeServices :: DescribeServices -> TestTree
+testDescribeServices = req
+    "DescribeServices"
+    "fixture/DescribeServices"
+
+testDescribeCommunications :: DescribeCommunications -> TestTree
+testDescribeCommunications = req
+    "DescribeCommunications"
+    "fixture/DescribeCommunications"
+
+testAddCommunicationToCase :: AddCommunicationToCase -> TestTree
+testAddCommunicationToCase = req
+    "AddCommunicationToCase"
+    "fixture/AddCommunicationToCase"
+
+-- Responses
+
+testRefreshTrustedAdvisorCheckResponse :: RefreshTrustedAdvisorCheckResponse -> TestTree
+testRefreshTrustedAdvisorCheckResponse = res
+    "RefreshTrustedAdvisorCheckResponse"
+    "fixture/RefreshTrustedAdvisorCheckResponse"
+    (Proxy :: Proxy RefreshTrustedAdvisorCheck)
+
+testDescribeCasesResponse :: DescribeCasesResponse -> TestTree
+testDescribeCasesResponse = res
+    "DescribeCasesResponse"
+    "fixture/DescribeCasesResponse"
+    (Proxy :: Proxy DescribeCases)
+
+testDescribeTrustedAdvisorCheckRefreshStatusesResponse :: DescribeTrustedAdvisorCheckRefreshStatusesResponse -> TestTree
+testDescribeTrustedAdvisorCheckRefreshStatusesResponse = res
+    "DescribeTrustedAdvisorCheckRefreshStatusesResponse"
+    "fixture/DescribeTrustedAdvisorCheckRefreshStatusesResponse"
+    (Proxy :: Proxy DescribeTrustedAdvisorCheckRefreshStatuses)
+
+testCreateCaseResponse :: CreateCaseResponse -> TestTree
+testCreateCaseResponse = res
+    "CreateCaseResponse"
+    "fixture/CreateCaseResponse"
+    (Proxy :: Proxy CreateCase)
+
+testDescribeTrustedAdvisorCheckSummariesResponse :: DescribeTrustedAdvisorCheckSummariesResponse -> TestTree
+testDescribeTrustedAdvisorCheckSummariesResponse = res
+    "DescribeTrustedAdvisorCheckSummariesResponse"
+    "fixture/DescribeTrustedAdvisorCheckSummariesResponse"
+    (Proxy :: Proxy DescribeTrustedAdvisorCheckSummaries)
+
+testResolveCaseResponse :: ResolveCaseResponse -> TestTree
+testResolveCaseResponse = res
+    "ResolveCaseResponse"
+    "fixture/ResolveCaseResponse"
+    (Proxy :: Proxy ResolveCase)
+
+testDescribeSeverityLevelsResponse :: DescribeSeverityLevelsResponse -> TestTree
+testDescribeSeverityLevelsResponse = res
+    "DescribeSeverityLevelsResponse"
+    "fixture/DescribeSeverityLevelsResponse"
+    (Proxy :: Proxy DescribeSeverityLevels)
+
+testDescribeTrustedAdvisorChecksResponse :: DescribeTrustedAdvisorChecksResponse -> TestTree
+testDescribeTrustedAdvisorChecksResponse = res
+    "DescribeTrustedAdvisorChecksResponse"
+    "fixture/DescribeTrustedAdvisorChecksResponse"
+    (Proxy :: Proxy DescribeTrustedAdvisorChecks)
+
+testDescribeAttachmentResponse :: DescribeAttachmentResponse -> TestTree
+testDescribeAttachmentResponse = res
+    "DescribeAttachmentResponse"
+    "fixture/DescribeAttachmentResponse"
+    (Proxy :: Proxy DescribeAttachment)
+
+testAddAttachmentsToSetResponse :: AddAttachmentsToSetResponse -> TestTree
+testAddAttachmentsToSetResponse = res
+    "AddAttachmentsToSetResponse"
+    "fixture/AddAttachmentsToSetResponse"
+    (Proxy :: Proxy AddAttachmentsToSet)
+
+testDescribeTrustedAdvisorCheckResultResponse :: DescribeTrustedAdvisorCheckResultResponse -> TestTree
+testDescribeTrustedAdvisorCheckResultResponse = res
+    "DescribeTrustedAdvisorCheckResultResponse"
+    "fixture/DescribeTrustedAdvisorCheckResultResponse"
+    (Proxy :: Proxy DescribeTrustedAdvisorCheckResult)
+
+testDescribeServicesResponse :: DescribeServicesResponse -> TestTree
+testDescribeServicesResponse = res
+    "DescribeServicesResponse"
+    "fixture/DescribeServicesResponse"
+    (Proxy :: Proxy DescribeServices)
+
+testDescribeCommunicationsResponse :: DescribeCommunicationsResponse -> TestTree
+testDescribeCommunicationsResponse = res
+    "DescribeCommunicationsResponse"
+    "fixture/DescribeCommunicationsResponse"
+    (Proxy :: Proxy DescribeCommunications)
+
+testAddCommunicationToCaseResponse :: AddCommunicationToCaseResponse -> TestTree
+testAddCommunicationToCaseResponse = res
+    "AddCommunicationToCaseResponse"
+    "fixture/AddCommunicationToCaseResponse"
+    (Proxy :: Proxy AddCommunicationToCase)
diff --git a/test/Test/AWS/Support.hs b/test/Test/AWS/Support.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Support.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.Support
+-- 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.Support
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.Support
+import           Test.AWS.Gen.Support
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/Support/Internal.hs b/test/Test/AWS/Support/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Support/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.Support.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.Support.Internal where
+
+import Test.AWS.Prelude
