diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -365,9 +365,3 @@
 for such a notice.
 
 You may add additional accurate notices of copyright ownership.
-
-Exhibit B - "Incompatible With Secondary Licenses" Notice
----------------------------------------------------------
-
-  This Source Code Form is "Incompatible With Secondary Licenses", as
-  defined by the Mozilla Public License, v. 2.0.
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`1.3.2`
+`1.3.3`
 
 
 ## Description
diff --git a/amazonka-ses.cabal b/amazonka-ses.cabal
--- a/amazonka-ses.cabal
+++ b/amazonka-ses.cabal
@@ -1,5 +1,5 @@
 name:                  amazonka-ses
-version:               1.3.2
+version:               1.3.3
 synopsis:              Amazon Simple Email Service SDK.
 homepage:              https://github.com/brendanhay/amazonka
 bug-reports:           https://github.com/brendanhay/amazonka/issues
@@ -49,9 +49,19 @@
 
     exposed-modules:
           Network.AWS.SES
+        , Network.AWS.SES.CloneReceiptRuleSet
+        , Network.AWS.SES.CreateReceiptFilter
+        , Network.AWS.SES.CreateReceiptRule
+        , Network.AWS.SES.CreateReceiptRuleSet
         , Network.AWS.SES.DeleteIdentity
         , Network.AWS.SES.DeleteIdentityPolicy
+        , Network.AWS.SES.DeleteReceiptFilter
+        , Network.AWS.SES.DeleteReceiptRule
+        , Network.AWS.SES.DeleteReceiptRuleSet
         , Network.AWS.SES.DeleteVerifiedEmailAddress
+        , Network.AWS.SES.DescribeActiveReceiptRuleSet
+        , Network.AWS.SES.DescribeReceiptRule
+        , Network.AWS.SES.DescribeReceiptRuleSet
         , Network.AWS.SES.GetIdentityDkimAttributes
         , Network.AWS.SES.GetIdentityNotificationAttributes
         , Network.AWS.SES.GetIdentityPolicies
@@ -60,14 +70,21 @@
         , Network.AWS.SES.GetSendStatistics
         , Network.AWS.SES.ListIdentities
         , Network.AWS.SES.ListIdentityPolicies
+        , Network.AWS.SES.ListReceiptFilters
+        , Network.AWS.SES.ListReceiptRuleSets
         , Network.AWS.SES.ListVerifiedEmailAddresses
         , Network.AWS.SES.PutIdentityPolicy
+        , Network.AWS.SES.ReorderReceiptRuleSet
+        , Network.AWS.SES.SendBounce
         , Network.AWS.SES.SendEmail
         , Network.AWS.SES.SendRawEmail
+        , Network.AWS.SES.SetActiveReceiptRuleSet
         , Network.AWS.SES.SetIdentityDkimEnabled
         , Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
         , Network.AWS.SES.SetIdentityNotificationTopic
+        , Network.AWS.SES.SetReceiptRulePosition
         , Network.AWS.SES.Types
+        , Network.AWS.SES.UpdateReceiptRule
         , Network.AWS.SES.VerifyDomainDkim
         , Network.AWS.SES.VerifyDomainIdentity
         , Network.AWS.SES.VerifyEmailAddress
@@ -79,7 +96,7 @@
         , Network.AWS.SES.Types.Sum
 
     build-depends:
-          amazonka-core == 1.3.2.*
+          amazonka-core == 1.3.3.*
         , base          >= 4.7     && < 5
 
 test-suite amazonka-ses-test
@@ -99,9 +116,9 @@
         , Test.AWS.SES.Internal
 
     build-depends:
-          amazonka-core == 1.3.2.*
-        , amazonka-test == 1.3.2.*
-        , amazonka-ses == 1.3.2.*
+          amazonka-core == 1.3.3.*
+        , amazonka-test == 1.3.3.*
+        , amazonka-ses == 1.3.3.*
         , base
         , bytestring
         , lens
diff --git a/fixture/CloneReceiptRuleSet.yaml b/fixture/CloneReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CloneReceiptRuleSet.yaml
diff --git a/fixture/CloneReceiptRuleSetResponse.proto b/fixture/CloneReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CloneReceiptRuleSetResponse.proto
diff --git a/fixture/CreateReceiptFilter.yaml b/fixture/CreateReceiptFilter.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptFilter.yaml
diff --git a/fixture/CreateReceiptFilterResponse.proto b/fixture/CreateReceiptFilterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptFilterResponse.proto
diff --git a/fixture/CreateReceiptRule.yaml b/fixture/CreateReceiptRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptRule.yaml
diff --git a/fixture/CreateReceiptRuleResponse.proto b/fixture/CreateReceiptRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptRuleResponse.proto
diff --git a/fixture/CreateReceiptRuleSet.yaml b/fixture/CreateReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptRuleSet.yaml
diff --git a/fixture/CreateReceiptRuleSetResponse.proto b/fixture/CreateReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/CreateReceiptRuleSetResponse.proto
diff --git a/fixture/DeleteReceiptFilter.yaml b/fixture/DeleteReceiptFilter.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptFilter.yaml
diff --git a/fixture/DeleteReceiptFilterResponse.proto b/fixture/DeleteReceiptFilterResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptFilterResponse.proto
diff --git a/fixture/DeleteReceiptRule.yaml b/fixture/DeleteReceiptRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptRule.yaml
diff --git a/fixture/DeleteReceiptRuleResponse.proto b/fixture/DeleteReceiptRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptRuleResponse.proto
diff --git a/fixture/DeleteReceiptRuleSet.yaml b/fixture/DeleteReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptRuleSet.yaml
diff --git a/fixture/DeleteReceiptRuleSetResponse.proto b/fixture/DeleteReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteReceiptRuleSetResponse.proto
diff --git a/fixture/DescribeActiveReceiptRuleSet.yaml b/fixture/DescribeActiveReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeActiveReceiptRuleSet.yaml
diff --git a/fixture/DescribeActiveReceiptRuleSetResponse.proto b/fixture/DescribeActiveReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeActiveReceiptRuleSetResponse.proto
diff --git a/fixture/DescribeReceiptRule.yaml b/fixture/DescribeReceiptRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeReceiptRule.yaml
diff --git a/fixture/DescribeReceiptRuleResponse.proto b/fixture/DescribeReceiptRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeReceiptRuleResponse.proto
diff --git a/fixture/DescribeReceiptRuleSet.yaml b/fixture/DescribeReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeReceiptRuleSet.yaml
diff --git a/fixture/DescribeReceiptRuleSetResponse.proto b/fixture/DescribeReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DescribeReceiptRuleSetResponse.proto
diff --git a/fixture/ListReceiptFilters.yaml b/fixture/ListReceiptFilters.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListReceiptFilters.yaml
diff --git a/fixture/ListReceiptFiltersResponse.proto b/fixture/ListReceiptFiltersResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListReceiptFiltersResponse.proto
diff --git a/fixture/ListReceiptRuleSets.yaml b/fixture/ListReceiptRuleSets.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ListReceiptRuleSets.yaml
diff --git a/fixture/ListReceiptRuleSetsResponse.proto b/fixture/ListReceiptRuleSetsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ListReceiptRuleSetsResponse.proto
diff --git a/fixture/ReorderReceiptRuleSet.yaml b/fixture/ReorderReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/ReorderReceiptRuleSet.yaml
diff --git a/fixture/ReorderReceiptRuleSetResponse.proto b/fixture/ReorderReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/ReorderReceiptRuleSetResponse.proto
diff --git a/fixture/SendBounce.yaml b/fixture/SendBounce.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SendBounce.yaml
diff --git a/fixture/SendBounceResponse.proto b/fixture/SendBounceResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SendBounceResponse.proto
diff --git a/fixture/SetActiveReceiptRuleSet.yaml b/fixture/SetActiveReceiptRuleSet.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SetActiveReceiptRuleSet.yaml
diff --git a/fixture/SetActiveReceiptRuleSetResponse.proto b/fixture/SetActiveReceiptRuleSetResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SetActiveReceiptRuleSetResponse.proto
diff --git a/fixture/SetReceiptRulePosition.yaml b/fixture/SetReceiptRulePosition.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/SetReceiptRulePosition.yaml
diff --git a/fixture/SetReceiptRulePositionResponse.proto b/fixture/SetReceiptRulePositionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/SetReceiptRulePositionResponse.proto
diff --git a/fixture/UpdateReceiptRule.yaml b/fixture/UpdateReceiptRule.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateReceiptRule.yaml
diff --git a/fixture/UpdateReceiptRuleResponse.proto b/fixture/UpdateReceiptRuleResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/UpdateReceiptRuleResponse.proto
diff --git a/gen/Network/AWS/SES.hs b/gen/Network/AWS/SES.hs
--- a/gen/Network/AWS/SES.hs
+++ b/gen/Network/AWS/SES.hs
@@ -30,18 +30,45 @@
     -- * Errors
     -- $errors
 
+    -- ** CannotDeleteException
+    , _CannotDeleteException
+
+    -- ** RuleDoesNotExistException
+    , _RuleDoesNotExistException
+
     -- ** MessageRejected
     , _MessageRejected
 
+    -- ** RuleSetDoesNotExistException
+    , _RuleSetDoesNotExistException
+
+    -- ** InvalidLambdaFunctionException
+    , _InvalidLambdaFunctionException
+
     -- ** InvalidPolicyException
     , _InvalidPolicyException
 
+    -- ** InvalidS3ConfigurationException
+    , _InvalidS3ConfigurationException
+
+    -- ** InvalidSNSTopicException
+    , _InvalidSNSTopicException
+
+    -- ** AlreadyExistsException
+    , _AlreadyExistsException
+
+    -- ** LimitExceededException
+    , _LimitExceededException
+
     -- * Waiters
     -- $waiters
 
     -- * Operations
     -- $operations
 
+    -- ** CreateReceiptRuleSet
+    , module Network.AWS.SES.CreateReceiptRuleSet
+
     -- ** GetSendQuota
     , module Network.AWS.SES.GetSendQuota
 
@@ -60,6 +87,15 @@
     -- ** SetIdentityDkimEnabled
     , module Network.AWS.SES.SetIdentityDkimEnabled
 
+    -- ** ListReceiptFilters
+    , module Network.AWS.SES.ListReceiptFilters
+
+    -- ** DescribeReceiptRuleSet
+    , module Network.AWS.SES.DescribeReceiptRuleSet
+
+    -- ** CreateReceiptFilter
+    , module Network.AWS.SES.CreateReceiptFilter
+
     -- ** SetIdentityFeedbackForwardingEnabled
     , module Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
 
@@ -72,6 +108,21 @@
     -- ** VerifyDomainIdentity
     , module Network.AWS.SES.VerifyDomainIdentity
 
+    -- ** ReorderReceiptRuleSet
+    , module Network.AWS.SES.ReorderReceiptRuleSet
+
+    -- ** ListReceiptRuleSets
+    , module Network.AWS.SES.ListReceiptRuleSets
+
+    -- ** DeleteReceiptRuleSet
+    , module Network.AWS.SES.DeleteReceiptRuleSet
+
+    -- ** SetReceiptRulePosition
+    , module Network.AWS.SES.SetReceiptRulePosition
+
+    -- ** SendBounce
+    , module Network.AWS.SES.SendBounce
+
     -- ** GetIdentityDkimAttributes
     , module Network.AWS.SES.GetIdentityDkimAttributes
 
@@ -87,6 +138,9 @@
     -- ** DeleteIdentity
     , module Network.AWS.SES.DeleteIdentity
 
+    -- ** DescribeReceiptRule
+    , module Network.AWS.SES.DescribeReceiptRule
+
     -- ** ListIdentities (Paginated)
     , module Network.AWS.SES.ListIdentities
 
@@ -99,6 +153,9 @@
     -- ** DeleteVerifiedEmailAddress
     , module Network.AWS.SES.DeleteVerifiedEmailAddress
 
+    -- ** DeleteReceiptFilter
+    , module Network.AWS.SES.DeleteReceiptFilter
+
     -- ** ListVerifiedEmailAddresses
     , module Network.AWS.SES.ListVerifiedEmailAddresses
 
@@ -108,23 +165,82 @@
     -- ** SendEmail
     , module Network.AWS.SES.SendEmail
 
+    -- ** DeleteReceiptRule
+    , module Network.AWS.SES.DeleteReceiptRule
+
+    -- ** UpdateReceiptRule
+    , module Network.AWS.SES.UpdateReceiptRule
+
+    -- ** CloneReceiptRuleSet
+    , module Network.AWS.SES.CloneReceiptRuleSet
+
+    -- ** CreateReceiptRule
+    , module Network.AWS.SES.CreateReceiptRule
+
+    -- ** SetActiveReceiptRuleSet
+    , module Network.AWS.SES.SetActiveReceiptRuleSet
+
+    -- ** DescribeActiveReceiptRuleSet
+    , module Network.AWS.SES.DescribeActiveReceiptRuleSet
+
     -- * Types
 
+    -- ** BounceType
+    , BounceType (..)
+
+    -- ** DsnAction
+    , DsnAction (..)
+
     -- ** IdentityType
     , IdentityType (..)
 
+    -- ** InvocationType
+    , InvocationType (..)
+
     -- ** NotificationType
     , NotificationType (..)
 
+    -- ** ReceiptFilterPolicy
+    , ReceiptFilterPolicy (..)
+
+    -- ** StopScope
+    , StopScope (..)
+
+    -- ** TLSPolicy
+    , TLSPolicy (..)
+
     -- ** VerificationStatus
     , VerificationStatus (..)
 
+    -- ** AddHeaderAction
+    , AddHeaderAction
+    , addHeaderAction
+    , ahaHeaderName
+    , ahaHeaderValue
+
     -- ** Body
     , Body
     , body
     , bText
     , bHTML
 
+    -- ** BounceAction
+    , BounceAction
+    , bounceAction
+    , baTopicARN
+    , baStatusCode
+    , baSmtpReplyCode
+    , baMessage
+    , baSender
+
+    -- ** BouncedRecipientInfo
+    , BouncedRecipientInfo
+    , bouncedRecipientInfo
+    , briBounceType
+    , briRecipientDsnFields
+    , briRecipientARN
+    , briRecipient
+
     -- ** Content
     , Content
     , content
@@ -138,6 +254,12 @@
     , dCCAddresses
     , dToAddresses
 
+    -- ** ExtensionField
+    , ExtensionField
+    , extensionField
+    , efName
+    , efValue
+
     -- ** IdentityDkimAttributes
     , IdentityDkimAttributes
     , identityDkimAttributes
@@ -159,17 +281,94 @@
     , ivaVerificationToken
     , ivaVerificationStatus
 
+    -- ** LambdaAction
+    , LambdaAction
+    , lambdaAction
+    , laInvocationType
+    , laTopicARN
+    , laFunctionARN
+
     -- ** Message
     , Message
     , message
     , mSubject
     , mBody
 
+    -- ** MessageDsn
+    , MessageDsn
+    , messageDsn
+    , mdArrivalDate
+    , mdExtensionFields
+    , mdReportingMta
+
     -- ** RawMessage
     , RawMessage
     , rawMessage
     , rmData
 
+    -- ** ReceiptAction
+    , ReceiptAction
+    , receiptAction
+    , raAddHeaderAction
+    , raSNSAction
+    , raWorkmailAction
+    , raBounceAction
+    , raLambdaAction
+    , raStopAction
+    , raS3Action
+
+    -- ** ReceiptFilter
+    , ReceiptFilter
+    , receiptFilter
+    , rfName
+    , rfIPFilter
+
+    -- ** ReceiptIPFilter
+    , ReceiptIPFilter
+    , receiptIPFilter
+    , rifPolicy
+    , rifCIdR
+
+    -- ** ReceiptRule
+    , ReceiptRule
+    , receiptRule
+    , rrScanEnabled
+    , rrEnabled
+    , rrActions
+    , rrRecipients
+    , rrTLSPolicy
+    , rrName
+
+    -- ** ReceiptRuleSetMetadata
+    , ReceiptRuleSetMetadata
+    , receiptRuleSetMetadata
+    , rrsmName
+    , rrsmCreatedTimestamp
+
+    -- ** RecipientDsnFields
+    , RecipientDsnFields
+    , recipientDsnFields
+    , rdfDiagnosticCode
+    , rdfRemoteMta
+    , rdfFinalRecipient
+    , rdfExtensionFields
+    , rdfLastAttemptDate
+    , rdfAction
+    , rdfStatus
+
+    -- ** S3Action
+    , S3Action
+    , s3Action
+    , s3KMSKeyARN
+    , s3TopicARN
+    , s3ObjectKeyPrefix
+    , s3BucketName
+
+    -- ** SNSAction
+    , SNSAction
+    , snsAction
+    , saTopicARN
+
     -- ** SendDataPoint
     , SendDataPoint
     , sendDataPoint
@@ -178,11 +377,33 @@
     , sdpDeliveryAttempts
     , sdpBounces
     , sdpTimestamp
+
+    -- ** StopAction
+    , StopAction
+    , stopAction
+    , sTopicARN
+    , sScope
+
+    -- ** WorkmailAction
+    , WorkmailAction
+    , workmailAction
+    , waTopicARN
+    , waOrganizationARN
     ) where
 
+import           Network.AWS.SES.CloneReceiptRuleSet
+import           Network.AWS.SES.CreateReceiptFilter
+import           Network.AWS.SES.CreateReceiptRule
+import           Network.AWS.SES.CreateReceiptRuleSet
 import           Network.AWS.SES.DeleteIdentity
 import           Network.AWS.SES.DeleteIdentityPolicy
+import           Network.AWS.SES.DeleteReceiptFilter
+import           Network.AWS.SES.DeleteReceiptRule
+import           Network.AWS.SES.DeleteReceiptRuleSet
 import           Network.AWS.SES.DeleteVerifiedEmailAddress
+import           Network.AWS.SES.DescribeActiveReceiptRuleSet
+import           Network.AWS.SES.DescribeReceiptRule
+import           Network.AWS.SES.DescribeReceiptRuleSet
 import           Network.AWS.SES.GetIdentityDkimAttributes
 import           Network.AWS.SES.GetIdentityNotificationAttributes
 import           Network.AWS.SES.GetIdentityPolicies
@@ -191,14 +412,21 @@
 import           Network.AWS.SES.GetSendStatistics
 import           Network.AWS.SES.ListIdentities
 import           Network.AWS.SES.ListIdentityPolicies
+import           Network.AWS.SES.ListReceiptFilters
+import           Network.AWS.SES.ListReceiptRuleSets
 import           Network.AWS.SES.ListVerifiedEmailAddresses
 import           Network.AWS.SES.PutIdentityPolicy
+import           Network.AWS.SES.ReorderReceiptRuleSet
+import           Network.AWS.SES.SendBounce
 import           Network.AWS.SES.SendEmail
 import           Network.AWS.SES.SendRawEmail
+import           Network.AWS.SES.SetActiveReceiptRuleSet
 import           Network.AWS.SES.SetIdentityDkimEnabled
 import           Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
 import           Network.AWS.SES.SetIdentityNotificationTopic
+import           Network.AWS.SES.SetReceiptRulePosition
 import           Network.AWS.SES.Types
+import           Network.AWS.SES.UpdateReceiptRule
 import           Network.AWS.SES.VerifyDomainDkim
 import           Network.AWS.SES.VerifyDomainIdentity
 import           Network.AWS.SES.VerifyEmailAddress
diff --git a/gen/Network/AWS/SES/CloneReceiptRuleSet.hs b/gen/Network/AWS/SES/CloneReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/CloneReceiptRuleSet.hs
@@ -0,0 +1,132 @@
+{-# 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.SES.CloneReceiptRuleSet
+-- 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)
+--
+-- Creates a receipt rule set by cloning an existing one. All receipt rules
+-- and configurations are copied to the new receipt rule set and are
+-- completely independent of the source rule set.
+--
+-- For information about setting up rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_CloneReceiptRuleSet.html AWS API Reference> for CloneReceiptRuleSet.
+module Network.AWS.SES.CloneReceiptRuleSet
+    (
+    -- * Creating a Request
+      cloneReceiptRuleSet
+    , CloneReceiptRuleSet
+    -- * Request Lenses
+    , cRuleSetName
+    , cOriginalRuleSetName
+
+    -- * Destructuring the Response
+    , cloneReceiptRuleSetResponse
+    , CloneReceiptRuleSetResponse
+    -- * Response Lenses
+    , crsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'cloneReceiptRuleSet' smart constructor.
+data CloneReceiptRuleSet = CloneReceiptRuleSet'
+    { _cRuleSetName         :: !Text
+    , _cOriginalRuleSetName :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CloneReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cRuleSetName'
+--
+-- * 'cOriginalRuleSetName'
+cloneReceiptRuleSet
+    :: Text -- ^ 'cRuleSetName'
+    -> Text -- ^ 'cOriginalRuleSetName'
+    -> CloneReceiptRuleSet
+cloneReceiptRuleSet pRuleSetName_ pOriginalRuleSetName_ =
+    CloneReceiptRuleSet'
+    { _cRuleSetName = pRuleSetName_
+    , _cOriginalRuleSetName = pOriginalRuleSetName_
+    }
+
+-- | The name of the rule set to create. The name must:
+--
+-- -   Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.),
+--     underscores (_), or dashes (-).
+-- -   Start and end with a letter or number.
+-- -   Contain less than 64 characters.
+cRuleSetName :: Lens' CloneReceiptRuleSet Text
+cRuleSetName = lens _cRuleSetName (\ s a -> s{_cRuleSetName = a});
+
+-- | The name of the rule set to clone.
+cOriginalRuleSetName :: Lens' CloneReceiptRuleSet Text
+cOriginalRuleSetName = lens _cOriginalRuleSetName (\ s a -> s{_cOriginalRuleSetName = a});
+
+instance AWSRequest CloneReceiptRuleSet where
+        type Rs CloneReceiptRuleSet =
+             CloneReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "CloneReceiptRuleSetResult"
+              (\ s h x ->
+                 CloneReceiptRuleSetResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders CloneReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath CloneReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery CloneReceiptRuleSet where
+        toQuery CloneReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =: ("CloneReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _cRuleSetName,
+               "OriginalRuleSetName" =: _cOriginalRuleSetName]
+
+-- | /See:/ 'cloneReceiptRuleSetResponse' smart constructor.
+newtype CloneReceiptRuleSetResponse = CloneReceiptRuleSetResponse'
+    { _crsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CloneReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crsResponseStatus'
+cloneReceiptRuleSetResponse
+    :: Int -- ^ 'crsResponseStatus'
+    -> CloneReceiptRuleSetResponse
+cloneReceiptRuleSetResponse pResponseStatus_ =
+    CloneReceiptRuleSetResponse'
+    { _crsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+crsResponseStatus :: Lens' CloneReceiptRuleSetResponse Int
+crsResponseStatus = lens _crsResponseStatus (\ s a -> s{_crsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/CreateReceiptFilter.hs b/gen/Network/AWS/SES/CreateReceiptFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/CreateReceiptFilter.hs
@@ -0,0 +1,116 @@
+{-# 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.SES.CreateReceiptFilter
+-- 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)
+--
+-- Creates a new IP address filter.
+--
+-- For information about setting up IP address filters, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptFilter.html AWS API Reference> for CreateReceiptFilter.
+module Network.AWS.SES.CreateReceiptFilter
+    (
+    -- * Creating a Request
+      createReceiptFilter
+    , CreateReceiptFilter
+    -- * Request Lenses
+    , crfFilter
+
+    -- * Destructuring the Response
+    , createReceiptFilterResponse
+    , CreateReceiptFilterResponse
+    -- * Response Lenses
+    , crfrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'createReceiptFilter' smart constructor.
+newtype CreateReceiptFilter = CreateReceiptFilter'
+    { _crfFilter :: ReceiptFilter
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crfFilter'
+createReceiptFilter
+    :: ReceiptFilter -- ^ 'crfFilter'
+    -> CreateReceiptFilter
+createReceiptFilter pFilter_ =
+    CreateReceiptFilter'
+    { _crfFilter = pFilter_
+    }
+
+-- | A data structure that describes the IP address filter to create, which
+-- consists of a name, an IP address range, and whether to allow or block
+-- mail from it.
+crfFilter :: Lens' CreateReceiptFilter ReceiptFilter
+crfFilter = lens _crfFilter (\ s a -> s{_crfFilter = a});
+
+instance AWSRequest CreateReceiptFilter where
+        type Rs CreateReceiptFilter =
+             CreateReceiptFilterResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "CreateReceiptFilterResult"
+              (\ s h x ->
+                 CreateReceiptFilterResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders CreateReceiptFilter where
+        toHeaders = const mempty
+
+instance ToPath CreateReceiptFilter where
+        toPath = const "/"
+
+instance ToQuery CreateReceiptFilter where
+        toQuery CreateReceiptFilter'{..}
+          = mconcat
+              ["Action" =: ("CreateReceiptFilter" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "Filter" =: _crfFilter]
+
+-- | /See:/ 'createReceiptFilterResponse' smart constructor.
+newtype CreateReceiptFilterResponse = CreateReceiptFilterResponse'
+    { _crfrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptFilterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crfrsResponseStatus'
+createReceiptFilterResponse
+    :: Int -- ^ 'crfrsResponseStatus'
+    -> CreateReceiptFilterResponse
+createReceiptFilterResponse pResponseStatus_ =
+    CreateReceiptFilterResponse'
+    { _crfrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+crfrsResponseStatus :: Lens' CreateReceiptFilterResponse Int
+crfrsResponseStatus = lens _crfrsResponseStatus (\ s a -> s{_crfrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/CreateReceiptRule.hs b/gen/Network/AWS/SES/CreateReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/CreateReceiptRule.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.CreateReceiptRule
+-- 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)
+--
+-- Creates a receipt rule.
+--
+-- For information about setting up receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRule.html AWS API Reference> for CreateReceiptRule.
+module Network.AWS.SES.CreateReceiptRule
+    (
+    -- * Creating a Request
+      createReceiptRule
+    , CreateReceiptRule
+    -- * Request Lenses
+    , crrAfter
+    , crrRuleSetName
+    , crrRule
+
+    -- * Destructuring the Response
+    , createReceiptRuleResponse
+    , CreateReceiptRuleResponse
+    -- * Response Lenses
+    , crrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'createReceiptRule' smart constructor.
+data CreateReceiptRule = CreateReceiptRule'
+    { _crrAfter       :: !(Maybe Text)
+    , _crrRuleSetName :: !Text
+    , _crrRule        :: !ReceiptRule
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crrAfter'
+--
+-- * 'crrRuleSetName'
+--
+-- * 'crrRule'
+createReceiptRule
+    :: Text -- ^ 'crrRuleSetName'
+    -> ReceiptRule -- ^ 'crrRule'
+    -> CreateReceiptRule
+createReceiptRule pRuleSetName_ pRule_ =
+    CreateReceiptRule'
+    { _crrAfter = Nothing
+    , _crrRuleSetName = pRuleSetName_
+    , _crrRule = pRule_
+    }
+
+-- | The name of an existing rule after which the new rule will be placed. If
+-- this parameter is null, the new rule will be inserted at the beginning
+-- of the rule list.
+crrAfter :: Lens' CreateReceiptRule (Maybe Text)
+crrAfter = lens _crrAfter (\ s a -> s{_crrAfter = a});
+
+-- | The name of the rule set to which to add the rule.
+crrRuleSetName :: Lens' CreateReceiptRule Text
+crrRuleSetName = lens _crrRuleSetName (\ s a -> s{_crrRuleSetName = a});
+
+-- | A data structure that contains the specified rule\'s name, actions,
+-- recipients, domains, enabled status, scan status, and TLS policy.
+crrRule :: Lens' CreateReceiptRule ReceiptRule
+crrRule = lens _crrRule (\ s a -> s{_crrRule = a});
+
+instance AWSRequest CreateReceiptRule where
+        type Rs CreateReceiptRule = CreateReceiptRuleResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "CreateReceiptRuleResult"
+              (\ s h x ->
+                 CreateReceiptRuleResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders CreateReceiptRule where
+        toHeaders = const mempty
+
+instance ToPath CreateReceiptRule where
+        toPath = const "/"
+
+instance ToQuery CreateReceiptRule where
+        toQuery CreateReceiptRule'{..}
+          = mconcat
+              ["Action" =: ("CreateReceiptRule" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "After" =: _crrAfter,
+               "RuleSetName" =: _crrRuleSetName, "Rule" =: _crrRule]
+
+-- | /See:/ 'createReceiptRuleResponse' smart constructor.
+newtype CreateReceiptRuleResponse = CreateReceiptRuleResponse'
+    { _crrrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptRuleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crrrsResponseStatus'
+createReceiptRuleResponse
+    :: Int -- ^ 'crrrsResponseStatus'
+    -> CreateReceiptRuleResponse
+createReceiptRuleResponse pResponseStatus_ =
+    CreateReceiptRuleResponse'
+    { _crrrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+crrrsResponseStatus :: Lens' CreateReceiptRuleResponse Int
+crrrsResponseStatus = lens _crrrsResponseStatus (\ s a -> s{_crrrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/CreateReceiptRuleSet.hs b/gen/Network/AWS/SES/CreateReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/CreateReceiptRuleSet.hs
@@ -0,0 +1,120 @@
+{-# 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.SES.CreateReceiptRuleSet
+-- 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)
+--
+-- Creates an empty receipt rule set.
+--
+-- For information about setting up receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_CreateReceiptRuleSet.html AWS API Reference> for CreateReceiptRuleSet.
+module Network.AWS.SES.CreateReceiptRuleSet
+    (
+    -- * Creating a Request
+      createReceiptRuleSet
+    , CreateReceiptRuleSet
+    -- * Request Lenses
+    , crrsRuleSetName
+
+    -- * Destructuring the Response
+    , createReceiptRuleSetResponse
+    , CreateReceiptRuleSetResponse
+    -- * Response Lenses
+    , crrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'createReceiptRuleSet' smart constructor.
+newtype CreateReceiptRuleSet = CreateReceiptRuleSet'
+    { _crrsRuleSetName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crrsRuleSetName'
+createReceiptRuleSet
+    :: Text -- ^ 'crrsRuleSetName'
+    -> CreateReceiptRuleSet
+createReceiptRuleSet pRuleSetName_ =
+    CreateReceiptRuleSet'
+    { _crrsRuleSetName = pRuleSetName_
+    }
+
+-- | The name of the rule set to create. The name must:
+--
+-- -   Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.),
+--     underscores (_), or dashes (-).
+-- -   Start and end with a letter or number.
+-- -   Contain less than 64 characters.
+crrsRuleSetName :: Lens' CreateReceiptRuleSet Text
+crrsRuleSetName = lens _crrsRuleSetName (\ s a -> s{_crrsRuleSetName = a});
+
+instance AWSRequest CreateReceiptRuleSet where
+        type Rs CreateReceiptRuleSet =
+             CreateReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "CreateReceiptRuleSetResult"
+              (\ s h x ->
+                 CreateReceiptRuleSetResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders CreateReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath CreateReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery CreateReceiptRuleSet where
+        toQuery CreateReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =: ("CreateReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _crrsRuleSetName]
+
+-- | /See:/ 'createReceiptRuleSetResponse' smart constructor.
+newtype CreateReceiptRuleSetResponse = CreateReceiptRuleSetResponse'
+    { _crrsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'CreateReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'crrsrsResponseStatus'
+createReceiptRuleSetResponse
+    :: Int -- ^ 'crrsrsResponseStatus'
+    -> CreateReceiptRuleSetResponse
+createReceiptRuleSetResponse pResponseStatus_ =
+    CreateReceiptRuleSetResponse'
+    { _crrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+crrsrsResponseStatus :: Lens' CreateReceiptRuleSetResponse Int
+crrsrsResponseStatus = lens _crrsrsResponseStatus (\ s a -> s{_crrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DeleteReceiptFilter.hs b/gen/Network/AWS/SES/DeleteReceiptFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DeleteReceiptFilter.hs
@@ -0,0 +1,114 @@
+{-# 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.SES.DeleteReceiptFilter
+-- 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)
+--
+-- Deletes the specified IP address filter.
+--
+-- For information about managing IP address filters, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptFilter.html AWS API Reference> for DeleteReceiptFilter.
+module Network.AWS.SES.DeleteReceiptFilter
+    (
+    -- * Creating a Request
+      deleteReceiptFilter
+    , DeleteReceiptFilter
+    -- * Request Lenses
+    , drfFilterName
+
+    -- * Destructuring the Response
+    , deleteReceiptFilterResponse
+    , DeleteReceiptFilterResponse
+    -- * Response Lenses
+    , drfrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'deleteReceiptFilter' smart constructor.
+newtype DeleteReceiptFilter = DeleteReceiptFilter'
+    { _drfFilterName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drfFilterName'
+deleteReceiptFilter
+    :: Text -- ^ 'drfFilterName'
+    -> DeleteReceiptFilter
+deleteReceiptFilter pFilterName_ =
+    DeleteReceiptFilter'
+    { _drfFilterName = pFilterName_
+    }
+
+-- | The name of the IP address filter to delete.
+drfFilterName :: Lens' DeleteReceiptFilter Text
+drfFilterName = lens _drfFilterName (\ s a -> s{_drfFilterName = a});
+
+instance AWSRequest DeleteReceiptFilter where
+        type Rs DeleteReceiptFilter =
+             DeleteReceiptFilterResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "DeleteReceiptFilterResult"
+              (\ s h x ->
+                 DeleteReceiptFilterResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteReceiptFilter where
+        toHeaders = const mempty
+
+instance ToPath DeleteReceiptFilter where
+        toPath = const "/"
+
+instance ToQuery DeleteReceiptFilter where
+        toQuery DeleteReceiptFilter'{..}
+          = mconcat
+              ["Action" =: ("DeleteReceiptFilter" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "FilterName" =: _drfFilterName]
+
+-- | /See:/ 'deleteReceiptFilterResponse' smart constructor.
+newtype DeleteReceiptFilterResponse = DeleteReceiptFilterResponse'
+    { _drfrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptFilterResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drfrsResponseStatus'
+deleteReceiptFilterResponse
+    :: Int -- ^ 'drfrsResponseStatus'
+    -> DeleteReceiptFilterResponse
+deleteReceiptFilterResponse pResponseStatus_ =
+    DeleteReceiptFilterResponse'
+    { _drfrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+drfrsResponseStatus :: Lens' DeleteReceiptFilterResponse Int
+drfrsResponseStatus = lens _drfrsResponseStatus (\ s a -> s{_drfrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DeleteReceiptRule.hs b/gen/Network/AWS/SES/DeleteReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DeleteReceiptRule.hs
@@ -0,0 +1,125 @@
+{-# 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.SES.DeleteReceiptRule
+-- 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)
+--
+-- Deletes the specified receipt rule.
+--
+-- For information about managing receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRule.html AWS API Reference> for DeleteReceiptRule.
+module Network.AWS.SES.DeleteReceiptRule
+    (
+    -- * Creating a Request
+      deleteReceiptRule
+    , DeleteReceiptRule
+    -- * Request Lenses
+    , delRuleSetName
+    , delRuleName
+
+    -- * Destructuring the Response
+    , deleteReceiptRuleResponse
+    , DeleteReceiptRuleResponse
+    -- * Response Lenses
+    , drsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'deleteReceiptRule' smart constructor.
+data DeleteReceiptRule = DeleteReceiptRule'
+    { _delRuleSetName :: !Text
+    , _delRuleName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'delRuleSetName'
+--
+-- * 'delRuleName'
+deleteReceiptRule
+    :: Text -- ^ 'delRuleSetName'
+    -> Text -- ^ 'delRuleName'
+    -> DeleteReceiptRule
+deleteReceiptRule pRuleSetName_ pRuleName_ =
+    DeleteReceiptRule'
+    { _delRuleSetName = pRuleSetName_
+    , _delRuleName = pRuleName_
+    }
+
+-- | The name of the receipt rule set that contains the receipt rule to
+-- delete.
+delRuleSetName :: Lens' DeleteReceiptRule Text
+delRuleSetName = lens _delRuleSetName (\ s a -> s{_delRuleSetName = a});
+
+-- | The name of the receipt rule to delete.
+delRuleName :: Lens' DeleteReceiptRule Text
+delRuleName = lens _delRuleName (\ s a -> s{_delRuleName = a});
+
+instance AWSRequest DeleteReceiptRule where
+        type Rs DeleteReceiptRule = DeleteReceiptRuleResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "DeleteReceiptRuleResult"
+              (\ s h x ->
+                 DeleteReceiptRuleResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders DeleteReceiptRule where
+        toHeaders = const mempty
+
+instance ToPath DeleteReceiptRule where
+        toPath = const "/"
+
+instance ToQuery DeleteReceiptRule where
+        toQuery DeleteReceiptRule'{..}
+          = mconcat
+              ["Action" =: ("DeleteReceiptRule" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _delRuleSetName,
+               "RuleName" =: _delRuleName]
+
+-- | /See:/ 'deleteReceiptRuleResponse' smart constructor.
+newtype DeleteReceiptRuleResponse = DeleteReceiptRuleResponse'
+    { _drsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptRuleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drsResponseStatus'
+deleteReceiptRuleResponse
+    :: Int -- ^ 'drsResponseStatus'
+    -> DeleteReceiptRuleResponse
+deleteReceiptRuleResponse pResponseStatus_ =
+    DeleteReceiptRuleResponse'
+    { _drsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+drsResponseStatus :: Lens' DeleteReceiptRuleResponse Int
+drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs b/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs
@@ -0,0 +1,118 @@
+{-# 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.SES.DeleteReceiptRuleSet
+-- 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)
+--
+-- Deletes the specified receipt rule set and all of the receipt rules it
+-- contains.
+--
+-- The currently active rule set cannot be deleted.
+--
+-- For information about managing receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DeleteReceiptRuleSet.html AWS API Reference> for DeleteReceiptRuleSet.
+module Network.AWS.SES.DeleteReceiptRuleSet
+    (
+    -- * Creating a Request
+      deleteReceiptRuleSet
+    , DeleteReceiptRuleSet
+    -- * Request Lenses
+    , dRuleSetName
+
+    -- * Destructuring the Response
+    , deleteReceiptRuleSetResponse
+    , DeleteReceiptRuleSetResponse
+    -- * Response Lenses
+    , drrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'deleteReceiptRuleSet' smart constructor.
+newtype DeleteReceiptRuleSet = DeleteReceiptRuleSet'
+    { _dRuleSetName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dRuleSetName'
+deleteReceiptRuleSet
+    :: Text -- ^ 'dRuleSetName'
+    -> DeleteReceiptRuleSet
+deleteReceiptRuleSet pRuleSetName_ =
+    DeleteReceiptRuleSet'
+    { _dRuleSetName = pRuleSetName_
+    }
+
+-- | The name of the receipt rule set to delete.
+dRuleSetName :: Lens' DeleteReceiptRuleSet Text
+dRuleSetName = lens _dRuleSetName (\ s a -> s{_dRuleSetName = a});
+
+instance AWSRequest DeleteReceiptRuleSet where
+        type Rs DeleteReceiptRuleSet =
+             DeleteReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "DeleteReceiptRuleSetResult"
+              (\ s h x ->
+                 DeleteReceiptRuleSetResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders DeleteReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath DeleteReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery DeleteReceiptRuleSet where
+        toQuery DeleteReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =: ("DeleteReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _dRuleSetName]
+
+-- | /See:/ 'deleteReceiptRuleSetResponse' smart constructor.
+newtype DeleteReceiptRuleSetResponse = DeleteReceiptRuleSetResponse'
+    { _drrsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DeleteReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrsrsResponseStatus'
+deleteReceiptRuleSetResponse
+    :: Int -- ^ 'drrsrsResponseStatus'
+    -> DeleteReceiptRuleSetResponse
+deleteReceiptRuleSetResponse pResponseStatus_ =
+    DeleteReceiptRuleSetResponse'
+    { _drrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+drrsrsResponseStatus :: Lens' DeleteReceiptRuleSetResponse Int
+drrsrsResponseStatus = lens _drrsrsResponseStatus (\ s a -> s{_drrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs b/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs
@@ -0,0 +1,129 @@
+{-# 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.SES.DescribeActiveReceiptRuleSet
+-- 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)
+--
+-- Returns the metadata and receipt rules for the receipt rule set that is
+-- currently active.
+--
+-- For information about setting up receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeActiveReceiptRuleSet.html AWS API Reference> for DescribeActiveReceiptRuleSet.
+module Network.AWS.SES.DescribeActiveReceiptRuleSet
+    (
+    -- * Creating a Request
+      describeActiveReceiptRuleSet
+    , DescribeActiveReceiptRuleSet
+
+    -- * Destructuring the Response
+    , describeActiveReceiptRuleSetResponse
+    , DescribeActiveReceiptRuleSetResponse
+    -- * Response Lenses
+    , darrsrsRules
+    , darrsrsMetadata
+    , darrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'describeActiveReceiptRuleSet' smart constructor.
+data DescribeActiveReceiptRuleSet =
+    DescribeActiveReceiptRuleSet'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeActiveReceiptRuleSet' with the minimum fields required to make a request.
+--
+describeActiveReceiptRuleSet
+    :: DescribeActiveReceiptRuleSet
+describeActiveReceiptRuleSet = DescribeActiveReceiptRuleSet'
+
+instance AWSRequest DescribeActiveReceiptRuleSet
+         where
+        type Rs DescribeActiveReceiptRuleSet =
+             DescribeActiveReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper
+              "DescribeActiveReceiptRuleSetResult"
+              (\ s h x ->
+                 DescribeActiveReceiptRuleSetResponse' <$>
+                   (x .@? "Rules" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "Metadata")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeActiveReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath DescribeActiveReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery DescribeActiveReceiptRuleSet where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =:
+                    ("DescribeActiveReceiptRuleSet" :: ByteString),
+                  "Version" =: ("2010-12-01" :: ByteString)])
+
+-- | /See:/ 'describeActiveReceiptRuleSetResponse' smart constructor.
+data DescribeActiveReceiptRuleSetResponse = DescribeActiveReceiptRuleSetResponse'
+    { _darrsrsRules          :: !(Maybe [ReceiptRule])
+    , _darrsrsMetadata       :: !(Maybe ReceiptRuleSetMetadata)
+    , _darrsrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeActiveReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'darrsrsRules'
+--
+-- * 'darrsrsMetadata'
+--
+-- * 'darrsrsResponseStatus'
+describeActiveReceiptRuleSetResponse
+    :: Int -- ^ 'darrsrsResponseStatus'
+    -> DescribeActiveReceiptRuleSetResponse
+describeActiveReceiptRuleSetResponse pResponseStatus_ =
+    DescribeActiveReceiptRuleSetResponse'
+    { _darrsrsRules = Nothing
+    , _darrsrsMetadata = Nothing
+    , _darrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The receipt rules that belong to the active rule set.
+darrsrsRules :: Lens' DescribeActiveReceiptRuleSetResponse [ReceiptRule]
+darrsrsRules = lens _darrsrsRules (\ s a -> s{_darrsrsRules = a}) . _Default . _Coerce;
+
+-- | The metadata for the currently active receipt rule set. The metadata
+-- consists of the rule set name and a timestamp of when the rule set was
+-- created.
+darrsrsMetadata :: Lens' DescribeActiveReceiptRuleSetResponse (Maybe ReceiptRuleSetMetadata)
+darrsrsMetadata = lens _darrsrsMetadata (\ s a -> s{_darrsrsMetadata = a});
+
+-- | The response status code.
+darrsrsResponseStatus :: Lens' DescribeActiveReceiptRuleSetResponse Int
+darrsrsResponseStatus = lens _darrsrsResponseStatus (\ s a -> s{_darrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DescribeReceiptRule.hs b/gen/Network/AWS/SES/DescribeReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DescribeReceiptRule.hs
@@ -0,0 +1,137 @@
+{-# 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.SES.DescribeReceiptRule
+-- 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)
+--
+-- Returns the details of the specified receipt rule.
+--
+-- For information about setting up receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRule.html AWS API Reference> for DescribeReceiptRule.
+module Network.AWS.SES.DescribeReceiptRule
+    (
+    -- * Creating a Request
+      describeReceiptRule
+    , DescribeReceiptRule
+    -- * Request Lenses
+    , drrRuleSetName
+    , drrRuleName
+
+    -- * Destructuring the Response
+    , describeReceiptRuleResponse
+    , DescribeReceiptRuleResponse
+    -- * Response Lenses
+    , drrrsRule
+    , drrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'describeReceiptRule' smart constructor.
+data DescribeReceiptRule = DescribeReceiptRule'
+    { _drrRuleSetName :: !Text
+    , _drrRuleName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReceiptRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrRuleSetName'
+--
+-- * 'drrRuleName'
+describeReceiptRule
+    :: Text -- ^ 'drrRuleSetName'
+    -> Text -- ^ 'drrRuleName'
+    -> DescribeReceiptRule
+describeReceiptRule pRuleSetName_ pRuleName_ =
+    DescribeReceiptRule'
+    { _drrRuleSetName = pRuleSetName_
+    , _drrRuleName = pRuleName_
+    }
+
+-- | The name of the receipt rule set to which the receipt rule belongs.
+drrRuleSetName :: Lens' DescribeReceiptRule Text
+drrRuleSetName = lens _drrRuleSetName (\ s a -> s{_drrRuleSetName = a});
+
+-- | The name of the receipt rule.
+drrRuleName :: Lens' DescribeReceiptRule Text
+drrRuleName = lens _drrRuleName (\ s a -> s{_drrRuleName = a});
+
+instance AWSRequest DescribeReceiptRule where
+        type Rs DescribeReceiptRule =
+             DescribeReceiptRuleResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "DescribeReceiptRuleResult"
+              (\ s h x ->
+                 DescribeReceiptRuleResponse' <$>
+                   (x .@? "Rule") <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeReceiptRule where
+        toHeaders = const mempty
+
+instance ToPath DescribeReceiptRule where
+        toPath = const "/"
+
+instance ToQuery DescribeReceiptRule where
+        toQuery DescribeReceiptRule'{..}
+          = mconcat
+              ["Action" =: ("DescribeReceiptRule" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _drrRuleSetName,
+               "RuleName" =: _drrRuleName]
+
+-- | /See:/ 'describeReceiptRuleResponse' smart constructor.
+data DescribeReceiptRuleResponse = DescribeReceiptRuleResponse'
+    { _drrrsRule           :: !(Maybe ReceiptRule)
+    , _drrrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReceiptRuleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrrsRule'
+--
+-- * 'drrrsResponseStatus'
+describeReceiptRuleResponse
+    :: Int -- ^ 'drrrsResponseStatus'
+    -> DescribeReceiptRuleResponse
+describeReceiptRuleResponse pResponseStatus_ =
+    DescribeReceiptRuleResponse'
+    { _drrrsRule = Nothing
+    , _drrrsResponseStatus = pResponseStatus_
+    }
+
+-- | A data structure that contains the specified receipt rule\'s name,
+-- actions, recipients, domains, enabled status, scan status, and Transport
+-- Layer Security (TLS) policy.
+drrrsRule :: Lens' DescribeReceiptRuleResponse (Maybe ReceiptRule)
+drrrsRule = lens _drrrsRule (\ s a -> s{_drrrsRule = a});
+
+-- | The response status code.
+drrrsResponseStatus :: Lens' DescribeReceiptRuleResponse Int
+drrrsResponseStatus = lens _drrrsResponseStatus (\ s a -> s{_drrrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs b/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs
@@ -0,0 +1,139 @@
+{-# 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.SES.DescribeReceiptRuleSet
+-- 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)
+--
+-- Returns the details of the specified receipt rule set.
+--
+-- For information about managing receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_DescribeReceiptRuleSet.html AWS API Reference> for DescribeReceiptRuleSet.
+module Network.AWS.SES.DescribeReceiptRuleSet
+    (
+    -- * Creating a Request
+      describeReceiptRuleSet
+    , DescribeReceiptRuleSet
+    -- * Request Lenses
+    , drrsRuleSetName
+
+    -- * Destructuring the Response
+    , describeReceiptRuleSetResponse
+    , DescribeReceiptRuleSetResponse
+    -- * Response Lenses
+    , desrsRules
+    , desrsMetadata
+    , desrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'describeReceiptRuleSet' smart constructor.
+newtype DescribeReceiptRuleSet = DescribeReceiptRuleSet'
+    { _drrsRuleSetName :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drrsRuleSetName'
+describeReceiptRuleSet
+    :: Text -- ^ 'drrsRuleSetName'
+    -> DescribeReceiptRuleSet
+describeReceiptRuleSet pRuleSetName_ =
+    DescribeReceiptRuleSet'
+    { _drrsRuleSetName = pRuleSetName_
+    }
+
+-- | The name of the receipt rule set to describe.
+drrsRuleSetName :: Lens' DescribeReceiptRuleSet Text
+drrsRuleSetName = lens _drrsRuleSetName (\ s a -> s{_drrsRuleSetName = a});
+
+instance AWSRequest DescribeReceiptRuleSet where
+        type Rs DescribeReceiptRuleSet =
+             DescribeReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "DescribeReceiptRuleSetResult"
+              (\ s h x ->
+                 DescribeReceiptRuleSetResponse' <$>
+                   (x .@? "Rules" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "Metadata")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders DescribeReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath DescribeReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery DescribeReceiptRuleSet where
+        toQuery DescribeReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =:
+                 ("DescribeReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _drrsRuleSetName]
+
+-- | /See:/ 'describeReceiptRuleSetResponse' smart constructor.
+data DescribeReceiptRuleSetResponse = DescribeReceiptRuleSetResponse'
+    { _desrsRules          :: !(Maybe [ReceiptRule])
+    , _desrsMetadata       :: !(Maybe ReceiptRuleSetMetadata)
+    , _desrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'DescribeReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'desrsRules'
+--
+-- * 'desrsMetadata'
+--
+-- * 'desrsResponseStatus'
+describeReceiptRuleSetResponse
+    :: Int -- ^ 'desrsResponseStatus'
+    -> DescribeReceiptRuleSetResponse
+describeReceiptRuleSetResponse pResponseStatus_ =
+    DescribeReceiptRuleSetResponse'
+    { _desrsRules = Nothing
+    , _desrsMetadata = Nothing
+    , _desrsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of the receipt rules that belong to the specified receipt rule
+-- set.
+desrsRules :: Lens' DescribeReceiptRuleSetResponse [ReceiptRule]
+desrsRules = lens _desrsRules (\ s a -> s{_desrsRules = a}) . _Default . _Coerce;
+
+-- | The metadata for the receipt rule set, which consists of the rule set
+-- name and the timestamp of when the rule set was created.
+desrsMetadata :: Lens' DescribeReceiptRuleSetResponse (Maybe ReceiptRuleSetMetadata)
+desrsMetadata = lens _desrsMetadata (\ s a -> s{_desrsMetadata = a});
+
+-- | The response status code.
+desrsResponseStatus :: Lens' DescribeReceiptRuleSetResponse Int
+desrsResponseStatus = lens _desrsResponseStatus (\ s a -> s{_desrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/ListReceiptFilters.hs b/gen/Network/AWS/SES/ListReceiptFilters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/ListReceiptFilters.hs
@@ -0,0 +1,114 @@
+{-# 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.SES.ListReceiptFilters
+-- 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)
+--
+-- Lists the IP address filters associated with your account.
+--
+-- For information about managing IP address filters, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptFilters.html AWS API Reference> for ListReceiptFilters.
+module Network.AWS.SES.ListReceiptFilters
+    (
+    -- * Creating a Request
+      listReceiptFilters
+    , ListReceiptFilters
+
+    -- * Destructuring the Response
+    , listReceiptFiltersResponse
+    , ListReceiptFiltersResponse
+    -- * Response Lenses
+    , lrfrsFilters
+    , lrfrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'listReceiptFilters' smart constructor.
+data ListReceiptFilters =
+    ListReceiptFilters'
+    deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListReceiptFilters' with the minimum fields required to make a request.
+--
+listReceiptFilters
+    :: ListReceiptFilters
+listReceiptFilters = ListReceiptFilters'
+
+instance AWSRequest ListReceiptFilters where
+        type Rs ListReceiptFilters =
+             ListReceiptFiltersResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "ListReceiptFiltersResult"
+              (\ s h x ->
+                 ListReceiptFiltersResponse' <$>
+                   (x .@? "Filters" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListReceiptFilters where
+        toHeaders = const mempty
+
+instance ToPath ListReceiptFilters where
+        toPath = const "/"
+
+instance ToQuery ListReceiptFilters where
+        toQuery
+          = const
+              (mconcat
+                 ["Action" =: ("ListReceiptFilters" :: ByteString),
+                  "Version" =: ("2010-12-01" :: ByteString)])
+
+-- | /See:/ 'listReceiptFiltersResponse' smart constructor.
+data ListReceiptFiltersResponse = ListReceiptFiltersResponse'
+    { _lrfrsFilters        :: !(Maybe [ReceiptFilter])
+    , _lrfrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListReceiptFiltersResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrfrsFilters'
+--
+-- * 'lrfrsResponseStatus'
+listReceiptFiltersResponse
+    :: Int -- ^ 'lrfrsResponseStatus'
+    -> ListReceiptFiltersResponse
+listReceiptFiltersResponse pResponseStatus_ =
+    ListReceiptFiltersResponse'
+    { _lrfrsFilters = Nothing
+    , _lrfrsResponseStatus = pResponseStatus_
+    }
+
+-- | A list of IP address filter data structures, which each consist of a
+-- name, an IP address range, and whether to allow or block mail from it.
+lrfrsFilters :: Lens' ListReceiptFiltersResponse [ReceiptFilter]
+lrfrsFilters = lens _lrfrsFilters (\ s a -> s{_lrfrsFilters = a}) . _Default . _Coerce;
+
+-- | The response status code.
+lrfrsResponseStatus :: Lens' ListReceiptFiltersResponse Int
+lrfrsResponseStatus = lens _lrfrsResponseStatus (\ s a -> s{_lrfrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/ListReceiptRuleSets.hs b/gen/Network/AWS/SES/ListReceiptRuleSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/ListReceiptRuleSets.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.ListReceiptRuleSets
+-- 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)
+--
+-- Lists the receipt rule sets that exist under your AWS account. If there
+-- are additional receipt rule sets to be retrieved, you will receive a
+-- 'NextToken' that you can provide to the next call to
+-- 'ListReceiptRuleSets' to retrieve the additional entries.
+--
+-- For information about managing receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ListReceiptRuleSets.html AWS API Reference> for ListReceiptRuleSets.
+module Network.AWS.SES.ListReceiptRuleSets
+    (
+    -- * Creating a Request
+      listReceiptRuleSets
+    , ListReceiptRuleSets
+    -- * Request Lenses
+    , lrrsNextToken
+
+    -- * Destructuring the Response
+    , listReceiptRuleSetsResponse
+    , ListReceiptRuleSetsResponse
+    -- * Response Lenses
+    , lrrsrsRuleSets
+    , lrrsrsNextToken
+    , lrrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'listReceiptRuleSets' smart constructor.
+newtype ListReceiptRuleSets = ListReceiptRuleSets'
+    { _lrrsNextToken :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListReceiptRuleSets' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrrsNextToken'
+listReceiptRuleSets
+    :: ListReceiptRuleSets
+listReceiptRuleSets =
+    ListReceiptRuleSets'
+    { _lrrsNextToken = Nothing
+    }
+
+-- | A token returned from a previous call to 'ListReceiptRuleSets' to
+-- indicate the position in the receipt rule set list.
+lrrsNextToken :: Lens' ListReceiptRuleSets (Maybe Text)
+lrrsNextToken = lens _lrrsNextToken (\ s a -> s{_lrrsNextToken = a});
+
+instance AWSRequest ListReceiptRuleSets where
+        type Rs ListReceiptRuleSets =
+             ListReceiptRuleSetsResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "ListReceiptRuleSetsResult"
+              (\ s h x ->
+                 ListReceiptRuleSetsResponse' <$>
+                   (x .@? "RuleSets" .!@ mempty >>=
+                      may (parseXMLList "member"))
+                     <*> (x .@? "NextToken")
+                     <*> (pure (fromEnum s)))
+
+instance ToHeaders ListReceiptRuleSets where
+        toHeaders = const mempty
+
+instance ToPath ListReceiptRuleSets where
+        toPath = const "/"
+
+instance ToQuery ListReceiptRuleSets where
+        toQuery ListReceiptRuleSets'{..}
+          = mconcat
+              ["Action" =: ("ListReceiptRuleSets" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "NextToken" =: _lrrsNextToken]
+
+-- | /See:/ 'listReceiptRuleSetsResponse' smart constructor.
+data ListReceiptRuleSetsResponse = ListReceiptRuleSetsResponse'
+    { _lrrsrsRuleSets       :: !(Maybe [ReceiptRuleSetMetadata])
+    , _lrrsrsNextToken      :: !(Maybe Text)
+    , _lrrsrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ListReceiptRuleSetsResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'lrrsrsRuleSets'
+--
+-- * 'lrrsrsNextToken'
+--
+-- * 'lrrsrsResponseStatus'
+listReceiptRuleSetsResponse
+    :: Int -- ^ 'lrrsrsResponseStatus'
+    -> ListReceiptRuleSetsResponse
+listReceiptRuleSetsResponse pResponseStatus_ =
+    ListReceiptRuleSetsResponse'
+    { _lrrsrsRuleSets = Nothing
+    , _lrrsrsNextToken = Nothing
+    , _lrrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The metadata for the currently active receipt rule set. The metadata
+-- consists of the rule set name and the timestamp of when the rule set was
+-- created.
+lrrsrsRuleSets :: Lens' ListReceiptRuleSetsResponse [ReceiptRuleSetMetadata]
+lrrsrsRuleSets = lens _lrrsrsRuleSets (\ s a -> s{_lrrsrsRuleSets = a}) . _Default . _Coerce;
+
+-- | A token indicating that there are additional receipt rule sets available
+-- to be listed. Pass this token to successive calls of
+-- 'ListReceiptRuleSets' to retrieve up to 100 receipt rule sets at a time.
+lrrsrsNextToken :: Lens' ListReceiptRuleSetsResponse (Maybe Text)
+lrrsrsNextToken = lens _lrrsrsNextToken (\ s a -> s{_lrrsrsNextToken = a});
+
+-- | The response status code.
+lrrsrsResponseStatus :: Lens' ListReceiptRuleSetsResponse Int
+lrrsrsResponseStatus = lens _lrrsrsResponseStatus (\ s a -> s{_lrrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs b/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs
@@ -0,0 +1,130 @@
+{-# 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.SES.ReorderReceiptRuleSet
+-- 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)
+--
+-- Reorders the receipt rules within a receipt rule set.
+--
+-- All of the rules in the rule set must be represented in this request.
+-- That is, this API will return an error if the reorder request doesn’t
+-- explicitly position all of the rules.
+--
+-- For information about managing receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_ReorderReceiptRuleSet.html AWS API Reference> for ReorderReceiptRuleSet.
+module Network.AWS.SES.ReorderReceiptRuleSet
+    (
+    -- * Creating a Request
+      reorderReceiptRuleSet
+    , ReorderReceiptRuleSet
+    -- * Request Lenses
+    , rrrsRuleSetName
+    , rrrsRuleNames
+
+    -- * Destructuring the Response
+    , reorderReceiptRuleSetResponse
+    , ReorderReceiptRuleSetResponse
+    -- * Response Lenses
+    , rrrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'reorderReceiptRuleSet' smart constructor.
+data ReorderReceiptRuleSet = ReorderReceiptRuleSet'
+    { _rrrsRuleSetName :: !Text
+    , _rrrsRuleNames   :: ![Text]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReorderReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrrsRuleSetName'
+--
+-- * 'rrrsRuleNames'
+reorderReceiptRuleSet
+    :: Text -- ^ 'rrrsRuleSetName'
+    -> ReorderReceiptRuleSet
+reorderReceiptRuleSet pRuleSetName_ =
+    ReorderReceiptRuleSet'
+    { _rrrsRuleSetName = pRuleSetName_
+    , _rrrsRuleNames = mempty
+    }
+
+-- | The name of the receipt rule set to reorder.
+rrrsRuleSetName :: Lens' ReorderReceiptRuleSet Text
+rrrsRuleSetName = lens _rrrsRuleSetName (\ s a -> s{_rrrsRuleSetName = a});
+
+-- | A list of the specified receipt rule set\'s receipt rules in the order
+-- that you want to put them.
+rrrsRuleNames :: Lens' ReorderReceiptRuleSet [Text]
+rrrsRuleNames = lens _rrrsRuleNames (\ s a -> s{_rrrsRuleNames = a}) . _Coerce;
+
+instance AWSRequest ReorderReceiptRuleSet where
+        type Rs ReorderReceiptRuleSet =
+             ReorderReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "ReorderReceiptRuleSetResult"
+              (\ s h x ->
+                 ReorderReceiptRuleSetResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders ReorderReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath ReorderReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery ReorderReceiptRuleSet where
+        toQuery ReorderReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =: ("ReorderReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _rrrsRuleSetName,
+               "RuleNames" =: toQueryList "member" _rrrsRuleNames]
+
+-- | /See:/ 'reorderReceiptRuleSetResponse' smart constructor.
+newtype ReorderReceiptRuleSetResponse = ReorderReceiptRuleSetResponse'
+    { _rrrsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReorderReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrrsrsResponseStatus'
+reorderReceiptRuleSetResponse
+    :: Int -- ^ 'rrrsrsResponseStatus'
+    -> ReorderReceiptRuleSetResponse
+reorderReceiptRuleSetResponse pResponseStatus_ =
+    ReorderReceiptRuleSetResponse'
+    { _rrrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+rrrsrsResponseStatus :: Lens' ReorderReceiptRuleSetResponse Int
+rrrsrsResponseStatus = lens _rrrsrsResponseStatus (\ s a -> s{_rrrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/SendBounce.hs b/gen/Network/AWS/SES/SendBounce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/SendBounce.hs
@@ -0,0 +1,195 @@
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Network.AWS.SES.SendBounce
+-- 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)
+--
+-- Generates and sends a bounce message to the sender of an email you
+-- received through Amazon SES. You can only use this API on an email up to
+-- 24 hours after you receive it.
+--
+-- You cannot use this API to send generic bounces for mail that was not
+-- received by Amazon SES.
+--
+-- For information about receiving email through Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SendBounce.html AWS API Reference> for SendBounce.
+module Network.AWS.SES.SendBounce
+    (
+    -- * Creating a Request
+      sendBounce
+    , SendBounce
+    -- * Request Lenses
+    , sbMessageDsn
+    , sbExplanation
+    , sbBounceSenderARN
+    , sbOriginalMessageId
+    , sbBounceSender
+    , sbBouncedRecipientInfoList
+
+    -- * Destructuring the Response
+    , sendBounceResponse
+    , SendBounceResponse
+    -- * Response Lenses
+    , sbrsMessageId
+    , sbrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | Request object for sending a simple\/complex bounce. It contains all of
+-- the information needed to generate a basic DSN or a fully-customized
+-- DSN.
+--
+-- /See:/ 'sendBounce' smart constructor.
+data SendBounce = SendBounce'
+    { _sbMessageDsn               :: !(Maybe MessageDsn)
+    , _sbExplanation              :: !(Maybe Text)
+    , _sbBounceSenderARN          :: !(Maybe Text)
+    , _sbOriginalMessageId        :: !Text
+    , _sbBounceSender             :: !Text
+    , _sbBouncedRecipientInfoList :: ![BouncedRecipientInfo]
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SendBounce' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sbMessageDsn'
+--
+-- * 'sbExplanation'
+--
+-- * 'sbBounceSenderARN'
+--
+-- * 'sbOriginalMessageId'
+--
+-- * 'sbBounceSender'
+--
+-- * 'sbBouncedRecipientInfoList'
+sendBounce
+    :: Text -- ^ 'sbOriginalMessageId'
+    -> Text -- ^ 'sbBounceSender'
+    -> SendBounce
+sendBounce pOriginalMessageId_ pBounceSender_ =
+    SendBounce'
+    { _sbMessageDsn = Nothing
+    , _sbExplanation = Nothing
+    , _sbBounceSenderARN = Nothing
+    , _sbOriginalMessageId = pOriginalMessageId_
+    , _sbBounceSender = pBounceSender_
+    , _sbBouncedRecipientInfoList = mempty
+    }
+
+-- | Message-related DSN fields. If not specified, Amazon SES will choose the
+-- values.
+sbMessageDsn :: Lens' SendBounce (Maybe MessageDsn)
+sbMessageDsn = lens _sbMessageDsn (\ s a -> s{_sbMessageDsn = a});
+
+-- | Human-readable text for the bounce message to explain the failure. If
+-- not specified, the text will be auto-generated based on the bounced
+-- recipient information.
+sbExplanation :: Lens' SendBounce (Maybe Text)
+sbExplanation = lens _sbExplanation (\ s a -> s{_sbExplanation = a});
+
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to use the address in the \"From\" header of the
+-- bounce. For more information about sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sbBounceSenderARN :: Lens' SendBounce (Maybe Text)
+sbBounceSenderARN = lens _sbBounceSenderARN (\ s a -> s{_sbBounceSenderARN = a});
+
+-- | The message ID of the message to be bounced.
+sbOriginalMessageId :: Lens' SendBounce Text
+sbOriginalMessageId = lens _sbOriginalMessageId (\ s a -> s{_sbOriginalMessageId = a});
+
+-- | The address to use in the \"From\" header of the bounce message. This
+-- must be an identity that you have verified with Amazon SES.
+sbBounceSender :: Lens' SendBounce Text
+sbBounceSender = lens _sbBounceSender (\ s a -> s{_sbBounceSender = a});
+
+-- | A list of recipients of the bounced message, including the information
+-- required to create the Delivery Status Notifications (DSNs) for the
+-- recipients. You must specify at least one 'BouncedRecipientInfo' in the
+-- list.
+sbBouncedRecipientInfoList :: Lens' SendBounce [BouncedRecipientInfo]
+sbBouncedRecipientInfoList = lens _sbBouncedRecipientInfoList (\ s a -> s{_sbBouncedRecipientInfoList = a}) . _Coerce;
+
+instance AWSRequest SendBounce where
+        type Rs SendBounce = SendBounceResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "SendBounceResult"
+              (\ s h x ->
+                 SendBounceResponse' <$>
+                   (x .@? "MessageId") <*> (pure (fromEnum s)))
+
+instance ToHeaders SendBounce where
+        toHeaders = const mempty
+
+instance ToPath SendBounce where
+        toPath = const "/"
+
+instance ToQuery SendBounce where
+        toQuery SendBounce'{..}
+          = mconcat
+              ["Action" =: ("SendBounce" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "MessageDsn" =: _sbMessageDsn,
+               "Explanation" =: _sbExplanation,
+               "BounceSenderArn" =: _sbBounceSenderARN,
+               "OriginalMessageId" =: _sbOriginalMessageId,
+               "BounceSender" =: _sbBounceSender,
+               "BouncedRecipientInfoList" =:
+                 toQueryList "member" _sbBouncedRecipientInfoList]
+
+-- | /See:/ 'sendBounceResponse' smart constructor.
+data SendBounceResponse = SendBounceResponse'
+    { _sbrsMessageId      :: !(Maybe Text)
+    , _sbrsResponseStatus :: !Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SendBounceResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sbrsMessageId'
+--
+-- * 'sbrsResponseStatus'
+sendBounceResponse
+    :: Int -- ^ 'sbrsResponseStatus'
+    -> SendBounceResponse
+sendBounceResponse pResponseStatus_ =
+    SendBounceResponse'
+    { _sbrsMessageId = Nothing
+    , _sbrsResponseStatus = pResponseStatus_
+    }
+
+-- | The message ID of the bounce message.
+sbrsMessageId :: Lens' SendBounceResponse (Maybe Text)
+sbrsMessageId = lens _sbrsMessageId (\ s a -> s{_sbrsMessageId = a});
+
+-- | The response status code.
+sbrsResponseStatus :: Lens' SendBounceResponse Int
+sbrsResponseStatus = lens _sbrsResponseStatus (\ s a -> s{_sbrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs b/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs
@@ -0,0 +1,119 @@
+{-# 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.SES.SetActiveReceiptRuleSet
+-- 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)
+--
+-- Sets the specified receipt rule set as the active receipt rule set.
+--
+-- To disable your email-receiving through Amazon SES completely, you can
+-- call this API with RuleSetName set to null.
+--
+-- For information about managing receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetActiveReceiptRuleSet.html AWS API Reference> for SetActiveReceiptRuleSet.
+module Network.AWS.SES.SetActiveReceiptRuleSet
+    (
+    -- * Creating a Request
+      setActiveReceiptRuleSet
+    , SetActiveReceiptRuleSet
+    -- * Request Lenses
+    , sarrsRuleSetName
+
+    -- * Destructuring the Response
+    , setActiveReceiptRuleSetResponse
+    , SetActiveReceiptRuleSetResponse
+    -- * Response Lenses
+    , sarrsrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'setActiveReceiptRuleSet' smart constructor.
+newtype SetActiveReceiptRuleSet = SetActiveReceiptRuleSet'
+    { _sarrsRuleSetName :: Maybe Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetActiveReceiptRuleSet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sarrsRuleSetName'
+setActiveReceiptRuleSet
+    :: SetActiveReceiptRuleSet
+setActiveReceiptRuleSet =
+    SetActiveReceiptRuleSet'
+    { _sarrsRuleSetName = Nothing
+    }
+
+-- | The name of the receipt rule set to make active. Setting this value to
+-- null disables all email receiving.
+sarrsRuleSetName :: Lens' SetActiveReceiptRuleSet (Maybe Text)
+sarrsRuleSetName = lens _sarrsRuleSetName (\ s a -> s{_sarrsRuleSetName = a});
+
+instance AWSRequest SetActiveReceiptRuleSet where
+        type Rs SetActiveReceiptRuleSet =
+             SetActiveReceiptRuleSetResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "SetActiveReceiptRuleSetResult"
+              (\ s h x ->
+                 SetActiveReceiptRuleSetResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders SetActiveReceiptRuleSet where
+        toHeaders = const mempty
+
+instance ToPath SetActiveReceiptRuleSet where
+        toPath = const "/"
+
+instance ToQuery SetActiveReceiptRuleSet where
+        toQuery SetActiveReceiptRuleSet'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetActiveReceiptRuleSet" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _sarrsRuleSetName]
+
+-- | /See:/ 'setActiveReceiptRuleSetResponse' smart constructor.
+newtype SetActiveReceiptRuleSetResponse = SetActiveReceiptRuleSetResponse'
+    { _sarrsrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetActiveReceiptRuleSetResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sarrsrsResponseStatus'
+setActiveReceiptRuleSetResponse
+    :: Int -- ^ 'sarrsrsResponseStatus'
+    -> SetActiveReceiptRuleSetResponse
+setActiveReceiptRuleSetResponse pResponseStatus_ =
+    SetActiveReceiptRuleSetResponse'
+    { _sarrsrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+sarrsrsResponseStatus :: Lens' SetActiveReceiptRuleSetResponse Int
+sarrsrsResponseStatus = lens _sarrsrsResponseStatus (\ s a -> s{_sarrsrsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/SetReceiptRulePosition.hs b/gen/Network/AWS/SES/SetReceiptRulePosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/SetReceiptRulePosition.hs
@@ -0,0 +1,139 @@
+{-# 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.SES.SetReceiptRulePosition
+-- 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)
+--
+-- Sets the position of the specified receipt rule in the receipt rule set.
+--
+-- For information about managing receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_SetReceiptRulePosition.html AWS API Reference> for SetReceiptRulePosition.
+module Network.AWS.SES.SetReceiptRulePosition
+    (
+    -- * Creating a Request
+      setReceiptRulePosition
+    , SetReceiptRulePosition
+    -- * Request Lenses
+    , srrpAfter
+    , srrpRuleSetName
+    , srrpRuleName
+
+    -- * Destructuring the Response
+    , setReceiptRulePositionResponse
+    , SetReceiptRulePositionResponse
+    -- * Response Lenses
+    , srrprsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'setReceiptRulePosition' smart constructor.
+data SetReceiptRulePosition = SetReceiptRulePosition'
+    { _srrpAfter       :: !(Maybe Text)
+    , _srrpRuleSetName :: !Text
+    , _srrpRuleName    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetReceiptRulePosition' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srrpAfter'
+--
+-- * 'srrpRuleSetName'
+--
+-- * 'srrpRuleName'
+setReceiptRulePosition
+    :: Text -- ^ 'srrpRuleSetName'
+    -> Text -- ^ 'srrpRuleName'
+    -> SetReceiptRulePosition
+setReceiptRulePosition pRuleSetName_ pRuleName_ =
+    SetReceiptRulePosition'
+    { _srrpAfter = Nothing
+    , _srrpRuleSetName = pRuleSetName_
+    , _srrpRuleName = pRuleName_
+    }
+
+-- | The name of the receipt rule after which to place the specified receipt
+-- rule.
+srrpAfter :: Lens' SetReceiptRulePosition (Maybe Text)
+srrpAfter = lens _srrpAfter (\ s a -> s{_srrpAfter = a});
+
+-- | The name of the receipt rule set that contains the receipt rule to
+-- reposition.
+srrpRuleSetName :: Lens' SetReceiptRulePosition Text
+srrpRuleSetName = lens _srrpRuleSetName (\ s a -> s{_srrpRuleSetName = a});
+
+-- | The name of the receipt rule to reposition.
+srrpRuleName :: Lens' SetReceiptRulePosition Text
+srrpRuleName = lens _srrpRuleName (\ s a -> s{_srrpRuleName = a});
+
+instance AWSRequest SetReceiptRulePosition where
+        type Rs SetReceiptRulePosition =
+             SetReceiptRulePositionResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "SetReceiptRulePositionResult"
+              (\ s h x ->
+                 SetReceiptRulePositionResponse' <$>
+                   (pure (fromEnum s)))
+
+instance ToHeaders SetReceiptRulePosition where
+        toHeaders = const mempty
+
+instance ToPath SetReceiptRulePosition where
+        toPath = const "/"
+
+instance ToQuery SetReceiptRulePosition where
+        toQuery SetReceiptRulePosition'{..}
+          = mconcat
+              ["Action" =:
+                 ("SetReceiptRulePosition" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "After" =: _srrpAfter,
+               "RuleSetName" =: _srrpRuleSetName,
+               "RuleName" =: _srrpRuleName]
+
+-- | /See:/ 'setReceiptRulePositionResponse' smart constructor.
+newtype SetReceiptRulePositionResponse = SetReceiptRulePositionResponse'
+    { _srrprsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SetReceiptRulePositionResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'srrprsResponseStatus'
+setReceiptRulePositionResponse
+    :: Int -- ^ 'srrprsResponseStatus'
+    -> SetReceiptRulePositionResponse
+setReceiptRulePositionResponse pResponseStatus_ =
+    SetReceiptRulePositionResponse'
+    { _srrprsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+srrprsResponseStatus :: Lens' SetReceiptRulePositionResponse Int
+srrprsResponseStatus = lens _srrprsResponseStatus (\ s a -> s{_srrprsResponseStatus = a});
diff --git a/gen/Network/AWS/SES/Types.hs b/gen/Network/AWS/SES/Types.hs
--- a/gen/Network/AWS/SES/Types.hs
+++ b/gen/Network/AWS/SES/Types.hs
@@ -16,24 +16,73 @@
       sES
 
     -- * Errors
+    , _CannotDeleteException
+    , _RuleDoesNotExistException
     , _MessageRejected
+    , _RuleSetDoesNotExistException
+    , _InvalidLambdaFunctionException
     , _InvalidPolicyException
+    , _InvalidS3ConfigurationException
+    , _InvalidSNSTopicException
+    , _AlreadyExistsException
+    , _LimitExceededException
 
+    -- * BounceType
+    , BounceType (..)
+
+    -- * DsnAction
+    , DsnAction (..)
+
     -- * IdentityType
     , IdentityType (..)
 
+    -- * InvocationType
+    , InvocationType (..)
+
     -- * NotificationType
     , NotificationType (..)
 
+    -- * ReceiptFilterPolicy
+    , ReceiptFilterPolicy (..)
+
+    -- * StopScope
+    , StopScope (..)
+
+    -- * TLSPolicy
+    , TLSPolicy (..)
+
     -- * VerificationStatus
     , VerificationStatus (..)
 
+    -- * AddHeaderAction
+    , AddHeaderAction
+    , addHeaderAction
+    , ahaHeaderName
+    , ahaHeaderValue
+
     -- * Body
     , Body
     , body
     , bText
     , bHTML
 
+    -- * BounceAction
+    , BounceAction
+    , bounceAction
+    , baTopicARN
+    , baStatusCode
+    , baSmtpReplyCode
+    , baMessage
+    , baSender
+
+    -- * BouncedRecipientInfo
+    , BouncedRecipientInfo
+    , bouncedRecipientInfo
+    , briBounceType
+    , briRecipientDsnFields
+    , briRecipientARN
+    , briRecipient
+
     -- * Content
     , Content
     , content
@@ -47,6 +96,12 @@
     , dCCAddresses
     , dToAddresses
 
+    -- * ExtensionField
+    , ExtensionField
+    , extensionField
+    , efName
+    , efValue
+
     -- * IdentityDkimAttributes
     , IdentityDkimAttributes
     , identityDkimAttributes
@@ -68,17 +123,94 @@
     , ivaVerificationToken
     , ivaVerificationStatus
 
+    -- * LambdaAction
+    , LambdaAction
+    , lambdaAction
+    , laInvocationType
+    , laTopicARN
+    , laFunctionARN
+
     -- * Message
     , Message
     , message
     , mSubject
     , mBody
 
+    -- * MessageDsn
+    , MessageDsn
+    , messageDsn
+    , mdArrivalDate
+    , mdExtensionFields
+    , mdReportingMta
+
     -- * RawMessage
     , RawMessage
     , rawMessage
     , rmData
 
+    -- * ReceiptAction
+    , ReceiptAction
+    , receiptAction
+    , raAddHeaderAction
+    , raSNSAction
+    , raWorkmailAction
+    , raBounceAction
+    , raLambdaAction
+    , raStopAction
+    , raS3Action
+
+    -- * ReceiptFilter
+    , ReceiptFilter
+    , receiptFilter
+    , rfName
+    , rfIPFilter
+
+    -- * ReceiptIPFilter
+    , ReceiptIPFilter
+    , receiptIPFilter
+    , rifPolicy
+    , rifCIdR
+
+    -- * ReceiptRule
+    , ReceiptRule
+    , receiptRule
+    , rrScanEnabled
+    , rrEnabled
+    , rrActions
+    , rrRecipients
+    , rrTLSPolicy
+    , rrName
+
+    -- * ReceiptRuleSetMetadata
+    , ReceiptRuleSetMetadata
+    , receiptRuleSetMetadata
+    , rrsmName
+    , rrsmCreatedTimestamp
+
+    -- * RecipientDsnFields
+    , RecipientDsnFields
+    , recipientDsnFields
+    , rdfDiagnosticCode
+    , rdfRemoteMta
+    , rdfFinalRecipient
+    , rdfExtensionFields
+    , rdfLastAttemptDate
+    , rdfAction
+    , rdfStatus
+
+    -- * S3Action
+    , S3Action
+    , s3Action
+    , s3KMSKeyARN
+    , s3TopicARN
+    , s3ObjectKeyPrefix
+    , s3BucketName
+
+    -- * SNSAction
+    , SNSAction
+    , snsAction
+    , saTopicARN
+
     -- * SendDataPoint
     , SendDataPoint
     , sendDataPoint
@@ -87,6 +219,18 @@
     , sdpDeliveryAttempts
     , sdpBounces
     , sdpTimestamp
+
+    -- * StopAction
+    , StopAction
+    , stopAction
+    , sTopicARN
+    , sScope
+
+    -- * WorkmailAction
+    , WorkmailAction
+    , workmailAction
+    , waTopicARN
+    , waOrganizationARN
     ) where
 
 import           Network.AWS.Prelude
@@ -125,13 +269,64 @@
       | has (hasStatus 509) e = Just "limit_exceeded"
       | otherwise = Nothing
 
+-- | Indicates that the delete operation could not be completed.
+_CannotDeleteException :: AsError a => Getting (First ServiceError) a ServiceError
+_CannotDeleteException = _ServiceError . hasStatus 400 . hasCode "CannotDelete"
+
+-- | Indicates that the provided receipt rule does not exist.
+_RuleDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
+_RuleDoesNotExistException =
+    _ServiceError . hasStatus 400 . hasCode "RuleDoesNotExist"
+
 -- | Indicates that the action failed, and the message could not be sent.
 -- Check the error stack for more information about what caused the error.
 _MessageRejected :: AsError a => Getting (First ServiceError) a ServiceError
 _MessageRejected = _ServiceError . hasStatus 400 . hasCode "MessageRejected"
 
+-- | Indicates that the provided receipt rule set does not exist.
+_RuleSetDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
+_RuleSetDoesNotExistException =
+    _ServiceError . hasStatus 400 . hasCode "RuleSetDoesNotExist"
+
+-- | Indicates that the provided AWS Lambda function is invalid, or that
+-- Amazon SES could not execute the provided function, possibly due to
+-- permissions issues. For information about giving permissions, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidLambdaFunctionException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidLambdaFunctionException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidLambdaFunction"
+
 -- | Indicates that the provided policy is invalid. Check the error stack for
 -- more information about what caused the error.
 _InvalidPolicyException :: AsError a => Getting (First ServiceError) a ServiceError
 _InvalidPolicyException =
     _ServiceError . hasStatus 400 . hasCode "InvalidPolicy"
+
+-- | Indicates that the provided Amazon S3 bucket or AWS KMS encryption key
+-- is invalid, or that Amazon SES could not publish to the bucket, possibly
+-- due to permissions issues. For information about giving permissions, see
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidS3ConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidS3ConfigurationException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidS3Configuration"
+
+-- | Indicates that the provided Amazon SNS topic is invalid, or that Amazon
+-- SES could not publish to the topic, possibly due to permissions issues.
+-- For information about giving permissions, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidSNSTopicException :: AsError a => Getting (First ServiceError) a ServiceError
+_InvalidSNSTopicException =
+    _ServiceError . hasStatus 400 . hasCode "InvalidSnsTopic"
+
+-- | Indicates that a resource could not be created due to a naming conflict.
+_AlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
+_AlreadyExistsException =
+    _ServiceError . hasStatus 400 . hasCode "AlreadyExists"
+
+-- | Indicates that a resource could not be created due to service limits.
+-- For a list of Amazon SES limits, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/limits.html Amazon SES Developer Guide>.
+_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+_LimitExceededException =
+    _ServiceError . hasStatus 400 . hasCode "LimitExceeded"
diff --git a/gen/Network/AWS/SES/Types/Product.hs b/gen/Network/AWS/SES/Types/Product.hs
--- a/gen/Network/AWS/SES/Types/Product.hs
+++ b/gen/Network/AWS/SES/Types/Product.hs
@@ -20,461 +20,1609 @@
 import           Network.AWS.Prelude
 import           Network.AWS.SES.Types.Sum
 
--- | Represents the body of the message. You can specify text, HTML, or both.
--- If you use both, then the message should display correctly in the widest
--- variety of email clients.
---
--- /See:/ 'body' smart constructor.
-data Body = Body'
-    { _bText :: !(Maybe Content)
-    , _bHTML :: !(Maybe Content)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Body' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bText'
---
--- * 'bHTML'
-body
-    :: Body
-body =
-    Body'
-    { _bText = Nothing
-    , _bHTML = Nothing
-    }
-
--- | The content of the message, in text format. Use this for text-based
--- email clients, or clients on high-latency networks (such as mobile
--- devices).
-bText :: Lens' Body (Maybe Content)
-bText = lens _bText (\ s a -> s{_bText = a});
-
--- | The content of the message, in HTML format. Use this for email clients
--- that can process HTML. You can include clickable links, formatted text,
--- and much more in an HTML message.
-bHTML :: Lens' Body (Maybe Content)
-bHTML = lens _bHTML (\ s a -> s{_bHTML = a});
-
-instance ToQuery Body where
-        toQuery Body'{..}
-          = mconcat ["Text" =: _bText, "Html" =: _bHTML]
-
--- | Represents textual data, plus an optional character set specification.
---
--- By default, the text must be 7-bit ASCII, due to the constraints of the
--- SMTP protocol. If the text must contain any other characters, then you
--- must also specify a character set. Examples include UTF-8, ISO-8859-1,
--- and Shift_JIS.
---
--- /See:/ 'content' smart constructor.
-data Content = Content'
-    { _cCharset :: !(Maybe Text)
-    , _cData    :: !Text
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Content' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cCharset'
---
--- * 'cData'
-content
-    :: Text -- ^ 'cData'
-    -> Content
-content pData_ =
-    Content'
-    { _cCharset = Nothing
-    , _cData = pData_
-    }
-
--- | The character set of the content.
-cCharset :: Lens' Content (Maybe Text)
-cCharset = lens _cCharset (\ s a -> s{_cCharset = a});
-
--- | The textual data of the content.
-cData :: Lens' Content Text
-cData = lens _cData (\ s a -> s{_cData = a});
-
-instance ToQuery Content where
-        toQuery Content'{..}
-          = mconcat ["Charset" =: _cCharset, "Data" =: _cData]
-
--- | Represents the destination of the message, consisting of To:, CC:, and
--- BCC: fields.
---
--- By default, the string must be 7-bit ASCII. If the text must contain any
--- other characters, then you must use MIME encoded-word syntax (RFC 2047)
--- instead of a literal string. MIME encoded-word syntax uses the following
--- form: '=?charset?encoding?encoded-text?='. For more information, see
--- <http://tools.ietf.org/html/rfc2047 RFC 2047>.
---
--- /See:/ 'destination' smart constructor.
-data Destination = Destination'
-    { _dBCCAddresses :: !(Maybe [Text])
-    , _dCCAddresses  :: !(Maybe [Text])
-    , _dToAddresses  :: !(Maybe [Text])
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Destination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dBCCAddresses'
---
--- * 'dCCAddresses'
---
--- * 'dToAddresses'
-destination
-    :: Destination
-destination =
-    Destination'
-    { _dBCCAddresses = Nothing
-    , _dCCAddresses = Nothing
-    , _dToAddresses = Nothing
-    }
-
--- | The BCC: field(s) of the message.
-dBCCAddresses :: Lens' Destination [Text]
-dBCCAddresses = lens _dBCCAddresses (\ s a -> s{_dBCCAddresses = a}) . _Default . _Coerce;
-
--- | The CC: field(s) of the message.
-dCCAddresses :: Lens' Destination [Text]
-dCCAddresses = lens _dCCAddresses (\ s a -> s{_dCCAddresses = a}) . _Default . _Coerce;
-
--- | The To: field(s) of the message.
-dToAddresses :: Lens' Destination [Text]
-dToAddresses = lens _dToAddresses (\ s a -> s{_dToAddresses = a}) . _Default . _Coerce;
-
-instance ToQuery Destination where
-        toQuery Destination'{..}
-          = mconcat
-              ["BccAddresses" =:
-                 toQuery (toQueryList "member" <$> _dBCCAddresses),
-               "CcAddresses" =:
-                 toQuery (toQueryList "member" <$> _dCCAddresses),
-               "ToAddresses" =:
-                 toQuery (toQueryList "member" <$> _dToAddresses)]
-
--- | Represents the DKIM attributes of a verified email address or a domain.
---
--- /See:/ 'identityDkimAttributes' smart constructor.
-data IdentityDkimAttributes = IdentityDkimAttributes'
-    { _idaDkimTokens             :: !(Maybe [Text])
-    , _idaDkimEnabled            :: !Bool
-    , _idaDkimVerificationStatus :: !VerificationStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IdentityDkimAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idaDkimTokens'
---
--- * 'idaDkimEnabled'
---
--- * 'idaDkimVerificationStatus'
-identityDkimAttributes
-    :: Bool -- ^ 'idaDkimEnabled'
-    -> VerificationStatus -- ^ 'idaDkimVerificationStatus'
-    -> IdentityDkimAttributes
-identityDkimAttributes pDkimEnabled_ pDkimVerificationStatus_ =
-    IdentityDkimAttributes'
-    { _idaDkimTokens = Nothing
-    , _idaDkimEnabled = pDkimEnabled_
-    , _idaDkimVerificationStatus = pDkimVerificationStatus_
-    }
-
--- | A set of character strings that represent the domain\'s identity. Using
--- these tokens, you will need to create DNS CNAME records that point to
--- DKIM public keys hosted by Amazon SES. Amazon Web Services will
--- eventually detect that you have updated your DNS records; this detection
--- process may take up to 72 hours. Upon successful detection, Amazon SES
--- will be able to DKIM-sign email originating from that domain. (This only
--- applies to domain identities, not email address identities.)
---
--- For more information about creating DNS records using DKIM tokens, go to
--- the
--- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
-idaDkimTokens :: Lens' IdentityDkimAttributes [Text]
-idaDkimTokens = lens _idaDkimTokens (\ s a -> s{_idaDkimTokens = a}) . _Default . _Coerce;
-
--- | True if DKIM signing is enabled for email sent from the identity; false
--- otherwise.
-idaDkimEnabled :: Lens' IdentityDkimAttributes Bool
-idaDkimEnabled = lens _idaDkimEnabled (\ s a -> s{_idaDkimEnabled = a});
-
--- | Describes whether Amazon SES has successfully verified the DKIM DNS
--- records (tokens) published in the domain name\'s DNS. (This only applies
--- to domain identities, not email address identities.)
-idaDkimVerificationStatus :: Lens' IdentityDkimAttributes VerificationStatus
-idaDkimVerificationStatus = lens _idaDkimVerificationStatus (\ s a -> s{_idaDkimVerificationStatus = a});
-
-instance FromXML IdentityDkimAttributes where
-        parseXML x
-          = IdentityDkimAttributes' <$>
-              (x .@? "DkimTokens" .!@ mempty >>=
-                 may (parseXMLList "member"))
-                <*> (x .@ "DkimEnabled")
-                <*> (x .@ "DkimVerificationStatus")
-
--- | Represents the notification attributes of an identity, including whether
--- an identity has Amazon Simple Notification Service (Amazon SNS) topics
--- set for bounce, complaint, and\/or delivery notifications, and whether
--- feedback forwarding is enabled for bounce and complaint notifications.
---
--- /See:/ 'identityNotificationAttributes' smart constructor.
-data IdentityNotificationAttributes = IdentityNotificationAttributes'
-    { _inaBounceTopic       :: !Text
-    , _inaComplaintTopic    :: !Text
-    , _inaDeliveryTopic     :: !Text
-    , _inaForwardingEnabled :: !Bool
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IdentityNotificationAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'inaBounceTopic'
---
--- * 'inaComplaintTopic'
---
--- * 'inaDeliveryTopic'
---
--- * 'inaForwardingEnabled'
-identityNotificationAttributes
-    :: Text -- ^ 'inaBounceTopic'
-    -> Text -- ^ 'inaComplaintTopic'
-    -> Text -- ^ 'inaDeliveryTopic'
-    -> Bool -- ^ 'inaForwardingEnabled'
-    -> IdentityNotificationAttributes
-identityNotificationAttributes pBounceTopic_ pComplaintTopic_ pDeliveryTopic_ pForwardingEnabled_ =
-    IdentityNotificationAttributes'
-    { _inaBounceTopic = pBounceTopic_
-    , _inaComplaintTopic = pComplaintTopic_
-    , _inaDeliveryTopic = pDeliveryTopic_
-    , _inaForwardingEnabled = pForwardingEnabled_
-    }
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
--- will publish bounce notifications.
-inaBounceTopic :: Lens' IdentityNotificationAttributes Text
-inaBounceTopic = lens _inaBounceTopic (\ s a -> s{_inaBounceTopic = a});
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
--- will publish complaint notifications.
-inaComplaintTopic :: Lens' IdentityNotificationAttributes Text
-inaComplaintTopic = lens _inaComplaintTopic (\ s a -> s{_inaComplaintTopic = a});
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
--- will publish delivery notifications.
-inaDeliveryTopic :: Lens' IdentityNotificationAttributes Text
-inaDeliveryTopic = lens _inaDeliveryTopic (\ s a -> s{_inaDeliveryTopic = a});
-
--- | Describes whether Amazon SES will forward bounce and complaint
--- notifications as email. 'true' indicates that Amazon SES will forward
--- bounce and complaint notifications as email, while 'false' indicates
--- that bounce and complaint notifications will be published only to the
--- specified bounce and complaint Amazon SNS topics.
-inaForwardingEnabled :: Lens' IdentityNotificationAttributes Bool
-inaForwardingEnabled = lens _inaForwardingEnabled (\ s a -> s{_inaForwardingEnabled = a});
-
-instance FromXML IdentityNotificationAttributes where
-        parseXML x
-          = IdentityNotificationAttributes' <$>
-              (x .@ "BounceTopic") <*> (x .@ "ComplaintTopic") <*>
-                (x .@ "DeliveryTopic")
-                <*> (x .@ "ForwardingEnabled")
-
--- | Represents the verification attributes of a single identity.
---
--- /See:/ 'identityVerificationAttributes' smart constructor.
-data IdentityVerificationAttributes = IdentityVerificationAttributes'
-    { _ivaVerificationToken  :: !(Maybe Text)
-    , _ivaVerificationStatus :: !VerificationStatus
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'IdentityVerificationAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ivaVerificationToken'
---
--- * 'ivaVerificationStatus'
-identityVerificationAttributes
-    :: VerificationStatus -- ^ 'ivaVerificationStatus'
-    -> IdentityVerificationAttributes
-identityVerificationAttributes pVerificationStatus_ =
-    IdentityVerificationAttributes'
-    { _ivaVerificationToken = Nothing
-    , _ivaVerificationStatus = pVerificationStatus_
-    }
-
--- | The verification token for a domain identity. Null for email address
--- identities.
-ivaVerificationToken :: Lens' IdentityVerificationAttributes (Maybe Text)
-ivaVerificationToken = lens _ivaVerificationToken (\ s a -> s{_ivaVerificationToken = a});
-
--- | The verification status of the identity: \"Pending\", \"Success\",
--- \"Failed\", or \"TemporaryFailure\".
-ivaVerificationStatus :: Lens' IdentityVerificationAttributes VerificationStatus
-ivaVerificationStatus = lens _ivaVerificationStatus (\ s a -> s{_ivaVerificationStatus = a});
-
-instance FromXML IdentityVerificationAttributes where
-        parseXML x
-          = IdentityVerificationAttributes' <$>
-              (x .@? "VerificationToken") <*>
-                (x .@ "VerificationStatus")
-
--- | Represents the message to be sent, composed of a subject and a body.
---
--- /See:/ 'message' smart constructor.
-data Message = Message'
-    { _mSubject :: !Content
-    , _mBody    :: !Body
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Message' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mSubject'
---
--- * 'mBody'
-message
-    :: Content -- ^ 'mSubject'
-    -> Body -- ^ 'mBody'
-    -> Message
-message pSubject_ pBody_ =
-    Message'
-    { _mSubject = pSubject_
-    , _mBody = pBody_
-    }
-
--- | The subject of the message: A short summary of the content, which will
--- appear in the recipient\'s inbox.
-mSubject :: Lens' Message Content
-mSubject = lens _mSubject (\ s a -> s{_mSubject = a});
-
--- | The message body.
-mBody :: Lens' Message Body
-mBody = lens _mBody (\ s a -> s{_mBody = a});
-
-instance ToQuery Message where
-        toQuery Message'{..}
-          = mconcat ["Subject" =: _mSubject, "Body" =: _mBody]
-
--- | Represents the raw data of the message.
---
--- /See:/ 'rawMessage' smart constructor.
-newtype RawMessage = RawMessage'
-    { _rmData :: Base64
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RawMessage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rmData'
-rawMessage
-    :: ByteString -- ^ 'rmData'
-    -> RawMessage
-rawMessage pData_ =
-    RawMessage'
-    { _rmData = _Base64 # pData_
-    }
-
--- | The raw data of the message. The client must ensure that the message
--- format complies with Internet email standards regarding email header
--- fields, MIME types, MIME encoding, and base64 encoding (if necessary).
---
--- The To:, CC:, and BCC: headers in the raw message can contain a group
--- list.
---
--- If you are using 'SendRawEmail' with sending authorization, you can
--- include X-headers in the raw message to specify the \"Source,\"
--- \"From,\" and \"Return-Path\" addresses. For more information, see the
--- documentation for 'SendRawEmail'.
---
--- Do not include these X-headers in the DKIM signature, because they are
--- removed by Amazon SES before sending the email.
---
--- For more information, go to the
--- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
---
--- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
--- despite what the AWS documentation might say.
--- The underlying isomorphism will encode to Base64 representation during
--- serialisation, and decode from Base64 representation during deserialisation.
--- This 'Lens' accepts and returns only raw unencoded data.
-rmData :: Lens' RawMessage ByteString
-rmData = lens _rmData (\ s a -> s{_rmData = a}) . _Base64;
-
-instance ToQuery RawMessage where
-        toQuery RawMessage'{..} = mconcat ["Data" =: _rmData]
-
--- | Represents sending statistics data. Each 'SendDataPoint' contains
--- statistics for a 15-minute period of sending activity.
---
--- /See:/ 'sendDataPoint' smart constructor.
-data SendDataPoint = SendDataPoint'
-    { _sdpRejects          :: !(Maybe Integer)
-    , _sdpComplaints       :: !(Maybe Integer)
-    , _sdpDeliveryAttempts :: !(Maybe Integer)
-    , _sdpBounces          :: !(Maybe Integer)
-    , _sdpTimestamp        :: !(Maybe ISO8601)
-    } deriving (Eq,Read,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'SendDataPoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdpRejects'
---
--- * 'sdpComplaints'
---
--- * 'sdpDeliveryAttempts'
---
--- * 'sdpBounces'
---
--- * 'sdpTimestamp'
-sendDataPoint
-    :: SendDataPoint
-sendDataPoint =
-    SendDataPoint'
-    { _sdpRejects = Nothing
-    , _sdpComplaints = Nothing
-    , _sdpDeliveryAttempts = Nothing
-    , _sdpBounces = Nothing
-    , _sdpTimestamp = Nothing
-    }
-
--- | Number of emails rejected by Amazon SES.
-sdpRejects :: Lens' SendDataPoint (Maybe Integer)
-sdpRejects = lens _sdpRejects (\ s a -> s{_sdpRejects = a});
-
--- | Number of unwanted emails that were rejected by recipients.
-sdpComplaints :: Lens' SendDataPoint (Maybe Integer)
-sdpComplaints = lens _sdpComplaints (\ s a -> s{_sdpComplaints = a});
-
--- | Number of emails that have been enqueued for sending.
-sdpDeliveryAttempts :: Lens' SendDataPoint (Maybe Integer)
-sdpDeliveryAttempts = lens _sdpDeliveryAttempts (\ s a -> s{_sdpDeliveryAttempts = a});
-
--- | Number of emails that have bounced.
-sdpBounces :: Lens' SendDataPoint (Maybe Integer)
-sdpBounces = lens _sdpBounces (\ s a -> s{_sdpBounces = a});
-
--- | Time of the data point.
-sdpTimestamp :: Lens' SendDataPoint (Maybe UTCTime)
-sdpTimestamp = lens _sdpTimestamp (\ s a -> s{_sdpTimestamp = a}) . mapping _Time;
-
-instance FromXML SendDataPoint where
-        parseXML x
-          = SendDataPoint' <$>
-              (x .@? "Rejects") <*> (x .@? "Complaints") <*>
-                (x .@? "DeliveryAttempts")
-                <*> (x .@? "Bounces")
-                <*> (x .@? "Timestamp")
+-- | When included in a receipt rule, this action adds a header to the
+-- received email.
+--
+-- For information about adding a header using a receipt rule, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-add-header.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'addHeaderAction' smart constructor.
+data AddHeaderAction = AddHeaderAction'
+    { _ahaHeaderName  :: !Text
+    , _ahaHeaderValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'AddHeaderAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ahaHeaderName'
+--
+-- * 'ahaHeaderValue'
+addHeaderAction
+    :: Text -- ^ 'ahaHeaderName'
+    -> Text -- ^ 'ahaHeaderValue'
+    -> AddHeaderAction
+addHeaderAction pHeaderName_ pHeaderValue_ =
+    AddHeaderAction'
+    { _ahaHeaderName = pHeaderName_
+    , _ahaHeaderValue = pHeaderValue_
+    }
+
+-- | The name of the header to add. Must be between 1 and 50 characters,
+-- inclusive, and consist of alphanumeric (a-z, A-Z, 0-9) characters and
+-- dashes only.
+ahaHeaderName :: Lens' AddHeaderAction Text
+ahaHeaderName = lens _ahaHeaderName (\ s a -> s{_ahaHeaderName = a});
+
+-- | Must be less than 2048 characters, and must not contain newline
+-- characters (\"\\r\" or \"\\n\").
+ahaHeaderValue :: Lens' AddHeaderAction Text
+ahaHeaderValue = lens _ahaHeaderValue (\ s a -> s{_ahaHeaderValue = a});
+
+instance FromXML AddHeaderAction where
+        parseXML x
+          = AddHeaderAction' <$>
+              (x .@ "HeaderName") <*> (x .@ "HeaderValue")
+
+instance ToQuery AddHeaderAction where
+        toQuery AddHeaderAction'{..}
+          = mconcat
+              ["HeaderName" =: _ahaHeaderName,
+               "HeaderValue" =: _ahaHeaderValue]
+
+-- | Represents the body of the message. You can specify text, HTML, or both.
+-- If you use both, then the message should display correctly in the widest
+-- variety of email clients.
+--
+-- /See:/ 'body' smart constructor.
+data Body = Body'
+    { _bText :: !(Maybe Content)
+    , _bHTML :: !(Maybe Content)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Body' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'bText'
+--
+-- * 'bHTML'
+body
+    :: Body
+body =
+    Body'
+    { _bText = Nothing
+    , _bHTML = Nothing
+    }
+
+-- | The content of the message, in text format. Use this for text-based
+-- email clients, or clients on high-latency networks (such as mobile
+-- devices).
+bText :: Lens' Body (Maybe Content)
+bText = lens _bText (\ s a -> s{_bText = a});
+
+-- | The content of the message, in HTML format. Use this for email clients
+-- that can process HTML. You can include clickable links, formatted text,
+-- and much more in an HTML message.
+bHTML :: Lens' Body (Maybe Content)
+bHTML = lens _bHTML (\ s a -> s{_bHTML = a});
+
+instance ToQuery Body where
+        toQuery Body'{..}
+          = mconcat ["Text" =: _bText, "Html" =: _bHTML]
+
+-- | When included in a receipt rule, this action rejects the received email
+-- by returning a bounce response to the sender and, optionally, publishes
+-- a notification to Amazon Simple Notification Service (Amazon SNS).
+--
+-- For information about sending a bounce message in response to a received
+-- email, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-bounce.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'bounceAction' smart constructor.
+data BounceAction = BounceAction'
+    { _baTopicARN      :: !(Maybe Text)
+    , _baStatusCode    :: !(Maybe Text)
+    , _baSmtpReplyCode :: !Text
+    , _baMessage       :: !Text
+    , _baSender        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BounceAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'baTopicARN'
+--
+-- * 'baStatusCode'
+--
+-- * 'baSmtpReplyCode'
+--
+-- * 'baMessage'
+--
+-- * 'baSender'
+bounceAction
+    :: Text -- ^ 'baSmtpReplyCode'
+    -> Text -- ^ 'baMessage'
+    -> Text -- ^ 'baSender'
+    -> BounceAction
+bounceAction pSmtpReplyCode_ pMessage_ pSender_ =
+    BounceAction'
+    { _baTopicARN = Nothing
+    , _baStatusCode = Nothing
+    , _baSmtpReplyCode = pSmtpReplyCode_
+    , _baMessage = pMessage_
+    , _baSender = pSender_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when
+-- the bounce action is taken. An example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+baTopicARN :: Lens' BounceAction (Maybe Text)
+baTopicARN = lens _baTopicARN (\ s a -> s{_baTopicARN = a});
+
+-- | The SMTP enhanced status code, as defined by
+-- <https://tools.ietf.org/html/rfc3463 RFC 3463>.
+baStatusCode :: Lens' BounceAction (Maybe Text)
+baStatusCode = lens _baStatusCode (\ s a -> s{_baStatusCode = a});
+
+-- | The SMTP reply code, as defined by
+-- <https://tools.ietf.org/html/rfc5321 RFC 5321>.
+baSmtpReplyCode :: Lens' BounceAction Text
+baSmtpReplyCode = lens _baSmtpReplyCode (\ s a -> s{_baSmtpReplyCode = a});
+
+-- | Human-readable text to include in the bounce message.
+baMessage :: Lens' BounceAction Text
+baMessage = lens _baMessage (\ s a -> s{_baMessage = a});
+
+-- | The email address of the sender of the bounced email. This is the
+-- address from which the bounce message will be sent.
+baSender :: Lens' BounceAction Text
+baSender = lens _baSender (\ s a -> s{_baSender = a});
+
+instance FromXML BounceAction where
+        parseXML x
+          = BounceAction' <$>
+              (x .@? "TopicArn") <*> (x .@? "StatusCode") <*>
+                (x .@ "SmtpReplyCode")
+                <*> (x .@ "Message")
+                <*> (x .@ "Sender")
+
+instance ToQuery BounceAction where
+        toQuery BounceAction'{..}
+          = mconcat
+              ["TopicArn" =: _baTopicARN,
+               "StatusCode" =: _baStatusCode,
+               "SmtpReplyCode" =: _baSmtpReplyCode,
+               "Message" =: _baMessage, "Sender" =: _baSender]
+
+-- | Recipient-related information to include in the Delivery Status
+-- Notification (DSN) when an email that Amazon SES receives on your behalf
+-- bounces.
+--
+-- For information about receiving email through Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'bouncedRecipientInfo' smart constructor.
+data BouncedRecipientInfo = BouncedRecipientInfo'
+    { _briBounceType         :: !(Maybe BounceType)
+    , _briRecipientDsnFields :: !(Maybe RecipientDsnFields)
+    , _briRecipientARN       :: !(Maybe Text)
+    , _briRecipient          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'BouncedRecipientInfo' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'briBounceType'
+--
+-- * 'briRecipientDsnFields'
+--
+-- * 'briRecipientARN'
+--
+-- * 'briRecipient'
+bouncedRecipientInfo
+    :: Text -- ^ 'briRecipient'
+    -> BouncedRecipientInfo
+bouncedRecipientInfo pRecipient_ =
+    BouncedRecipientInfo'
+    { _briBounceType = Nothing
+    , _briRecipientDsnFields = Nothing
+    , _briRecipientARN = Nothing
+    , _briRecipient = pRecipient_
+    }
+
+-- | The reason for the bounce. You must provide either this parameter or
+-- 'RecipientDsnFields'.
+briBounceType :: Lens' BouncedRecipientInfo (Maybe BounceType)
+briBounceType = lens _briBounceType (\ s a -> s{_briBounceType = a});
+
+-- | Recipient-related DSN fields, most of which would normally be filled in
+-- automatically when provided with a 'BounceType'. You must provide either
+-- this parameter or 'BounceType'.
+briRecipientDsnFields :: Lens' BouncedRecipientInfo (Maybe RecipientDsnFields)
+briRecipientDsnFields = lens _briRecipientDsnFields (\ s a -> s{_briRecipientDsnFields = a});
+
+-- | This parameter is used only for sending authorization. It is the ARN of
+-- the identity that is associated with the sending authorization policy
+-- that permits you to receive email for the recipient of the bounced
+-- email. For more information about sending authorization, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+briRecipientARN :: Lens' BouncedRecipientInfo (Maybe Text)
+briRecipientARN = lens _briRecipientARN (\ s a -> s{_briRecipientARN = a});
+
+-- | The email address of the recipient of the bounced email.
+briRecipient :: Lens' BouncedRecipientInfo Text
+briRecipient = lens _briRecipient (\ s a -> s{_briRecipient = a});
+
+instance ToQuery BouncedRecipientInfo where
+        toQuery BouncedRecipientInfo'{..}
+          = mconcat
+              ["BounceType" =: _briBounceType,
+               "RecipientDsnFields" =: _briRecipientDsnFields,
+               "RecipientArn" =: _briRecipientARN,
+               "Recipient" =: _briRecipient]
+
+-- | Represents textual data, plus an optional character set specification.
+--
+-- By default, the text must be 7-bit ASCII, due to the constraints of the
+-- SMTP protocol. If the text must contain any other characters, then you
+-- must also specify a character set. Examples include UTF-8, ISO-8859-1,
+-- and Shift_JIS.
+--
+-- /See:/ 'content' smart constructor.
+data Content = Content'
+    { _cCharset :: !(Maybe Text)
+    , _cData    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Content' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cCharset'
+--
+-- * 'cData'
+content
+    :: Text -- ^ 'cData'
+    -> Content
+content pData_ =
+    Content'
+    { _cCharset = Nothing
+    , _cData = pData_
+    }
+
+-- | The character set of the content.
+cCharset :: Lens' Content (Maybe Text)
+cCharset = lens _cCharset (\ s a -> s{_cCharset = a});
+
+-- | The textual data of the content.
+cData :: Lens' Content Text
+cData = lens _cData (\ s a -> s{_cData = a});
+
+instance ToQuery Content where
+        toQuery Content'{..}
+          = mconcat ["Charset" =: _cCharset, "Data" =: _cData]
+
+-- | Represents the destination of the message, consisting of To:, CC:, and
+-- BCC: fields.
+--
+-- By default, the string must be 7-bit ASCII. If the text must contain any
+-- other characters, then you must use MIME encoded-word syntax (RFC 2047)
+-- instead of a literal string. MIME encoded-word syntax uses the following
+-- form: '=?charset?encoding?encoded-text?='. For more information, see
+-- <http://tools.ietf.org/html/rfc2047 RFC 2047>.
+--
+-- /See:/ 'destination' smart constructor.
+data Destination = Destination'
+    { _dBCCAddresses :: !(Maybe [Text])
+    , _dCCAddresses  :: !(Maybe [Text])
+    , _dToAddresses  :: !(Maybe [Text])
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Destination' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dBCCAddresses'
+--
+-- * 'dCCAddresses'
+--
+-- * 'dToAddresses'
+destination
+    :: Destination
+destination =
+    Destination'
+    { _dBCCAddresses = Nothing
+    , _dCCAddresses = Nothing
+    , _dToAddresses = Nothing
+    }
+
+-- | The BCC: field(s) of the message.
+dBCCAddresses :: Lens' Destination [Text]
+dBCCAddresses = lens _dBCCAddresses (\ s a -> s{_dBCCAddresses = a}) . _Default . _Coerce;
+
+-- | The CC: field(s) of the message.
+dCCAddresses :: Lens' Destination [Text]
+dCCAddresses = lens _dCCAddresses (\ s a -> s{_dCCAddresses = a}) . _Default . _Coerce;
+
+-- | The To: field(s) of the message.
+dToAddresses :: Lens' Destination [Text]
+dToAddresses = lens _dToAddresses (\ s a -> s{_dToAddresses = a}) . _Default . _Coerce;
+
+instance ToQuery Destination where
+        toQuery Destination'{..}
+          = mconcat
+              ["BccAddresses" =:
+                 toQuery (toQueryList "member" <$> _dBCCAddresses),
+               "CcAddresses" =:
+                 toQuery (toQueryList "member" <$> _dCCAddresses),
+               "ToAddresses" =:
+                 toQuery (toQueryList "member" <$> _dToAddresses)]
+
+-- | Additional X-headers to include in the Delivery Status Notification
+-- (DSN) when an email that Amazon SES receives on your behalf bounces.
+--
+-- For information about receiving email through Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'extensionField' smart constructor.
+data ExtensionField = ExtensionField'
+    { _efName  :: !Text
+    , _efValue :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ExtensionField' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'efName'
+--
+-- * 'efValue'
+extensionField
+    :: Text -- ^ 'efName'
+    -> Text -- ^ 'efValue'
+    -> ExtensionField
+extensionField pName_ pValue_ =
+    ExtensionField'
+    { _efName = pName_
+    , _efValue = pValue_
+    }
+
+-- | The name of the header to add. Must be between 1 and 50 characters,
+-- inclusive, and consist of alphanumeric (a-z, A-Z, 0-9) characters and
+-- dashes only.
+efName :: Lens' ExtensionField Text
+efName = lens _efName (\ s a -> s{_efName = a});
+
+-- | The value of the header to add. Must be less than 2048 characters, and
+-- must not contain newline characters (\"\\r\" or \"\\n\").
+efValue :: Lens' ExtensionField Text
+efValue = lens _efValue (\ s a -> s{_efValue = a});
+
+instance ToQuery ExtensionField where
+        toQuery ExtensionField'{..}
+          = mconcat ["Name" =: _efName, "Value" =: _efValue]
+
+-- | Represents the DKIM attributes of a verified email address or a domain.
+--
+-- /See:/ 'identityDkimAttributes' smart constructor.
+data IdentityDkimAttributes = IdentityDkimAttributes'
+    { _idaDkimTokens             :: !(Maybe [Text])
+    , _idaDkimEnabled            :: !Bool
+    , _idaDkimVerificationStatus :: !VerificationStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityDkimAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'idaDkimTokens'
+--
+-- * 'idaDkimEnabled'
+--
+-- * 'idaDkimVerificationStatus'
+identityDkimAttributes
+    :: Bool -- ^ 'idaDkimEnabled'
+    -> VerificationStatus -- ^ 'idaDkimVerificationStatus'
+    -> IdentityDkimAttributes
+identityDkimAttributes pDkimEnabled_ pDkimVerificationStatus_ =
+    IdentityDkimAttributes'
+    { _idaDkimTokens = Nothing
+    , _idaDkimEnabled = pDkimEnabled_
+    , _idaDkimVerificationStatus = pDkimVerificationStatus_
+    }
+
+-- | A set of character strings that represent the domain\'s identity. Using
+-- these tokens, you will need to create DNS CNAME records that point to
+-- DKIM public keys hosted by Amazon SES. Amazon Web Services will
+-- eventually detect that you have updated your DNS records; this detection
+-- process may take up to 72 hours. Upon successful detection, Amazon SES
+-- will be able to DKIM-sign email originating from that domain. (This only
+-- applies to domain identities, not email address identities.)
+--
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+idaDkimTokens :: Lens' IdentityDkimAttributes [Text]
+idaDkimTokens = lens _idaDkimTokens (\ s a -> s{_idaDkimTokens = a}) . _Default . _Coerce;
+
+-- | True if DKIM signing is enabled for email sent from the identity; false
+-- otherwise.
+idaDkimEnabled :: Lens' IdentityDkimAttributes Bool
+idaDkimEnabled = lens _idaDkimEnabled (\ s a -> s{_idaDkimEnabled = a});
+
+-- | Describes whether Amazon SES has successfully verified the DKIM DNS
+-- records (tokens) published in the domain name\'s DNS. (This only applies
+-- to domain identities, not email address identities.)
+idaDkimVerificationStatus :: Lens' IdentityDkimAttributes VerificationStatus
+idaDkimVerificationStatus = lens _idaDkimVerificationStatus (\ s a -> s{_idaDkimVerificationStatus = a});
+
+instance FromXML IdentityDkimAttributes where
+        parseXML x
+          = IdentityDkimAttributes' <$>
+              (x .@? "DkimTokens" .!@ mempty >>=
+                 may (parseXMLList "member"))
+                <*> (x .@ "DkimEnabled")
+                <*> (x .@ "DkimVerificationStatus")
+
+-- | Represents the notification attributes of an identity, including whether
+-- an identity has Amazon Simple Notification Service (Amazon SNS) topics
+-- set for bounce, complaint, and\/or delivery notifications, and whether
+-- feedback forwarding is enabled for bounce and complaint notifications.
+--
+-- /See:/ 'identityNotificationAttributes' smart constructor.
+data IdentityNotificationAttributes = IdentityNotificationAttributes'
+    { _inaBounceTopic       :: !Text
+    , _inaComplaintTopic    :: !Text
+    , _inaDeliveryTopic     :: !Text
+    , _inaForwardingEnabled :: !Bool
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityNotificationAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'inaBounceTopic'
+--
+-- * 'inaComplaintTopic'
+--
+-- * 'inaDeliveryTopic'
+--
+-- * 'inaForwardingEnabled'
+identityNotificationAttributes
+    :: Text -- ^ 'inaBounceTopic'
+    -> Text -- ^ 'inaComplaintTopic'
+    -> Text -- ^ 'inaDeliveryTopic'
+    -> Bool -- ^ 'inaForwardingEnabled'
+    -> IdentityNotificationAttributes
+identityNotificationAttributes pBounceTopic_ pComplaintTopic_ pDeliveryTopic_ pForwardingEnabled_ =
+    IdentityNotificationAttributes'
+    { _inaBounceTopic = pBounceTopic_
+    , _inaComplaintTopic = pComplaintTopic_
+    , _inaDeliveryTopic = pDeliveryTopic_
+    , _inaForwardingEnabled = pForwardingEnabled_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish bounce notifications.
+inaBounceTopic :: Lens' IdentityNotificationAttributes Text
+inaBounceTopic = lens _inaBounceTopic (\ s a -> s{_inaBounceTopic = a});
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish complaint notifications.
+inaComplaintTopic :: Lens' IdentityNotificationAttributes Text
+inaComplaintTopic = lens _inaComplaintTopic (\ s a -> s{_inaComplaintTopic = a});
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish delivery notifications.
+inaDeliveryTopic :: Lens' IdentityNotificationAttributes Text
+inaDeliveryTopic = lens _inaDeliveryTopic (\ s a -> s{_inaDeliveryTopic = a});
+
+-- | Describes whether Amazon SES will forward bounce and complaint
+-- notifications as email. 'true' indicates that Amazon SES will forward
+-- bounce and complaint notifications as email, while 'false' indicates
+-- that bounce and complaint notifications will be published only to the
+-- specified bounce and complaint Amazon SNS topics.
+inaForwardingEnabled :: Lens' IdentityNotificationAttributes Bool
+inaForwardingEnabled = lens _inaForwardingEnabled (\ s a -> s{_inaForwardingEnabled = a});
+
+instance FromXML IdentityNotificationAttributes where
+        parseXML x
+          = IdentityNotificationAttributes' <$>
+              (x .@ "BounceTopic") <*> (x .@ "ComplaintTopic") <*>
+                (x .@ "DeliveryTopic")
+                <*> (x .@ "ForwardingEnabled")
+
+-- | Represents the verification attributes of a single identity.
+--
+-- /See:/ 'identityVerificationAttributes' smart constructor.
+data IdentityVerificationAttributes = IdentityVerificationAttributes'
+    { _ivaVerificationToken  :: !(Maybe Text)
+    , _ivaVerificationStatus :: !VerificationStatus
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'IdentityVerificationAttributes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ivaVerificationToken'
+--
+-- * 'ivaVerificationStatus'
+identityVerificationAttributes
+    :: VerificationStatus -- ^ 'ivaVerificationStatus'
+    -> IdentityVerificationAttributes
+identityVerificationAttributes pVerificationStatus_ =
+    IdentityVerificationAttributes'
+    { _ivaVerificationToken = Nothing
+    , _ivaVerificationStatus = pVerificationStatus_
+    }
+
+-- | The verification token for a domain identity. Null for email address
+-- identities.
+ivaVerificationToken :: Lens' IdentityVerificationAttributes (Maybe Text)
+ivaVerificationToken = lens _ivaVerificationToken (\ s a -> s{_ivaVerificationToken = a});
+
+-- | The verification status of the identity: \"Pending\", \"Success\",
+-- \"Failed\", or \"TemporaryFailure\".
+ivaVerificationStatus :: Lens' IdentityVerificationAttributes VerificationStatus
+ivaVerificationStatus = lens _ivaVerificationStatus (\ s a -> s{_ivaVerificationStatus = a});
+
+instance FromXML IdentityVerificationAttributes where
+        parseXML x
+          = IdentityVerificationAttributes' <$>
+              (x .@? "VerificationToken") <*>
+                (x .@ "VerificationStatus")
+
+-- | When included in a receipt rule, this action calls an AWS Lambda
+-- function and, optionally, publishes a notification to Amazon Simple
+-- Notification Service (Amazon SNS).
+--
+-- To enable Amazon SES to call your AWS Lambda function or to publish to
+-- an Amazon SNS topic of another account, Amazon SES must have permission
+-- to access those resources. For information about giving permissions, see
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- For information about using AWS Lambda actions in receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-lambda.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'lambdaAction' smart constructor.
+data LambdaAction = LambdaAction'
+    { _laInvocationType :: !(Maybe InvocationType)
+    , _laTopicARN       :: !(Maybe Text)
+    , _laFunctionARN    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'LambdaAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'laInvocationType'
+--
+-- * 'laTopicARN'
+--
+-- * 'laFunctionARN'
+lambdaAction
+    :: Text -- ^ 'laFunctionARN'
+    -> LambdaAction
+lambdaAction pFunctionARN_ =
+    LambdaAction'
+    { _laInvocationType = Nothing
+    , _laTopicARN = Nothing
+    , _laFunctionARN = pFunctionARN_
+    }
+
+-- | The invocation type of the AWS Lambda function. An invocation type of
+-- 'RequestResponse' means that the execution of the function will
+-- immediately result in a response, and a value of 'Event' means that the
+-- function will be invoked asynchronously. The default value is 'Event'.
+-- For information about AWS Lambda invocation types, see the
+-- <http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html AWS Lambda Developer Guide>.
+--
+-- There is a 30-second timeout on 'RequestResponse' invocations. You
+-- should use 'Event' invocation in most cases. Use 'RequestResponse' only
+-- when you want to make a mail flow decision, such as whether to stop the
+-- receipt rule or the receipt rule set.
+laInvocationType :: Lens' LambdaAction (Maybe InvocationType)
+laInvocationType = lens _laInvocationType (\ s a -> s{_laInvocationType = a});
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when
+-- the Lambda action is taken. An example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+laTopicARN :: Lens' LambdaAction (Maybe Text)
+laTopicARN = lens _laTopicARN (\ s a -> s{_laTopicARN = a});
+
+-- | The Amazon Resource Name (ARN) of the AWS Lambda function. An example of
+-- an AWS Lambda function ARN is
+-- 'arn:aws:lambda:us-west-2:account-id:function:MyFunction'. For more
+-- information about AWS Lambda, see the
+-- <http://docs.aws.amazon.com/lambda/latest/dg/welcome.html AWS Lambda Developer Guide>.
+laFunctionARN :: Lens' LambdaAction Text
+laFunctionARN = lens _laFunctionARN (\ s a -> s{_laFunctionARN = a});
+
+instance FromXML LambdaAction where
+        parseXML x
+          = LambdaAction' <$>
+              (x .@? "InvocationType") <*> (x .@? "TopicArn") <*>
+                (x .@ "FunctionArn")
+
+instance ToQuery LambdaAction where
+        toQuery LambdaAction'{..}
+          = mconcat
+              ["InvocationType" =: _laInvocationType,
+               "TopicArn" =: _laTopicARN,
+               "FunctionArn" =: _laFunctionARN]
+
+-- | Represents the message to be sent, composed of a subject and a body.
+--
+-- /See:/ 'message' smart constructor.
+data Message = Message'
+    { _mSubject :: !Content
+    , _mBody    :: !Body
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'Message' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mSubject'
+--
+-- * 'mBody'
+message
+    :: Content -- ^ 'mSubject'
+    -> Body -- ^ 'mBody'
+    -> Message
+message pSubject_ pBody_ =
+    Message'
+    { _mSubject = pSubject_
+    , _mBody = pBody_
+    }
+
+-- | The subject of the message: A short summary of the content, which will
+-- appear in the recipient\'s inbox.
+mSubject :: Lens' Message Content
+mSubject = lens _mSubject (\ s a -> s{_mSubject = a});
+
+-- | The message body.
+mBody :: Lens' Message Body
+mBody = lens _mBody (\ s a -> s{_mBody = a});
+
+instance ToQuery Message where
+        toQuery Message'{..}
+          = mconcat ["Subject" =: _mSubject, "Body" =: _mBody]
+
+-- | Message-related information to include in the Delivery Status
+-- Notification (DSN) when an email that Amazon SES receives on your behalf
+-- bounces.
+--
+-- For information about receiving email through Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'messageDsn' smart constructor.
+data MessageDsn = MessageDsn'
+    { _mdArrivalDate     :: !(Maybe ISO8601)
+    , _mdExtensionFields :: !(Maybe [ExtensionField])
+    , _mdReportingMta    :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'MessageDsn' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'mdArrivalDate'
+--
+-- * 'mdExtensionFields'
+--
+-- * 'mdReportingMta'
+messageDsn
+    :: Text -- ^ 'mdReportingMta'
+    -> MessageDsn
+messageDsn pReportingMta_ =
+    MessageDsn'
+    { _mdArrivalDate = Nothing
+    , _mdExtensionFields = Nothing
+    , _mdReportingMta = pReportingMta_
+    }
+
+-- | When the message was received by the reporting mail transfer agent
+-- (MTA), in <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time
+-- format.
+mdArrivalDate :: Lens' MessageDsn (Maybe UTCTime)
+mdArrivalDate = lens _mdArrivalDate (\ s a -> s{_mdArrivalDate = a}) . mapping _Time;
+
+-- | Additional X-headers to include in the DSN.
+mdExtensionFields :: Lens' MessageDsn [ExtensionField]
+mdExtensionFields = lens _mdExtensionFields (\ s a -> s{_mdExtensionFields = a}) . _Default . _Coerce;
+
+-- | The reporting MTA that attempted to deliver the message, formatted as
+-- specified in <https://tools.ietf.org/html/rfc3464 RFC 3464>
+-- ('mta-name-type; mta-name'). The default value is
+-- 'dns; inbound-smtp.[region].amazonaws.com'.
+mdReportingMta :: Lens' MessageDsn Text
+mdReportingMta = lens _mdReportingMta (\ s a -> s{_mdReportingMta = a});
+
+instance ToQuery MessageDsn where
+        toQuery MessageDsn'{..}
+          = mconcat
+              ["ArrivalDate" =: _mdArrivalDate,
+               "ExtensionFields" =:
+                 toQuery
+                   (toQueryList "member" <$> _mdExtensionFields),
+               "ReportingMta" =: _mdReportingMta]
+
+-- | Represents the raw data of the message.
+--
+-- /See:/ 'rawMessage' smart constructor.
+newtype RawMessage = RawMessage'
+    { _rmData :: Base64
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RawMessage' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rmData'
+rawMessage
+    :: ByteString -- ^ 'rmData'
+    -> RawMessage
+rawMessage pData_ =
+    RawMessage'
+    { _rmData = _Base64 # pData_
+    }
+
+-- | The raw data of the message. The client must ensure that the message
+-- format complies with Internet email standards regarding email header
+-- fields, MIME types, MIME encoding, and base64 encoding (if necessary).
+--
+-- The To:, CC:, and BCC: headers in the raw message can contain a group
+-- list.
+--
+-- If you are using 'SendRawEmail' with sending authorization, you can
+-- include X-headers in the raw message to specify the \"Source,\"
+-- \"From,\" and \"Return-Path\" addresses. For more information, see the
+-- documentation for 'SendRawEmail'.
+--
+-- Do not include these X-headers in the DKIM signature, because they are
+-- removed by Amazon SES before sending the email.
+--
+-- For more information, go to the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
+--
+-- /Note:/ This 'Lens' automatically encodes and decodes Base64 data,
+-- despite what the AWS documentation might say.
+-- The underlying isomorphism will encode to Base64 representation during
+-- serialisation, and decode from Base64 representation during deserialisation.
+-- This 'Lens' accepts and returns only raw unencoded data.
+rmData :: Lens' RawMessage ByteString
+rmData = lens _rmData (\ s a -> s{_rmData = a}) . _Base64;
+
+instance ToQuery RawMessage where
+        toQuery RawMessage'{..} = mconcat ["Data" =: _rmData]
+
+-- | An action that Amazon SES can take when it receives an email on behalf
+-- of one or more email addresses or domains that you own. An instance of
+-- this data type can represent only one action.
+--
+-- For information about setting up receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'receiptAction' smart constructor.
+data ReceiptAction = ReceiptAction'
+    { _raAddHeaderAction :: !(Maybe AddHeaderAction)
+    , _raSNSAction       :: !(Maybe SNSAction)
+    , _raWorkmailAction  :: !(Maybe WorkmailAction)
+    , _raBounceAction    :: !(Maybe BounceAction)
+    , _raLambdaAction    :: !(Maybe LambdaAction)
+    , _raStopAction      :: !(Maybe StopAction)
+    , _raS3Action        :: !(Maybe S3Action)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReceiptAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'raAddHeaderAction'
+--
+-- * 'raSNSAction'
+--
+-- * 'raWorkmailAction'
+--
+-- * 'raBounceAction'
+--
+-- * 'raLambdaAction'
+--
+-- * 'raStopAction'
+--
+-- * 'raS3Action'
+receiptAction
+    :: ReceiptAction
+receiptAction =
+    ReceiptAction'
+    { _raAddHeaderAction = Nothing
+    , _raSNSAction = Nothing
+    , _raWorkmailAction = Nothing
+    , _raBounceAction = Nothing
+    , _raLambdaAction = Nothing
+    , _raStopAction = Nothing
+    , _raS3Action = Nothing
+    }
+
+-- | Adds a header to the received email.
+raAddHeaderAction :: Lens' ReceiptAction (Maybe AddHeaderAction)
+raAddHeaderAction = lens _raAddHeaderAction (\ s a -> s{_raAddHeaderAction = a});
+
+-- | Publishes the email content within a notification to Amazon SNS.
+raSNSAction :: Lens' ReceiptAction (Maybe SNSAction)
+raSNSAction = lens _raSNSAction (\ s a -> s{_raSNSAction = a});
+
+-- | Calls Amazon WorkMail and, optionally, publishes a notification to
+-- Amazon SNS.
+raWorkmailAction :: Lens' ReceiptAction (Maybe WorkmailAction)
+raWorkmailAction = lens _raWorkmailAction (\ s a -> s{_raWorkmailAction = a});
+
+-- | Rejects the received email by returning a bounce response to the sender
+-- and, optionally, publishes a notification to Amazon Simple Notification
+-- Service (Amazon SNS).
+raBounceAction :: Lens' ReceiptAction (Maybe BounceAction)
+raBounceAction = lens _raBounceAction (\ s a -> s{_raBounceAction = a});
+
+-- | Calls an AWS Lambda function, and optionally, publishes a notification
+-- to Amazon SNS.
+raLambdaAction :: Lens' ReceiptAction (Maybe LambdaAction)
+raLambdaAction = lens _raLambdaAction (\ s a -> s{_raLambdaAction = a});
+
+-- | Terminates the evaluation of the receipt rule set and optionally
+-- publishes a notification to Amazon SNS.
+raStopAction :: Lens' ReceiptAction (Maybe StopAction)
+raStopAction = lens _raStopAction (\ s a -> s{_raStopAction = a});
+
+-- | Saves the received message to an Amazon Simple Storage Service (Amazon
+-- S3) bucket and, optionally, publishes a notification to Amazon SNS.
+raS3Action :: Lens' ReceiptAction (Maybe S3Action)
+raS3Action = lens _raS3Action (\ s a -> s{_raS3Action = a});
+
+instance FromXML ReceiptAction where
+        parseXML x
+          = ReceiptAction' <$>
+              (x .@? "AddHeaderAction") <*> (x .@? "SNSAction") <*>
+                (x .@? "WorkmailAction")
+                <*> (x .@? "BounceAction")
+                <*> (x .@? "LambdaAction")
+                <*> (x .@? "StopAction")
+                <*> (x .@? "S3Action")
+
+instance ToQuery ReceiptAction where
+        toQuery ReceiptAction'{..}
+          = mconcat
+              ["AddHeaderAction" =: _raAddHeaderAction,
+               "SNSAction" =: _raSNSAction,
+               "WorkmailAction" =: _raWorkmailAction,
+               "BounceAction" =: _raBounceAction,
+               "LambdaAction" =: _raLambdaAction,
+               "StopAction" =: _raStopAction,
+               "S3Action" =: _raS3Action]
+
+-- | A receipt IP address filter enables you to specify whether to accept or
+-- reject mail originating from an IP address or range of IP addresses.
+--
+-- For information about setting up IP address filters, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'receiptFilter' smart constructor.
+data ReceiptFilter = ReceiptFilter'
+    { _rfName     :: !Text
+    , _rfIPFilter :: !ReceiptIPFilter
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReceiptFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rfName'
+--
+-- * 'rfIPFilter'
+receiptFilter
+    :: Text -- ^ 'rfName'
+    -> ReceiptIPFilter -- ^ 'rfIPFilter'
+    -> ReceiptFilter
+receiptFilter pName_ pIPFilter_ =
+    ReceiptFilter'
+    { _rfName = pName_
+    , _rfIPFilter = pIPFilter_
+    }
+
+-- | The name of the IP address filter. The name must:
+--
+-- -   Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.),
+--     underscores (_), or dashes (-).
+-- -   Start and end with a letter or number.
+-- -   Contain less than 64 characters.
+rfName :: Lens' ReceiptFilter Text
+rfName = lens _rfName (\ s a -> s{_rfName = a});
+
+-- | A structure that provides the IP addresses to block or allow, and
+-- whether to block or allow incoming mail from them.
+rfIPFilter :: Lens' ReceiptFilter ReceiptIPFilter
+rfIPFilter = lens _rfIPFilter (\ s a -> s{_rfIPFilter = a});
+
+instance FromXML ReceiptFilter where
+        parseXML x
+          = ReceiptFilter' <$>
+              (x .@ "Name") <*> (x .@ "IpFilter")
+
+instance ToQuery ReceiptFilter where
+        toQuery ReceiptFilter'{..}
+          = mconcat
+              ["Name" =: _rfName, "IpFilter" =: _rfIPFilter]
+
+-- | A receipt IP address filter enables you to specify whether to accept or
+-- reject mail originating from an IP address or range of IP addresses.
+--
+-- For information about setting up IP address filters, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'receiptIPFilter' smart constructor.
+data ReceiptIPFilter = ReceiptIPFilter'
+    { _rifPolicy :: !ReceiptFilterPolicy
+    , _rifCIdR   :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReceiptIPFilter' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rifPolicy'
+--
+-- * 'rifCIdR'
+receiptIPFilter
+    :: ReceiptFilterPolicy -- ^ 'rifPolicy'
+    -> Text -- ^ 'rifCIdR'
+    -> ReceiptIPFilter
+receiptIPFilter pPolicy_ pCIdR_ =
+    ReceiptIPFilter'
+    { _rifPolicy = pPolicy_
+    , _rifCIdR = pCIdR_
+    }
+
+-- | Indicates whether to block or allow incoming mail from the specified IP
+-- addresses.
+rifPolicy :: Lens' ReceiptIPFilter ReceiptFilterPolicy
+rifPolicy = lens _rifPolicy (\ s a -> s{_rifPolicy = a});
+
+-- | A single IP address or a range of IP addresses that you want to block or
+-- allow, specified in Classless Inter-Domain Routing (CIDR) notation. An
+-- example of a single email address is 10.0.0.1. An example of a range of
+-- IP addresses is 10.0.0.1\/24. For more information about CIDR notation,
+-- see <https://tools.ietf.org/html/rfc2317 RFC 2317>.
+rifCIdR :: Lens' ReceiptIPFilter Text
+rifCIdR = lens _rifCIdR (\ s a -> s{_rifCIdR = a});
+
+instance FromXML ReceiptIPFilter where
+        parseXML x
+          = ReceiptIPFilter' <$>
+              (x .@ "Policy") <*> (x .@ "Cidr")
+
+instance ToQuery ReceiptIPFilter where
+        toQuery ReceiptIPFilter'{..}
+          = mconcat
+              ["Policy" =: _rifPolicy, "Cidr" =: _rifCIdR]
+
+-- | Receipt rules enable you to specify which actions Amazon SES should take
+-- when it receives mail on behalf of one or more email addresses or
+-- domains that you own.
+--
+-- Each receipt rule defines a set of email addresses or domains to which
+-- it applies. If the email addresses or domains match at least one
+-- recipient address of the message, Amazon SES executes all of the receipt
+-- rule\'s actions on the message.
+--
+-- For information about setting up receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'receiptRule' smart constructor.
+data ReceiptRule = ReceiptRule'
+    { _rrScanEnabled :: !(Maybe Bool)
+    , _rrEnabled     :: !(Maybe Bool)
+    , _rrActions     :: !(Maybe [ReceiptAction])
+    , _rrRecipients  :: !(Maybe [Text])
+    , _rrTLSPolicy   :: !(Maybe TLSPolicy)
+    , _rrName        :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReceiptRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrScanEnabled'
+--
+-- * 'rrEnabled'
+--
+-- * 'rrActions'
+--
+-- * 'rrRecipients'
+--
+-- * 'rrTLSPolicy'
+--
+-- * 'rrName'
+receiptRule
+    :: Text -- ^ 'rrName'
+    -> ReceiptRule
+receiptRule pName_ =
+    ReceiptRule'
+    { _rrScanEnabled = Nothing
+    , _rrEnabled = Nothing
+    , _rrActions = Nothing
+    , _rrRecipients = Nothing
+    , _rrTLSPolicy = Nothing
+    , _rrName = pName_
+    }
+
+-- | If 'true', then messages to which this receipt rule applies are scanned
+-- for spam and viruses. The default value is 'true'.
+rrScanEnabled :: Lens' ReceiptRule (Maybe Bool)
+rrScanEnabled = lens _rrScanEnabled (\ s a -> s{_rrScanEnabled = a});
+
+-- | If 'true', the receipt rule is active. The default value is true.
+rrEnabled :: Lens' ReceiptRule (Maybe Bool)
+rrEnabled = lens _rrEnabled (\ s a -> s{_rrEnabled = a});
+
+-- | An ordered list of actions to perform on messages that match at least
+-- one of the recipient email addresses or domains specified in the receipt
+-- rule.
+rrActions :: Lens' ReceiptRule [ReceiptAction]
+rrActions = lens _rrActions (\ s a -> s{_rrActions = a}) . _Default . _Coerce;
+
+-- | The recipient domains and email addresses to which the receipt rule
+-- applies. If this field is not specified, this rule will match all
+-- recipients under all verified domains.
+rrRecipients :: Lens' ReceiptRule [Text]
+rrRecipients = lens _rrRecipients (\ s a -> s{_rrRecipients = a}) . _Default . _Coerce;
+
+-- | Specifies whether Amazon SES should require that incoming email is
+-- delivered over a connection encrypted with Transport Layer Security
+-- (TLS). If this parameter is set to 'Require', Amazon SES will bounce
+-- emails that are not received over TLS. The default is 'Optional'.
+rrTLSPolicy :: Lens' ReceiptRule (Maybe TLSPolicy)
+rrTLSPolicy = lens _rrTLSPolicy (\ s a -> s{_rrTLSPolicy = a});
+
+-- | The name of the receipt rule. The name must:
+--
+-- -   Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.),
+--     underscores (_), or dashes (-).
+-- -   Start and end with a letter or number.
+-- -   Contain less than 64 characters.
+rrName :: Lens' ReceiptRule Text
+rrName = lens _rrName (\ s a -> s{_rrName = a});
+
+instance FromXML ReceiptRule where
+        parseXML x
+          = ReceiptRule' <$>
+              (x .@? "ScanEnabled") <*> (x .@? "Enabled") <*>
+                (x .@? "Actions" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*>
+                (x .@? "Recipients" .!@ mempty >>=
+                   may (parseXMLList "member"))
+                <*> (x .@? "TlsPolicy")
+                <*> (x .@ "Name")
+
+instance ToQuery ReceiptRule where
+        toQuery ReceiptRule'{..}
+          = mconcat
+              ["ScanEnabled" =: _rrScanEnabled,
+               "Enabled" =: _rrEnabled,
+               "Actions" =:
+                 toQuery (toQueryList "member" <$> _rrActions),
+               "Recipients" =:
+                 toQuery (toQueryList "member" <$> _rrRecipients),
+               "TlsPolicy" =: _rrTLSPolicy, "Name" =: _rrName]
+
+-- | Information about a receipt rule set.
+--
+-- A receipt rule set is a collection of rules that specify what Amazon SES
+-- should do with mail it receives on behalf of your account\'s verified
+-- domains.
+--
+-- For information about setting up receipt rule sets, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'receiptRuleSetMetadata' smart constructor.
+data ReceiptRuleSetMetadata = ReceiptRuleSetMetadata'
+    { _rrsmName             :: !(Maybe Text)
+    , _rrsmCreatedTimestamp :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ReceiptRuleSetMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rrsmName'
+--
+-- * 'rrsmCreatedTimestamp'
+receiptRuleSetMetadata
+    :: ReceiptRuleSetMetadata
+receiptRuleSetMetadata =
+    ReceiptRuleSetMetadata'
+    { _rrsmName = Nothing
+    , _rrsmCreatedTimestamp = Nothing
+    }
+
+-- | The name of the receipt rule set. The name must:
+--
+-- -   Contain only ASCII letters (a-z, A-Z), numbers (0-9), periods (.),
+--     underscores (_), or dashes (-).
+-- -   Start and end with a letter or number.
+-- -   Contain less than 64 characters.
+rrsmName :: Lens' ReceiptRuleSetMetadata (Maybe Text)
+rrsmName = lens _rrsmName (\ s a -> s{_rrsmName = a});
+
+-- | The date and time the receipt rule set was created.
+rrsmCreatedTimestamp :: Lens' ReceiptRuleSetMetadata (Maybe UTCTime)
+rrsmCreatedTimestamp = lens _rrsmCreatedTimestamp (\ s a -> s{_rrsmCreatedTimestamp = a}) . mapping _Time;
+
+instance FromXML ReceiptRuleSetMetadata where
+        parseXML x
+          = ReceiptRuleSetMetadata' <$>
+              (x .@? "Name") <*> (x .@? "CreatedTimestamp")
+
+-- | Recipient-related information to include in the Delivery Status
+-- Notification (DSN) when an email that Amazon SES receives on your behalf
+-- bounces.
+--
+-- For information about receiving email through Amazon SES, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'recipientDsnFields' smart constructor.
+data RecipientDsnFields = RecipientDsnFields'
+    { _rdfDiagnosticCode  :: !(Maybe Text)
+    , _rdfRemoteMta       :: !(Maybe Text)
+    , _rdfFinalRecipient  :: !(Maybe Text)
+    , _rdfExtensionFields :: !(Maybe [ExtensionField])
+    , _rdfLastAttemptDate :: !(Maybe ISO8601)
+    , _rdfAction          :: !DsnAction
+    , _rdfStatus          :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'RecipientDsnFields' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rdfDiagnosticCode'
+--
+-- * 'rdfRemoteMta'
+--
+-- * 'rdfFinalRecipient'
+--
+-- * 'rdfExtensionFields'
+--
+-- * 'rdfLastAttemptDate'
+--
+-- * 'rdfAction'
+--
+-- * 'rdfStatus'
+recipientDsnFields
+    :: DsnAction -- ^ 'rdfAction'
+    -> Text -- ^ 'rdfStatus'
+    -> RecipientDsnFields
+recipientDsnFields pAction_ pStatus_ =
+    RecipientDsnFields'
+    { _rdfDiagnosticCode = Nothing
+    , _rdfRemoteMta = Nothing
+    , _rdfFinalRecipient = Nothing
+    , _rdfExtensionFields = Nothing
+    , _rdfLastAttemptDate = Nothing
+    , _rdfAction = pAction_
+    , _rdfStatus = pStatus_
+    }
+
+-- | An extended explanation of what went wrong; this is usually an SMTP
+-- response. See <https://tools.ietf.org/html/rfc3463 RFC 3463> for the
+-- correct formatting of this parameter.
+rdfDiagnosticCode :: Lens' RecipientDsnFields (Maybe Text)
+rdfDiagnosticCode = lens _rdfDiagnosticCode (\ s a -> s{_rdfDiagnosticCode = a});
+
+-- | The MTA to which the remote MTA attempted to deliver the message,
+-- formatted as specified in <https://tools.ietf.org/html/rfc3464 RFC 3464>
+-- ('mta-name-type; mta-name'). This parameter typically applies only to
+-- propagating synchronous bounces.
+rdfRemoteMta :: Lens' RecipientDsnFields (Maybe Text)
+rdfRemoteMta = lens _rdfRemoteMta (\ s a -> s{_rdfRemoteMta = a});
+
+-- | The email address to which the message was ultimately delivered. This
+-- corresponds to the 'Final-Recipient' in the DSN. If not specified,
+-- 'FinalRecipient' will be set to the 'Recipient' specified in the
+-- 'BouncedRecipientInfo' structure. Either 'FinalRecipient' or the
+-- recipient in 'BouncedRecipientInfo' must be a recipient of the original
+-- bounced message.
+--
+-- Do not prepend the 'FinalRecipient' email address with 'rfc 822;', as
+-- described in <https://tools.ietf.org/html/rfc3798 RFC 3798>.
+rdfFinalRecipient :: Lens' RecipientDsnFields (Maybe Text)
+rdfFinalRecipient = lens _rdfFinalRecipient (\ s a -> s{_rdfFinalRecipient = a});
+
+-- | Additional X-headers to include in the DSN.
+rdfExtensionFields :: Lens' RecipientDsnFields [ExtensionField]
+rdfExtensionFields = lens _rdfExtensionFields (\ s a -> s{_rdfExtensionFields = a}) . _Default . _Coerce;
+
+-- | The time the final delivery attempt was made, in
+-- <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time format.
+rdfLastAttemptDate :: Lens' RecipientDsnFields (Maybe UTCTime)
+rdfLastAttemptDate = lens _rdfLastAttemptDate (\ s a -> s{_rdfLastAttemptDate = a}) . mapping _Time;
+
+-- | The action performed by the reporting mail transfer agent (MTA) as a
+-- result of its attempt to deliver the message to the recipient address.
+-- This is required by <https://tools.ietf.org/html/rfc3464 RFC 3464>.
+rdfAction :: Lens' RecipientDsnFields DsnAction
+rdfAction = lens _rdfAction (\ s a -> s{_rdfAction = a});
+
+-- | The status code that indicates what went wrong. This is required by
+-- <https://tools.ietf.org/html/rfc3464 RFC 3464>.
+rdfStatus :: Lens' RecipientDsnFields Text
+rdfStatus = lens _rdfStatus (\ s a -> s{_rdfStatus = a});
+
+instance ToQuery RecipientDsnFields where
+        toQuery RecipientDsnFields'{..}
+          = mconcat
+              ["DiagnosticCode" =: _rdfDiagnosticCode,
+               "RemoteMta" =: _rdfRemoteMta,
+               "FinalRecipient" =: _rdfFinalRecipient,
+               "ExtensionFields" =:
+                 toQuery
+                   (toQueryList "member" <$> _rdfExtensionFields),
+               "LastAttemptDate" =: _rdfLastAttemptDate,
+               "Action" =: _rdfAction, "Status" =: _rdfStatus]
+
+-- | When included in a receipt rule, this action saves the received message
+-- to an Amazon Simple Storage Service (Amazon S3) bucket and, optionally,
+-- publishes a notification to Amazon Simple Notification Service (Amazon
+-- SNS).
+--
+-- To enable Amazon SES to write emails to your Amazon S3 bucket, use an
+-- AWS KMS key to encrypt your emails, or publish to an Amazon SNS topic of
+-- another account, Amazon SES must have permission to access those
+-- resources. For information about giving permissions, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- When you save your emails to an Amazon S3 bucket, the maximum email size
+-- (including headers) is 30 MB. Emails larger than that will bounce.
+--
+-- For information about specifying Amazon S3 actions in receipt rules, see
+-- the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-s3.html Amazon SES Developer Guide>.
+--
+-- /See:/ 's3Action' smart constructor.
+data S3Action = S3Action'
+    { _s3KMSKeyARN       :: !(Maybe Text)
+    , _s3TopicARN        :: !(Maybe Text)
+    , _s3ObjectKeyPrefix :: !(Maybe Text)
+    , _s3BucketName      :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'S3Action' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 's3KMSKeyARN'
+--
+-- * 's3TopicARN'
+--
+-- * 's3ObjectKeyPrefix'
+--
+-- * 's3BucketName'
+s3Action
+    :: Text -- ^ 's3BucketName'
+    -> S3Action
+s3Action pBucketName_ =
+    S3Action'
+    { _s3KMSKeyARN = Nothing
+    , _s3TopicARN = Nothing
+    , _s3ObjectKeyPrefix = Nothing
+    , _s3BucketName = pBucketName_
+    }
+
+-- | The customer master key that Amazon SES should use to encrypt your
+-- emails before saving them to the Amazon S3 bucket. You can use the
+-- default master key or a custom master key you created in AWS KMS as
+-- follows:
+--
+-- -   To use the default master key, provide an ARN in the form of
+--     'arn:aws:kms:REGION:ACCOUNT-ID-WITHOUT-HYPHENS:alias\/aws\/ses'. For
+--     example, if your AWS account ID is 123456789012 and you want to use
+--     the default master key in the US West (Oregon) region, the ARN of
+--     the default master key would be
+--     'arn:aws:kms:us-west-2:123456789012:alias\/aws\/ses'. If you use the
+--     default master key, you don\'t need to perform any extra steps to
+--     give Amazon SES permission to use the key.
+-- -   To use a custom master key you created in AWS KMS, provide the ARN
+--     of the master key and ensure that you add a statement to your key\'s
+--     policy to give Amazon SES permission to use it. For more information
+--     about giving permissions, see the
+--     <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- For more information about key policies, see the
+-- <http://docs.aws.amazon.com/kms/latest/developerguide/concepts.html AWS KMS Developer Guide>.
+-- If you do not specify a master key, Amazon SES will not encrypt your
+-- emails.
+--
+-- Your mail is encrypted by Amazon SES using the Amazon S3 encryption
+-- client before the mail is submitted to Amazon S3 for storage. It is not
+-- encrypted using Amazon S3 server-side encryption. This means that you
+-- must use the Amazon S3 encryption client to decrypt the email after
+-- retrieving it from Amazon S3, as the service has no access to use your
+-- AWS KMS keys for decryption. This encryption client is currently
+-- available with the <https://aws.amazon.com/sdk-for-java/ AWS Java SDK>
+-- and <https://aws.amazon.com/sdk-for-ruby/ AWS Ruby SDK> only. For more
+-- information about client-side encryption using AWS KMS master keys, see
+-- the
+-- <http://alpha-docs-aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html Amazon S3 Developer Guide>.
+s3KMSKeyARN :: Lens' S3Action (Maybe Text)
+s3KMSKeyARN = lens _s3KMSKeyARN (\ s a -> s{_s3KMSKeyARN = a});
+
+-- | The ARN of the Amazon SNS topic to notify when the message is saved to
+-- the Amazon S3 bucket. An example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+s3TopicARN :: Lens' S3Action (Maybe Text)
+s3TopicARN = lens _s3TopicARN (\ s a -> s{_s3TopicARN = a});
+
+-- | The key prefix of the Amazon S3 bucket. The key prefix is similar to a
+-- directory name that enables you to store similar data under the same
+-- directory in a bucket.
+s3ObjectKeyPrefix :: Lens' S3Action (Maybe Text)
+s3ObjectKeyPrefix = lens _s3ObjectKeyPrefix (\ s a -> s{_s3ObjectKeyPrefix = a});
+
+-- | The name of the Amazon S3 bucket to which to save the received email.
+s3BucketName :: Lens' S3Action Text
+s3BucketName = lens _s3BucketName (\ s a -> s{_s3BucketName = a});
+
+instance FromXML S3Action where
+        parseXML x
+          = S3Action' <$>
+              (x .@? "KmsKeyArn") <*> (x .@? "TopicArn") <*>
+                (x .@? "ObjectKeyPrefix")
+                <*> (x .@ "BucketName")
+
+instance ToQuery S3Action where
+        toQuery S3Action'{..}
+          = mconcat
+              ["KmsKeyArn" =: _s3KMSKeyARN,
+               "TopicArn" =: _s3TopicARN,
+               "ObjectKeyPrefix" =: _s3ObjectKeyPrefix,
+               "BucketName" =: _s3BucketName]
+
+-- | When included in a receipt rule, this action publishes a notification to
+-- Amazon Simple Notification Service (Amazon SNS). This action includes a
+-- complete copy of the email content in the Amazon SNS notifications.
+-- Amazon SNS notifications for all other actions simply provide
+-- information about the email. They do not include the email content
+-- itself.
+--
+-- If you own the Amazon SNS topic, you don\'t need to do anything to give
+-- Amazon SES permission to publish emails to it. However, if you don\'t
+-- own the Amazon SNS topic, you need to attach a policy to the topic to
+-- give Amazon SES permissions to access it. For information about giving
+-- permissions, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- You can only publish emails that are 150 KB or less (including the
+-- header) to Amazon SNS. Larger emails will bounce. If you anticipate
+-- emails larger than 150 KB, use the S3 action instead.
+--
+-- For information about using a receipt rule to publish an Amazon SNS
+-- notification, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-sns.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'snsAction' smart constructor.
+newtype SNSAction = SNSAction'
+    { _saTopicARN :: Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SNSAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'saTopicARN'
+snsAction
+    :: Text -- ^ 'saTopicARN'
+    -> SNSAction
+snsAction pTopicARN_ =
+    SNSAction'
+    { _saTopicARN = pTopicARN_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to notify. An
+-- example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+saTopicARN :: Lens' SNSAction Text
+saTopicARN = lens _saTopicARN (\ s a -> s{_saTopicARN = a});
+
+instance FromXML SNSAction where
+        parseXML x = SNSAction' <$> (x .@ "TopicArn")
+
+instance ToQuery SNSAction where
+        toQuery SNSAction'{..}
+          = mconcat ["TopicArn" =: _saTopicARN]
+
+-- | Represents sending statistics data. Each 'SendDataPoint' contains
+-- statistics for a 15-minute period of sending activity.
+--
+-- /See:/ 'sendDataPoint' smart constructor.
+data SendDataPoint = SendDataPoint'
+    { _sdpRejects          :: !(Maybe Integer)
+    , _sdpComplaints       :: !(Maybe Integer)
+    , _sdpDeliveryAttempts :: !(Maybe Integer)
+    , _sdpBounces          :: !(Maybe Integer)
+    , _sdpTimestamp        :: !(Maybe ISO8601)
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'SendDataPoint' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sdpRejects'
+--
+-- * 'sdpComplaints'
+--
+-- * 'sdpDeliveryAttempts'
+--
+-- * 'sdpBounces'
+--
+-- * 'sdpTimestamp'
+sendDataPoint
+    :: SendDataPoint
+sendDataPoint =
+    SendDataPoint'
+    { _sdpRejects = Nothing
+    , _sdpComplaints = Nothing
+    , _sdpDeliveryAttempts = Nothing
+    , _sdpBounces = Nothing
+    , _sdpTimestamp = Nothing
+    }
+
+-- | Number of emails rejected by Amazon SES.
+sdpRejects :: Lens' SendDataPoint (Maybe Integer)
+sdpRejects = lens _sdpRejects (\ s a -> s{_sdpRejects = a});
+
+-- | Number of unwanted emails that were rejected by recipients.
+sdpComplaints :: Lens' SendDataPoint (Maybe Integer)
+sdpComplaints = lens _sdpComplaints (\ s a -> s{_sdpComplaints = a});
+
+-- | Number of emails that have been enqueued for sending.
+sdpDeliveryAttempts :: Lens' SendDataPoint (Maybe Integer)
+sdpDeliveryAttempts = lens _sdpDeliveryAttempts (\ s a -> s{_sdpDeliveryAttempts = a});
+
+-- | Number of emails that have bounced.
+sdpBounces :: Lens' SendDataPoint (Maybe Integer)
+sdpBounces = lens _sdpBounces (\ s a -> s{_sdpBounces = a});
+
+-- | Time of the data point.
+sdpTimestamp :: Lens' SendDataPoint (Maybe UTCTime)
+sdpTimestamp = lens _sdpTimestamp (\ s a -> s{_sdpTimestamp = a}) . mapping _Time;
+
+instance FromXML SendDataPoint where
+        parseXML x
+          = SendDataPoint' <$>
+              (x .@? "Rejects") <*> (x .@? "Complaints") <*>
+                (x .@? "DeliveryAttempts")
+                <*> (x .@? "Bounces")
+                <*> (x .@? "Timestamp")
+
+-- | When included in a receipt rule, this action terminates the evaluation
+-- of the receipt rule set and, optionally, publishes a notification to
+-- Amazon Simple Notification Service (Amazon SNS).
+--
+-- For information about setting a stop action in a receipt rule, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-stop.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'stopAction' smart constructor.
+data StopAction = StopAction'
+    { _sTopicARN :: !(Maybe Text)
+    , _sScope    :: !StopScope
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'StopAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sTopicARN'
+--
+-- * 'sScope'
+stopAction
+    :: StopScope -- ^ 'sScope'
+    -> StopAction
+stopAction pScope_ =
+    StopAction'
+    { _sTopicARN = Nothing
+    , _sScope = pScope_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when
+-- the stop action is taken. An example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+sTopicARN :: Lens' StopAction (Maybe Text)
+sTopicARN = lens _sTopicARN (\ s a -> s{_sTopicARN = a});
+
+-- | The scope to which the Stop action applies. That is, what is being
+-- stopped.
+sScope :: Lens' StopAction StopScope
+sScope = lens _sScope (\ s a -> s{_sScope = a});
+
+instance FromXML StopAction where
+        parseXML x
+          = StopAction' <$>
+              (x .@? "TopicArn") <*> (x .@ "Scope")
+
+instance ToQuery StopAction where
+        toQuery StopAction'{..}
+          = mconcat
+              ["TopicArn" =: _sTopicARN, "Scope" =: _sScope]
+
+-- | When included in a receipt rule, this action calls Amazon WorkMail and,
+-- optionally, publishes a notification to Amazon Simple Notification
+-- Service (Amazon SNS). You will typically not use this action directly
+-- because Amazon WorkMail adds the rule automatically during its setup
+-- procedure.
+--
+-- For information using a receipt rule to call Amazon WorkMail, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-workmail.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'workmailAction' smart constructor.
+data WorkmailAction = WorkmailAction'
+    { _waTopicARN        :: !(Maybe Text)
+    , _waOrganizationARN :: !Text
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'WorkmailAction' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'waTopicARN'
+--
+-- * 'waOrganizationARN'
+workmailAction
+    :: Text -- ^ 'waOrganizationARN'
+    -> WorkmailAction
+workmailAction pOrganizationARN_ =
+    WorkmailAction'
+    { _waTopicARN = Nothing
+    , _waOrganizationARN = pOrganizationARN_
+    }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic to notify when
+-- the WorkMail action is called. An example of an Amazon SNS topic ARN is
+-- 'arn:aws:sns:us-west-2:123456789012:MyTopic'. For more information about
+-- Amazon SNS topics, see the
+-- <http://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+waTopicARN :: Lens' WorkmailAction (Maybe Text)
+waTopicARN = lens _waTopicARN (\ s a -> s{_waTopicARN = a});
+
+-- | The ARN of the Amazon WorkMail organization. An example of an Amazon
+-- WorkMail organization ARN is
+-- 'arn:aws:workmail:us-west-2:123456789012:organization\/m-68755160c4cb4e29a2b2f8fb58f359d7'.
+-- For information about Amazon WorkMail organizations, see the
+-- <http://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html Amazon WorkMail Administrator Guide>.
+waOrganizationARN :: Lens' WorkmailAction Text
+waOrganizationARN = lens _waOrganizationARN (\ s a -> s{_waOrganizationARN = a});
+
+instance FromXML WorkmailAction where
+        parseXML x
+          = WorkmailAction' <$>
+              (x .@? "TopicArn") <*> (x .@ "OrganizationArn")
+
+instance ToQuery WorkmailAction where
+        toQuery WorkmailAction'{..}
+          = mconcat
+              ["TopicArn" =: _waTopicARN,
+               "OrganizationArn" =: _waOrganizationARN]
diff --git a/gen/Network/AWS/SES/Types/Sum.hs b/gen/Network/AWS/SES/Types/Sum.hs
--- a/gen/Network/AWS/SES/Types/Sum.hs
+++ b/gen/Network/AWS/SES/Types/Sum.hs
@@ -19,6 +19,71 @@
 
 import           Network.AWS.Prelude
 
+data BounceType
+    = BTContentRejected
+    | BTDoesNotExist
+    | BTExceededQuota
+    | BTMessageTooLarge
+    | BTTemporaryFailure
+    | BTUndefined
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText BounceType where
+    parser = takeLowerText >>= \case
+        "contentrejected" -> pure BTContentRejected
+        "doesnotexist" -> pure BTDoesNotExist
+        "exceededquota" -> pure BTExceededQuota
+        "messagetoolarge" -> pure BTMessageTooLarge
+        "temporaryfailure" -> pure BTTemporaryFailure
+        "undefined" -> pure BTUndefined
+        e -> fromTextError $ "Failure parsing BounceType from value: '" <> e
+           <> "'. Accepted values: ContentRejected, DoesNotExist, ExceededQuota, MessageTooLarge, TemporaryFailure, Undefined"
+
+instance ToText BounceType where
+    toText = \case
+        BTContentRejected -> "ContentRejected"
+        BTDoesNotExist -> "DoesNotExist"
+        BTExceededQuota -> "ExceededQuota"
+        BTMessageTooLarge -> "MessageTooLarge"
+        BTTemporaryFailure -> "TemporaryFailure"
+        BTUndefined -> "Undefined"
+
+instance Hashable     BounceType
+instance ToByteString BounceType
+instance ToQuery      BounceType
+instance ToHeader     BounceType
+
+data DsnAction
+    = DADelayed
+    | DADelivered
+    | DAExpanded
+    | DAFailed
+    | DARelayed
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText DsnAction where
+    parser = takeLowerText >>= \case
+        "delayed" -> pure DADelayed
+        "delivered" -> pure DADelivered
+        "expanded" -> pure DAExpanded
+        "failed" -> pure DAFailed
+        "relayed" -> pure DARelayed
+        e -> fromTextError $ "Failure parsing DsnAction from value: '" <> e
+           <> "'. Accepted values: delayed, delivered, expanded, failed, relayed"
+
+instance ToText DsnAction where
+    toText = \case
+        DADelayed -> "delayed"
+        DADelivered -> "delivered"
+        DAExpanded -> "expanded"
+        DAFailed -> "failed"
+        DARelayed -> "relayed"
+
+instance Hashable     DsnAction
+instance ToByteString DsnAction
+instance ToQuery      DsnAction
+instance ToHeader     DsnAction
+
 data IdentityType
     = Domain
     | EmailAddress
@@ -41,6 +106,31 @@
 instance ToQuery      IdentityType
 instance ToHeader     IdentityType
 
+data InvocationType
+    = Event
+    | RequestResponse
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText InvocationType where
+    parser = takeLowerText >>= \case
+        "event" -> pure Event
+        "requestresponse" -> pure RequestResponse
+        e -> fromTextError $ "Failure parsing InvocationType from value: '" <> e
+           <> "'. Accepted values: Event, RequestResponse"
+
+instance ToText InvocationType where
+    toText = \case
+        Event -> "Event"
+        RequestResponse -> "RequestResponse"
+
+instance Hashable     InvocationType
+instance ToByteString InvocationType
+instance ToQuery      InvocationType
+instance ToHeader     InvocationType
+
+instance FromXML InvocationType where
+    parseXML = parseXMLText "InvocationType"
+
 data NotificationType
     = Bounce
     | Complaint
@@ -65,6 +155,78 @@
 instance ToByteString NotificationType
 instance ToQuery      NotificationType
 instance ToHeader     NotificationType
+
+data ReceiptFilterPolicy
+    = Allow
+    | Block
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText ReceiptFilterPolicy where
+    parser = takeLowerText >>= \case
+        "allow" -> pure Allow
+        "block" -> pure Block
+        e -> fromTextError $ "Failure parsing ReceiptFilterPolicy from value: '" <> e
+           <> "'. Accepted values: Allow, Block"
+
+instance ToText ReceiptFilterPolicy where
+    toText = \case
+        Allow -> "Allow"
+        Block -> "Block"
+
+instance Hashable     ReceiptFilterPolicy
+instance ToByteString ReceiptFilterPolicy
+instance ToQuery      ReceiptFilterPolicy
+instance ToHeader     ReceiptFilterPolicy
+
+instance FromXML ReceiptFilterPolicy where
+    parseXML = parseXMLText "ReceiptFilterPolicy"
+
+data StopScope =
+    RuleSet
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText StopScope where
+    parser = takeLowerText >>= \case
+        "ruleset" -> pure RuleSet
+        e -> fromTextError $ "Failure parsing StopScope from value: '" <> e
+           <> "'. Accepted values: RuleSet"
+
+instance ToText StopScope where
+    toText = \case
+        RuleSet -> "RuleSet"
+
+instance Hashable     StopScope
+instance ToByteString StopScope
+instance ToQuery      StopScope
+instance ToHeader     StopScope
+
+instance FromXML StopScope where
+    parseXML = parseXMLText "StopScope"
+
+data TLSPolicy
+    = Optional
+    | Require
+    deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)
+
+instance FromText TLSPolicy where
+    parser = takeLowerText >>= \case
+        "optional" -> pure Optional
+        "require" -> pure Require
+        e -> fromTextError $ "Failure parsing TLSPolicy from value: '" <> e
+           <> "'. Accepted values: Optional, Require"
+
+instance ToText TLSPolicy where
+    toText = \case
+        Optional -> "Optional"
+        Require -> "Require"
+
+instance Hashable     TLSPolicy
+instance ToByteString TLSPolicy
+instance ToQuery      TLSPolicy
+instance ToHeader     TLSPolicy
+
+instance FromXML TLSPolicy where
+    parseXML = parseXMLText "TLSPolicy"
 
 data VerificationStatus
     = Failed
diff --git a/gen/Network/AWS/SES/UpdateReceiptRule.hs b/gen/Network/AWS/SES/UpdateReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/AWS/SES/UpdateReceiptRule.hs
@@ -0,0 +1,123 @@
+{-# 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.SES.UpdateReceiptRule
+-- Copyright   : (c) 2013-2015 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a receipt rule.
+--
+-- For information about managing receipt rules, see the
+-- <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- This action is throttled at one request per second.
+--
+-- /See:/ <http://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateReceiptRule.html AWS API Reference> for UpdateReceiptRule.
+module Network.AWS.SES.UpdateReceiptRule
+    (
+    -- * Creating a Request
+      updateReceiptRule
+    , UpdateReceiptRule
+    -- * Request Lenses
+    , urrRuleSetName
+    , urrRule
+
+    -- * Destructuring the Response
+    , updateReceiptRuleResponse
+    , UpdateReceiptRuleResponse
+    -- * Response Lenses
+    , urrrsResponseStatus
+    ) where
+
+import           Network.AWS.Prelude
+import           Network.AWS.Request
+import           Network.AWS.Response
+import           Network.AWS.SES.Types
+import           Network.AWS.SES.Types.Product
+
+-- | /See:/ 'updateReceiptRule' smart constructor.
+data UpdateReceiptRule = UpdateReceiptRule'
+    { _urrRuleSetName :: !Text
+    , _urrRule        :: !ReceiptRule
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateReceiptRule' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urrRuleSetName'
+--
+-- * 'urrRule'
+updateReceiptRule
+    :: Text -- ^ 'urrRuleSetName'
+    -> ReceiptRule -- ^ 'urrRule'
+    -> UpdateReceiptRule
+updateReceiptRule pRuleSetName_ pRule_ =
+    UpdateReceiptRule'
+    { _urrRuleSetName = pRuleSetName_
+    , _urrRule = pRule_
+    }
+
+-- | The name of the receipt rule set to which the receipt rule belongs.
+urrRuleSetName :: Lens' UpdateReceiptRule Text
+urrRuleSetName = lens _urrRuleSetName (\ s a -> s{_urrRuleSetName = a});
+
+-- | A data structure that contains the updated receipt rule information.
+urrRule :: Lens' UpdateReceiptRule ReceiptRule
+urrRule = lens _urrRule (\ s a -> s{_urrRule = a});
+
+instance AWSRequest UpdateReceiptRule where
+        type Rs UpdateReceiptRule = UpdateReceiptRuleResponse
+        request = postQuery sES
+        response
+          = receiveXMLWrapper "UpdateReceiptRuleResult"
+              (\ s h x ->
+                 UpdateReceiptRuleResponse' <$> (pure (fromEnum s)))
+
+instance ToHeaders UpdateReceiptRule where
+        toHeaders = const mempty
+
+instance ToPath UpdateReceiptRule where
+        toPath = const "/"
+
+instance ToQuery UpdateReceiptRule where
+        toQuery UpdateReceiptRule'{..}
+          = mconcat
+              ["Action" =: ("UpdateReceiptRule" :: ByteString),
+               "Version" =: ("2010-12-01" :: ByteString),
+               "RuleSetName" =: _urrRuleSetName, "Rule" =: _urrRule]
+
+-- | /See:/ 'updateReceiptRuleResponse' smart constructor.
+newtype UpdateReceiptRuleResponse = UpdateReceiptRuleResponse'
+    { _urrrsResponseStatus :: Int
+    } deriving (Eq,Read,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'UpdateReceiptRuleResponse' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'urrrsResponseStatus'
+updateReceiptRuleResponse
+    :: Int -- ^ 'urrrsResponseStatus'
+    -> UpdateReceiptRuleResponse
+updateReceiptRuleResponse pResponseStatus_ =
+    UpdateReceiptRuleResponse'
+    { _urrrsResponseStatus = pResponseStatus_
+    }
+
+-- | The response status code.
+urrrsResponseStatus :: Lens' UpdateReceiptRuleResponse Int
+urrrsResponseStatus = lens _urrrsResponseStatus (\ s a -> s{_urrrsResponseStatus = a});
diff --git a/test/Test/AWS/Gen/SES.hs b/test/Test/AWS/Gen/SES.hs
--- a/test/Test/AWS/Gen/SES.hs
+++ b/test/Test/AWS/Gen/SES.hs
@@ -28,7 +28,10 @@
 -- fixtures :: TestTree
 -- fixtures =
 --     [ testGroup "request"
---         [ testGetSendQuota $
+--         [ testCreateReceiptRuleSet $
+--             createReceiptRuleSet
+--
+--         , testGetSendQuota $
 --             getSendQuota
 --
 --         , testPutIdentityPolicy $
@@ -46,6 +49,15 @@
 --         , testSetIdentityDkimEnabled $
 --             setIdentityDkimEnabled
 --
+--         , testListReceiptFilters $
+--             listReceiptFilters
+--
+--         , testDescribeReceiptRuleSet $
+--             describeReceiptRuleSet
+--
+--         , testCreateReceiptFilter $
+--             createReceiptFilter
+--
 --         , testSetIdentityFeedbackForwardingEnabled $
 --             setIdentityFeedbackForwardingEnabled
 --
@@ -58,6 +70,21 @@
 --         , testVerifyDomainIdentity $
 --             verifyDomainIdentity
 --
+--         , testReorderReceiptRuleSet $
+--             reorderReceiptRuleSet
+--
+--         , testListReceiptRuleSets $
+--             listReceiptRuleSets
+--
+--         , testDeleteReceiptRuleSet $
+--             deleteReceiptRuleSet
+--
+--         , testSetReceiptRulePosition $
+--             setReceiptRulePosition
+--
+--         , testSendBounce $
+--             sendBounce
+--
 --         , testGetIdentityDkimAttributes $
 --             getIdentityDkimAttributes
 --
@@ -73,6 +100,9 @@
 --         , testDeleteIdentity $
 --             deleteIdentity
 --
+--         , testDescribeReceiptRule $
+--             describeReceiptRule
+--
 --         , testListIdentities $
 --             listIdentities
 --
@@ -85,6 +115,9 @@
 --         , testDeleteVerifiedEmailAddress $
 --             deleteVerifiedEmailAddress
 --
+--         , testDeleteReceiptFilter $
+--             deleteReceiptFilter
+--
 --         , testListVerifiedEmailAddresses $
 --             listVerifiedEmailAddresses
 --
@@ -94,10 +127,31 @@
 --         , testSendEmail $
 --             sendEmail
 --
+--         , testDeleteReceiptRule $
+--             deleteReceiptRule
+--
+--         , testUpdateReceiptRule $
+--             updateReceiptRule
+--
+--         , testCloneReceiptRuleSet $
+--             cloneReceiptRuleSet
+--
+--         , testCreateReceiptRule $
+--             createReceiptRule
+--
+--         , testSetActiveReceiptRuleSet $
+--             setActiveReceiptRuleSet
+--
+--         , testDescribeActiveReceiptRuleSet $
+--             describeActiveReceiptRuleSet
+--
 --           ]
 
 --     , testGroup "response"
---         [ testGetSendQuotaResponse $
+--         [ testCreateReceiptRuleSetResponse $
+--             createReceiptRuleSetResponse
+--
+--         , testGetSendQuotaResponse $
 --             getSendQuotaResponse
 --
 --         , testPutIdentityPolicyResponse $
@@ -115,6 +169,15 @@
 --         , testSetIdentityDkimEnabledResponse $
 --             setIdentityDkimEnabledResponse
 --
+--         , testListReceiptFiltersResponse $
+--             listReceiptFiltersResponse
+--
+--         , testDescribeReceiptRuleSetResponse $
+--             describeReceiptRuleSetResponse
+--
+--         , testCreateReceiptFilterResponse $
+--             createReceiptFilterResponse
+--
 --         , testSetIdentityFeedbackForwardingEnabledResponse $
 --             setIdentityFeedbackForwardingEnabledResponse
 --
@@ -127,6 +190,21 @@
 --         , testVerifyDomainIdentityResponse $
 --             verifyDomainIdentityResponse
 --
+--         , testReorderReceiptRuleSetResponse $
+--             reorderReceiptRuleSetResponse
+--
+--         , testListReceiptRuleSetsResponse $
+--             listReceiptRuleSetsResponse
+--
+--         , testDeleteReceiptRuleSetResponse $
+--             deleteReceiptRuleSetResponse
+--
+--         , testSetReceiptRulePositionResponse $
+--             setReceiptRulePositionResponse
+--
+--         , testSendBounceResponse $
+--             sendBounceResponse
+--
 --         , testGetIdentityDkimAttributesResponse $
 --             getIdentityDkimAttributesResponse
 --
@@ -142,6 +220,9 @@
 --         , testDeleteIdentityResponse $
 --             deleteIdentityResponse
 --
+--         , testDescribeReceiptRuleResponse $
+--             describeReceiptRuleResponse
+--
 --         , testListIdentitiesResponse $
 --             listIdentitiesResponse
 --
@@ -154,6 +235,9 @@
 --         , testDeleteVerifiedEmailAddressResponse $
 --             deleteVerifiedEmailAddressResponse
 --
+--         , testDeleteReceiptFilterResponse $
+--             deleteReceiptFilterResponse
+--
 --         , testListVerifiedEmailAddressesResponse $
 --             listVerifiedEmailAddressesResponse
 --
@@ -163,11 +247,34 @@
 --         , testSendEmailResponse $
 --             sendEmailResponse
 --
+--         , testDeleteReceiptRuleResponse $
+--             deleteReceiptRuleResponse
+--
+--         , testUpdateReceiptRuleResponse $
+--             updateReceiptRuleResponse
+--
+--         , testCloneReceiptRuleSetResponse $
+--             cloneReceiptRuleSetResponse
+--
+--         , testCreateReceiptRuleResponse $
+--             createReceiptRuleResponse
+--
+--         , testSetActiveReceiptRuleSetResponse $
+--             setActiveReceiptRuleSetResponse
+--
+--         , testDescribeActiveReceiptRuleSetResponse $
+--             describeActiveReceiptRuleSetResponse
+--
 --           ]
 --     ]
 
 -- Requests
 
+testCreateReceiptRuleSet :: CreateReceiptRuleSet -> TestTree
+testCreateReceiptRuleSet = req
+    "CreateReceiptRuleSet"
+    "fixture/CreateReceiptRuleSet.yaml"
+
 testGetSendQuota :: GetSendQuota -> TestTree
 testGetSendQuota = req
     "GetSendQuota"
@@ -198,6 +305,21 @@
     "SetIdentityDkimEnabled"
     "fixture/SetIdentityDkimEnabled.yaml"
 
+testListReceiptFilters :: ListReceiptFilters -> TestTree
+testListReceiptFilters = req
+    "ListReceiptFilters"
+    "fixture/ListReceiptFilters.yaml"
+
+testDescribeReceiptRuleSet :: DescribeReceiptRuleSet -> TestTree
+testDescribeReceiptRuleSet = req
+    "DescribeReceiptRuleSet"
+    "fixture/DescribeReceiptRuleSet.yaml"
+
+testCreateReceiptFilter :: CreateReceiptFilter -> TestTree
+testCreateReceiptFilter = req
+    "CreateReceiptFilter"
+    "fixture/CreateReceiptFilter.yaml"
+
 testSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabled -> TestTree
 testSetIdentityFeedbackForwardingEnabled = req
     "SetIdentityFeedbackForwardingEnabled"
@@ -218,6 +340,31 @@
     "VerifyDomainIdentity"
     "fixture/VerifyDomainIdentity.yaml"
 
+testReorderReceiptRuleSet :: ReorderReceiptRuleSet -> TestTree
+testReorderReceiptRuleSet = req
+    "ReorderReceiptRuleSet"
+    "fixture/ReorderReceiptRuleSet.yaml"
+
+testListReceiptRuleSets :: ListReceiptRuleSets -> TestTree
+testListReceiptRuleSets = req
+    "ListReceiptRuleSets"
+    "fixture/ListReceiptRuleSets.yaml"
+
+testDeleteReceiptRuleSet :: DeleteReceiptRuleSet -> TestTree
+testDeleteReceiptRuleSet = req
+    "DeleteReceiptRuleSet"
+    "fixture/DeleteReceiptRuleSet.yaml"
+
+testSetReceiptRulePosition :: SetReceiptRulePosition -> TestTree
+testSetReceiptRulePosition = req
+    "SetReceiptRulePosition"
+    "fixture/SetReceiptRulePosition.yaml"
+
+testSendBounce :: SendBounce -> TestTree
+testSendBounce = req
+    "SendBounce"
+    "fixture/SendBounce.yaml"
+
 testGetIdentityDkimAttributes :: GetIdentityDkimAttributes -> TestTree
 testGetIdentityDkimAttributes = req
     "GetIdentityDkimAttributes"
@@ -243,6 +390,11 @@
     "DeleteIdentity"
     "fixture/DeleteIdentity.yaml"
 
+testDescribeReceiptRule :: DescribeReceiptRule -> TestTree
+testDescribeReceiptRule = req
+    "DescribeReceiptRule"
+    "fixture/DescribeReceiptRule.yaml"
+
 testListIdentities :: ListIdentities -> TestTree
 testListIdentities = req
     "ListIdentities"
@@ -263,6 +415,11 @@
     "DeleteVerifiedEmailAddress"
     "fixture/DeleteVerifiedEmailAddress.yaml"
 
+testDeleteReceiptFilter :: DeleteReceiptFilter -> TestTree
+testDeleteReceiptFilter = req
+    "DeleteReceiptFilter"
+    "fixture/DeleteReceiptFilter.yaml"
+
 testListVerifiedEmailAddresses :: ListVerifiedEmailAddresses -> TestTree
 testListVerifiedEmailAddresses = req
     "ListVerifiedEmailAddresses"
@@ -278,8 +435,45 @@
     "SendEmail"
     "fixture/SendEmail.yaml"
 
+testDeleteReceiptRule :: DeleteReceiptRule -> TestTree
+testDeleteReceiptRule = req
+    "DeleteReceiptRule"
+    "fixture/DeleteReceiptRule.yaml"
+
+testUpdateReceiptRule :: UpdateReceiptRule -> TestTree
+testUpdateReceiptRule = req
+    "UpdateReceiptRule"
+    "fixture/UpdateReceiptRule.yaml"
+
+testCloneReceiptRuleSet :: CloneReceiptRuleSet -> TestTree
+testCloneReceiptRuleSet = req
+    "CloneReceiptRuleSet"
+    "fixture/CloneReceiptRuleSet.yaml"
+
+testCreateReceiptRule :: CreateReceiptRule -> TestTree
+testCreateReceiptRule = req
+    "CreateReceiptRule"
+    "fixture/CreateReceiptRule.yaml"
+
+testSetActiveReceiptRuleSet :: SetActiveReceiptRuleSet -> TestTree
+testSetActiveReceiptRuleSet = req
+    "SetActiveReceiptRuleSet"
+    "fixture/SetActiveReceiptRuleSet.yaml"
+
+testDescribeActiveReceiptRuleSet :: DescribeActiveReceiptRuleSet -> TestTree
+testDescribeActiveReceiptRuleSet = req
+    "DescribeActiveReceiptRuleSet"
+    "fixture/DescribeActiveReceiptRuleSet.yaml"
+
 -- Responses
 
+testCreateReceiptRuleSetResponse :: CreateReceiptRuleSetResponse -> TestTree
+testCreateReceiptRuleSetResponse = res
+    "CreateReceiptRuleSetResponse"
+    "fixture/CreateReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy CreateReceiptRuleSet)
+
 testGetSendQuotaResponse :: GetSendQuotaResponse -> TestTree
 testGetSendQuotaResponse = res
     "GetSendQuotaResponse"
@@ -322,6 +516,27 @@
     sES
     (Proxy :: Proxy SetIdentityDkimEnabled)
 
+testListReceiptFiltersResponse :: ListReceiptFiltersResponse -> TestTree
+testListReceiptFiltersResponse = res
+    "ListReceiptFiltersResponse"
+    "fixture/ListReceiptFiltersResponse.proto"
+    sES
+    (Proxy :: Proxy ListReceiptFilters)
+
+testDescribeReceiptRuleSetResponse :: DescribeReceiptRuleSetResponse -> TestTree
+testDescribeReceiptRuleSetResponse = res
+    "DescribeReceiptRuleSetResponse"
+    "fixture/DescribeReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy DescribeReceiptRuleSet)
+
+testCreateReceiptFilterResponse :: CreateReceiptFilterResponse -> TestTree
+testCreateReceiptFilterResponse = res
+    "CreateReceiptFilterResponse"
+    "fixture/CreateReceiptFilterResponse.proto"
+    sES
+    (Proxy :: Proxy CreateReceiptFilter)
+
 testSetIdentityFeedbackForwardingEnabledResponse :: SetIdentityFeedbackForwardingEnabledResponse -> TestTree
 testSetIdentityFeedbackForwardingEnabledResponse = res
     "SetIdentityFeedbackForwardingEnabledResponse"
@@ -350,6 +565,41 @@
     sES
     (Proxy :: Proxy VerifyDomainIdentity)
 
+testReorderReceiptRuleSetResponse :: ReorderReceiptRuleSetResponse -> TestTree
+testReorderReceiptRuleSetResponse = res
+    "ReorderReceiptRuleSetResponse"
+    "fixture/ReorderReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy ReorderReceiptRuleSet)
+
+testListReceiptRuleSetsResponse :: ListReceiptRuleSetsResponse -> TestTree
+testListReceiptRuleSetsResponse = res
+    "ListReceiptRuleSetsResponse"
+    "fixture/ListReceiptRuleSetsResponse.proto"
+    sES
+    (Proxy :: Proxy ListReceiptRuleSets)
+
+testDeleteReceiptRuleSetResponse :: DeleteReceiptRuleSetResponse -> TestTree
+testDeleteReceiptRuleSetResponse = res
+    "DeleteReceiptRuleSetResponse"
+    "fixture/DeleteReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy DeleteReceiptRuleSet)
+
+testSetReceiptRulePositionResponse :: SetReceiptRulePositionResponse -> TestTree
+testSetReceiptRulePositionResponse = res
+    "SetReceiptRulePositionResponse"
+    "fixture/SetReceiptRulePositionResponse.proto"
+    sES
+    (Proxy :: Proxy SetReceiptRulePosition)
+
+testSendBounceResponse :: SendBounceResponse -> TestTree
+testSendBounceResponse = res
+    "SendBounceResponse"
+    "fixture/SendBounceResponse.proto"
+    sES
+    (Proxy :: Proxy SendBounce)
+
 testGetIdentityDkimAttributesResponse :: GetIdentityDkimAttributesResponse -> TestTree
 testGetIdentityDkimAttributesResponse = res
     "GetIdentityDkimAttributesResponse"
@@ -385,6 +635,13 @@
     sES
     (Proxy :: Proxy DeleteIdentity)
 
+testDescribeReceiptRuleResponse :: DescribeReceiptRuleResponse -> TestTree
+testDescribeReceiptRuleResponse = res
+    "DescribeReceiptRuleResponse"
+    "fixture/DescribeReceiptRuleResponse.proto"
+    sES
+    (Proxy :: Proxy DescribeReceiptRule)
+
 testListIdentitiesResponse :: ListIdentitiesResponse -> TestTree
 testListIdentitiesResponse = res
     "ListIdentitiesResponse"
@@ -413,6 +670,13 @@
     sES
     (Proxy :: Proxy DeleteVerifiedEmailAddress)
 
+testDeleteReceiptFilterResponse :: DeleteReceiptFilterResponse -> TestTree
+testDeleteReceiptFilterResponse = res
+    "DeleteReceiptFilterResponse"
+    "fixture/DeleteReceiptFilterResponse.proto"
+    sES
+    (Proxy :: Proxy DeleteReceiptFilter)
+
 testListVerifiedEmailAddressesResponse :: ListVerifiedEmailAddressesResponse -> TestTree
 testListVerifiedEmailAddressesResponse = res
     "ListVerifiedEmailAddressesResponse"
@@ -433,3 +697,45 @@
     "fixture/SendEmailResponse.proto"
     sES
     (Proxy :: Proxy SendEmail)
+
+testDeleteReceiptRuleResponse :: DeleteReceiptRuleResponse -> TestTree
+testDeleteReceiptRuleResponse = res
+    "DeleteReceiptRuleResponse"
+    "fixture/DeleteReceiptRuleResponse.proto"
+    sES
+    (Proxy :: Proxy DeleteReceiptRule)
+
+testUpdateReceiptRuleResponse :: UpdateReceiptRuleResponse -> TestTree
+testUpdateReceiptRuleResponse = res
+    "UpdateReceiptRuleResponse"
+    "fixture/UpdateReceiptRuleResponse.proto"
+    sES
+    (Proxy :: Proxy UpdateReceiptRule)
+
+testCloneReceiptRuleSetResponse :: CloneReceiptRuleSetResponse -> TestTree
+testCloneReceiptRuleSetResponse = res
+    "CloneReceiptRuleSetResponse"
+    "fixture/CloneReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy CloneReceiptRuleSet)
+
+testCreateReceiptRuleResponse :: CreateReceiptRuleResponse -> TestTree
+testCreateReceiptRuleResponse = res
+    "CreateReceiptRuleResponse"
+    "fixture/CreateReceiptRuleResponse.proto"
+    sES
+    (Proxy :: Proxy CreateReceiptRule)
+
+testSetActiveReceiptRuleSetResponse :: SetActiveReceiptRuleSetResponse -> TestTree
+testSetActiveReceiptRuleSetResponse = res
+    "SetActiveReceiptRuleSetResponse"
+    "fixture/SetActiveReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy SetActiveReceiptRuleSet)
+
+testDescribeActiveReceiptRuleSetResponse :: DescribeActiveReceiptRuleSetResponse -> TestTree
+testDescribeActiveReceiptRuleSetResponse = res
+    "DescribeActiveReceiptRuleSetResponse"
+    "fixture/DescribeActiveReceiptRuleSetResponse.proto"
+    sES
+    (Proxy :: Proxy DescribeActiveReceiptRuleSet)
