diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,23 +1,37 @@
 # Amazon Import/Export 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 Import/Export accelerates moving large amounts of data into and out of
-AWS using portable storage devices for transport. AWS transfers your data
-directly onto and off of storage devices using Amazon’s high-speed internal
-network and bypassing the Internet. For significant data sets, AWS
-Import/Export is often faster than Internet transfer and more cost effective
-than upgrading your connectivity.
+AWS Import\/Export Service AWS Import\/Export accelerates transferring
+large amounts of data between the AWS cloud and portable storage devices
+that you mail to us. AWS Import\/Export transfers data directly onto and
+off of your storage devices using Amazon\'s high-speed internal network
+and bypassing the Internet. For large data sets, AWS Import\/Export is
+often faster than Internet transfer and more cost effective than
+upgrading your connectivity.
 
 Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-importexport)
 and the [AWS API Reference](http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.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-importexport.cabal b/amazonka-importexport.cabal
--- a/amazonka-importexport.cabal
+++ b/amazonka-importexport.cabal
@@ -1,30 +1,39 @@
 name:                  amazonka-importexport
-version:               0.3.6
+version:               1.0.0
 synopsis:              Amazon Import/Export 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 Import/Export accelerates moving large amounts of data into and out of
-    AWS using portable storage devices for transport. AWS transfers your data
-    directly onto and off of storage devices using Amazon’s high-speed internal
-    network and bypassing the Internet. For significant data sets, AWS
-    Import/Export is often faster than Internet transfer and more cost effective
-    than upgrading your connectivity.
-
+    AWS Import\/Export Service AWS Import\/Export accelerates transferring
+    large amounts of data between the AWS cloud and portable storage devices
+    that you mail to us. AWS Import\/Export transfers data directly onto and
+    off of your storage devices using Amazon\'s high-speed internal network
+    and bypassing the Internet. For large data sets, AWS Import\/Export is
+    often faster than Internet transfer and more cost effective than
+    upgrading your connectivity.
     .
-    /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.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.ImportExport" and the <http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html AWS API Reference>
+    to get started.
 
 source-repository head
     type:     git
@@ -45,9 +54,40 @@
         , Network.AWS.ImportExport.ListJobs
         , Network.AWS.ImportExport.Types
         , Network.AWS.ImportExport.UpdateJob
+        , Network.AWS.ImportExport.Waiters
 
     other-modules:
+          Network.AWS.ImportExport.Types.Product
+        , Network.AWS.ImportExport.Types.Sum
 
     build-depends:
-          amazonka-core == 0.3.6.*
+          amazonka-core == 1.0.0.*
         , base          >= 4.7     && < 5
+
+test-suite amazonka-importexport-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.ImportExport
+        , Test.AWS.Gen.ImportExport
+        , Test.AWS.ImportExport.Internal
+
+    build-depends:
+          amazonka-core == 1.0.0
+        , amazonka-test == 1.0.0
+        , amazonka-importexport == 1.0.0
+        , base
+        , bytestring
+        , lens
+        , tasty
+        , tasty-hunit
+        , text
+        , time
+        , unordered-containers
diff --git a/gen/Network/AWS/ImportExport.hs b/gen/Network/AWS/ImportExport.hs
--- a/gen/Network/AWS/ImportExport.hs
+++ b/gen/Network/AWS/ImportExport.hs
@@ -1,35 +1,172 @@
+{-# 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.ImportExport
--- 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 Import/Export accelerates moving large amounts of data into and out of
--- AWS using portable storage devices for transport. AWS transfers your data
--- directly onto and off of storage devices using Amazon’s high-speed internal
--- network and bypassing the Internet. For significant data sets, AWS
--- Import/Export is often faster than Internet transfer and more cost effective
--- than upgrading your connectivity.
+-- AWS Import\/Export Service AWS Import\/Export accelerates transferring
+-- large amounts of data between the AWS cloud and portable storage devices
+-- that you mail to us. AWS Import\/Export transfers data directly onto and
+-- off of your storage devices using Amazon\'s high-speed internal network
+-- and bypassing the Internet. For large data sets, AWS Import\/Export is
+-- often faster than Internet transfer and more cost effective than
+-- upgrading your connectivity.
+--
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/api-reference.html AWS API Reference>
 module Network.AWS.ImportExport
-    ( module Network.AWS.ImportExport.CancelJob
-    , module Network.AWS.ImportExport.CreateJob
+    (
+    -- * Service
+      ImportExport
+
+    -- * Errors
+    -- $errors
+
+    -- ** InvalidJobIdException
+    , _InvalidJobIdException
+
+    -- ** InvalidParameterException
+    , _InvalidParameterException
+
+    -- ** ExpiredJobIdException
+    , _ExpiredJobIdException
+
+    -- ** InvalidFileSystemException
+    , _InvalidFileSystemException
+
+    -- ** InvalidAccessKeyIdException
+    , _InvalidAccessKeyIdException
+
+    -- ** UnableToUpdateJobIdException
+    , _UnableToUpdateJobIdException
+
+    -- ** UnableToCancelJobIdException
+    , _UnableToCancelJobIdException
+
+    -- ** InvalidVersionException
+    , _InvalidVersionException
+
+    -- ** MultipleRegionsException
+    , _MultipleRegionsException
+
+    -- ** MalformedManifestException
+    , _MalformedManifestException
+
+    -- ** CanceledJobIdException
+    , _CanceledJobIdException
+
+    -- ** BucketPermissionException
+    , _BucketPermissionException
+
+    -- ** MissingParameterException
+    , _MissingParameterException
+
+    -- ** NoSuchBucketException
+    , _NoSuchBucketException
+
+    -- ** InvalidAddressException
+    , _InvalidAddressException
+
+    -- ** InvalidManifestFieldException
+    , _InvalidManifestFieldException
+
+    -- ** MissingCustomsException
+    , _MissingCustomsException
+
+    -- ** InvalidCustomsException
+    , _InvalidCustomsException
+
+    -- ** MissingManifestFieldException
+    , _MissingManifestFieldException
+
+    -- ** CreateJobQuotaExceededException
+    , _CreateJobQuotaExceededException
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** GetShippingLabel
     , module Network.AWS.ImportExport.GetShippingLabel
-    , module Network.AWS.ImportExport.GetStatus
+
+    -- ** CreateJob
+    , module Network.AWS.ImportExport.CreateJob
+
+    -- ** ListJobs (Paginated)
     , module Network.AWS.ImportExport.ListJobs
-    , module Network.AWS.ImportExport.Types
+
+    -- ** UpdateJob
     , module Network.AWS.ImportExport.UpdateJob
+
+    -- ** GetStatus
+    , module Network.AWS.ImportExport.GetStatus
+
+    -- ** CancelJob
+    , module Network.AWS.ImportExport.CancelJob
+
+    -- * Types
+
+    -- ** JobType
+    , JobType (..)
+
+    -- ** Artifact
+    , Artifact
+    , artifact
+    , aURL
+    , aDescription
+
+    -- ** Job
+    , Job
+    , job
+    , jobJobType
+    , jobJobId
+    , jobIsCanceled
+    , jobCreationDate
     ) where
 
-import Network.AWS.ImportExport.CancelJob
-import Network.AWS.ImportExport.CreateJob
-import Network.AWS.ImportExport.GetShippingLabel
-import Network.AWS.ImportExport.GetStatus
-import Network.AWS.ImportExport.ListJobs
-import Network.AWS.ImportExport.Types
-import Network.AWS.ImportExport.UpdateJob
+import           Network.AWS.ImportExport.CancelJob
+import           Network.AWS.ImportExport.CreateJob
+import           Network.AWS.ImportExport.GetShippingLabel
+import           Network.AWS.ImportExport.GetStatus
+import           Network.AWS.ImportExport.ListJobs
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.UpdateJob
+import           Network.AWS.ImportExport.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 'ImportExport'.
+-}
+
+{- $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/ImportExport/CancelJob.hs b/gen/Network/AWS/ImportExport/CancelJob.hs
--- a/gen/Network/AWS/ImportExport/CancelJob.hs
+++ b/gen/Network/AWS/ImportExport/CancelJob.hs
@@ -1,116 +1,134 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.ImportExport.CancelJob
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This operation cancels a specified job. Only the job owner can cancel it. The
--- operation fails if the job has already started or is complete.
+-- This operation cancels a specified job. Only the job owner can cancel
+-- it. The operation fails if the job has already started or is complete.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebCancelJob.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebCancelJob.html AWS API Reference> for CancelJob.
 module Network.AWS.ImportExport.CancelJob
     (
-    -- * Request
-      CancelJob
-    -- ** Request constructor
-    , cancelJob
-    -- ** Request lenses
-    , cj1APIVersion
-    , cj1JobId
+    -- * Creating a Request
+      cancelJob
+    , CancelJob
+    -- * Request Lenses
+    , cAPIVersion
+    , cJobId
 
-    -- * Response
-    , CancelJobResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , cancelJobResponse
-    -- ** Response lenses
-    , cjrSuccess
+    , CancelJobResponse
+    -- * Response Lenses
+    , crsSuccess
+    , crsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
-
-data CancelJob = CancelJob
-    { _cj1APIVersion :: Maybe Text
-    , _cj1JobId      :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CancelJob' constructor.
+-- | Input structure for the CancelJob operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'cancelJob' smart constructor.
+data CancelJob = CancelJob'
+    { _cAPIVersion :: !(Maybe Text)
+    , _cJobId      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CancelJob' with the minimum fields required to make a request.
 --
--- * 'cj1APIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cj1JobId' @::@ 'Text'
+-- * 'cAPIVersion'
 --
-cancelJob :: Text -- ^ 'cj1JobId'
-          -> CancelJob
-cancelJob p1 = CancelJob
-    { _cj1JobId      = p1
-    , _cj1APIVersion = Nothing
+-- * 'cJobId'
+cancelJob
+    :: Text -- ^ 'cJobId'
+    -> CancelJob
+cancelJob pJobId_ =
+    CancelJob'
+    { _cAPIVersion = Nothing
+    , _cJobId = pJobId_
     }
 
-cj1APIVersion :: Lens' CancelJob (Maybe Text)
-cj1APIVersion = lens _cj1APIVersion (\s a -> s { _cj1APIVersion = a })
-
-cj1JobId :: Lens' CancelJob Text
-cj1JobId = lens _cj1JobId (\s a -> s { _cj1JobId = a })
+-- | Undocumented member.
+cAPIVersion :: Lens' CancelJob (Maybe Text)
+cAPIVersion = lens _cAPIVersion (\ s a -> s{_cAPIVersion = a});
 
-newtype CancelJobResponse = CancelJobResponse
-    { _cjrSuccess :: Maybe Bool
-    } deriving (Eq, Ord, Read, Show)
+-- | Undocumented member.
+cJobId :: Lens' CancelJob Text
+cJobId = lens _cJobId (\ s a -> s{_cJobId = a});
 
--- | 'CancelJobResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'cjrSuccess' @::@ 'Maybe' 'Bool'
---
-cancelJobResponse :: CancelJobResponse
-cancelJobResponse = CancelJobResponse
-    { _cjrSuccess = Nothing
-    }
+instance AWSRequest CancelJob where
+        type Sv CancelJob = ImportExport
+        type Rs CancelJob = CancelJobResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CancelJobResult"
+              (\ s h x ->
+                 CancelJobResponse' <$>
+                   (x .@? "Success") <*> (pure (fromEnum s)))
 
-cjrSuccess :: Lens' CancelJobResponse (Maybe Bool)
-cjrSuccess = lens _cjrSuccess (\s a -> s { _cjrSuccess = a })
+instance ToHeaders CancelJob where
+        toHeaders = const mempty
 
 instance ToPath CancelJob where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery CancelJob where
-    toQuery CancelJob{..} = mconcat
-        [ "APIVersion" =? _cj1APIVersion
-        , "JobId"      =? _cj1JobId
-        ]
+        toQuery CancelJob'{..}
+          = mconcat
+              ["Operation=CancelJob",
+               "Action" =: ("CancelJob" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "APIVersion" =: _cAPIVersion, "JobId" =: _cJobId]
 
-instance ToHeaders CancelJob
+-- | Output structure for the CancelJob operation.
+--
+-- /See:/ 'cancelJobResponse' smart constructor.
+data CancelJobResponse = CancelJobResponse'
+    { _crsSuccess :: !(Maybe Bool)
+    , _crsStatus  :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest CancelJob where
-    type Sv CancelJob = ImportExport
-    type Rs CancelJob = CancelJobResponse
+-- | Creates a value of 'CancelJobResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsSuccess'
+--
+-- * 'crsStatus'
+cancelJobResponse
+    :: Int -- ^ 'crsStatus'
+    -> CancelJobResponse
+cancelJobResponse pStatus_ =
+    CancelJobResponse'
+    { _crsSuccess = Nothing
+    , _crsStatus = pStatus_
+    }
 
-    request  = post "CancelJob"
-    response = xmlResponse
+-- | Undocumented member.
+crsSuccess :: Lens' CancelJobResponse (Maybe Bool)
+crsSuccess = lens _crsSuccess (\ s a -> s{_crsSuccess = a});
 
-instance FromXML CancelJobResponse where
-    parseXML = withElement "CancelJobResult" $ \x -> CancelJobResponse
-        <$> x .@? "Success"
+-- | The response status code.
+crsStatus :: Lens' CancelJobResponse Int
+crsStatus = lens _crsStatus (\ s a -> s{_crsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/CreateJob.hs b/gen/Network/AWS/ImportExport/CreateJob.hs
--- a/gen/Network/AWS/ImportExport/CreateJob.hs
+++ b/gen/Network/AWS/ImportExport/CreateJob.hs
@@ -1,197 +1,222 @@
-{-# 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.ImportExport.CreateJob
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This operation initiates the process of scheduling an upload or download of
--- your data. You include in the request a manifest that describes the data
--- transfer specifics. The response to the request includes a job ID, which you
--- can use in other operations, a signature that you use to identify your
--- storage device, and the address where you should ship your storage device.
+-- This operation initiates the process of scheduling an upload or download
+-- of your data. You include in the request a manifest that describes the
+-- data transfer specifics. The response to the request includes a job ID,
+-- which you can use in other operations, a signature that you use to
+-- identify your storage device, and the address where you should ship your
+-- storage device.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebCreateJob.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebCreateJob.html AWS API Reference> for CreateJob.
 module Network.AWS.ImportExport.CreateJob
     (
-    -- * Request
-      CreateJob
-    -- ** Request constructor
-    , createJob
-    -- ** Request lenses
+    -- * Creating a Request
+      createJob
+    , CreateJob
+    -- * Request Lenses
     , cjAPIVersion
+    , cjManifestAddendum
     , cjJobType
     , cjManifest
-    , cjManifestAddendum
     , cjValidateOnly
 
-    -- * Response
-    , CreateJobResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , createJobResponse
-    -- ** Response lenses
-    , cjrArtifactList
-    , cjrJobId
-    , cjrJobType
-    , cjrSignature
-    , cjrSignatureFileContents
-    , cjrWarningMessage
+    , CreateJobResponse
+    -- * Response Lenses
+    , cjrsSignature
+    , cjrsJobType
+    , cjrsJobId
+    , cjrsSignatureFileContents
+    , cjrsWarningMessage
+    , cjrsArtifactList
+    , cjrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
-
-data CreateJob = CreateJob
-    { _cjAPIVersion       :: Maybe Text
-    , _cjJobType          :: JobType
-    , _cjManifest         :: Text
-    , _cjManifestAddendum :: Maybe Text
-    , _cjValidateOnly     :: Bool
-    } deriving (Eq, Read, Show)
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'CreateJob' constructor.
+-- | Input structure for the CreateJob operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createJob' smart constructor.
+data CreateJob = CreateJob'
+    { _cjAPIVersion       :: !(Maybe Text)
+    , _cjManifestAddendum :: !(Maybe Text)
+    , _cjJobType          :: !JobType
+    , _cjManifest         :: !Text
+    , _cjValidateOnly     :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateJob' with the minimum fields required to make a request.
 --
--- * 'cjAPIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cjJobType' @::@ 'JobType'
+-- * 'cjAPIVersion'
 --
--- * 'cjManifest' @::@ 'Text'
+-- * 'cjManifestAddendum'
 --
--- * 'cjManifestAddendum' @::@ 'Maybe' 'Text'
+-- * 'cjJobType'
 --
--- * 'cjValidateOnly' @::@ 'Bool'
+-- * 'cjManifest'
 --
-createJob :: JobType -- ^ 'cjJobType'
-          -> Text -- ^ 'cjManifest'
-          -> Bool -- ^ 'cjValidateOnly'
-          -> CreateJob
-createJob p1 p2 p3 = CreateJob
-    { _cjJobType          = p1
-    , _cjManifest         = p2
-    , _cjValidateOnly     = p3
+-- * 'cjValidateOnly'
+createJob
+    :: JobType -- ^ 'cjJobType'
+    -> Text -- ^ 'cjManifest'
+    -> Bool -- ^ 'cjValidateOnly'
+    -> CreateJob
+createJob pJobType_ pManifest_ pValidateOnly_ =
+    CreateJob'
+    { _cjAPIVersion = Nothing
     , _cjManifestAddendum = Nothing
-    , _cjAPIVersion       = Nothing
+    , _cjJobType = pJobType_
+    , _cjManifest = pManifest_
+    , _cjValidateOnly = pValidateOnly_
     }
 
+-- | Undocumented member.
 cjAPIVersion :: Lens' CreateJob (Maybe Text)
-cjAPIVersion = lens _cjAPIVersion (\s a -> s { _cjAPIVersion = a })
+cjAPIVersion = lens _cjAPIVersion (\ s a -> s{_cjAPIVersion = a});
 
+-- | Undocumented member.
+cjManifestAddendum :: Lens' CreateJob (Maybe Text)
+cjManifestAddendum = lens _cjManifestAddendum (\ s a -> s{_cjManifestAddendum = a});
+
+-- | Undocumented member.
 cjJobType :: Lens' CreateJob JobType
-cjJobType = lens _cjJobType (\s a -> s { _cjJobType = a })
+cjJobType = lens _cjJobType (\ s a -> s{_cjJobType = a});
 
+-- | Undocumented member.
 cjManifest :: Lens' CreateJob Text
-cjManifest = lens _cjManifest (\s a -> s { _cjManifest = a })
-
-cjManifestAddendum :: Lens' CreateJob (Maybe Text)
-cjManifestAddendum =
-    lens _cjManifestAddendum (\s a -> s { _cjManifestAddendum = a })
+cjManifest = lens _cjManifest (\ s a -> s{_cjManifest = a});
 
+-- | Undocumented member.
 cjValidateOnly :: Lens' CreateJob Bool
-cjValidateOnly = lens _cjValidateOnly (\s a -> s { _cjValidateOnly = a })
+cjValidateOnly = lens _cjValidateOnly (\ s a -> s{_cjValidateOnly = a});
 
-data CreateJobResponse = CreateJobResponse
-    { _cjrArtifactList          :: List "member" Artifact
-    , _cjrJobId                 :: Maybe Text
-    , _cjrJobType               :: Maybe JobType
-    , _cjrSignature             :: Maybe Text
-    , _cjrSignatureFileContents :: Maybe Text
-    , _cjrWarningMessage        :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest CreateJob where
+        type Sv CreateJob = ImportExport
+        type Rs CreateJob = CreateJobResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "CreateJobResult"
+              (\ s h x ->
+                 CreateJobResponse' <$>
+                   (x .@? "Signature") <*> (x .@? "JobType") <*>
+                     (x .@? "JobId")
+                     <*> (x .@? "SignatureFileContents")
+                     <*> (x .@? "WarningMessage")
+                     <*>
+                     (x .@? "ArtifactList" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | 'CreateJobResponse' constructor.
+instance ToHeaders CreateJob where
+        toHeaders = const mempty
+
+instance ToPath CreateJob where
+        toPath = const "/"
+
+instance ToQuery CreateJob where
+        toQuery CreateJob'{..}
+          = mconcat
+              ["Operation=CreateJob",
+               "Action" =: ("CreateJob" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "APIVersion" =: _cjAPIVersion,
+               "ManifestAddendum" =: _cjManifestAddendum,
+               "JobType" =: _cjJobType, "Manifest" =: _cjManifest,
+               "ValidateOnly" =: _cjValidateOnly]
+
+-- | Output structure for the CreateJob operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'createJobResponse' smart constructor.
+data CreateJobResponse = CreateJobResponse'
+    { _cjrsSignature             :: !(Maybe Text)
+    , _cjrsJobType               :: !(Maybe JobType)
+    , _cjrsJobId                 :: !(Maybe Text)
+    , _cjrsSignatureFileContents :: !(Maybe Text)
+    , _cjrsWarningMessage        :: !(Maybe Text)
+    , _cjrsArtifactList          :: !(Maybe [Artifact])
+    , _cjrsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateJobResponse' with the minimum fields required to make a request.
 --
--- * 'cjrArtifactList' @::@ ['Artifact']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'cjrJobId' @::@ 'Maybe' 'Text'
+-- * 'cjrsSignature'
 --
--- * 'cjrJobType' @::@ 'Maybe' 'JobType'
+-- * 'cjrsJobType'
 --
--- * 'cjrSignature' @::@ 'Maybe' 'Text'
+-- * 'cjrsJobId'
 --
--- * 'cjrSignatureFileContents' @::@ 'Maybe' 'Text'
+-- * 'cjrsSignatureFileContents'
 --
--- * 'cjrWarningMessage' @::@ 'Maybe' 'Text'
+-- * 'cjrsWarningMessage'
 --
-createJobResponse :: CreateJobResponse
-createJobResponse = CreateJobResponse
-    { _cjrJobId                 = Nothing
-    , _cjrJobType               = Nothing
-    , _cjrSignature             = Nothing
-    , _cjrSignatureFileContents = Nothing
-    , _cjrWarningMessage        = Nothing
-    , _cjrArtifactList          = mempty
+-- * 'cjrsArtifactList'
+--
+-- * 'cjrsStatus'
+createJobResponse
+    :: Int -- ^ 'cjrsStatus'
+    -> CreateJobResponse
+createJobResponse pStatus_ =
+    CreateJobResponse'
+    { _cjrsSignature = Nothing
+    , _cjrsJobType = Nothing
+    , _cjrsJobId = Nothing
+    , _cjrsSignatureFileContents = Nothing
+    , _cjrsWarningMessage = Nothing
+    , _cjrsArtifactList = Nothing
+    , _cjrsStatus = pStatus_
     }
 
-cjrArtifactList :: Lens' CreateJobResponse [Artifact]
-cjrArtifactList = lens _cjrArtifactList (\s a -> s { _cjrArtifactList = a }) . _List
-
-cjrJobId :: Lens' CreateJobResponse (Maybe Text)
-cjrJobId = lens _cjrJobId (\s a -> s { _cjrJobId = a })
-
-cjrJobType :: Lens' CreateJobResponse (Maybe JobType)
-cjrJobType = lens _cjrJobType (\s a -> s { _cjrJobType = a })
-
-cjrSignature :: Lens' CreateJobResponse (Maybe Text)
-cjrSignature = lens _cjrSignature (\s a -> s { _cjrSignature = a })
-
-cjrSignatureFileContents :: Lens' CreateJobResponse (Maybe Text)
-cjrSignatureFileContents =
-    lens _cjrSignatureFileContents
-        (\s a -> s { _cjrSignatureFileContents = a })
-
-cjrWarningMessage :: Lens' CreateJobResponse (Maybe Text)
-cjrWarningMessage =
-    lens _cjrWarningMessage (\s a -> s { _cjrWarningMessage = a })
+-- | Undocumented member.
+cjrsSignature :: Lens' CreateJobResponse (Maybe Text)
+cjrsSignature = lens _cjrsSignature (\ s a -> s{_cjrsSignature = a});
 
-instance ToPath CreateJob where
-    toPath = const "/"
+-- | Undocumented member.
+cjrsJobType :: Lens' CreateJobResponse (Maybe JobType)
+cjrsJobType = lens _cjrsJobType (\ s a -> s{_cjrsJobType = a});
 
-instance ToQuery CreateJob where
-    toQuery CreateJob{..} = mconcat
-        [ "APIVersion"       =? _cjAPIVersion
-        , "JobType"          =? _cjJobType
-        , "Manifest"         =? _cjManifest
-        , "ManifestAddendum" =? _cjManifestAddendum
-        , "ValidateOnly"     =? _cjValidateOnly
-        ]
+-- | Undocumented member.
+cjrsJobId :: Lens' CreateJobResponse (Maybe Text)
+cjrsJobId = lens _cjrsJobId (\ s a -> s{_cjrsJobId = a});
 
-instance ToHeaders CreateJob
+-- | Undocumented member.
+cjrsSignatureFileContents :: Lens' CreateJobResponse (Maybe Text)
+cjrsSignatureFileContents = lens _cjrsSignatureFileContents (\ s a -> s{_cjrsSignatureFileContents = a});
 
-instance AWSRequest CreateJob where
-    type Sv CreateJob = ImportExport
-    type Rs CreateJob = CreateJobResponse
+-- | Undocumented member.
+cjrsWarningMessage :: Lens' CreateJobResponse (Maybe Text)
+cjrsWarningMessage = lens _cjrsWarningMessage (\ s a -> s{_cjrsWarningMessage = a});
 
-    request  = post "CreateJob"
-    response = xmlResponse
+-- | Undocumented member.
+cjrsArtifactList :: Lens' CreateJobResponse [Artifact]
+cjrsArtifactList = lens _cjrsArtifactList (\ s a -> s{_cjrsArtifactList = a}) . _Default . _Coerce;
 
-instance FromXML CreateJobResponse where
-    parseXML = withElement "CreateJobResult" $ \x -> CreateJobResponse
-        <$> x .@? "ArtifactList" .!@ mempty
-        <*> x .@? "JobId"
-        <*> x .@? "JobType"
-        <*> x .@? "Signature"
-        <*> x .@? "SignatureFileContents"
-        <*> x .@? "WarningMessage"
+-- | The response status code.
+cjrsStatus :: Lens' CreateJobResponse Int
+cjrsStatus = lens _cjrsStatus (\ s a -> s{_cjrsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/GetShippingLabel.hs b/gen/Network/AWS/ImportExport/GetShippingLabel.hs
--- a/gen/Network/AWS/ImportExport/GetShippingLabel.hs
+++ b/gen/Network/AWS/ImportExport/GetShippingLabel.hs
@@ -1,216 +1,238 @@
-{-# 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.ImportExport.GetShippingLabel
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This operation generates a pre-paid UPS shipping label that you will use to
--- ship your device to AWS for processing.
+-- This operation generates a pre-paid UPS shipping label that you will use
+-- to ship your device to AWS for processing.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebGetShippingLabel.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebGetShippingLabel.html AWS API Reference> for GetShippingLabel.
 module Network.AWS.ImportExport.GetShippingLabel
     (
-    -- * Request
-      GetShippingLabel
-    -- ** Request constructor
-    , getShippingLabel
-    -- ** Request lenses
+    -- * Creating a Request
+      getShippingLabel
+    , GetShippingLabel
+    -- * Request Lenses
+    , gslStreet3
     , gslAPIVersion
-    , gslCity
-    , gslCompany
+    , gslPostalCode
     , gslCountry
-    , gslJobIds
+    , gslStateOrProvince
+    , gslStreet2
     , gslName
+    , gslCompany
+    , gslCity
     , gslPhoneNumber
-    , gslPostalCode
-    , gslStateOrProvince
     , gslStreet1
-    , gslStreet2
-    , gslStreet3
+    , gslJobIds
 
-    -- * Response
-    , GetShippingLabelResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getShippingLabelResponse
-    -- ** Response lenses
-    , gslrShippingLabelURL
-    , gslrWarning
+    , GetShippingLabelResponse
+    -- * Response Lenses
+    , gslrsShippingLabelURL
+    , gslrsWarning
+    , gslrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
-data GetShippingLabel = GetShippingLabel
-    { _gslAPIVersion      :: Maybe Text
-    , _gslCity            :: Maybe Text
-    , _gslCompany         :: Maybe Text
-    , _gslCountry         :: Maybe Text
-    , _gslJobIds          :: List "member" Text
-    , _gslName            :: Maybe Text
-    , _gslPhoneNumber     :: Maybe Text
-    , _gslPostalCode      :: Maybe Text
-    , _gslStateOrProvince :: Maybe Text
-    , _gslStreet1         :: Maybe Text
-    , _gslStreet2         :: Maybe Text
-    , _gslStreet3         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | /See:/ 'getShippingLabel' smart constructor.
+data GetShippingLabel = GetShippingLabel'
+    { _gslStreet3         :: !(Maybe Text)
+    , _gslAPIVersion      :: !(Maybe Text)
+    , _gslPostalCode      :: !(Maybe Text)
+    , _gslCountry         :: !(Maybe Text)
+    , _gslStateOrProvince :: !(Maybe Text)
+    , _gslStreet2         :: !(Maybe Text)
+    , _gslName            :: !(Maybe Text)
+    , _gslCompany         :: !(Maybe Text)
+    , _gslCity            :: !(Maybe Text)
+    , _gslPhoneNumber     :: !(Maybe Text)
+    , _gslStreet1         :: !(Maybe Text)
+    , _gslJobIds          :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
--- | 'GetShippingLabel' constructor.
---
--- The fields accessible through corresponding lenses are:
+-- | Creates a value of 'GetShippingLabel' with the minimum fields required to make a request.
 --
--- * 'gslAPIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gslCity' @::@ 'Maybe' 'Text'
+-- * 'gslStreet3'
 --
--- * 'gslCompany' @::@ 'Maybe' 'Text'
+-- * 'gslAPIVersion'
 --
--- * 'gslCountry' @::@ 'Maybe' 'Text'
+-- * 'gslPostalCode'
 --
--- * 'gslJobIds' @::@ ['Text']
+-- * 'gslCountry'
 --
--- * 'gslName' @::@ 'Maybe' 'Text'
+-- * 'gslStateOrProvince'
 --
--- * 'gslPhoneNumber' @::@ 'Maybe' 'Text'
+-- * 'gslStreet2'
 --
--- * 'gslPostalCode' @::@ 'Maybe' 'Text'
+-- * 'gslName'
 --
--- * 'gslStateOrProvince' @::@ 'Maybe' 'Text'
+-- * 'gslCompany'
 --
--- * 'gslStreet1' @::@ 'Maybe' 'Text'
+-- * 'gslCity'
 --
--- * 'gslStreet2' @::@ 'Maybe' 'Text'
+-- * 'gslPhoneNumber'
 --
--- * 'gslStreet3' @::@ 'Maybe' 'Text'
+-- * 'gslStreet1'
 --
-getShippingLabel :: GetShippingLabel
-getShippingLabel = GetShippingLabel
-    { _gslJobIds          = mempty
-    , _gslName            = Nothing
-    , _gslCompany         = Nothing
-    , _gslPhoneNumber     = Nothing
-    , _gslCountry         = Nothing
+-- * 'gslJobIds'
+getShippingLabel
+    :: GetShippingLabel
+getShippingLabel =
+    GetShippingLabel'
+    { _gslStreet3 = Nothing
+    , _gslAPIVersion = Nothing
+    , _gslPostalCode = Nothing
+    , _gslCountry = Nothing
     , _gslStateOrProvince = Nothing
-    , _gslCity            = Nothing
-    , _gslPostalCode      = Nothing
-    , _gslStreet1         = Nothing
-    , _gslStreet2         = Nothing
-    , _gslStreet3         = Nothing
-    , _gslAPIVersion      = Nothing
+    , _gslStreet2 = Nothing
+    , _gslName = Nothing
+    , _gslCompany = Nothing
+    , _gslCity = Nothing
+    , _gslPhoneNumber = Nothing
+    , _gslStreet1 = Nothing
+    , _gslJobIds = mempty
     }
 
-gslAPIVersion :: Lens' GetShippingLabel (Maybe Text)
-gslAPIVersion = lens _gslAPIVersion (\s a -> s { _gslAPIVersion = a })
+-- | Undocumented member.
+gslStreet3 :: Lens' GetShippingLabel (Maybe Text)
+gslStreet3 = lens _gslStreet3 (\ s a -> s{_gslStreet3 = a});
 
-gslCity :: Lens' GetShippingLabel (Maybe Text)
-gslCity = lens _gslCity (\s a -> s { _gslCity = a })
+-- | Undocumented member.
+gslAPIVersion :: Lens' GetShippingLabel (Maybe Text)
+gslAPIVersion = lens _gslAPIVersion (\ s a -> s{_gslAPIVersion = a});
 
-gslCompany :: Lens' GetShippingLabel (Maybe Text)
-gslCompany = lens _gslCompany (\s a -> s { _gslCompany = a })
+-- | Undocumented member.
+gslPostalCode :: Lens' GetShippingLabel (Maybe Text)
+gslPostalCode = lens _gslPostalCode (\ s a -> s{_gslPostalCode = a});
 
+-- | Undocumented member.
 gslCountry :: Lens' GetShippingLabel (Maybe Text)
-gslCountry = lens _gslCountry (\s a -> s { _gslCountry = a })
+gslCountry = lens _gslCountry (\ s a -> s{_gslCountry = a});
 
-gslJobIds :: Lens' GetShippingLabel [Text]
-gslJobIds = lens _gslJobIds (\s a -> s { _gslJobIds = a }) . _List
+-- | Undocumented member.
+gslStateOrProvince :: Lens' GetShippingLabel (Maybe Text)
+gslStateOrProvince = lens _gslStateOrProvince (\ s a -> s{_gslStateOrProvince = a});
 
+-- | Undocumented member.
+gslStreet2 :: Lens' GetShippingLabel (Maybe Text)
+gslStreet2 = lens _gslStreet2 (\ s a -> s{_gslStreet2 = a});
+
+-- | Undocumented member.
 gslName :: Lens' GetShippingLabel (Maybe Text)
-gslName = lens _gslName (\s a -> s { _gslName = a })
+gslName = lens _gslName (\ s a -> s{_gslName = a});
 
-gslPhoneNumber :: Lens' GetShippingLabel (Maybe Text)
-gslPhoneNumber = lens _gslPhoneNumber (\s a -> s { _gslPhoneNumber = a })
+-- | Undocumented member.
+gslCompany :: Lens' GetShippingLabel (Maybe Text)
+gslCompany = lens _gslCompany (\ s a -> s{_gslCompany = a});
 
-gslPostalCode :: Lens' GetShippingLabel (Maybe Text)
-gslPostalCode = lens _gslPostalCode (\s a -> s { _gslPostalCode = a })
+-- | Undocumented member.
+gslCity :: Lens' GetShippingLabel (Maybe Text)
+gslCity = lens _gslCity (\ s a -> s{_gslCity = a});
 
-gslStateOrProvince :: Lens' GetShippingLabel (Maybe Text)
-gslStateOrProvince =
-    lens _gslStateOrProvince (\s a -> s { _gslStateOrProvince = a })
+-- | Undocumented member.
+gslPhoneNumber :: Lens' GetShippingLabel (Maybe Text)
+gslPhoneNumber = lens _gslPhoneNumber (\ s a -> s{_gslPhoneNumber = a});
 
+-- | Undocumented member.
 gslStreet1 :: Lens' GetShippingLabel (Maybe Text)
-gslStreet1 = lens _gslStreet1 (\s a -> s { _gslStreet1 = a })
+gslStreet1 = lens _gslStreet1 (\ s a -> s{_gslStreet1 = a});
 
-gslStreet2 :: Lens' GetShippingLabel (Maybe Text)
-gslStreet2 = lens _gslStreet2 (\s a -> s { _gslStreet2 = a })
+-- | Undocumented member.
+gslJobIds :: Lens' GetShippingLabel [Text]
+gslJobIds = lens _gslJobIds (\ s a -> s{_gslJobIds = a}) . _Coerce;
 
-gslStreet3 :: Lens' GetShippingLabel (Maybe Text)
-gslStreet3 = lens _gslStreet3 (\s a -> s { _gslStreet3 = a })
+instance AWSRequest GetShippingLabel where
+        type Sv GetShippingLabel = ImportExport
+        type Rs GetShippingLabel = GetShippingLabelResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetShippingLabelResult"
+              (\ s h x ->
+                 GetShippingLabelResponse' <$>
+                   (x .@? "ShippingLabelURL") <*> (x .@? "Warning") <*>
+                     (pure (fromEnum s)))
 
-data GetShippingLabelResponse = GetShippingLabelResponse
-    { _gslrShippingLabelURL :: Maybe Text
-    , _gslrWarning          :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+instance ToHeaders GetShippingLabel where
+        toHeaders = const mempty
 
--- | 'GetShippingLabelResponse' constructor.
+instance ToPath GetShippingLabel where
+        toPath = const "/"
+
+instance ToQuery GetShippingLabel where
+        toQuery GetShippingLabel'{..}
+          = mconcat
+              ["Operation=GetShippingLabel",
+               "Action" =: ("GetShippingLabel" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "street3" =: _gslStreet3,
+               "APIVersion" =: _gslAPIVersion,
+               "postalCode" =: _gslPostalCode,
+               "country" =: _gslCountry,
+               "stateOrProvince" =: _gslStateOrProvince,
+               "street2" =: _gslStreet2, "name" =: _gslName,
+               "company" =: _gslCompany, "city" =: _gslCity,
+               "phoneNumber" =: _gslPhoneNumber,
+               "street1" =: _gslStreet1,
+               "jobIds" =: toQueryList "member" _gslJobIds]
+
+-- | /See:/ 'getShippingLabelResponse' smart constructor.
+data GetShippingLabelResponse = GetShippingLabelResponse'
+    { _gslrsShippingLabelURL :: !(Maybe Text)
+    , _gslrsWarning          :: !(Maybe Text)
+    , _gslrsStatus           :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetShippingLabelResponse' with the minimum fields required to make a request.
 --
--- The fields accessible through corresponding lenses are:
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gslrShippingLabelURL' @::@ 'Maybe' 'Text'
+-- * 'gslrsShippingLabelURL'
 --
--- * 'gslrWarning' @::@ 'Maybe' 'Text'
+-- * 'gslrsWarning'
 --
-getShippingLabelResponse :: GetShippingLabelResponse
-getShippingLabelResponse = GetShippingLabelResponse
-    { _gslrShippingLabelURL = Nothing
-    , _gslrWarning          = Nothing
+-- * 'gslrsStatus'
+getShippingLabelResponse
+    :: Int -- ^ 'gslrsStatus'
+    -> GetShippingLabelResponse
+getShippingLabelResponse pStatus_ =
+    GetShippingLabelResponse'
+    { _gslrsShippingLabelURL = Nothing
+    , _gslrsWarning = Nothing
+    , _gslrsStatus = pStatus_
     }
 
-gslrShippingLabelURL :: Lens' GetShippingLabelResponse (Maybe Text)
-gslrShippingLabelURL =
-    lens _gslrShippingLabelURL (\s a -> s { _gslrShippingLabelURL = a })
-
-gslrWarning :: Lens' GetShippingLabelResponse (Maybe Text)
-gslrWarning = lens _gslrWarning (\s a -> s { _gslrWarning = a })
-
-instance ToPath GetShippingLabel where
-    toPath = const "/"
-
-instance ToQuery GetShippingLabel where
-    toQuery GetShippingLabel{..} = mconcat
-        [ "APIVersion"      =? _gslAPIVersion
-        , "city"            =? _gslCity
-        , "company"         =? _gslCompany
-        , "country"         =? _gslCountry
-        , "jobIds"          =? _gslJobIds
-        , "name"            =? _gslName
-        , "phoneNumber"     =? _gslPhoneNumber
-        , "postalCode"      =? _gslPostalCode
-        , "stateOrProvince" =? _gslStateOrProvince
-        , "street1"         =? _gslStreet1
-        , "street2"         =? _gslStreet2
-        , "street3"         =? _gslStreet3
-        ]
-
-instance ToHeaders GetShippingLabel
-
-instance AWSRequest GetShippingLabel where
-    type Sv GetShippingLabel = ImportExport
-    type Rs GetShippingLabel = GetShippingLabelResponse
+-- | Undocumented member.
+gslrsShippingLabelURL :: Lens' GetShippingLabelResponse (Maybe Text)
+gslrsShippingLabelURL = lens _gslrsShippingLabelURL (\ s a -> s{_gslrsShippingLabelURL = a});
 
-    request  = post "GetShippingLabel"
-    response = xmlResponse
+-- | Undocumented member.
+gslrsWarning :: Lens' GetShippingLabelResponse (Maybe Text)
+gslrsWarning = lens _gslrsWarning (\ s a -> s{_gslrsWarning = a});
 
-instance FromXML GetShippingLabelResponse where
-    parseXML = withElement "GetShippingLabelResult" $ \x -> GetShippingLabelResponse
-        <$> x .@? "ShippingLabelURL"
-        <*> x .@? "Warning"
+-- | The response status code.
+gslrsStatus :: Lens' GetShippingLabelResponse Int
+gslrsStatus = lens _gslrsStatus (\ s a -> s{_gslrsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/GetStatus.hs b/gen/Network/AWS/ImportExport/GetStatus.hs
--- a/gen/Network/AWS/ImportExport/GetStatus.hs
+++ b/gen/Network/AWS/ImportExport/GetStatus.hs
@@ -1,258 +1,288 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.ImportExport.GetStatus
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This operation returns information about a job, including where the job is in
--- the processing pipeline, the status of the results, and the signature value
--- associated with the job. You can only return information about jobs you own.
+-- This operation returns information about a job, including where the job
+-- is in the processing pipeline, the status of the results, and the
+-- signature value associated with the job. You can only return information
+-- about jobs you own.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebGetStatus.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebGetStatus.html AWS API Reference> for GetStatus.
 module Network.AWS.ImportExport.GetStatus
     (
-    -- * Request
-      GetStatus
-    -- ** Request constructor
-    , getStatus
-    -- ** Request lenses
+    -- * Creating a Request
+      getStatus
+    , GetStatus
+    -- * Request Lenses
     , gsAPIVersion
     , gsJobId
 
-    -- * Response
-    , GetStatusResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , getStatusResponse
-    -- ** Response lenses
-    , gsrArtifactList
-    , gsrCarrier
-    , gsrCreationDate
-    , gsrCurrentManifest
-    , gsrErrorCount
-    , gsrJobId
-    , gsrJobType
-    , gsrLocationCode
-    , gsrLocationMessage
-    , gsrLogBucket
-    , gsrLogKey
-    , gsrProgressCode
-    , gsrProgressMessage
-    , gsrSignature
-    , gsrSignatureFileContents
-    , gsrTrackingNumber
+    , GetStatusResponse
+    -- * Response Lenses
+    , gsrsCarrier
+    , gsrsSignature
+    , gsrsTrackingNumber
+    , gsrsJobType
+    , gsrsJobId
+    , gsrsSignatureFileContents
+    , gsrsErrorCount
+    , gsrsCurrentManifest
+    , gsrsArtifactList
+    , gsrsLogBucket
+    , gsrsCreationDate
+    , gsrsProgressCode
+    , gsrsLocationCode
+    , gsrsLogKey
+    , gsrsProgressMessage
+    , gsrsLocationMessage
+    , gsrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
-
-data GetStatus = GetStatus
-    { _gsAPIVersion :: Maybe Text
-    , _gsJobId      :: Text
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'GetStatus' constructor.
+-- | Input structure for the GetStatus operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getStatus' smart constructor.
+data GetStatus = GetStatus'
+    { _gsAPIVersion :: !(Maybe Text)
+    , _gsJobId      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetStatus' with the minimum fields required to make a request.
 --
--- * 'gsAPIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gsJobId' @::@ 'Text'
+-- * 'gsAPIVersion'
 --
-getStatus :: Text -- ^ 'gsJobId'
-          -> GetStatus
-getStatus p1 = GetStatus
-    { _gsJobId      = p1
-    , _gsAPIVersion = Nothing
+-- * 'gsJobId'
+getStatus
+    :: Text -- ^ 'gsJobId'
+    -> GetStatus
+getStatus pJobId_ =
+    GetStatus'
+    { _gsAPIVersion = Nothing
+    , _gsJobId = pJobId_
     }
 
+-- | Undocumented member.
 gsAPIVersion :: Lens' GetStatus (Maybe Text)
-gsAPIVersion = lens _gsAPIVersion (\s a -> s { _gsAPIVersion = a })
+gsAPIVersion = lens _gsAPIVersion (\ s a -> s{_gsAPIVersion = a});
 
+-- | Undocumented member.
 gsJobId :: Lens' GetStatus Text
-gsJobId = lens _gsJobId (\s a -> s { _gsJobId = a })
+gsJobId = lens _gsJobId (\ s a -> s{_gsJobId = a});
 
-data GetStatusResponse = GetStatusResponse
-    { _gsrArtifactList          :: List "member" Artifact
-    , _gsrCarrier               :: Maybe Text
-    , _gsrCreationDate          :: Maybe ISO8601
-    , _gsrCurrentManifest       :: Maybe Text
-    , _gsrErrorCount            :: Maybe Int
-    , _gsrJobId                 :: Maybe Text
-    , _gsrJobType               :: Maybe JobType
-    , _gsrLocationCode          :: Maybe Text
-    , _gsrLocationMessage       :: Maybe Text
-    , _gsrLogBucket             :: Maybe Text
-    , _gsrLogKey                :: Maybe Text
-    , _gsrProgressCode          :: Maybe Text
-    , _gsrProgressMessage       :: Maybe Text
-    , _gsrSignature             :: Maybe Text
-    , _gsrSignatureFileContents :: Maybe Text
-    , _gsrTrackingNumber        :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest GetStatus where
+        type Sv GetStatus = ImportExport
+        type Rs GetStatus = GetStatusResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "GetStatusResult"
+              (\ s h x ->
+                 GetStatusResponse' <$>
+                   (x .@? "Carrier") <*> (x .@? "Signature") <*>
+                     (x .@? "TrackingNumber")
+                     <*> (x .@? "JobType")
+                     <*> (x .@? "JobId")
+                     <*> (x .@? "SignatureFileContents")
+                     <*> (x .@? "ErrorCount")
+                     <*> (x .@? "CurrentManifest")
+                     <*>
+                     (x .@? "ArtifactList" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (x .@? "LogBucket")
+                     <*> (x .@? "CreationDate")
+                     <*> (x .@? "ProgressCode")
+                     <*> (x .@? "LocationCode")
+                     <*> (x .@? "LogKey")
+                     <*> (x .@? "ProgressMessage")
+                     <*> (x .@? "LocationMessage")
+                     <*> (pure (fromEnum s)))
 
--- | 'GetStatusResponse' constructor.
+instance ToHeaders GetStatus where
+        toHeaders = const mempty
+
+instance ToPath GetStatus where
+        toPath = const "/"
+
+instance ToQuery GetStatus where
+        toQuery GetStatus'{..}
+          = mconcat
+              ["Operation=GetStatus",
+               "Action" =: ("GetStatus" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "APIVersion" =: _gsAPIVersion, "JobId" =: _gsJobId]
+
+-- | Output structure for the GetStatus operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'getStatusResponse' smart constructor.
+data GetStatusResponse = GetStatusResponse'
+    { _gsrsCarrier               :: !(Maybe Text)
+    , _gsrsSignature             :: !(Maybe Text)
+    , _gsrsTrackingNumber        :: !(Maybe Text)
+    , _gsrsJobType               :: !(Maybe JobType)
+    , _gsrsJobId                 :: !(Maybe Text)
+    , _gsrsSignatureFileContents :: !(Maybe Text)
+    , _gsrsErrorCount            :: !(Maybe Int)
+    , _gsrsCurrentManifest       :: !(Maybe Text)
+    , _gsrsArtifactList          :: !(Maybe [Artifact])
+    , _gsrsLogBucket             :: !(Maybe Text)
+    , _gsrsCreationDate          :: !(Maybe ISO8601)
+    , _gsrsProgressCode          :: !(Maybe Text)
+    , _gsrsLocationCode          :: !(Maybe Text)
+    , _gsrsLogKey                :: !(Maybe Text)
+    , _gsrsProgressMessage       :: !(Maybe Text)
+    , _gsrsLocationMessage       :: !(Maybe Text)
+    , _gsrsStatus                :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'GetStatusResponse' with the minimum fields required to make a request.
 --
--- * 'gsrArtifactList' @::@ ['Artifact']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'gsrCarrier' @::@ 'Maybe' 'Text'
+-- * 'gsrsCarrier'
 --
--- * 'gsrCreationDate' @::@ 'Maybe' 'UTCTime'
+-- * 'gsrsSignature'
 --
--- * 'gsrCurrentManifest' @::@ 'Maybe' 'Text'
+-- * 'gsrsTrackingNumber'
 --
--- * 'gsrErrorCount' @::@ 'Maybe' 'Int'
+-- * 'gsrsJobType'
 --
--- * 'gsrJobId' @::@ 'Maybe' 'Text'
+-- * 'gsrsJobId'
 --
--- * 'gsrJobType' @::@ 'Maybe' 'JobType'
+-- * 'gsrsSignatureFileContents'
 --
--- * 'gsrLocationCode' @::@ 'Maybe' 'Text'
+-- * 'gsrsErrorCount'
 --
--- * 'gsrLocationMessage' @::@ 'Maybe' 'Text'
+-- * 'gsrsCurrentManifest'
 --
--- * 'gsrLogBucket' @::@ 'Maybe' 'Text'
+-- * 'gsrsArtifactList'
 --
--- * 'gsrLogKey' @::@ 'Maybe' 'Text'
+-- * 'gsrsLogBucket'
 --
--- * 'gsrProgressCode' @::@ 'Maybe' 'Text'
+-- * 'gsrsCreationDate'
 --
--- * 'gsrProgressMessage' @::@ 'Maybe' 'Text'
+-- * 'gsrsProgressCode'
 --
--- * 'gsrSignature' @::@ 'Maybe' 'Text'
+-- * 'gsrsLocationCode'
 --
--- * 'gsrSignatureFileContents' @::@ 'Maybe' 'Text'
+-- * 'gsrsLogKey'
 --
--- * 'gsrTrackingNumber' @::@ 'Maybe' 'Text'
+-- * 'gsrsProgressMessage'
 --
-getStatusResponse :: GetStatusResponse
-getStatusResponse = GetStatusResponse
-    { _gsrJobId                 = Nothing
-    , _gsrJobType               = Nothing
-    , _gsrLocationCode          = Nothing
-    , _gsrLocationMessage       = Nothing
-    , _gsrProgressCode          = Nothing
-    , _gsrProgressMessage       = Nothing
-    , _gsrCarrier               = Nothing
-    , _gsrTrackingNumber        = Nothing
-    , _gsrLogBucket             = Nothing
-    , _gsrLogKey                = Nothing
-    , _gsrErrorCount            = Nothing
-    , _gsrSignature             = Nothing
-    , _gsrSignatureFileContents = Nothing
-    , _gsrCurrentManifest       = Nothing
-    , _gsrCreationDate          = Nothing
-    , _gsrArtifactList          = mempty
+-- * 'gsrsLocationMessage'
+--
+-- * 'gsrsStatus'
+getStatusResponse
+    :: Int -- ^ 'gsrsStatus'
+    -> GetStatusResponse
+getStatusResponse pStatus_ =
+    GetStatusResponse'
+    { _gsrsCarrier = Nothing
+    , _gsrsSignature = Nothing
+    , _gsrsTrackingNumber = Nothing
+    , _gsrsJobType = Nothing
+    , _gsrsJobId = Nothing
+    , _gsrsSignatureFileContents = Nothing
+    , _gsrsErrorCount = Nothing
+    , _gsrsCurrentManifest = Nothing
+    , _gsrsArtifactList = Nothing
+    , _gsrsLogBucket = Nothing
+    , _gsrsCreationDate = Nothing
+    , _gsrsProgressCode = Nothing
+    , _gsrsLocationCode = Nothing
+    , _gsrsLogKey = Nothing
+    , _gsrsProgressMessage = Nothing
+    , _gsrsLocationMessage = Nothing
+    , _gsrsStatus = pStatus_
     }
 
-gsrArtifactList :: Lens' GetStatusResponse [Artifact]
-gsrArtifactList = lens _gsrArtifactList (\s a -> s { _gsrArtifactList = a }) . _List
-
-gsrCarrier :: Lens' GetStatusResponse (Maybe Text)
-gsrCarrier = lens _gsrCarrier (\s a -> s { _gsrCarrier = a })
-
-gsrCreationDate :: Lens' GetStatusResponse (Maybe UTCTime)
-gsrCreationDate = lens _gsrCreationDate (\s a -> s { _gsrCreationDate = a }) . mapping _Time
-
-gsrCurrentManifest :: Lens' GetStatusResponse (Maybe Text)
-gsrCurrentManifest =
-    lens _gsrCurrentManifest (\s a -> s { _gsrCurrentManifest = a })
-
-gsrErrorCount :: Lens' GetStatusResponse (Maybe Int)
-gsrErrorCount = lens _gsrErrorCount (\s a -> s { _gsrErrorCount = a })
-
-gsrJobId :: Lens' GetStatusResponse (Maybe Text)
-gsrJobId = lens _gsrJobId (\s a -> s { _gsrJobId = a })
+-- | Undocumented member.
+gsrsCarrier :: Lens' GetStatusResponse (Maybe Text)
+gsrsCarrier = lens _gsrsCarrier (\ s a -> s{_gsrsCarrier = a});
 
-gsrJobType :: Lens' GetStatusResponse (Maybe JobType)
-gsrJobType = lens _gsrJobType (\s a -> s { _gsrJobType = a })
+-- | Undocumented member.
+gsrsSignature :: Lens' GetStatusResponse (Maybe Text)
+gsrsSignature = lens _gsrsSignature (\ s a -> s{_gsrsSignature = a});
 
-gsrLocationCode :: Lens' GetStatusResponse (Maybe Text)
-gsrLocationCode = lens _gsrLocationCode (\s a -> s { _gsrLocationCode = a })
+-- | Undocumented member.
+gsrsTrackingNumber :: Lens' GetStatusResponse (Maybe Text)
+gsrsTrackingNumber = lens _gsrsTrackingNumber (\ s a -> s{_gsrsTrackingNumber = a});
 
-gsrLocationMessage :: Lens' GetStatusResponse (Maybe Text)
-gsrLocationMessage =
-    lens _gsrLocationMessage (\s a -> s { _gsrLocationMessage = a })
+-- | Undocumented member.
+gsrsJobType :: Lens' GetStatusResponse (Maybe JobType)
+gsrsJobType = lens _gsrsJobType (\ s a -> s{_gsrsJobType = a});
 
-gsrLogBucket :: Lens' GetStatusResponse (Maybe Text)
-gsrLogBucket = lens _gsrLogBucket (\s a -> s { _gsrLogBucket = a })
+-- | Undocumented member.
+gsrsJobId :: Lens' GetStatusResponse (Maybe Text)
+gsrsJobId = lens _gsrsJobId (\ s a -> s{_gsrsJobId = a});
 
-gsrLogKey :: Lens' GetStatusResponse (Maybe Text)
-gsrLogKey = lens _gsrLogKey (\s a -> s { _gsrLogKey = a })
+-- | Undocumented member.
+gsrsSignatureFileContents :: Lens' GetStatusResponse (Maybe Text)
+gsrsSignatureFileContents = lens _gsrsSignatureFileContents (\ s a -> s{_gsrsSignatureFileContents = a});
 
-gsrProgressCode :: Lens' GetStatusResponse (Maybe Text)
-gsrProgressCode = lens _gsrProgressCode (\s a -> s { _gsrProgressCode = a })
+-- | Undocumented member.
+gsrsErrorCount :: Lens' GetStatusResponse (Maybe Int)
+gsrsErrorCount = lens _gsrsErrorCount (\ s a -> s{_gsrsErrorCount = a});
 
-gsrProgressMessage :: Lens' GetStatusResponse (Maybe Text)
-gsrProgressMessage =
-    lens _gsrProgressMessage (\s a -> s { _gsrProgressMessage = a })
+-- | Undocumented member.
+gsrsCurrentManifest :: Lens' GetStatusResponse (Maybe Text)
+gsrsCurrentManifest = lens _gsrsCurrentManifest (\ s a -> s{_gsrsCurrentManifest = a});
 
-gsrSignature :: Lens' GetStatusResponse (Maybe Text)
-gsrSignature = lens _gsrSignature (\s a -> s { _gsrSignature = a })
+-- | Undocumented member.
+gsrsArtifactList :: Lens' GetStatusResponse [Artifact]
+gsrsArtifactList = lens _gsrsArtifactList (\ s a -> s{_gsrsArtifactList = a}) . _Default . _Coerce;
 
-gsrSignatureFileContents :: Lens' GetStatusResponse (Maybe Text)
-gsrSignatureFileContents =
-    lens _gsrSignatureFileContents
-        (\s a -> s { _gsrSignatureFileContents = a })
+-- | Undocumented member.
+gsrsLogBucket :: Lens' GetStatusResponse (Maybe Text)
+gsrsLogBucket = lens _gsrsLogBucket (\ s a -> s{_gsrsLogBucket = a});
 
-gsrTrackingNumber :: Lens' GetStatusResponse (Maybe Text)
-gsrTrackingNumber =
-    lens _gsrTrackingNumber (\s a -> s { _gsrTrackingNumber = a })
+-- | Undocumented member.
+gsrsCreationDate :: Lens' GetStatusResponse (Maybe UTCTime)
+gsrsCreationDate = lens _gsrsCreationDate (\ s a -> s{_gsrsCreationDate = a}) . mapping _Time;
 
-instance ToPath GetStatus where
-    toPath = const "/"
+-- | Undocumented member.
+gsrsProgressCode :: Lens' GetStatusResponse (Maybe Text)
+gsrsProgressCode = lens _gsrsProgressCode (\ s a -> s{_gsrsProgressCode = a});
 
-instance ToQuery GetStatus where
-    toQuery GetStatus{..} = mconcat
-        [ "APIVersion" =? _gsAPIVersion
-        , "JobId"      =? _gsJobId
-        ]
+-- | Undocumented member.
+gsrsLocationCode :: Lens' GetStatusResponse (Maybe Text)
+gsrsLocationCode = lens _gsrsLocationCode (\ s a -> s{_gsrsLocationCode = a});
 
-instance ToHeaders GetStatus
+-- | Undocumented member.
+gsrsLogKey :: Lens' GetStatusResponse (Maybe Text)
+gsrsLogKey = lens _gsrsLogKey (\ s a -> s{_gsrsLogKey = a});
 
-instance AWSRequest GetStatus where
-    type Sv GetStatus = ImportExport
-    type Rs GetStatus = GetStatusResponse
+-- | Undocumented member.
+gsrsProgressMessage :: Lens' GetStatusResponse (Maybe Text)
+gsrsProgressMessage = lens _gsrsProgressMessage (\ s a -> s{_gsrsProgressMessage = a});
 
-    request  = post "GetStatus"
-    response = xmlResponse
+-- | Undocumented member.
+gsrsLocationMessage :: Lens' GetStatusResponse (Maybe Text)
+gsrsLocationMessage = lens _gsrsLocationMessage (\ s a -> s{_gsrsLocationMessage = a});
 
-instance FromXML GetStatusResponse where
-    parseXML = withElement "GetStatusResult" $ \x -> GetStatusResponse
-        <$> x .@? "ArtifactList" .!@ mempty
-        <*> x .@? "Carrier"
-        <*> x .@? "CreationDate"
-        <*> x .@? "CurrentManifest"
-        <*> x .@? "ErrorCount"
-        <*> x .@? "JobId"
-        <*> x .@? "JobType"
-        <*> x .@? "LocationCode"
-        <*> x .@? "LocationMessage"
-        <*> x .@? "LogBucket"
-        <*> x .@? "LogKey"
-        <*> x .@? "ProgressCode"
-        <*> x .@? "ProgressMessage"
-        <*> x .@? "Signature"
-        <*> x .@? "SignatureFileContents"
-        <*> x .@? "TrackingNumber"
+-- | The response status code.
+gsrsStatus :: Lens' GetStatusResponse Int
+gsrsStatus = lens _gsrsStatus (\ s a -> s{_gsrsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/ListJobs.hs b/gen/Network/AWS/ImportExport/ListJobs.hs
--- a/gen/Network/AWS/ImportExport/ListJobs.hs
+++ b/gen/Network/AWS/ImportExport/ListJobs.hs
@@ -1,142 +1,170 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.ImportExport.ListJobs
--- Copyright   : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
+-- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- | This operation returns the jobs associated with the requester. AWS
--- Import/Export lists the jobs in reverse chronological order based on the date
--- of creation. For example if Job Test1 was created 2009Dec30 and Test2 was
--- created 2010Feb05, the ListJobs operation would return Test2 followed by
--- Test1.
+-- This operation returns the jobs associated with the requester. AWS
+-- Import\/Export lists the jobs in reverse chronological order based on
+-- the date of creation. For example if Job Test1 was created 2009Dec30 and
+-- Test2 was created 2010Feb05, the ListJobs operation would return Test2
+-- followed by Test1.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebListJobs.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebListJobs.html AWS API Reference> for ListJobs.
+--
+-- This operation returns paginated results.
 module Network.AWS.ImportExport.ListJobs
     (
-    -- * Request
-      ListJobs
-    -- ** Request constructor
-    , listJobs
-    -- ** Request lenses
+    -- * Creating a Request
+      listJobs
+    , ListJobs
+    -- * Request Lenses
     , ljAPIVersion
     , ljMarker
     , ljMaxJobs
 
-    -- * Response
-    , ListJobsResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , listJobsResponse
-    -- ** Response lenses
-    , ljrIsTruncated
-    , ljrJobs
+    , ListJobsResponse
+    -- * Response Lenses
+    , ljrsJobs
+    , ljrsIsTruncated
+    , ljrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
-
-data ListJobs = ListJobs
-    { _ljAPIVersion :: Maybe Text
-    , _ljMarker     :: Maybe Text
-    , _ljMaxJobs    :: Maybe Int
-    } deriving (Eq, Ord, Read, Show)
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Pager
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'ListJobs' constructor.
+-- | Input structure for the ListJobs operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'listJobs' smart constructor.
+data ListJobs = ListJobs'
+    { _ljAPIVersion :: !(Maybe Text)
+    , _ljMarker     :: !(Maybe Text)
+    , _ljMaxJobs    :: !(Maybe Int)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListJobs' with the minimum fields required to make a request.
 --
--- * 'ljAPIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ljMarker' @::@ 'Maybe' 'Text'
+-- * 'ljAPIVersion'
 --
--- * 'ljMaxJobs' @::@ 'Maybe' 'Int'
+-- * 'ljMarker'
 --
-listJobs :: ListJobs
-listJobs = ListJobs
-    { _ljMaxJobs    = Nothing
-    , _ljMarker     = Nothing
-    , _ljAPIVersion = Nothing
+-- * 'ljMaxJobs'
+listJobs
+    :: ListJobs
+listJobs =
+    ListJobs'
+    { _ljAPIVersion = Nothing
+    , _ljMarker = Nothing
+    , _ljMaxJobs = Nothing
     }
 
+-- | Undocumented member.
 ljAPIVersion :: Lens' ListJobs (Maybe Text)
-ljAPIVersion = lens _ljAPIVersion (\s a -> s { _ljAPIVersion = a })
+ljAPIVersion = lens _ljAPIVersion (\ s a -> s{_ljAPIVersion = a});
 
+-- | Undocumented member.
 ljMarker :: Lens' ListJobs (Maybe Text)
-ljMarker = lens _ljMarker (\s a -> s { _ljMarker = a })
+ljMarker = lens _ljMarker (\ s a -> s{_ljMarker = a});
 
+-- | Undocumented member.
 ljMaxJobs :: Lens' ListJobs (Maybe Int)
-ljMaxJobs = lens _ljMaxJobs (\s a -> s { _ljMaxJobs = a })
-
-data ListJobsResponse = ListJobsResponse
-    { _ljrIsTruncated :: Maybe Bool
-    , _ljrJobs        :: List "member" Job
-    } deriving (Eq, Read, Show)
+ljMaxJobs = lens _ljMaxJobs (\ s a -> s{_ljMaxJobs = a});
 
--- | 'ListJobsResponse' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'ljrIsTruncated' @::@ 'Maybe' 'Bool'
---
--- * 'ljrJobs' @::@ ['Job']
---
-listJobsResponse :: ListJobsResponse
-listJobsResponse = ListJobsResponse
-    { _ljrJobs        = mempty
-    , _ljrIsTruncated = Nothing
-    }
+instance AWSPager ListJobs where
+        page rq rs
+          | stop (rs ^. ljrsIsTruncated) = Nothing
+          | isNothing (rs ^? ljrsJobs . _last . jobJobId) =
+            Nothing
+          | otherwise =
+            Just $ rq &
+              ljMarker .~ rs ^? ljrsJobs . _last . jobJobId
 
-ljrIsTruncated :: Lens' ListJobsResponse (Maybe Bool)
-ljrIsTruncated = lens _ljrIsTruncated (\s a -> s { _ljrIsTruncated = a })
+instance AWSRequest ListJobs where
+        type Sv ListJobs = ImportExport
+        type Rs ListJobs = ListJobsResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "ListJobsResult"
+              (\ s h x ->
+                 ListJobsResponse' <$>
+                   (x .@? "Jobs" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "IsTruncated")
+                     <*> (pure (fromEnum s)))
 
-ljrJobs :: Lens' ListJobsResponse [Job]
-ljrJobs = lens _ljrJobs (\s a -> s { _ljrJobs = a }) . _List
+instance ToHeaders ListJobs where
+        toHeaders = const mempty
 
 instance ToPath ListJobs where
-    toPath = const "/"
+        toPath = const "/"
 
 instance ToQuery ListJobs where
-    toQuery ListJobs{..} = mconcat
-        [ "APIVersion" =? _ljAPIVersion
-        , "Marker"     =? _ljMarker
-        , "MaxJobs"    =? _ljMaxJobs
-        ]
+        toQuery ListJobs'{..}
+          = mconcat
+              ["Operation=ListJobs",
+               "Action" =: ("ListJobs" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "APIVersion" =: _ljAPIVersion, "Marker" =: _ljMarker,
+               "MaxJobs" =: _ljMaxJobs]
 
-instance ToHeaders ListJobs
+-- | Output structure for the ListJobs operation.
+--
+-- /See:/ 'listJobsResponse' smart constructor.
+data ListJobsResponse = ListJobsResponse'
+    { _ljrsJobs        :: !(Maybe [Job])
+    , _ljrsIsTruncated :: !(Maybe Bool)
+    , _ljrsStatus      :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
 
-instance AWSRequest ListJobs where
-    type Sv ListJobs = ImportExport
-    type Rs ListJobs = ListJobsResponse
+-- | Creates a value of 'ListJobsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ljrsJobs'
+--
+-- * 'ljrsIsTruncated'
+--
+-- * 'ljrsStatus'
+listJobsResponse
+    :: Int -- ^ 'ljrsStatus'
+    -> ListJobsResponse
+listJobsResponse pStatus_ =
+    ListJobsResponse'
+    { _ljrsJobs = Nothing
+    , _ljrsIsTruncated = Nothing
+    , _ljrsStatus = pStatus_
+    }
 
-    request  = post "ListJobs"
-    response = xmlResponse
+-- | Undocumented member.
+ljrsJobs :: Lens' ListJobsResponse [Job]
+ljrsJobs = lens _ljrsJobs (\ s a -> s{_ljrsJobs = a}) . _Default . _Coerce;
 
-instance FromXML ListJobsResponse where
-    parseXML = withElement "ListJobsResult" $ \x -> ListJobsResponse
-        <$> x .@? "IsTruncated"
-        <*> x .@? "Jobs" .!@ mempty
+-- | Undocumented member.
+ljrsIsTruncated :: Lens' ListJobsResponse (Maybe Bool)
+ljrsIsTruncated = lens _ljrsIsTruncated (\ s a -> s{_ljrsIsTruncated = a});
 
-instance AWSPager ListJobs where
-    page rq rs
-        | stop (rs ^. ljrIsTruncated) = Nothing
-        | otherwise = Just $ rq
-            & ljMarker .~ rs ^. index ljrJobs jobJobId
+-- | The response status code.
+ljrsStatus :: Lens' ListJobsResponse Int
+ljrsStatus = lens _ljrsStatus (\ s a -> s{_ljrsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/Types.hs b/gen/Network/AWS/ImportExport/Types.hs
--- a/gen/Network/AWS/ImportExport/Types.hs
+++ b/gen/Network/AWS/ImportExport/Types.hs
@@ -1,220 +1,197 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
-{-# LANGUAGE ViewPatterns                #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE TypeFamilies      #-}
 
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
 
+-- |
 -- Module      : Network.AWS.ImportExport.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/.
+-- 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.
-
 module Network.AWS.ImportExport.Types
     (
     -- * Service
       ImportExport
-    -- ** Error
-    , RESTError
-    -- ** XML
-    , ns
 
+    -- * Errors
+    , _InvalidJobIdException
+    , _InvalidParameterException
+    , _ExpiredJobIdException
+    , _InvalidFileSystemException
+    , _InvalidAccessKeyIdException
+    , _UnableToUpdateJobIdException
+    , _UnableToCancelJobIdException
+    , _InvalidVersionException
+    , _MultipleRegionsException
+    , _MalformedManifestException
+    , _CanceledJobIdException
+    , _BucketPermissionException
+    , _MissingParameterException
+    , _NoSuchBucketException
+    , _InvalidAddressException
+    , _InvalidManifestFieldException
+    , _MissingCustomsException
+    , _InvalidCustomsException
+    , _MissingManifestFieldException
+    , _CreateJobQuotaExceededException
+
     -- * JobType
     , JobType (..)
 
     -- * Artifact
     , Artifact
     , artifact
-    , aDescription
     , aURL
+    , aDescription
 
     -- * Job
     , Job
     , job
-    , jobCreationDate
-    , jobIsCanceled
-    , jobJobId
     , jobJobType
+    , jobJobId
+    , jobIsCanceled
+    , jobCreationDate
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Signing
-import qualified GHC.Exts
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.ImportExport.Types.Sum
+import           Network.AWS.Prelude
+import           Network.AWS.Sign.V2
 
--- | Version @2010-06-01@ of the Amazon Import/Export service.
+-- | Version @2010-06-01@ of the Amazon Import/Export SDK.
 data ImportExport
 
 instance AWSService ImportExport where
     type Sg ImportExport = V2
-    type Er ImportExport = RESTError
-
-    service = service'
+    service = const svc
       where
-        service' :: Service ImportExport
-        service' = Service
-            { _svcAbbrev       = "ImportExport"
-            , _svcPrefix       = "importexport"
-            , _svcVersion      = "2010-06-01"
-            , _svcTargetPrefix = Nothing
-            , _svcJSONVersion  = Nothing
-            , _svcHandle       = handle
-            , _svcRetry        = retry
+        svc =
+            Service
+            { _svcAbbrev = "ImportExport"
+            , _svcPrefix = "importexport"
+            , _svcVersion = "2010-06-01"
+            , _svcEndpoint = defaultEndpoint svc
+            , _svcTimeout = Just 70
+            , _svcStatus = statusSuccess
+            , _svcError = parseXMLError
+            , _svcRetry = retry
             }
-
-        handle :: Status
-               -> Maybe (LazyByteString -> ServiceError RESTError)
-        handle = restError statusSuccess service'
-
-        retry :: Retry ImportExport
-        retry = Exponential
-            { _retryBase     = 0.05
-            , _retryGrowth   = 2
+        retry =
+            Exponential
+            { _retryBase = 5.0e-2
+            , _retryGrowth = 2
             , _retryAttempts = 5
-            , _retryCheck    = check
+            , _retryCheck = check
             }
-
-        check :: Status
-              -> RESTError
-              -> Bool
-        check (statusCode -> s) (awsErrorCode -> e)
-            | s == 500  = True -- General Server Error
-            | s == 509  = True -- Limit Exceeded
-            | s == 503  = True -- Service Unavailable
-            | otherwise = False
-
-ns :: Text
-ns = "http://importexport.amazonaws.com/doc/2010-06-01/"
-{-# INLINE ns #-}
+        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
 
-data JobType
-    = Export' -- ^ Export
-    | Import' -- ^ Import
-      deriving (Eq, Ord, Read, Show, Generic, Enum)
+-- | The JOBID was missing, not found, or not associated with the AWS
+-- account.
+_InvalidJobIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidJobIdException = _ServiceError . hasCode "InvalidJobIdException"
 
-instance Hashable JobType
+-- | One or more parameters had an invalid value.
+_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidParameterException =
+    _ServiceError . hasCode "InvalidParameterException"
 
-instance FromText JobType where
-    parser = takeLowerText >>= \case
-        "export" -> pure Export'
-        "import" -> pure Import'
-        e        -> fail $
-            "Failure parsing JobType from " ++ show e
+-- | Indicates that the specified job has expired out of the system.
+_ExpiredJobIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_ExpiredJobIdException = _ServiceError . hasCode "ExpiredJobIdException"
 
-instance ToText JobType where
-    toText = \case
-        Export' -> "Export"
-        Import' -> "Import"
+-- | File system specified in export manifest is invalid.
+_InvalidFileSystemException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidFileSystemException =
+    _ServiceError . hasCode "InvalidFileSystemException"
 
-instance ToByteString JobType
-instance ToHeader     JobType
-instance ToQuery      JobType
+-- | The AWS Access Key ID specified in the request did not match the
+-- manifest\'s accessKeyId value. The manifest and the request
+-- authentication must use the same AWS Access Key ID.
+_InvalidAccessKeyIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAccessKeyIdException =
+    _ServiceError . hasCode "InvalidAccessKeyIdException"
 
-instance FromXML JobType where
-    parseXML = parseXMLText "JobType"
+-- | AWS Import\/Export cannot update the job
+_UnableToUpdateJobIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_UnableToUpdateJobIdException =
+    _ServiceError . hasCode "UnableToUpdateJobIdException"
 
-data Artifact = Artifact
-    { _aDescription :: Maybe Text
-    , _aURL         :: Maybe Text
-    } deriving (Eq, Ord, Read, Show)
+-- | AWS Import\/Export cannot cancel the job
+_UnableToCancelJobIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_UnableToCancelJobIdException =
+    _ServiceError . hasCode "UnableToCancelJobIdException"
 
--- | 'Artifact' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'aDescription' @::@ 'Maybe' 'Text'
---
--- * 'aURL' @::@ 'Maybe' 'Text'
---
-artifact :: Artifact
-artifact = Artifact
-    { _aDescription = Nothing
-    , _aURL         = Nothing
-    }
+-- | The client tool version is invalid.
+_InvalidVersionException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidVersionException = _ServiceError . hasCode "InvalidVersionException"
 
-aDescription :: Lens' Artifact (Maybe Text)
-aDescription = lens _aDescription (\s a -> s { _aDescription = a })
+-- | Your manifest file contained buckets from multiple regions. A job is
+-- restricted to buckets from one region. Please correct and resubmit.
+_MultipleRegionsException :: AsError a => Getting (First ServiceError) a ServiceError
+_MultipleRegionsException = _ServiceError . hasCode "MultipleRegionsException"
 
-aURL :: Lens' Artifact (Maybe Text)
-aURL = lens _aURL (\s a -> s { _aURL = a })
+-- | Your manifest is not well-formed.
+_MalformedManifestException :: AsError a => Getting (First ServiceError) a ServiceError
+_MalformedManifestException =
+    _ServiceError . hasCode "MalformedManifestException"
 
-instance FromXML Artifact where
-    parseXML x = Artifact
-        <$> x .@? "Description"
-        <*> x .@? "URL"
+-- | The specified job ID has been canceled and is no longer valid.
+_CanceledJobIdException :: AsError a => Getting (First ServiceError) a ServiceError
+_CanceledJobIdException = _ServiceError . hasCode "CanceledJobIdException"
 
-instance ToQuery Artifact where
-    toQuery Artifact{..} = mconcat
-        [ "Description" =? _aDescription
-        , "URL"         =? _aURL
-        ]
+-- | The account specified does not have the appropriate bucket permissions.
+_BucketPermissionException :: AsError a => Getting (First ServiceError) a ServiceError
+_BucketPermissionException =
+    _ServiceError . hasCode "BucketPermissionException"
 
-data Job = Job
-    { _jobCreationDate :: ISO8601
-    , _jobIsCanceled   :: Bool
-    , _jobJobId        :: Text
-    , _jobJobType      :: JobType
-    } deriving (Eq, Read, Show)
+-- | One or more required parameters was missing from the request.
+_MissingParameterException :: AsError a => Getting (First ServiceError) a ServiceError
+_MissingParameterException =
+    _ServiceError . hasCode "MissingParameterException"
 
--- | 'Job' constructor.
---
--- The fields accessible through corresponding lenses are:
---
--- * 'jobCreationDate' @::@ 'UTCTime'
---
--- * 'jobIsCanceled' @::@ 'Bool'
---
--- * 'jobJobId' @::@ 'Text'
---
--- * 'jobJobType' @::@ 'JobType'
---
-job :: Text -- ^ 'jobJobId'
-    -> UTCTime -- ^ 'jobCreationDate'
-    -> Bool -- ^ 'jobIsCanceled'
-    -> JobType -- ^ 'jobJobType'
-    -> Job
-job p1 p2 p3 p4 = Job
-    { _jobJobId        = p1
-    , _jobCreationDate = withIso _Time (const id) p2
-    , _jobIsCanceled   = p3
-    , _jobJobType      = p4
-    }
+-- | The specified bucket does not exist. Create the specified bucket or
+-- change the manifest\'s bucket, exportBucket, or logBucket field to a
+-- bucket that the account, as specified by the manifest\'s Access Key ID,
+-- has write permissions to.
+_NoSuchBucketException :: AsError a => Getting (First ServiceError) a ServiceError
+_NoSuchBucketException = _ServiceError . hasCode "NoSuchBucketException"
 
-jobCreationDate :: Lens' Job UTCTime
-jobCreationDate = lens _jobCreationDate (\s a -> s { _jobCreationDate = a }) . _Time
+-- | The address specified in the manifest is invalid.
+_InvalidAddressException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidAddressException = _ServiceError . hasCode "InvalidAddressException"
 
-jobIsCanceled :: Lens' Job Bool
-jobIsCanceled = lens _jobIsCanceled (\s a -> s { _jobIsCanceled = a })
+-- | One or more manifest fields was invalid. Please correct and resubmit.
+_InvalidManifestFieldException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidManifestFieldException =
+    _ServiceError . hasCode "InvalidManifestFieldException"
 
-jobJobId :: Lens' Job Text
-jobJobId = lens _jobJobId (\s a -> s { _jobJobId = a })
+-- | One or more required customs parameters was missing from the manifest.
+_MissingCustomsException :: AsError a => Getting (First ServiceError) a ServiceError
+_MissingCustomsException = _ServiceError . hasCode "MissingCustomsException"
 
-jobJobType :: Lens' Job JobType
-jobJobType = lens _jobJobType (\s a -> s { _jobJobType = a })
+-- | One or more customs parameters was invalid. Please correct and resubmit.
+_InvalidCustomsException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidCustomsException = _ServiceError . hasCode "InvalidCustomsException"
 
-instance FromXML Job where
-    parseXML x = Job
-        <$> x .@  "CreationDate"
-        <*> x .@  "IsCanceled"
-        <*> x .@  "JobId"
-        <*> x .@  "JobType"
+-- | One or more required fields were missing from the manifest file. Please
+-- correct and resubmit.
+_MissingManifestFieldException :: AsError a => Getting (First ServiceError) a ServiceError
+_MissingManifestFieldException =
+    _ServiceError . hasCode "MissingManifestFieldException"
 
-instance ToQuery Job where
-    toQuery Job{..} = mconcat
-        [ "CreationDate" =? _jobCreationDate
-        , "IsCanceled"   =? _jobIsCanceled
-        , "JobId"        =? _jobJobId
-        , "JobType"      =? _jobJobType
-        ]
+-- | Each account can create only a certain number of jobs per day. If you
+-- need to create more than this, please contact
+-- awsimportexport\'amazon.com to explain your particular use case.
+_CreateJobQuotaExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_CreateJobQuotaExceededException =
+    _ServiceError . hasCode "CreateJobQuotaExceededException"
diff --git a/gen/Network/AWS/ImportExport/Types/Product.hs b/gen/Network/AWS/ImportExport/Types/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ImportExport/Types/Product.hs
@@ -0,0 +1,117 @@
+{-# 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.ImportExport.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.ImportExport.Types.Product where
+
+import           Network.AWS.ImportExport.Types.Sum
+import           Network.AWS.Prelude
+
+-- | A discrete item that contains the description and URL of an artifact
+-- (such as a PDF).
+--
+-- /See:/ 'artifact' smart constructor.
+data Artifact = Artifact'
+    { _aURL         :: !(Maybe Text)
+    , _aDescription :: !(Maybe Text)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Artifact' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aURL'
+--
+-- * 'aDescription'
+artifact
+    :: Artifact
+artifact =
+    Artifact'
+    { _aURL = Nothing
+    , _aDescription = Nothing
+    }
+
+-- | Undocumented member.
+aURL :: Lens' Artifact (Maybe Text)
+aURL = lens _aURL (\ s a -> s{_aURL = a});
+
+-- | Undocumented member.
+aDescription :: Lens' Artifact (Maybe Text)
+aDescription = lens _aDescription (\ s a -> s{_aDescription = a});
+
+instance FromXML Artifact where
+        parseXML x
+          = Artifact' <$>
+              (x .@? "URL") <*> (x .@? "Description")
+
+-- | Representation of a job returned by the ListJobs operation.
+--
+-- /See:/ 'job' smart constructor.
+data Job = Job'
+    { _jobJobType      :: !JobType
+    , _jobJobId        :: !Text
+    , _jobIsCanceled   :: !Bool
+    , _jobCreationDate :: !ISO8601
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Job' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'jobJobType'
+--
+-- * 'jobJobId'
+--
+-- * 'jobIsCanceled'
+--
+-- * 'jobCreationDate'
+job
+    :: JobType -- ^ 'jobJobType'
+    -> Text -- ^ 'jobJobId'
+    -> Bool -- ^ 'jobIsCanceled'
+    -> UTCTime -- ^ 'jobCreationDate'
+    -> Job
+job pJobType_ pJobId_ pIsCanceled_ pCreationDate_ =
+    Job'
+    { _jobJobType = pJobType_
+    , _jobJobId = pJobId_
+    , _jobIsCanceled = pIsCanceled_
+    , _jobCreationDate = _Time # pCreationDate_
+    }
+
+-- | Undocumented member.
+jobJobType :: Lens' Job JobType
+jobJobType = lens _jobJobType (\ s a -> s{_jobJobType = a});
+
+-- | Undocumented member.
+jobJobId :: Lens' Job Text
+jobJobId = lens _jobJobId (\ s a -> s{_jobJobId = a});
+
+-- | Undocumented member.
+jobIsCanceled :: Lens' Job Bool
+jobIsCanceled = lens _jobIsCanceled (\ s a -> s{_jobIsCanceled = a});
+
+-- | Undocumented member.
+jobCreationDate :: Lens' Job UTCTime
+jobCreationDate = lens _jobCreationDate (\ s a -> s{_jobCreationDate = a}) . _Time;
+
+instance FromXML Job where
+        parseXML x
+          = Job' <$>
+              (x .@ "JobType") <*> (x .@ "JobId") <*>
+                (x .@ "IsCanceled")
+                <*> (x .@ "CreationDate")
diff --git a/gen/Network/AWS/ImportExport/Types/Sum.hs b/gen/Network/AWS/ImportExport/Types/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ImportExport/Types/Sum.hs
@@ -0,0 +1,46 @@
+{-# 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.ImportExport.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.ImportExport.Types.Sum where
+
+import           Network.AWS.Prelude
+
+-- | Specifies whether the job to initiate is an import or export job.
+data JobType
+    = Export
+    | Import
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText JobType where
+    parser = takeLowerText >>= \case
+        "export" -> pure Export
+        "import" -> pure Import
+        e -> fromTextError $ "Failure parsing JobType from value: '" <> e
+           <> "'. Accepted values: export, import"
+
+instance ToText JobType where
+    toText = \case
+        Export -> "export"
+        Import -> "import"
+
+instance Hashable     JobType
+instance ToByteString JobType
+instance ToQuery      JobType
+instance ToHeader     JobType
+
+instance FromXML JobType where
+    parseXML = parseXMLText "JobType"
diff --git a/gen/Network/AWS/ImportExport/UpdateJob.hs b/gen/Network/AWS/ImportExport/UpdateJob.hs
--- a/gen/Network/AWS/ImportExport/UpdateJob.hs
+++ b/gen/Network/AWS/ImportExport/UpdateJob.hs
@@ -1,168 +1,190 @@
-{-# LANGUAGE DataKinds                   #-}
-{-# LANGUAGE DeriveGeneric               #-}
-{-# LANGUAGE FlexibleInstances           #-}
-{-# LANGUAGE GeneralizedNewtypeDeriving  #-}
-{-# LANGUAGE LambdaCase                  #-}
-{-# LANGUAGE NoImplicitPrelude           #-}
-{-# LANGUAGE OverloadedStrings           #-}
-{-# LANGUAGE RecordWildCards             #-}
-{-# LANGUAGE TypeFamilies                #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
 
 {-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
 
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
 -- Module      : Network.AWS.ImportExport.UpdateJob
--- 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.
-
--- | You use this operation to change the parameters specified in the original
--- manifest file by supplying a new manifest file. The manifest file attached to
--- this request replaces the original manifest file. You can only use the
--- operation after a CreateJob request but before the data transfer starts and
--- you can only use it on jobs you own.
+-- You use this operation to change the parameters specified in the
+-- original manifest file by supplying a new manifest file. The manifest
+-- file attached to this request replaces the original manifest file. You
+-- can only use the operation after a CreateJob request but before the data
+-- transfer starts and you can only use it on jobs you own.
 --
--- <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebUpdateJob.html>
+-- /See:/ <http://docs.aws.amazon.com/AWSImportExport/latest/DG/WebUpdateJob.html AWS API Reference> for UpdateJob.
 module Network.AWS.ImportExport.UpdateJob
     (
-    -- * Request
-      UpdateJob
-    -- ** Request constructor
-    , updateJob
-    -- ** Request lenses
+    -- * Creating a Request
+      updateJob
+    , UpdateJob
+    -- * Request Lenses
     , ujAPIVersion
     , ujJobId
-    , ujJobType
     , ujManifest
+    , ujJobType
     , ujValidateOnly
 
-    -- * Response
-    , UpdateJobResponse
-    -- ** Response constructor
+    -- * Destructuring the Response
     , updateJobResponse
-    -- ** Response lenses
-    , ujrArtifactList
-    , ujrSuccess
-    , ujrWarningMessage
+    , UpdateJobResponse
+    -- * Response Lenses
+    , ujrsSuccess
+    , ujrsWarningMessage
+    , ujrsArtifactList
+    , ujrsStatus
     ) where
 
-import Network.AWS.Prelude
-import Network.AWS.Request.Query
-import Network.AWS.ImportExport.Types
-import qualified GHC.Exts
-
-data UpdateJob = UpdateJob
-    { _ujAPIVersion   :: Maybe Text
-    , _ujJobId        :: Text
-    , _ujJobType      :: JobType
-    , _ujManifest     :: Text
-    , _ujValidateOnly :: Bool
-    } deriving (Eq, Read, Show)
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.ImportExport.Types.Product
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
 
--- | 'UpdateJob' constructor.
+-- | Input structure for the UpateJob operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateJob' smart constructor.
+data UpdateJob = UpdateJob'
+    { _ujAPIVersion   :: !(Maybe Text)
+    , _ujJobId        :: !Text
+    , _ujManifest     :: !Text
+    , _ujJobType      :: !JobType
+    , _ujValidateOnly :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateJob' with the minimum fields required to make a request.
 --
--- * 'ujAPIVersion' @::@ 'Maybe' 'Text'
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ujJobId' @::@ 'Text'
+-- * 'ujAPIVersion'
 --
--- * 'ujJobType' @::@ 'JobType'
+-- * 'ujJobId'
 --
--- * 'ujManifest' @::@ 'Text'
+-- * 'ujManifest'
 --
--- * 'ujValidateOnly' @::@ 'Bool'
+-- * 'ujJobType'
 --
-updateJob :: Text -- ^ 'ujJobId'
-          -> Text -- ^ 'ujManifest'
-          -> JobType -- ^ 'ujJobType'
-          -> Bool -- ^ 'ujValidateOnly'
-          -> UpdateJob
-updateJob p1 p2 p3 p4 = UpdateJob
-    { _ujJobId        = p1
-    , _ujManifest     = p2
-    , _ujJobType      = p3
-    , _ujValidateOnly = p4
-    , _ujAPIVersion   = Nothing
+-- * 'ujValidateOnly'
+updateJob
+    :: Text -- ^ 'ujJobId'
+    -> Text -- ^ 'ujManifest'
+    -> JobType -- ^ 'ujJobType'
+    -> Bool -- ^ 'ujValidateOnly'
+    -> UpdateJob
+updateJob pJobId_ pManifest_ pJobType_ pValidateOnly_ =
+    UpdateJob'
+    { _ujAPIVersion = Nothing
+    , _ujJobId = pJobId_
+    , _ujManifest = pManifest_
+    , _ujJobType = pJobType_
+    , _ujValidateOnly = pValidateOnly_
     }
 
+-- | Undocumented member.
 ujAPIVersion :: Lens' UpdateJob (Maybe Text)
-ujAPIVersion = lens _ujAPIVersion (\s a -> s { _ujAPIVersion = a })
+ujAPIVersion = lens _ujAPIVersion (\ s a -> s{_ujAPIVersion = a});
 
+-- | Undocumented member.
 ujJobId :: Lens' UpdateJob Text
-ujJobId = lens _ujJobId (\s a -> s { _ujJobId = a })
-
-ujJobType :: Lens' UpdateJob JobType
-ujJobType = lens _ujJobType (\s a -> s { _ujJobType = a })
+ujJobId = lens _ujJobId (\ s a -> s{_ujJobId = a});
 
+-- | Undocumented member.
 ujManifest :: Lens' UpdateJob Text
-ujManifest = lens _ujManifest (\s a -> s { _ujManifest = a })
+ujManifest = lens _ujManifest (\ s a -> s{_ujManifest = a});
 
+-- | Undocumented member.
+ujJobType :: Lens' UpdateJob JobType
+ujJobType = lens _ujJobType (\ s a -> s{_ujJobType = a});
+
+-- | Undocumented member.
 ujValidateOnly :: Lens' UpdateJob Bool
-ujValidateOnly = lens _ujValidateOnly (\s a -> s { _ujValidateOnly = a })
+ujValidateOnly = lens _ujValidateOnly (\ s a -> s{_ujValidateOnly = a});
 
-data UpdateJobResponse = UpdateJobResponse
-    { _ujrArtifactList   :: List "member" Artifact
-    , _ujrSuccess        :: Maybe Bool
-    , _ujrWarningMessage :: Maybe Text
-    } deriving (Eq, Read, Show)
+instance AWSRequest UpdateJob where
+        type Sv UpdateJob = ImportExport
+        type Rs UpdateJob = UpdateJobResponse
+        request = postQuery
+        response
+          = receiveXMLWrapper "UpdateJobResult"
+              (\ s h x ->
+                 UpdateJobResponse' <$>
+                   (x .@? "Success") <*> (x .@? "WarningMessage") <*>
+                     (x .@? "ArtifactList" .!@ mempty >>=
+                        may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
 
--- | 'UpdateJobResponse' constructor.
+instance ToHeaders UpdateJob where
+        toHeaders = const mempty
+
+instance ToPath UpdateJob where
+        toPath = const "/"
+
+instance ToQuery UpdateJob where
+        toQuery UpdateJob'{..}
+          = mconcat
+              ["Operation=UpdateJob",
+               "Action" =: ("UpdateJob" :: ByteString),
+               "Version" =: ("2010-06-01" :: ByteString),
+               "APIVersion" =: _ujAPIVersion, "JobId" =: _ujJobId,
+               "Manifest" =: _ujManifest, "JobType" =: _ujJobType,
+               "ValidateOnly" =: _ujValidateOnly]
+
+-- | Output structure for the UpateJob operation.
 --
--- The fields accessible through corresponding lenses are:
+-- /See:/ 'updateJobResponse' smart constructor.
+data UpdateJobResponse = UpdateJobResponse'
+    { _ujrsSuccess        :: !(Maybe Bool)
+    , _ujrsWarningMessage :: !(Maybe Text)
+    , _ujrsArtifactList   :: !(Maybe [Artifact])
+    , _ujrsStatus         :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateJobResponse' with the minimum fields required to make a request.
 --
--- * 'ujrArtifactList' @::@ ['Artifact']
+-- Use one of the following lenses to modify other fields as desired:
 --
--- * 'ujrSuccess' @::@ 'Maybe' 'Bool'
+-- * 'ujrsSuccess'
 --
--- * 'ujrWarningMessage' @::@ 'Maybe' 'Text'
+-- * 'ujrsWarningMessage'
 --
-updateJobResponse :: UpdateJobResponse
-updateJobResponse = UpdateJobResponse
-    { _ujrSuccess        = Nothing
-    , _ujrWarningMessage = Nothing
-    , _ujrArtifactList   = mempty
+-- * 'ujrsArtifactList'
+--
+-- * 'ujrsStatus'
+updateJobResponse
+    :: Int -- ^ 'ujrsStatus'
+    -> UpdateJobResponse
+updateJobResponse pStatus_ =
+    UpdateJobResponse'
+    { _ujrsSuccess = Nothing
+    , _ujrsWarningMessage = Nothing
+    , _ujrsArtifactList = Nothing
+    , _ujrsStatus = pStatus_
     }
 
-ujrArtifactList :: Lens' UpdateJobResponse [Artifact]
-ujrArtifactList = lens _ujrArtifactList (\s a -> s { _ujrArtifactList = a }) . _List
-
-ujrSuccess :: Lens' UpdateJobResponse (Maybe Bool)
-ujrSuccess = lens _ujrSuccess (\s a -> s { _ujrSuccess = a })
-
-ujrWarningMessage :: Lens' UpdateJobResponse (Maybe Text)
-ujrWarningMessage =
-    lens _ujrWarningMessage (\s a -> s { _ujrWarningMessage = a })
-
-instance ToPath UpdateJob where
-    toPath = const "/"
-
-instance ToQuery UpdateJob where
-    toQuery UpdateJob{..} = mconcat
-        [ "APIVersion"   =? _ujAPIVersion
-        , "JobId"        =? _ujJobId
-        , "JobType"      =? _ujJobType
-        , "Manifest"     =? _ujManifest
-        , "ValidateOnly" =? _ujValidateOnly
-        ]
-
-instance ToHeaders UpdateJob
+-- | Undocumented member.
+ujrsSuccess :: Lens' UpdateJobResponse (Maybe Bool)
+ujrsSuccess = lens _ujrsSuccess (\ s a -> s{_ujrsSuccess = a});
 
-instance AWSRequest UpdateJob where
-    type Sv UpdateJob = ImportExport
-    type Rs UpdateJob = UpdateJobResponse
+-- | Undocumented member.
+ujrsWarningMessage :: Lens' UpdateJobResponse (Maybe Text)
+ujrsWarningMessage = lens _ujrsWarningMessage (\ s a -> s{_ujrsWarningMessage = a});
 
-    request  = post "UpdateJob"
-    response = xmlResponse
+-- | Undocumented member.
+ujrsArtifactList :: Lens' UpdateJobResponse [Artifact]
+ujrsArtifactList = lens _ujrsArtifactList (\ s a -> s{_ujrsArtifactList = a}) . _Default . _Coerce;
 
-instance FromXML UpdateJobResponse where
-    parseXML = withElement "UpdateJobResult" $ \x -> UpdateJobResponse
-        <$> x .@? "ArtifactList" .!@ mempty
-        <*> x .@? "Success"
-        <*> x .@? "WarningMessage"
+-- | The response status code.
+ujrsStatus :: Lens' UpdateJobResponse Int
+ujrsStatus = lens _ujrsStatus (\ s a -> s{_ujrsStatus = a});
diff --git a/gen/Network/AWS/ImportExport/Waiters.hs b/gen/Network/AWS/ImportExport/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/ImportExport/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.ImportExport.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.ImportExport.Waiters where
+
+import           Network.AWS.ImportExport.Types
+import           Network.AWS.Prelude
+import           Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
new file mode 100644
--- /dev/null
+++ b/test/Main.hs
@@ -0,0 +1,21 @@
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Main
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Main (main) where
+
+import Test.Tasty
+import Test.AWS.ImportExport
+import Test.AWS.ImportExport.Internal
+
+main :: IO ()
+main = defaultMain $ testGroup "ImportExport"
+    [ testGroup "tests"    tests
+    , testGroup "fixtures" fixtures
+    ]
diff --git a/test/Test/AWS/Gen/ImportExport.hs b/test/Test/AWS/Gen/ImportExport.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/Gen/ImportExport.hs
@@ -0,0 +1,141 @@
+{-# 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.ImportExport
+-- 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.ImportExport where
+
+import Data.Proxy
+import Test.AWS.Fixture
+import Test.AWS.Prelude
+import Test.Tasty
+import Network.AWS.ImportExport
+import Test.AWS.ImportExport.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"
+--         [ testGetShippingLabel $
+--             getShippingLabel
+--
+--         , testCreateJob $
+--             createJob
+--
+--         , testListJobs $
+--             listJobs
+--
+--         , testUpdateJob $
+--             updateJob
+--
+--         , testGetStatus $
+--             getStatus
+--
+--         , testCancelJob $
+--             cancelJob
+--
+--           ]
+
+--     , testGroup "response"
+--         [ testGetShippingLabelResponse $
+--             getShippingLabelResponse
+--
+--         , testCreateJobResponse $
+--             createJobResponse
+--
+--         , testListJobsResponse $
+--             listJobsResponse
+--
+--         , testUpdateJobResponse $
+--             updateJobResponse
+--
+--         , testGetStatusResponse $
+--             getStatusResponse
+--
+--         , testCancelJobResponse $
+--             cancelJobResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+testGetShippingLabel :: GetShippingLabel -> TestTree
+testGetShippingLabel = req
+    "GetShippingLabel"
+    "fixture/GetShippingLabel"
+
+testCreateJob :: CreateJob -> TestTree
+testCreateJob = req
+    "CreateJob"
+    "fixture/CreateJob"
+
+testListJobs :: ListJobs -> TestTree
+testListJobs = req
+    "ListJobs"
+    "fixture/ListJobs"
+
+testUpdateJob :: UpdateJob -> TestTree
+testUpdateJob = req
+    "UpdateJob"
+    "fixture/UpdateJob"
+
+testGetStatus :: GetStatus -> TestTree
+testGetStatus = req
+    "GetStatus"
+    "fixture/GetStatus"
+
+testCancelJob :: CancelJob -> TestTree
+testCancelJob = req
+    "CancelJob"
+    "fixture/CancelJob"
+
+-- Responses
+
+testGetShippingLabelResponse :: GetShippingLabelResponse -> TestTree
+testGetShippingLabelResponse = res
+    "GetShippingLabelResponse"
+    "fixture/GetShippingLabelResponse"
+    (Proxy :: Proxy GetShippingLabel)
+
+testCreateJobResponse :: CreateJobResponse -> TestTree
+testCreateJobResponse = res
+    "CreateJobResponse"
+    "fixture/CreateJobResponse"
+    (Proxy :: Proxy CreateJob)
+
+testListJobsResponse :: ListJobsResponse -> TestTree
+testListJobsResponse = res
+    "ListJobsResponse"
+    "fixture/ListJobsResponse"
+    (Proxy :: Proxy ListJobs)
+
+testUpdateJobResponse :: UpdateJobResponse -> TestTree
+testUpdateJobResponse = res
+    "UpdateJobResponse"
+    "fixture/UpdateJobResponse"
+    (Proxy :: Proxy UpdateJob)
+
+testGetStatusResponse :: GetStatusResponse -> TestTree
+testGetStatusResponse = res
+    "GetStatusResponse"
+    "fixture/GetStatusResponse"
+    (Proxy :: Proxy GetStatus)
+
+testCancelJobResponse :: CancelJobResponse -> TestTree
+testCancelJobResponse = res
+    "CancelJobResponse"
+    "fixture/CancelJobResponse"
+    (Proxy :: Proxy CancelJob)
diff --git a/test/Test/AWS/ImportExport.hs b/test/Test/AWS/ImportExport.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/ImportExport.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+-- Module      : Test.AWS.ImportExport
+-- 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.ImportExport
+    ( tests
+    , fixtures
+    ) where
+
+import           Network.AWS.ImportExport
+import           Test.AWS.Gen.ImportExport
+import           Test.Tasty
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/AWS/ImportExport/Internal.hs b/test/Test/AWS/ImportExport/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/AWS/ImportExport/Internal.hs
@@ -0,0 +1,16 @@
+{-# LANGUAGE OverloadedStrings #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Module      : Test.AWS.ImportExport.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.ImportExport.Internal where
+
+import Test.AWS.Prelude
