diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2010-12-01@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
-See [Network.AWS.SES](http://hackage.haskell.org/package/amazonka-ses/docs/Network-AWS-SES.html)
+See [Amazonka.SES](http://hackage.haskell.org/package/amazonka-ses/docs/Amazonka-SES.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-ses.cabal b/amazonka-ses.cabal
--- a/amazonka-ses.cabal
+++ b/amazonka-ses.cabal
@@ -1,155 +1,211 @@
-name:                  amazonka-ses
-version:               1.6.1
-synopsis:              Amazon Simple Email Service SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-ses
+version:            2.0
+synopsis:           Amazon Simple Email Service SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
 description:
-    The types from this library are intended to be used with
-    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth of nesting of AWS types and transparency regarding
-    de/serialisation into more palatable Haskell values.
-    The provided lenses should be compatible with any of the major lens libraries
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.SES" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2010-12-01@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.SES.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.SES" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
 
 source-repository head
-    type:              git
-    location:          git://github.com/brendanhay/amazonka.git
-    subdir:            amazonka-ses
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-ses
 
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
-
-    ghc-options:
-        -Wall
-        -fwarn-incomplete-uni-patterns
-        -fwarn-incomplete-record-updates
-        -funbox-strict-fields
-
-    exposed-modules:
-          Network.AWS.SES
-        , Network.AWS.SES.CloneReceiptRuleSet
-        , Network.AWS.SES.CreateConfigurationSet
-        , Network.AWS.SES.CreateConfigurationSetEventDestination
-        , Network.AWS.SES.CreateConfigurationSetTrackingOptions
-        , Network.AWS.SES.CreateCustomVerificationEmailTemplate
-        , Network.AWS.SES.CreateReceiptFilter
-        , Network.AWS.SES.CreateReceiptRule
-        , Network.AWS.SES.CreateReceiptRuleSet
-        , Network.AWS.SES.CreateTemplate
-        , Network.AWS.SES.DeleteConfigurationSet
-        , Network.AWS.SES.DeleteConfigurationSetEventDestination
-        , Network.AWS.SES.DeleteConfigurationSetTrackingOptions
-        , Network.AWS.SES.DeleteCustomVerificationEmailTemplate
-        , Network.AWS.SES.DeleteIdentity
-        , Network.AWS.SES.DeleteIdentityPolicy
-        , Network.AWS.SES.DeleteReceiptFilter
-        , Network.AWS.SES.DeleteReceiptRule
-        , Network.AWS.SES.DeleteReceiptRuleSet
-        , Network.AWS.SES.DeleteTemplate
-        , Network.AWS.SES.DeleteVerifiedEmailAddress
-        , Network.AWS.SES.DescribeActiveReceiptRuleSet
-        , Network.AWS.SES.DescribeConfigurationSet
-        , Network.AWS.SES.DescribeReceiptRule
-        , Network.AWS.SES.DescribeReceiptRuleSet
-        , Network.AWS.SES.GetAccountSendingEnabled
-        , Network.AWS.SES.GetCustomVerificationEmailTemplate
-        , Network.AWS.SES.GetIdentityDkimAttributes
-        , Network.AWS.SES.GetIdentityMailFromDomainAttributes
-        , Network.AWS.SES.GetIdentityNotificationAttributes
-        , Network.AWS.SES.GetIdentityPolicies
-        , Network.AWS.SES.GetIdentityVerificationAttributes
-        , Network.AWS.SES.GetSendQuota
-        , Network.AWS.SES.GetSendStatistics
-        , Network.AWS.SES.GetTemplate
-        , Network.AWS.SES.ListConfigurationSets
-        , Network.AWS.SES.ListCustomVerificationEmailTemplates
-        , Network.AWS.SES.ListIdentities
-        , Network.AWS.SES.ListIdentityPolicies
-        , Network.AWS.SES.ListReceiptFilters
-        , Network.AWS.SES.ListReceiptRuleSets
-        , Network.AWS.SES.ListTemplates
-        , Network.AWS.SES.ListVerifiedEmailAddresses
-        , Network.AWS.SES.PutIdentityPolicy
-        , Network.AWS.SES.ReorderReceiptRuleSet
-        , Network.AWS.SES.SendBounce
-        , Network.AWS.SES.SendBulkTemplatedEmail
-        , Network.AWS.SES.SendCustomVerificationEmail
-        , Network.AWS.SES.SendEmail
-        , Network.AWS.SES.SendRawEmail
-        , Network.AWS.SES.SendTemplatedEmail
-        , Network.AWS.SES.SetActiveReceiptRuleSet
-        , Network.AWS.SES.SetIdentityDkimEnabled
-        , Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-        , Network.AWS.SES.SetIdentityHeadersInNotificationsEnabled
-        , Network.AWS.SES.SetIdentityMailFromDomain
-        , Network.AWS.SES.SetIdentityNotificationTopic
-        , Network.AWS.SES.SetReceiptRulePosition
-        , Network.AWS.SES.TestRenderTemplate
-        , Network.AWS.SES.Types
-        , Network.AWS.SES.UpdateAccountSendingEnabled
-        , Network.AWS.SES.UpdateConfigurationSetEventDestination
-        , Network.AWS.SES.UpdateConfigurationSetReputationMetricsEnabled
-        , Network.AWS.SES.UpdateConfigurationSetSendingEnabled
-        , Network.AWS.SES.UpdateConfigurationSetTrackingOptions
-        , Network.AWS.SES.UpdateCustomVerificationEmailTemplate
-        , Network.AWS.SES.UpdateReceiptRule
-        , Network.AWS.SES.UpdateTemplate
-        , Network.AWS.SES.VerifyDomainDkim
-        , Network.AWS.SES.VerifyDomainIdentity
-        , Network.AWS.SES.VerifyEmailAddress
-        , Network.AWS.SES.VerifyEmailIdentity
-        , Network.AWS.SES.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.SES.Types.Product
-        , Network.AWS.SES.Types.Sum
+  exposed-modules:
+    Amazonka.SES
+    Amazonka.SES.CloneReceiptRuleSet
+    Amazonka.SES.CreateConfigurationSet
+    Amazonka.SES.CreateConfigurationSetEventDestination
+    Amazonka.SES.CreateConfigurationSetTrackingOptions
+    Amazonka.SES.CreateCustomVerificationEmailTemplate
+    Amazonka.SES.CreateReceiptFilter
+    Amazonka.SES.CreateReceiptRule
+    Amazonka.SES.CreateReceiptRuleSet
+    Amazonka.SES.CreateTemplate
+    Amazonka.SES.DeleteConfigurationSet
+    Amazonka.SES.DeleteConfigurationSetEventDestination
+    Amazonka.SES.DeleteConfigurationSetTrackingOptions
+    Amazonka.SES.DeleteCustomVerificationEmailTemplate
+    Amazonka.SES.DeleteIdentity
+    Amazonka.SES.DeleteIdentityPolicy
+    Amazonka.SES.DeleteReceiptFilter
+    Amazonka.SES.DeleteReceiptRule
+    Amazonka.SES.DeleteReceiptRuleSet
+    Amazonka.SES.DeleteTemplate
+    Amazonka.SES.DeleteVerifiedEmailAddress
+    Amazonka.SES.DescribeActiveReceiptRuleSet
+    Amazonka.SES.DescribeConfigurationSet
+    Amazonka.SES.DescribeReceiptRule
+    Amazonka.SES.DescribeReceiptRuleSet
+    Amazonka.SES.GetAccountSendingEnabled
+    Amazonka.SES.GetCustomVerificationEmailTemplate
+    Amazonka.SES.GetIdentityDkimAttributes
+    Amazonka.SES.GetIdentityMailFromDomainAttributes
+    Amazonka.SES.GetIdentityNotificationAttributes
+    Amazonka.SES.GetIdentityPolicies
+    Amazonka.SES.GetIdentityVerificationAttributes
+    Amazonka.SES.GetSendQuota
+    Amazonka.SES.GetSendStatistics
+    Amazonka.SES.GetTemplate
+    Amazonka.SES.Lens
+    Amazonka.SES.ListConfigurationSets
+    Amazonka.SES.ListCustomVerificationEmailTemplates
+    Amazonka.SES.ListIdentities
+    Amazonka.SES.ListIdentityPolicies
+    Amazonka.SES.ListReceiptFilters
+    Amazonka.SES.ListReceiptRuleSets
+    Amazonka.SES.ListTemplates
+    Amazonka.SES.ListVerifiedEmailAddresses
+    Amazonka.SES.PutConfigurationSetDeliveryOptions
+    Amazonka.SES.PutIdentityPolicy
+    Amazonka.SES.ReorderReceiptRuleSet
+    Amazonka.SES.SendBounce
+    Amazonka.SES.SendBulkTemplatedEmail
+    Amazonka.SES.SendCustomVerificationEmail
+    Amazonka.SES.SendEmail
+    Amazonka.SES.SendRawEmail
+    Amazonka.SES.SendTemplatedEmail
+    Amazonka.SES.SetActiveReceiptRuleSet
+    Amazonka.SES.SetIdentityDkimEnabled
+    Amazonka.SES.SetIdentityFeedbackForwardingEnabled
+    Amazonka.SES.SetIdentityHeadersInNotificationsEnabled
+    Amazonka.SES.SetIdentityMailFromDomain
+    Amazonka.SES.SetIdentityNotificationTopic
+    Amazonka.SES.SetReceiptRulePosition
+    Amazonka.SES.TestRenderTemplate
+    Amazonka.SES.Types
+    Amazonka.SES.Types.AddHeaderAction
+    Amazonka.SES.Types.BehaviorOnMXFailure
+    Amazonka.SES.Types.Body
+    Amazonka.SES.Types.BounceAction
+    Amazonka.SES.Types.BouncedRecipientInfo
+    Amazonka.SES.Types.BounceType
+    Amazonka.SES.Types.BulkEmailDestination
+    Amazonka.SES.Types.BulkEmailDestinationStatus
+    Amazonka.SES.Types.BulkEmailStatus
+    Amazonka.SES.Types.CloudWatchDestination
+    Amazonka.SES.Types.CloudWatchDimensionConfiguration
+    Amazonka.SES.Types.ConfigurationSet
+    Amazonka.SES.Types.ConfigurationSetAttribute
+    Amazonka.SES.Types.Content
+    Amazonka.SES.Types.CustomMailFromStatus
+    Amazonka.SES.Types.CustomVerificationEmailTemplate
+    Amazonka.SES.Types.DeliveryOptions
+    Amazonka.SES.Types.Destination
+    Amazonka.SES.Types.DimensionValueSource
+    Amazonka.SES.Types.DsnAction
+    Amazonka.SES.Types.EventDestination
+    Amazonka.SES.Types.EventType
+    Amazonka.SES.Types.ExtensionField
+    Amazonka.SES.Types.IdentityDkimAttributes
+    Amazonka.SES.Types.IdentityMailFromDomainAttributes
+    Amazonka.SES.Types.IdentityNotificationAttributes
+    Amazonka.SES.Types.IdentityType
+    Amazonka.SES.Types.IdentityVerificationAttributes
+    Amazonka.SES.Types.InvocationType
+    Amazonka.SES.Types.KinesisFirehoseDestination
+    Amazonka.SES.Types.LambdaAction
+    Amazonka.SES.Types.Message
+    Amazonka.SES.Types.MessageDsn
+    Amazonka.SES.Types.MessageTag
+    Amazonka.SES.Types.NotificationType
+    Amazonka.SES.Types.RawMessage
+    Amazonka.SES.Types.ReceiptAction
+    Amazonka.SES.Types.ReceiptFilter
+    Amazonka.SES.Types.ReceiptFilterPolicy
+    Amazonka.SES.Types.ReceiptIpFilter
+    Amazonka.SES.Types.ReceiptRule
+    Amazonka.SES.Types.ReceiptRuleSetMetadata
+    Amazonka.SES.Types.RecipientDsnFields
+    Amazonka.SES.Types.ReputationOptions
+    Amazonka.SES.Types.S3Action
+    Amazonka.SES.Types.SendDataPoint
+    Amazonka.SES.Types.SNSAction
+    Amazonka.SES.Types.SNSActionEncoding
+    Amazonka.SES.Types.SNSDestination
+    Amazonka.SES.Types.StopAction
+    Amazonka.SES.Types.StopScope
+    Amazonka.SES.Types.Template
+    Amazonka.SES.Types.TemplateMetadata
+    Amazonka.SES.Types.TlsPolicy
+    Amazonka.SES.Types.TrackingOptions
+    Amazonka.SES.Types.VerificationStatus
+    Amazonka.SES.Types.WorkmailAction
+    Amazonka.SES.UpdateAccountSendingEnabled
+    Amazonka.SES.UpdateConfigurationSetEventDestination
+    Amazonka.SES.UpdateConfigurationSetReputationMetricsEnabled
+    Amazonka.SES.UpdateConfigurationSetSendingEnabled
+    Amazonka.SES.UpdateConfigurationSetTrackingOptions
+    Amazonka.SES.UpdateCustomVerificationEmailTemplate
+    Amazonka.SES.UpdateReceiptRule
+    Amazonka.SES.UpdateTemplate
+    Amazonka.SES.VerifyDomainDkim
+    Amazonka.SES.VerifyDomainIdentity
+    Amazonka.SES.VerifyEmailAddress
+    Amazonka.SES.VerifyEmailIdentity
+    Amazonka.SES.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-ses-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
 
-    -- This section is encoded by the template and any modules added by
-    -- hand outside these namespaces will not correctly be added to the
-    -- distribution package.
-    other-modules:
-          Test.AWS.SES
-        , Test.AWS.Gen.SES
-        , Test.AWS.SES.Internal
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.Gen.SES
+    Test.Amazonka.SES
+    Test.Amazonka.SES.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-ses
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-ses
+    , amazonka-test         >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/CloneReceiptRuleSet.yaml b/fixture/CloneReceiptRuleSet.yaml
--- a/fixture/CloneReceiptRuleSet.yaml
+++ b/fixture/CloneReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateConfigurationSet.yaml b/fixture/CreateConfigurationSet.yaml
--- a/fixture/CreateConfigurationSet.yaml
+++ b/fixture/CreateConfigurationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateConfigurationSetEventDestination.yaml b/fixture/CreateConfigurationSetEventDestination.yaml
--- a/fixture/CreateConfigurationSetEventDestination.yaml
+++ b/fixture/CreateConfigurationSetEventDestination.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateReceiptFilter.yaml b/fixture/CreateReceiptFilter.yaml
--- a/fixture/CreateReceiptFilter.yaml
+++ b/fixture/CreateReceiptFilter.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateReceiptRule.yaml b/fixture/CreateReceiptRule.yaml
--- a/fixture/CreateReceiptRule.yaml
+++ b/fixture/CreateReceiptRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/CreateReceiptRuleSet.yaml b/fixture/CreateReceiptRuleSet.yaml
--- a/fixture/CreateReceiptRuleSet.yaml
+++ b/fixture/CreateReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteConfigurationSet.yaml b/fixture/DeleteConfigurationSet.yaml
--- a/fixture/DeleteConfigurationSet.yaml
+++ b/fixture/DeleteConfigurationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteConfigurationSetEventDestination.yaml b/fixture/DeleteConfigurationSetEventDestination.yaml
--- a/fixture/DeleteConfigurationSetEventDestination.yaml
+++ b/fixture/DeleteConfigurationSetEventDestination.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteIdentity.yaml b/fixture/DeleteIdentity.yaml
--- a/fixture/DeleteIdentity.yaml
+++ b/fixture/DeleteIdentity.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteIdentityPolicy.yaml b/fixture/DeleteIdentityPolicy.yaml
--- a/fixture/DeleteIdentityPolicy.yaml
+++ b/fixture/DeleteIdentityPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteReceiptFilter.yaml b/fixture/DeleteReceiptFilter.yaml
--- a/fixture/DeleteReceiptFilter.yaml
+++ b/fixture/DeleteReceiptFilter.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteReceiptRule.yaml b/fixture/DeleteReceiptRule.yaml
--- a/fixture/DeleteReceiptRule.yaml
+++ b/fixture/DeleteReceiptRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteReceiptRuleSet.yaml b/fixture/DeleteReceiptRuleSet.yaml
--- a/fixture/DeleteReceiptRuleSet.yaml
+++ b/fixture/DeleteReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteVerifiedEmailAddress.yaml b/fixture/DeleteVerifiedEmailAddress.yaml
--- a/fixture/DeleteVerifiedEmailAddress.yaml
+++ b/fixture/DeleteVerifiedEmailAddress.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeActiveReceiptRuleSet.yaml b/fixture/DescribeActiveReceiptRuleSet.yaml
--- a/fixture/DescribeActiveReceiptRuleSet.yaml
+++ b/fixture/DescribeActiveReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeConfigurationSet.yaml b/fixture/DescribeConfigurationSet.yaml
--- a/fixture/DescribeConfigurationSet.yaml
+++ b/fixture/DescribeConfigurationSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeReceiptRule.yaml b/fixture/DescribeReceiptRule.yaml
--- a/fixture/DescribeReceiptRule.yaml
+++ b/fixture/DescribeReceiptRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeReceiptRuleSet.yaml b/fixture/DescribeReceiptRuleSet.yaml
--- a/fixture/DescribeReceiptRuleSet.yaml
+++ b/fixture/DescribeReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityDkimAttributes.yaml b/fixture/GetIdentityDkimAttributes.yaml
--- a/fixture/GetIdentityDkimAttributes.yaml
+++ b/fixture/GetIdentityDkimAttributes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityMailFromDomainAttributes.yaml b/fixture/GetIdentityMailFromDomainAttributes.yaml
--- a/fixture/GetIdentityMailFromDomainAttributes.yaml
+++ b/fixture/GetIdentityMailFromDomainAttributes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityNotificationAttributes.yaml b/fixture/GetIdentityNotificationAttributes.yaml
--- a/fixture/GetIdentityNotificationAttributes.yaml
+++ b/fixture/GetIdentityNotificationAttributes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityPolicies.yaml b/fixture/GetIdentityPolicies.yaml
--- a/fixture/GetIdentityPolicies.yaml
+++ b/fixture/GetIdentityPolicies.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityVerificationAttributes.yaml b/fixture/GetIdentityVerificationAttributes.yaml
--- a/fixture/GetIdentityVerificationAttributes.yaml
+++ b/fixture/GetIdentityVerificationAttributes.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSendQuota.yaml b/fixture/GetSendQuota.yaml
--- a/fixture/GetSendQuota.yaml
+++ b/fixture/GetSendQuota.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetSendStatistics.yaml b/fixture/GetSendStatistics.yaml
--- a/fixture/GetSendStatistics.yaml
+++ b/fixture/GetSendStatistics.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListConfigurationSets.yaml b/fixture/ListConfigurationSets.yaml
--- a/fixture/ListConfigurationSets.yaml
+++ b/fixture/ListConfigurationSets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListIdentities.yaml b/fixture/ListIdentities.yaml
--- a/fixture/ListIdentities.yaml
+++ b/fixture/ListIdentities.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListIdentityPolicies.yaml b/fixture/ListIdentityPolicies.yaml
--- a/fixture/ListIdentityPolicies.yaml
+++ b/fixture/ListIdentityPolicies.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListReceiptFilters.yaml b/fixture/ListReceiptFilters.yaml
--- a/fixture/ListReceiptFilters.yaml
+++ b/fixture/ListReceiptFilters.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListReceiptRuleSets.yaml b/fixture/ListReceiptRuleSets.yaml
--- a/fixture/ListReceiptRuleSets.yaml
+++ b/fixture/ListReceiptRuleSets.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListVerifiedEmailAddresses.yaml b/fixture/ListVerifiedEmailAddresses.yaml
--- a/fixture/ListVerifiedEmailAddresses.yaml
+++ b/fixture/ListVerifiedEmailAddresses.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutConfigurationSetDeliveryOptions.yaml b/fixture/PutConfigurationSetDeliveryOptions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/PutConfigurationSetDeliveryOptions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/PutConfigurationSetDeliveryOptionsResponse.proto b/fixture/PutConfigurationSetDeliveryOptionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/PutConfigurationSetDeliveryOptionsResponse.proto
diff --git a/fixture/PutIdentityPolicy.yaml b/fixture/PutIdentityPolicy.yaml
--- a/fixture/PutIdentityPolicy.yaml
+++ b/fixture/PutIdentityPolicy.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ReorderReceiptRuleSet.yaml b/fixture/ReorderReceiptRuleSet.yaml
--- a/fixture/ReorderReceiptRuleSet.yaml
+++ b/fixture/ReorderReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendBounce.yaml b/fixture/SendBounce.yaml
--- a/fixture/SendBounce.yaml
+++ b/fixture/SendBounce.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendEmail.yaml b/fixture/SendEmail.yaml
--- a/fixture/SendEmail.yaml
+++ b/fixture/SendEmail.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SendRawEmail.yaml b/fixture/SendRawEmail.yaml
--- a/fixture/SendRawEmail.yaml
+++ b/fixture/SendRawEmail.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetActiveReceiptRuleSet.yaml b/fixture/SetActiveReceiptRuleSet.yaml
--- a/fixture/SetActiveReceiptRuleSet.yaml
+++ b/fixture/SetActiveReceiptRuleSet.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityDkimEnabled.yaml b/fixture/SetIdentityDkimEnabled.yaml
--- a/fixture/SetIdentityDkimEnabled.yaml
+++ b/fixture/SetIdentityDkimEnabled.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityFeedbackForwardingEnabled.yaml b/fixture/SetIdentityFeedbackForwardingEnabled.yaml
--- a/fixture/SetIdentityFeedbackForwardingEnabled.yaml
+++ b/fixture/SetIdentityFeedbackForwardingEnabled.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityHeadersInNotificationsEnabled.yaml b/fixture/SetIdentityHeadersInNotificationsEnabled.yaml
--- a/fixture/SetIdentityHeadersInNotificationsEnabled.yaml
+++ b/fixture/SetIdentityHeadersInNotificationsEnabled.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityMailFromDomain.yaml b/fixture/SetIdentityMailFromDomain.yaml
--- a/fixture/SetIdentityMailFromDomain.yaml
+++ b/fixture/SetIdentityMailFromDomain.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityNotificationTopic.yaml b/fixture/SetIdentityNotificationTopic.yaml
--- a/fixture/SetIdentityNotificationTopic.yaml
+++ b/fixture/SetIdentityNotificationTopic.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetReceiptRulePosition.yaml b/fixture/SetReceiptRulePosition.yaml
--- a/fixture/SetReceiptRulePosition.yaml
+++ b/fixture/SetReceiptRulePosition.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateConfigurationSetEventDestination.yaml b/fixture/UpdateConfigurationSetEventDestination.yaml
--- a/fixture/UpdateConfigurationSetEventDestination.yaml
+++ b/fixture/UpdateConfigurationSetEventDestination.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateReceiptRule.yaml b/fixture/UpdateReceiptRule.yaml
--- a/fixture/UpdateReceiptRule.yaml
+++ b/fixture/UpdateReceiptRule.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/VerifyDomainDkim.yaml b/fixture/VerifyDomainDkim.yaml
--- a/fixture/VerifyDomainDkim.yaml
+++ b/fixture/VerifyDomainDkim.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/VerifyDomainIdentity.yaml b/fixture/VerifyDomainIdentity.yaml
--- a/fixture/VerifyDomainIdentity.yaml
+++ b/fixture/VerifyDomainIdentity.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/VerifyEmailAddress.yaml b/fixture/VerifyEmailAddress.yaml
--- a/fixture/VerifyEmailAddress.yaml
+++ b/fixture/VerifyEmailAddress.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/VerifyEmailIdentity.yaml b/fixture/VerifyEmailIdentity.yaml
--- a/fixture/VerifyEmailIdentity.yaml
+++ b/fixture/VerifyEmailIdentity.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/email/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  email.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/gen/Amazonka/SES.hs b/gen/Amazonka/SES.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES.hs
@@ -0,0 +1,883 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.SES
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2010-12-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Simple Email Service
+--
+-- This document contains reference information for the
+-- <https://aws.amazon.com/ses/ Amazon Simple Email Service> (Amazon SES)
+-- API, version 2010-12-01. This document is best used in conjunction with
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide>.
+--
+-- For a list of Amazon SES endpoints to use in service requests, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/regions.html Regions and Amazon SES>
+-- in the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide>.
+module Amazonka.SES
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AccountSendingPausedException
+    _AccountSendingPausedException,
+
+    -- ** AlreadyExistsException
+    _AlreadyExistsException,
+
+    -- ** CannotDeleteException
+    _CannotDeleteException,
+
+    -- ** ConfigurationSetAlreadyExistsException
+    _ConfigurationSetAlreadyExistsException,
+
+    -- ** ConfigurationSetDoesNotExistException
+    _ConfigurationSetDoesNotExistException,
+
+    -- ** ConfigurationSetSendingPausedException
+    _ConfigurationSetSendingPausedException,
+
+    -- ** CustomVerificationEmailInvalidContentException
+    _CustomVerificationEmailInvalidContentException,
+
+    -- ** CustomVerificationEmailTemplateAlreadyExistsException
+    _CustomVerificationEmailTemplateAlreadyExistsException,
+
+    -- ** CustomVerificationEmailTemplateDoesNotExistException
+    _CustomVerificationEmailTemplateDoesNotExistException,
+
+    -- ** EventDestinationAlreadyExistsException
+    _EventDestinationAlreadyExistsException,
+
+    -- ** EventDestinationDoesNotExistException
+    _EventDestinationDoesNotExistException,
+
+    -- ** FromEmailAddressNotVerifiedException
+    _FromEmailAddressNotVerifiedException,
+
+    -- ** InvalidCloudWatchDestinationException
+    _InvalidCloudWatchDestinationException,
+
+    -- ** InvalidConfigurationSetException
+    _InvalidConfigurationSetException,
+
+    -- ** InvalidDeliveryOptionsException
+    _InvalidDeliveryOptionsException,
+
+    -- ** InvalidFirehoseDestinationException
+    _InvalidFirehoseDestinationException,
+
+    -- ** InvalidLambdaFunctionException
+    _InvalidLambdaFunctionException,
+
+    -- ** InvalidPolicyException
+    _InvalidPolicyException,
+
+    -- ** InvalidRenderingParameterException
+    _InvalidRenderingParameterException,
+
+    -- ** InvalidS3ConfigurationException
+    _InvalidS3ConfigurationException,
+
+    -- ** InvalidSNSDestinationException
+    _InvalidSNSDestinationException,
+
+    -- ** InvalidSnsTopicException
+    _InvalidSnsTopicException,
+
+    -- ** InvalidTemplateException
+    _InvalidTemplateException,
+
+    -- ** InvalidTrackingOptionsException
+    _InvalidTrackingOptionsException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** MailFromDomainNotVerifiedException
+    _MailFromDomainNotVerifiedException,
+
+    -- ** MessageRejected
+    _MessageRejected,
+
+    -- ** MissingRenderingAttributeException
+    _MissingRenderingAttributeException,
+
+    -- ** ProductionAccessNotGrantedException
+    _ProductionAccessNotGrantedException,
+
+    -- ** RuleDoesNotExistException
+    _RuleDoesNotExistException,
+
+    -- ** RuleSetDoesNotExistException
+    _RuleSetDoesNotExistException,
+
+    -- ** TemplateDoesNotExistException
+    _TemplateDoesNotExistException,
+
+    -- ** TrackingOptionsAlreadyExistsException
+    _TrackingOptionsAlreadyExistsException,
+
+    -- ** TrackingOptionsDoesNotExistException
+    _TrackingOptionsDoesNotExistException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** CloneReceiptRuleSet
+    CloneReceiptRuleSet (CloneReceiptRuleSet'),
+    newCloneReceiptRuleSet,
+    CloneReceiptRuleSetResponse (CloneReceiptRuleSetResponse'),
+    newCloneReceiptRuleSetResponse,
+
+    -- ** CreateConfigurationSet
+    CreateConfigurationSet (CreateConfigurationSet'),
+    newCreateConfigurationSet,
+    CreateConfigurationSetResponse (CreateConfigurationSetResponse'),
+    newCreateConfigurationSetResponse,
+
+    -- ** CreateConfigurationSetEventDestination
+    CreateConfigurationSetEventDestination (CreateConfigurationSetEventDestination'),
+    newCreateConfigurationSetEventDestination,
+    CreateConfigurationSetEventDestinationResponse (CreateConfigurationSetEventDestinationResponse'),
+    newCreateConfigurationSetEventDestinationResponse,
+
+    -- ** CreateConfigurationSetTrackingOptions
+    CreateConfigurationSetTrackingOptions (CreateConfigurationSetTrackingOptions'),
+    newCreateConfigurationSetTrackingOptions,
+    CreateConfigurationSetTrackingOptionsResponse (CreateConfigurationSetTrackingOptionsResponse'),
+    newCreateConfigurationSetTrackingOptionsResponse,
+
+    -- ** CreateCustomVerificationEmailTemplate
+    CreateCustomVerificationEmailTemplate (CreateCustomVerificationEmailTemplate'),
+    newCreateCustomVerificationEmailTemplate,
+    CreateCustomVerificationEmailTemplateResponse (CreateCustomVerificationEmailTemplateResponse'),
+    newCreateCustomVerificationEmailTemplateResponse,
+
+    -- ** CreateReceiptFilter
+    CreateReceiptFilter (CreateReceiptFilter'),
+    newCreateReceiptFilter,
+    CreateReceiptFilterResponse (CreateReceiptFilterResponse'),
+    newCreateReceiptFilterResponse,
+
+    -- ** CreateReceiptRule
+    CreateReceiptRule (CreateReceiptRule'),
+    newCreateReceiptRule,
+    CreateReceiptRuleResponse (CreateReceiptRuleResponse'),
+    newCreateReceiptRuleResponse,
+
+    -- ** CreateReceiptRuleSet
+    CreateReceiptRuleSet (CreateReceiptRuleSet'),
+    newCreateReceiptRuleSet,
+    CreateReceiptRuleSetResponse (CreateReceiptRuleSetResponse'),
+    newCreateReceiptRuleSetResponse,
+
+    -- ** CreateTemplate
+    CreateTemplate (CreateTemplate'),
+    newCreateTemplate,
+    CreateTemplateResponse (CreateTemplateResponse'),
+    newCreateTemplateResponse,
+
+    -- ** DeleteConfigurationSet
+    DeleteConfigurationSet (DeleteConfigurationSet'),
+    newDeleteConfigurationSet,
+    DeleteConfigurationSetResponse (DeleteConfigurationSetResponse'),
+    newDeleteConfigurationSetResponse,
+
+    -- ** DeleteConfigurationSetEventDestination
+    DeleteConfigurationSetEventDestination (DeleteConfigurationSetEventDestination'),
+    newDeleteConfigurationSetEventDestination,
+    DeleteConfigurationSetEventDestinationResponse (DeleteConfigurationSetEventDestinationResponse'),
+    newDeleteConfigurationSetEventDestinationResponse,
+
+    -- ** DeleteConfigurationSetTrackingOptions
+    DeleteConfigurationSetTrackingOptions (DeleteConfigurationSetTrackingOptions'),
+    newDeleteConfigurationSetTrackingOptions,
+    DeleteConfigurationSetTrackingOptionsResponse (DeleteConfigurationSetTrackingOptionsResponse'),
+    newDeleteConfigurationSetTrackingOptionsResponse,
+
+    -- ** DeleteCustomVerificationEmailTemplate
+    DeleteCustomVerificationEmailTemplate (DeleteCustomVerificationEmailTemplate'),
+    newDeleteCustomVerificationEmailTemplate,
+    DeleteCustomVerificationEmailTemplateResponse (DeleteCustomVerificationEmailTemplateResponse'),
+    newDeleteCustomVerificationEmailTemplateResponse,
+
+    -- ** DeleteIdentity
+    DeleteIdentity (DeleteIdentity'),
+    newDeleteIdentity,
+    DeleteIdentityResponse (DeleteIdentityResponse'),
+    newDeleteIdentityResponse,
+
+    -- ** DeleteIdentityPolicy
+    DeleteIdentityPolicy (DeleteIdentityPolicy'),
+    newDeleteIdentityPolicy,
+    DeleteIdentityPolicyResponse (DeleteIdentityPolicyResponse'),
+    newDeleteIdentityPolicyResponse,
+
+    -- ** DeleteReceiptFilter
+    DeleteReceiptFilter (DeleteReceiptFilter'),
+    newDeleteReceiptFilter,
+    DeleteReceiptFilterResponse (DeleteReceiptFilterResponse'),
+    newDeleteReceiptFilterResponse,
+
+    -- ** DeleteReceiptRule
+    DeleteReceiptRule (DeleteReceiptRule'),
+    newDeleteReceiptRule,
+    DeleteReceiptRuleResponse (DeleteReceiptRuleResponse'),
+    newDeleteReceiptRuleResponse,
+
+    -- ** DeleteReceiptRuleSet
+    DeleteReceiptRuleSet (DeleteReceiptRuleSet'),
+    newDeleteReceiptRuleSet,
+    DeleteReceiptRuleSetResponse (DeleteReceiptRuleSetResponse'),
+    newDeleteReceiptRuleSetResponse,
+
+    -- ** DeleteTemplate
+    DeleteTemplate (DeleteTemplate'),
+    newDeleteTemplate,
+    DeleteTemplateResponse (DeleteTemplateResponse'),
+    newDeleteTemplateResponse,
+
+    -- ** DeleteVerifiedEmailAddress
+    DeleteVerifiedEmailAddress (DeleteVerifiedEmailAddress'),
+    newDeleteVerifiedEmailAddress,
+    DeleteVerifiedEmailAddressResponse (DeleteVerifiedEmailAddressResponse'),
+    newDeleteVerifiedEmailAddressResponse,
+
+    -- ** DescribeActiveReceiptRuleSet
+    DescribeActiveReceiptRuleSet (DescribeActiveReceiptRuleSet'),
+    newDescribeActiveReceiptRuleSet,
+    DescribeActiveReceiptRuleSetResponse (DescribeActiveReceiptRuleSetResponse'),
+    newDescribeActiveReceiptRuleSetResponse,
+
+    -- ** DescribeConfigurationSet
+    DescribeConfigurationSet (DescribeConfigurationSet'),
+    newDescribeConfigurationSet,
+    DescribeConfigurationSetResponse (DescribeConfigurationSetResponse'),
+    newDescribeConfigurationSetResponse,
+
+    -- ** DescribeReceiptRule
+    DescribeReceiptRule (DescribeReceiptRule'),
+    newDescribeReceiptRule,
+    DescribeReceiptRuleResponse (DescribeReceiptRuleResponse'),
+    newDescribeReceiptRuleResponse,
+
+    -- ** DescribeReceiptRuleSet
+    DescribeReceiptRuleSet (DescribeReceiptRuleSet'),
+    newDescribeReceiptRuleSet,
+    DescribeReceiptRuleSetResponse (DescribeReceiptRuleSetResponse'),
+    newDescribeReceiptRuleSetResponse,
+
+    -- ** GetAccountSendingEnabled
+    GetAccountSendingEnabled (GetAccountSendingEnabled'),
+    newGetAccountSendingEnabled,
+    GetAccountSendingEnabledResponse (GetAccountSendingEnabledResponse'),
+    newGetAccountSendingEnabledResponse,
+
+    -- ** GetCustomVerificationEmailTemplate
+    GetCustomVerificationEmailTemplate (GetCustomVerificationEmailTemplate'),
+    newGetCustomVerificationEmailTemplate,
+    GetCustomVerificationEmailTemplateResponse (GetCustomVerificationEmailTemplateResponse'),
+    newGetCustomVerificationEmailTemplateResponse,
+
+    -- ** GetIdentityDkimAttributes
+    GetIdentityDkimAttributes (GetIdentityDkimAttributes'),
+    newGetIdentityDkimAttributes,
+    GetIdentityDkimAttributesResponse (GetIdentityDkimAttributesResponse'),
+    newGetIdentityDkimAttributesResponse,
+
+    -- ** GetIdentityMailFromDomainAttributes
+    GetIdentityMailFromDomainAttributes (GetIdentityMailFromDomainAttributes'),
+    newGetIdentityMailFromDomainAttributes,
+    GetIdentityMailFromDomainAttributesResponse (GetIdentityMailFromDomainAttributesResponse'),
+    newGetIdentityMailFromDomainAttributesResponse,
+
+    -- ** GetIdentityNotificationAttributes
+    GetIdentityNotificationAttributes (GetIdentityNotificationAttributes'),
+    newGetIdentityNotificationAttributes,
+    GetIdentityNotificationAttributesResponse (GetIdentityNotificationAttributesResponse'),
+    newGetIdentityNotificationAttributesResponse,
+
+    -- ** GetIdentityPolicies
+    GetIdentityPolicies (GetIdentityPolicies'),
+    newGetIdentityPolicies,
+    GetIdentityPoliciesResponse (GetIdentityPoliciesResponse'),
+    newGetIdentityPoliciesResponse,
+
+    -- ** GetIdentityVerificationAttributes
+    GetIdentityVerificationAttributes (GetIdentityVerificationAttributes'),
+    newGetIdentityVerificationAttributes,
+    GetIdentityVerificationAttributesResponse (GetIdentityVerificationAttributesResponse'),
+    newGetIdentityVerificationAttributesResponse,
+
+    -- ** GetSendQuota
+    GetSendQuota (GetSendQuota'),
+    newGetSendQuota,
+    GetSendQuotaResponse (GetSendQuotaResponse'),
+    newGetSendQuotaResponse,
+
+    -- ** GetSendStatistics
+    GetSendStatistics (GetSendStatistics'),
+    newGetSendStatistics,
+    GetSendStatisticsResponse (GetSendStatisticsResponse'),
+    newGetSendStatisticsResponse,
+
+    -- ** GetTemplate
+    GetTemplate (GetTemplate'),
+    newGetTemplate,
+    GetTemplateResponse (GetTemplateResponse'),
+    newGetTemplateResponse,
+
+    -- ** ListConfigurationSets (Paginated)
+    ListConfigurationSets (ListConfigurationSets'),
+    newListConfigurationSets,
+    ListConfigurationSetsResponse (ListConfigurationSetsResponse'),
+    newListConfigurationSetsResponse,
+
+    -- ** ListCustomVerificationEmailTemplates (Paginated)
+    ListCustomVerificationEmailTemplates (ListCustomVerificationEmailTemplates'),
+    newListCustomVerificationEmailTemplates,
+    ListCustomVerificationEmailTemplatesResponse (ListCustomVerificationEmailTemplatesResponse'),
+    newListCustomVerificationEmailTemplatesResponse,
+
+    -- ** ListIdentities (Paginated)
+    ListIdentities (ListIdentities'),
+    newListIdentities,
+    ListIdentitiesResponse (ListIdentitiesResponse'),
+    newListIdentitiesResponse,
+
+    -- ** ListIdentityPolicies
+    ListIdentityPolicies (ListIdentityPolicies'),
+    newListIdentityPolicies,
+    ListIdentityPoliciesResponse (ListIdentityPoliciesResponse'),
+    newListIdentityPoliciesResponse,
+
+    -- ** ListReceiptFilters
+    ListReceiptFilters (ListReceiptFilters'),
+    newListReceiptFilters,
+    ListReceiptFiltersResponse (ListReceiptFiltersResponse'),
+    newListReceiptFiltersResponse,
+
+    -- ** ListReceiptRuleSets (Paginated)
+    ListReceiptRuleSets (ListReceiptRuleSets'),
+    newListReceiptRuleSets,
+    ListReceiptRuleSetsResponse (ListReceiptRuleSetsResponse'),
+    newListReceiptRuleSetsResponse,
+
+    -- ** ListTemplates (Paginated)
+    ListTemplates (ListTemplates'),
+    newListTemplates,
+    ListTemplatesResponse (ListTemplatesResponse'),
+    newListTemplatesResponse,
+
+    -- ** ListVerifiedEmailAddresses
+    ListVerifiedEmailAddresses (ListVerifiedEmailAddresses'),
+    newListVerifiedEmailAddresses,
+    ListVerifiedEmailAddressesResponse (ListVerifiedEmailAddressesResponse'),
+    newListVerifiedEmailAddressesResponse,
+
+    -- ** PutConfigurationSetDeliveryOptions
+    PutConfigurationSetDeliveryOptions (PutConfigurationSetDeliveryOptions'),
+    newPutConfigurationSetDeliveryOptions,
+    PutConfigurationSetDeliveryOptionsResponse (PutConfigurationSetDeliveryOptionsResponse'),
+    newPutConfigurationSetDeliveryOptionsResponse,
+
+    -- ** PutIdentityPolicy
+    PutIdentityPolicy (PutIdentityPolicy'),
+    newPutIdentityPolicy,
+    PutIdentityPolicyResponse (PutIdentityPolicyResponse'),
+    newPutIdentityPolicyResponse,
+
+    -- ** ReorderReceiptRuleSet
+    ReorderReceiptRuleSet (ReorderReceiptRuleSet'),
+    newReorderReceiptRuleSet,
+    ReorderReceiptRuleSetResponse (ReorderReceiptRuleSetResponse'),
+    newReorderReceiptRuleSetResponse,
+
+    -- ** SendBounce
+    SendBounce (SendBounce'),
+    newSendBounce,
+    SendBounceResponse (SendBounceResponse'),
+    newSendBounceResponse,
+
+    -- ** SendBulkTemplatedEmail
+    SendBulkTemplatedEmail (SendBulkTemplatedEmail'),
+    newSendBulkTemplatedEmail,
+    SendBulkTemplatedEmailResponse (SendBulkTemplatedEmailResponse'),
+    newSendBulkTemplatedEmailResponse,
+
+    -- ** SendCustomVerificationEmail
+    SendCustomVerificationEmail (SendCustomVerificationEmail'),
+    newSendCustomVerificationEmail,
+    SendCustomVerificationEmailResponse (SendCustomVerificationEmailResponse'),
+    newSendCustomVerificationEmailResponse,
+
+    -- ** SendEmail
+    SendEmail (SendEmail'),
+    newSendEmail,
+    SendEmailResponse (SendEmailResponse'),
+    newSendEmailResponse,
+
+    -- ** SendRawEmail
+    SendRawEmail (SendRawEmail'),
+    newSendRawEmail,
+    SendRawEmailResponse (SendRawEmailResponse'),
+    newSendRawEmailResponse,
+
+    -- ** SendTemplatedEmail
+    SendTemplatedEmail (SendTemplatedEmail'),
+    newSendTemplatedEmail,
+    SendTemplatedEmailResponse (SendTemplatedEmailResponse'),
+    newSendTemplatedEmailResponse,
+
+    -- ** SetActiveReceiptRuleSet
+    SetActiveReceiptRuleSet (SetActiveReceiptRuleSet'),
+    newSetActiveReceiptRuleSet,
+    SetActiveReceiptRuleSetResponse (SetActiveReceiptRuleSetResponse'),
+    newSetActiveReceiptRuleSetResponse,
+
+    -- ** SetIdentityDkimEnabled
+    SetIdentityDkimEnabled (SetIdentityDkimEnabled'),
+    newSetIdentityDkimEnabled,
+    SetIdentityDkimEnabledResponse (SetIdentityDkimEnabledResponse'),
+    newSetIdentityDkimEnabledResponse,
+
+    -- ** SetIdentityFeedbackForwardingEnabled
+    SetIdentityFeedbackForwardingEnabled (SetIdentityFeedbackForwardingEnabled'),
+    newSetIdentityFeedbackForwardingEnabled,
+    SetIdentityFeedbackForwardingEnabledResponse (SetIdentityFeedbackForwardingEnabledResponse'),
+    newSetIdentityFeedbackForwardingEnabledResponse,
+
+    -- ** SetIdentityHeadersInNotificationsEnabled
+    SetIdentityHeadersInNotificationsEnabled (SetIdentityHeadersInNotificationsEnabled'),
+    newSetIdentityHeadersInNotificationsEnabled,
+    SetIdentityHeadersInNotificationsEnabledResponse (SetIdentityHeadersInNotificationsEnabledResponse'),
+    newSetIdentityHeadersInNotificationsEnabledResponse,
+
+    -- ** SetIdentityMailFromDomain
+    SetIdentityMailFromDomain (SetIdentityMailFromDomain'),
+    newSetIdentityMailFromDomain,
+    SetIdentityMailFromDomainResponse (SetIdentityMailFromDomainResponse'),
+    newSetIdentityMailFromDomainResponse,
+
+    -- ** SetIdentityNotificationTopic
+    SetIdentityNotificationTopic (SetIdentityNotificationTopic'),
+    newSetIdentityNotificationTopic,
+    SetIdentityNotificationTopicResponse (SetIdentityNotificationTopicResponse'),
+    newSetIdentityNotificationTopicResponse,
+
+    -- ** SetReceiptRulePosition
+    SetReceiptRulePosition (SetReceiptRulePosition'),
+    newSetReceiptRulePosition,
+    SetReceiptRulePositionResponse (SetReceiptRulePositionResponse'),
+    newSetReceiptRulePositionResponse,
+
+    -- ** TestRenderTemplate
+    TestRenderTemplate (TestRenderTemplate'),
+    newTestRenderTemplate,
+    TestRenderTemplateResponse (TestRenderTemplateResponse'),
+    newTestRenderTemplateResponse,
+
+    -- ** UpdateAccountSendingEnabled
+    UpdateAccountSendingEnabled (UpdateAccountSendingEnabled'),
+    newUpdateAccountSendingEnabled,
+    UpdateAccountSendingEnabledResponse (UpdateAccountSendingEnabledResponse'),
+    newUpdateAccountSendingEnabledResponse,
+
+    -- ** UpdateConfigurationSetEventDestination
+    UpdateConfigurationSetEventDestination (UpdateConfigurationSetEventDestination'),
+    newUpdateConfigurationSetEventDestination,
+    UpdateConfigurationSetEventDestinationResponse (UpdateConfigurationSetEventDestinationResponse'),
+    newUpdateConfigurationSetEventDestinationResponse,
+
+    -- ** UpdateConfigurationSetReputationMetricsEnabled
+    UpdateConfigurationSetReputationMetricsEnabled (UpdateConfigurationSetReputationMetricsEnabled'),
+    newUpdateConfigurationSetReputationMetricsEnabled,
+    UpdateConfigurationSetReputationMetricsEnabledResponse (UpdateConfigurationSetReputationMetricsEnabledResponse'),
+    newUpdateConfigurationSetReputationMetricsEnabledResponse,
+
+    -- ** UpdateConfigurationSetSendingEnabled
+    UpdateConfigurationSetSendingEnabled (UpdateConfigurationSetSendingEnabled'),
+    newUpdateConfigurationSetSendingEnabled,
+    UpdateConfigurationSetSendingEnabledResponse (UpdateConfigurationSetSendingEnabledResponse'),
+    newUpdateConfigurationSetSendingEnabledResponse,
+
+    -- ** UpdateConfigurationSetTrackingOptions
+    UpdateConfigurationSetTrackingOptions (UpdateConfigurationSetTrackingOptions'),
+    newUpdateConfigurationSetTrackingOptions,
+    UpdateConfigurationSetTrackingOptionsResponse (UpdateConfigurationSetTrackingOptionsResponse'),
+    newUpdateConfigurationSetTrackingOptionsResponse,
+
+    -- ** UpdateCustomVerificationEmailTemplate
+    UpdateCustomVerificationEmailTemplate (UpdateCustomVerificationEmailTemplate'),
+    newUpdateCustomVerificationEmailTemplate,
+    UpdateCustomVerificationEmailTemplateResponse (UpdateCustomVerificationEmailTemplateResponse'),
+    newUpdateCustomVerificationEmailTemplateResponse,
+
+    -- ** UpdateReceiptRule
+    UpdateReceiptRule (UpdateReceiptRule'),
+    newUpdateReceiptRule,
+    UpdateReceiptRuleResponse (UpdateReceiptRuleResponse'),
+    newUpdateReceiptRuleResponse,
+
+    -- ** UpdateTemplate
+    UpdateTemplate (UpdateTemplate'),
+    newUpdateTemplate,
+    UpdateTemplateResponse (UpdateTemplateResponse'),
+    newUpdateTemplateResponse,
+
+    -- ** VerifyDomainDkim
+    VerifyDomainDkim (VerifyDomainDkim'),
+    newVerifyDomainDkim,
+    VerifyDomainDkimResponse (VerifyDomainDkimResponse'),
+    newVerifyDomainDkimResponse,
+
+    -- ** VerifyDomainIdentity
+    VerifyDomainIdentity (VerifyDomainIdentity'),
+    newVerifyDomainIdentity,
+    VerifyDomainIdentityResponse (VerifyDomainIdentityResponse'),
+    newVerifyDomainIdentityResponse,
+
+    -- ** VerifyEmailAddress
+    VerifyEmailAddress (VerifyEmailAddress'),
+    newVerifyEmailAddress,
+    VerifyEmailAddressResponse (VerifyEmailAddressResponse'),
+    newVerifyEmailAddressResponse,
+
+    -- ** VerifyEmailIdentity
+    VerifyEmailIdentity (VerifyEmailIdentity'),
+    newVerifyEmailIdentity,
+    VerifyEmailIdentityResponse (VerifyEmailIdentityResponse'),
+    newVerifyEmailIdentityResponse,
+
+    -- * Types
+
+    -- ** BehaviorOnMXFailure
+    BehaviorOnMXFailure (..),
+
+    -- ** BounceType
+    BounceType (..),
+
+    -- ** BulkEmailStatus
+    BulkEmailStatus (..),
+
+    -- ** ConfigurationSetAttribute
+    ConfigurationSetAttribute (..),
+
+    -- ** CustomMailFromStatus
+    CustomMailFromStatus (..),
+
+    -- ** DimensionValueSource
+    DimensionValueSource (..),
+
+    -- ** DsnAction
+    DsnAction (..),
+
+    -- ** EventType
+    EventType (..),
+
+    -- ** IdentityType
+    IdentityType (..),
+
+    -- ** InvocationType
+    InvocationType (..),
+
+    -- ** NotificationType
+    NotificationType (..),
+
+    -- ** ReceiptFilterPolicy
+    ReceiptFilterPolicy (..),
+
+    -- ** SNSActionEncoding
+    SNSActionEncoding (..),
+
+    -- ** StopScope
+    StopScope (..),
+
+    -- ** TlsPolicy
+    TlsPolicy (..),
+
+    -- ** VerificationStatus
+    VerificationStatus (..),
+
+    -- ** AddHeaderAction
+    AddHeaderAction (AddHeaderAction'),
+    newAddHeaderAction,
+
+    -- ** Body
+    Body (Body'),
+    newBody,
+
+    -- ** BounceAction
+    BounceAction (BounceAction'),
+    newBounceAction,
+
+    -- ** BouncedRecipientInfo
+    BouncedRecipientInfo (BouncedRecipientInfo'),
+    newBouncedRecipientInfo,
+
+    -- ** BulkEmailDestination
+    BulkEmailDestination (BulkEmailDestination'),
+    newBulkEmailDestination,
+
+    -- ** BulkEmailDestinationStatus
+    BulkEmailDestinationStatus (BulkEmailDestinationStatus'),
+    newBulkEmailDestinationStatus,
+
+    -- ** CloudWatchDestination
+    CloudWatchDestination (CloudWatchDestination'),
+    newCloudWatchDestination,
+
+    -- ** CloudWatchDimensionConfiguration
+    CloudWatchDimensionConfiguration (CloudWatchDimensionConfiguration'),
+    newCloudWatchDimensionConfiguration,
+
+    -- ** ConfigurationSet
+    ConfigurationSet (ConfigurationSet'),
+    newConfigurationSet,
+
+    -- ** Content
+    Content (Content'),
+    newContent,
+
+    -- ** CustomVerificationEmailTemplate
+    CustomVerificationEmailTemplate (CustomVerificationEmailTemplate'),
+    newCustomVerificationEmailTemplate,
+
+    -- ** DeliveryOptions
+    DeliveryOptions (DeliveryOptions'),
+    newDeliveryOptions,
+
+    -- ** Destination
+    Destination (Destination'),
+    newDestination,
+
+    -- ** EventDestination
+    EventDestination (EventDestination'),
+    newEventDestination,
+
+    -- ** ExtensionField
+    ExtensionField (ExtensionField'),
+    newExtensionField,
+
+    -- ** IdentityDkimAttributes
+    IdentityDkimAttributes (IdentityDkimAttributes'),
+    newIdentityDkimAttributes,
+
+    -- ** IdentityMailFromDomainAttributes
+    IdentityMailFromDomainAttributes (IdentityMailFromDomainAttributes'),
+    newIdentityMailFromDomainAttributes,
+
+    -- ** IdentityNotificationAttributes
+    IdentityNotificationAttributes (IdentityNotificationAttributes'),
+    newIdentityNotificationAttributes,
+
+    -- ** IdentityVerificationAttributes
+    IdentityVerificationAttributes (IdentityVerificationAttributes'),
+    newIdentityVerificationAttributes,
+
+    -- ** KinesisFirehoseDestination
+    KinesisFirehoseDestination (KinesisFirehoseDestination'),
+    newKinesisFirehoseDestination,
+
+    -- ** LambdaAction
+    LambdaAction (LambdaAction'),
+    newLambdaAction,
+
+    -- ** Message
+    Message (Message'),
+    newMessage,
+
+    -- ** MessageDsn
+    MessageDsn (MessageDsn'),
+    newMessageDsn,
+
+    -- ** MessageTag
+    MessageTag (MessageTag'),
+    newMessageTag,
+
+    -- ** RawMessage
+    RawMessage (RawMessage'),
+    newRawMessage,
+
+    -- ** ReceiptAction
+    ReceiptAction (ReceiptAction'),
+    newReceiptAction,
+
+    -- ** ReceiptFilter
+    ReceiptFilter (ReceiptFilter'),
+    newReceiptFilter,
+
+    -- ** ReceiptIpFilter
+    ReceiptIpFilter (ReceiptIpFilter'),
+    newReceiptIpFilter,
+
+    -- ** ReceiptRule
+    ReceiptRule (ReceiptRule'),
+    newReceiptRule,
+
+    -- ** ReceiptRuleSetMetadata
+    ReceiptRuleSetMetadata (ReceiptRuleSetMetadata'),
+    newReceiptRuleSetMetadata,
+
+    -- ** RecipientDsnFields
+    RecipientDsnFields (RecipientDsnFields'),
+    newRecipientDsnFields,
+
+    -- ** ReputationOptions
+    ReputationOptions (ReputationOptions'),
+    newReputationOptions,
+
+    -- ** S3Action
+    S3Action (S3Action'),
+    newS3Action,
+
+    -- ** SNSAction
+    SNSAction (SNSAction'),
+    newSNSAction,
+
+    -- ** SNSDestination
+    SNSDestination (SNSDestination'),
+    newSNSDestination,
+
+    -- ** SendDataPoint
+    SendDataPoint (SendDataPoint'),
+    newSendDataPoint,
+
+    -- ** StopAction
+    StopAction (StopAction'),
+    newStopAction,
+
+    -- ** Template
+    Template (Template'),
+    newTemplate,
+
+    -- ** TemplateMetadata
+    TemplateMetadata (TemplateMetadata'),
+    newTemplateMetadata,
+
+    -- ** TrackingOptions
+    TrackingOptions (TrackingOptions'),
+    newTrackingOptions,
+
+    -- ** WorkmailAction
+    WorkmailAction (WorkmailAction'),
+    newWorkmailAction,
+  )
+where
+
+import Amazonka.SES.CloneReceiptRuleSet
+import Amazonka.SES.CreateConfigurationSet
+import Amazonka.SES.CreateConfigurationSetEventDestination
+import Amazonka.SES.CreateConfigurationSetTrackingOptions
+import Amazonka.SES.CreateCustomVerificationEmailTemplate
+import Amazonka.SES.CreateReceiptFilter
+import Amazonka.SES.CreateReceiptRule
+import Amazonka.SES.CreateReceiptRuleSet
+import Amazonka.SES.CreateTemplate
+import Amazonka.SES.DeleteConfigurationSet
+import Amazonka.SES.DeleteConfigurationSetEventDestination
+import Amazonka.SES.DeleteConfigurationSetTrackingOptions
+import Amazonka.SES.DeleteCustomVerificationEmailTemplate
+import Amazonka.SES.DeleteIdentity
+import Amazonka.SES.DeleteIdentityPolicy
+import Amazonka.SES.DeleteReceiptFilter
+import Amazonka.SES.DeleteReceiptRule
+import Amazonka.SES.DeleteReceiptRuleSet
+import Amazonka.SES.DeleteTemplate
+import Amazonka.SES.DeleteVerifiedEmailAddress
+import Amazonka.SES.DescribeActiveReceiptRuleSet
+import Amazonka.SES.DescribeConfigurationSet
+import Amazonka.SES.DescribeReceiptRule
+import Amazonka.SES.DescribeReceiptRuleSet
+import Amazonka.SES.GetAccountSendingEnabled
+import Amazonka.SES.GetCustomVerificationEmailTemplate
+import Amazonka.SES.GetIdentityDkimAttributes
+import Amazonka.SES.GetIdentityMailFromDomainAttributes
+import Amazonka.SES.GetIdentityNotificationAttributes
+import Amazonka.SES.GetIdentityPolicies
+import Amazonka.SES.GetIdentityVerificationAttributes
+import Amazonka.SES.GetSendQuota
+import Amazonka.SES.GetSendStatistics
+import Amazonka.SES.GetTemplate
+import Amazonka.SES.Lens
+import Amazonka.SES.ListConfigurationSets
+import Amazonka.SES.ListCustomVerificationEmailTemplates
+import Amazonka.SES.ListIdentities
+import Amazonka.SES.ListIdentityPolicies
+import Amazonka.SES.ListReceiptFilters
+import Amazonka.SES.ListReceiptRuleSets
+import Amazonka.SES.ListTemplates
+import Amazonka.SES.ListVerifiedEmailAddresses
+import Amazonka.SES.PutConfigurationSetDeliveryOptions
+import Amazonka.SES.PutIdentityPolicy
+import Amazonka.SES.ReorderReceiptRuleSet
+import Amazonka.SES.SendBounce
+import Amazonka.SES.SendBulkTemplatedEmail
+import Amazonka.SES.SendCustomVerificationEmail
+import Amazonka.SES.SendEmail
+import Amazonka.SES.SendRawEmail
+import Amazonka.SES.SendTemplatedEmail
+import Amazonka.SES.SetActiveReceiptRuleSet
+import Amazonka.SES.SetIdentityDkimEnabled
+import Amazonka.SES.SetIdentityFeedbackForwardingEnabled
+import Amazonka.SES.SetIdentityHeadersInNotificationsEnabled
+import Amazonka.SES.SetIdentityMailFromDomain
+import Amazonka.SES.SetIdentityNotificationTopic
+import Amazonka.SES.SetReceiptRulePosition
+import Amazonka.SES.TestRenderTemplate
+import Amazonka.SES.Types
+import Amazonka.SES.UpdateAccountSendingEnabled
+import Amazonka.SES.UpdateConfigurationSetEventDestination
+import Amazonka.SES.UpdateConfigurationSetReputationMetricsEnabled
+import Amazonka.SES.UpdateConfigurationSetSendingEnabled
+import Amazonka.SES.UpdateConfigurationSetTrackingOptions
+import Amazonka.SES.UpdateCustomVerificationEmailTemplate
+import Amazonka.SES.UpdateReceiptRule
+import Amazonka.SES.UpdateTemplate
+import Amazonka.SES.VerifyDomainDkim
+import Amazonka.SES.VerifyDomainIdentity
+import Amazonka.SES.VerifyEmailAddress
+import Amazonka.SES.VerifyEmailIdentity
+import Amazonka.SES.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'SES'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/SES/CloneReceiptRuleSet.hs b/gen/Amazonka/SES/CloneReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CloneReceiptRuleSet.hs
@@ -0,0 +1,201 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CloneReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CloneReceiptRuleSet
+  ( -- * Creating a Request
+    CloneReceiptRuleSet (..),
+    newCloneReceiptRuleSet,
+
+    -- * Request Lenses
+    cloneReceiptRuleSet_ruleSetName,
+    cloneReceiptRuleSet_originalRuleSetName,
+
+    -- * Destructuring the Response
+    CloneReceiptRuleSetResponse (..),
+    newCloneReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    cloneReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a receipt rule set by cloning an existing
+-- one. You use receipt rule sets to receive email with Amazon SES. For
+-- more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCloneReceiptRuleSet' smart constructor.
+data CloneReceiptRuleSet = CloneReceiptRuleSet'
+  { -- | The name of the rule set to create. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Start and end with a letter or number.
+    --
+    -- -   Contain less than 64 characters.
+    ruleSetName :: Prelude.Text,
+    -- | The name of the rule set to clone.
+    originalRuleSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloneReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'cloneReceiptRuleSet_ruleSetName' - The name of the rule set to create. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+--
+-- 'originalRuleSetName', 'cloneReceiptRuleSet_originalRuleSetName' - The name of the rule set to clone.
+newCloneReceiptRuleSet ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'originalRuleSetName'
+  Prelude.Text ->
+  CloneReceiptRuleSet
+newCloneReceiptRuleSet
+  pRuleSetName_
+  pOriginalRuleSetName_ =
+    CloneReceiptRuleSet'
+      { ruleSetName = pRuleSetName_,
+        originalRuleSetName = pOriginalRuleSetName_
+      }
+
+-- | The name of the rule set to create. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+cloneReceiptRuleSet_ruleSetName :: Lens.Lens' CloneReceiptRuleSet Prelude.Text
+cloneReceiptRuleSet_ruleSetName = Lens.lens (\CloneReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@CloneReceiptRuleSet' {} a -> s {ruleSetName = a} :: CloneReceiptRuleSet)
+
+-- | The name of the rule set to clone.
+cloneReceiptRuleSet_originalRuleSetName :: Lens.Lens' CloneReceiptRuleSet Prelude.Text
+cloneReceiptRuleSet_originalRuleSetName = Lens.lens (\CloneReceiptRuleSet' {originalRuleSetName} -> originalRuleSetName) (\s@CloneReceiptRuleSet' {} a -> s {originalRuleSetName = a} :: CloneReceiptRuleSet)
+
+instance Core.AWSRequest CloneReceiptRuleSet where
+  type
+    AWSResponse CloneReceiptRuleSet =
+      CloneReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CloneReceiptRuleSetResult"
+      ( \s h x ->
+          CloneReceiptRuleSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CloneReceiptRuleSet where
+  hashWithSalt _salt CloneReceiptRuleSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` originalRuleSetName
+
+instance Prelude.NFData CloneReceiptRuleSet where
+  rnf CloneReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf originalRuleSetName
+
+instance Data.ToHeaders CloneReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CloneReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CloneReceiptRuleSet where
+  toQuery CloneReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CloneReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName,
+        "OriginalRuleSetName" Data.=: originalRuleSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCloneReceiptRuleSetResponse' smart constructor.
+data CloneReceiptRuleSetResponse = CloneReceiptRuleSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloneReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'cloneReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newCloneReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CloneReceiptRuleSetResponse
+newCloneReceiptRuleSetResponse pHttpStatus_ =
+  CloneReceiptRuleSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+cloneReceiptRuleSetResponse_httpStatus :: Lens.Lens' CloneReceiptRuleSetResponse Prelude.Int
+cloneReceiptRuleSetResponse_httpStatus = Lens.lens (\CloneReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@CloneReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: CloneReceiptRuleSetResponse)
+
+instance Prelude.NFData CloneReceiptRuleSetResponse where
+  rnf CloneReceiptRuleSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateConfigurationSet.hs b/gen/Amazonka/SES/CreateConfigurationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateConfigurationSet.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateConfigurationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a configuration set.
+--
+-- Configuration sets enable you to publish email sending events. For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateConfigurationSet
+  ( -- * Creating a Request
+    CreateConfigurationSet (..),
+    newCreateConfigurationSet,
+
+    -- * Request Lenses
+    createConfigurationSet_configurationSet,
+
+    -- * Destructuring the Response
+    CreateConfigurationSetResponse (..),
+    newCreateConfigurationSetResponse,
+
+    -- * Response Lenses
+    createConfigurationSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a configuration set. Configuration sets
+-- enable you to publish email sending events. For information about using
+-- configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateConfigurationSet' smart constructor.
+data CreateConfigurationSet = CreateConfigurationSet'
+  { -- | A data structure that contains the name of the configuration set.
+    configurationSet :: ConfigurationSet
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSet', 'createConfigurationSet_configurationSet' - A data structure that contains the name of the configuration set.
+newCreateConfigurationSet ::
+  -- | 'configurationSet'
+  ConfigurationSet ->
+  CreateConfigurationSet
+newCreateConfigurationSet pConfigurationSet_ =
+  CreateConfigurationSet'
+    { configurationSet =
+        pConfigurationSet_
+    }
+
+-- | A data structure that contains the name of the configuration set.
+createConfigurationSet_configurationSet :: Lens.Lens' CreateConfigurationSet ConfigurationSet
+createConfigurationSet_configurationSet = Lens.lens (\CreateConfigurationSet' {configurationSet} -> configurationSet) (\s@CreateConfigurationSet' {} a -> s {configurationSet = a} :: CreateConfigurationSet)
+
+instance Core.AWSRequest CreateConfigurationSet where
+  type
+    AWSResponse CreateConfigurationSet =
+      CreateConfigurationSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateConfigurationSetResult"
+      ( \s h x ->
+          CreateConfigurationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateConfigurationSet where
+  hashWithSalt _salt CreateConfigurationSet' {..} =
+    _salt `Prelude.hashWithSalt` configurationSet
+
+instance Prelude.NFData CreateConfigurationSet where
+  rnf CreateConfigurationSet' {..} =
+    Prelude.rnf configurationSet
+
+instance Data.ToHeaders CreateConfigurationSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateConfigurationSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateConfigurationSet where
+  toQuery CreateConfigurationSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateConfigurationSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSet" Data.=: configurationSet
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateConfigurationSetResponse' smart constructor.
+data CreateConfigurationSetResponse = CreateConfigurationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createConfigurationSetResponse_httpStatus' - The response's http status code.
+newCreateConfigurationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConfigurationSetResponse
+newCreateConfigurationSetResponse pHttpStatus_ =
+  CreateConfigurationSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createConfigurationSetResponse_httpStatus :: Lens.Lens' CreateConfigurationSetResponse Prelude.Int
+createConfigurationSetResponse_httpStatus = Lens.lens (\CreateConfigurationSetResponse' {httpStatus} -> httpStatus) (\s@CreateConfigurationSetResponse' {} a -> s {httpStatus = a} :: CreateConfigurationSetResponse)
+
+instance
+  Prelude.NFData
+    CreateConfigurationSetResponse
+  where
+  rnf CreateConfigurationSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateConfigurationSetEventDestination.hs b/gen/Amazonka/SES/CreateConfigurationSetEventDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateConfigurationSetEventDestination.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateConfigurationSetEventDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a configuration set event destination.
+--
+-- When you create or update an event destination, you must provide one,
+-- and only one, destination. The destination can be CloudWatch, Amazon
+-- Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS).
+--
+-- An event destination is the AWS service to which Amazon SES publishes
+-- the email sending events associated with a configuration set. For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateConfigurationSetEventDestination
+  ( -- * Creating a Request
+    CreateConfigurationSetEventDestination (..),
+    newCreateConfigurationSetEventDestination,
+
+    -- * Request Lenses
+    createConfigurationSetEventDestination_configurationSetName,
+    createConfigurationSetEventDestination_eventDestination,
+
+    -- * Destructuring the Response
+    CreateConfigurationSetEventDestinationResponse (..),
+    newCreateConfigurationSetEventDestinationResponse,
+
+    -- * Response Lenses
+    createConfigurationSetEventDestinationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a configuration set event destination. A
+-- configuration set event destination, which can be either Amazon
+-- CloudWatch or Amazon Kinesis Firehose, describes an AWS service in which
+-- Amazon SES publishes the email sending events associated with a
+-- configuration set. For information about using configuration sets, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateConfigurationSetEventDestination' smart constructor.
+data CreateConfigurationSetEventDestination = CreateConfigurationSetEventDestination'
+  { -- | The name of the configuration set that the event destination should be
+    -- associated with.
+    configurationSetName :: Prelude.Text,
+    -- | An object that describes the AWS service that email sending event
+    -- information will be published to.
+    eventDestination :: EventDestination
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSetEventDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'createConfigurationSetEventDestination_configurationSetName' - The name of the configuration set that the event destination should be
+-- associated with.
+--
+-- 'eventDestination', 'createConfigurationSetEventDestination_eventDestination' - An object that describes the AWS service that email sending event
+-- information will be published to.
+newCreateConfigurationSetEventDestination ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'eventDestination'
+  EventDestination ->
+  CreateConfigurationSetEventDestination
+newCreateConfigurationSetEventDestination
+  pConfigurationSetName_
+  pEventDestination_ =
+    CreateConfigurationSetEventDestination'
+      { configurationSetName =
+          pConfigurationSetName_,
+        eventDestination =
+          pEventDestination_
+      }
+
+-- | The name of the configuration set that the event destination should be
+-- associated with.
+createConfigurationSetEventDestination_configurationSetName :: Lens.Lens' CreateConfigurationSetEventDestination Prelude.Text
+createConfigurationSetEventDestination_configurationSetName = Lens.lens (\CreateConfigurationSetEventDestination' {configurationSetName} -> configurationSetName) (\s@CreateConfigurationSetEventDestination' {} a -> s {configurationSetName = a} :: CreateConfigurationSetEventDestination)
+
+-- | An object that describes the AWS service that email sending event
+-- information will be published to.
+createConfigurationSetEventDestination_eventDestination :: Lens.Lens' CreateConfigurationSetEventDestination EventDestination
+createConfigurationSetEventDestination_eventDestination = Lens.lens (\CreateConfigurationSetEventDestination' {eventDestination} -> eventDestination) (\s@CreateConfigurationSetEventDestination' {} a -> s {eventDestination = a} :: CreateConfigurationSetEventDestination)
+
+instance
+  Core.AWSRequest
+    CreateConfigurationSetEventDestination
+  where
+  type
+    AWSResponse
+      CreateConfigurationSetEventDestination =
+      CreateConfigurationSetEventDestinationResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateConfigurationSetEventDestinationResult"
+      ( \s h x ->
+          CreateConfigurationSetEventDestinationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateConfigurationSetEventDestination
+  where
+  hashWithSalt
+    _salt
+    CreateConfigurationSetEventDestination' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` eventDestination
+
+instance
+  Prelude.NFData
+    CreateConfigurationSetEventDestination
+  where
+  rnf CreateConfigurationSetEventDestination' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf eventDestination
+
+instance
+  Data.ToHeaders
+    CreateConfigurationSetEventDestination
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    CreateConfigurationSetEventDestination
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateConfigurationSetEventDestination
+  where
+  toQuery CreateConfigurationSetEventDestination' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "CreateConfigurationSetEventDestination" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "EventDestination" Data.=: eventDestination
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateConfigurationSetEventDestinationResponse' smart constructor.
+data CreateConfigurationSetEventDestinationResponse = CreateConfigurationSetEventDestinationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSetEventDestinationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createConfigurationSetEventDestinationResponse_httpStatus' - The response's http status code.
+newCreateConfigurationSetEventDestinationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConfigurationSetEventDestinationResponse
+newCreateConfigurationSetEventDestinationResponse
+  pHttpStatus_ =
+    CreateConfigurationSetEventDestinationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+createConfigurationSetEventDestinationResponse_httpStatus :: Lens.Lens' CreateConfigurationSetEventDestinationResponse Prelude.Int
+createConfigurationSetEventDestinationResponse_httpStatus = Lens.lens (\CreateConfigurationSetEventDestinationResponse' {httpStatus} -> httpStatus) (\s@CreateConfigurationSetEventDestinationResponse' {} a -> s {httpStatus = a} :: CreateConfigurationSetEventDestinationResponse)
+
+instance
+  Prelude.NFData
+    CreateConfigurationSetEventDestinationResponse
+  where
+  rnf
+    CreateConfigurationSetEventDestinationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateConfigurationSetTrackingOptions.hs b/gen/Amazonka/SES/CreateConfigurationSetTrackingOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateConfigurationSetTrackingOptions.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateConfigurationSetTrackingOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an association between a configuration set and a custom domain
+-- for open and click event tracking.
+--
+-- By default, images and links used for tracking open and click events are
+-- hosted on domains operated by Amazon SES. You can configure a subdomain
+-- of your own to handle these events. For information about using custom
+-- domains, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Amazon SES Developer Guide>.
+module Amazonka.SES.CreateConfigurationSetTrackingOptions
+  ( -- * Creating a Request
+    CreateConfigurationSetTrackingOptions (..),
+    newCreateConfigurationSetTrackingOptions,
+
+    -- * Request Lenses
+    createConfigurationSetTrackingOptions_configurationSetName,
+    createConfigurationSetTrackingOptions_trackingOptions,
+
+    -- * Destructuring the Response
+    CreateConfigurationSetTrackingOptionsResponse (..),
+    newCreateConfigurationSetTrackingOptionsResponse,
+
+    -- * Response Lenses
+    createConfigurationSetTrackingOptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create an open and click tracking option object
+-- in a configuration set.
+--
+-- /See:/ 'newCreateConfigurationSetTrackingOptions' smart constructor.
+data CreateConfigurationSetTrackingOptions = CreateConfigurationSetTrackingOptions'
+  { -- | The name of the configuration set that the tracking options should be
+    -- associated with.
+    configurationSetName :: Prelude.Text,
+    trackingOptions :: TrackingOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSetTrackingOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'createConfigurationSetTrackingOptions_configurationSetName' - The name of the configuration set that the tracking options should be
+-- associated with.
+--
+-- 'trackingOptions', 'createConfigurationSetTrackingOptions_trackingOptions' - Undocumented member.
+newCreateConfigurationSetTrackingOptions ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'trackingOptions'
+  TrackingOptions ->
+  CreateConfigurationSetTrackingOptions
+newCreateConfigurationSetTrackingOptions
+  pConfigurationSetName_
+  pTrackingOptions_ =
+    CreateConfigurationSetTrackingOptions'
+      { configurationSetName =
+          pConfigurationSetName_,
+        trackingOptions = pTrackingOptions_
+      }
+
+-- | The name of the configuration set that the tracking options should be
+-- associated with.
+createConfigurationSetTrackingOptions_configurationSetName :: Lens.Lens' CreateConfigurationSetTrackingOptions Prelude.Text
+createConfigurationSetTrackingOptions_configurationSetName = Lens.lens (\CreateConfigurationSetTrackingOptions' {configurationSetName} -> configurationSetName) (\s@CreateConfigurationSetTrackingOptions' {} a -> s {configurationSetName = a} :: CreateConfigurationSetTrackingOptions)
+
+-- | Undocumented member.
+createConfigurationSetTrackingOptions_trackingOptions :: Lens.Lens' CreateConfigurationSetTrackingOptions TrackingOptions
+createConfigurationSetTrackingOptions_trackingOptions = Lens.lens (\CreateConfigurationSetTrackingOptions' {trackingOptions} -> trackingOptions) (\s@CreateConfigurationSetTrackingOptions' {} a -> s {trackingOptions = a} :: CreateConfigurationSetTrackingOptions)
+
+instance
+  Core.AWSRequest
+    CreateConfigurationSetTrackingOptions
+  where
+  type
+    AWSResponse
+      CreateConfigurationSetTrackingOptions =
+      CreateConfigurationSetTrackingOptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateConfigurationSetTrackingOptionsResult"
+      ( \s h x ->
+          CreateConfigurationSetTrackingOptionsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateConfigurationSetTrackingOptions
+  where
+  hashWithSalt
+    _salt
+    CreateConfigurationSetTrackingOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` trackingOptions
+
+instance
+  Prelude.NFData
+    CreateConfigurationSetTrackingOptions
+  where
+  rnf CreateConfigurationSetTrackingOptions' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf trackingOptions
+
+instance
+  Data.ToHeaders
+    CreateConfigurationSetTrackingOptions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    CreateConfigurationSetTrackingOptions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateConfigurationSetTrackingOptions
+  where
+  toQuery CreateConfigurationSetTrackingOptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "CreateConfigurationSetTrackingOptions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "TrackingOptions" Data.=: trackingOptions
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateConfigurationSetTrackingOptionsResponse' smart constructor.
+data CreateConfigurationSetTrackingOptionsResponse = CreateConfigurationSetTrackingOptionsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateConfigurationSetTrackingOptionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createConfigurationSetTrackingOptionsResponse_httpStatus' - The response's http status code.
+newCreateConfigurationSetTrackingOptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateConfigurationSetTrackingOptionsResponse
+newCreateConfigurationSetTrackingOptionsResponse
+  pHttpStatus_ =
+    CreateConfigurationSetTrackingOptionsResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+createConfigurationSetTrackingOptionsResponse_httpStatus :: Lens.Lens' CreateConfigurationSetTrackingOptionsResponse Prelude.Int
+createConfigurationSetTrackingOptionsResponse_httpStatus = Lens.lens (\CreateConfigurationSetTrackingOptionsResponse' {httpStatus} -> httpStatus) (\s@CreateConfigurationSetTrackingOptionsResponse' {} a -> s {httpStatus = a} :: CreateConfigurationSetTrackingOptionsResponse)
+
+instance
+  Prelude.NFData
+    CreateConfigurationSetTrackingOptionsResponse
+  where
+  rnf
+    CreateConfigurationSetTrackingOptionsResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateCustomVerificationEmailTemplate.hs b/gen/Amazonka/SES/CreateCustomVerificationEmailTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateCustomVerificationEmailTemplate.hs
@@ -0,0 +1,265 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateCustomVerificationEmailTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new custom verification email template.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateCustomVerificationEmailTemplate
+  ( -- * Creating a Request
+    CreateCustomVerificationEmailTemplate (..),
+    newCreateCustomVerificationEmailTemplate,
+
+    -- * Request Lenses
+    createCustomVerificationEmailTemplate_templateName,
+    createCustomVerificationEmailTemplate_fromEmailAddress,
+    createCustomVerificationEmailTemplate_templateSubject,
+    createCustomVerificationEmailTemplate_templateContent,
+    createCustomVerificationEmailTemplate_successRedirectionURL,
+    createCustomVerificationEmailTemplate_failureRedirectionURL,
+
+    -- * Destructuring the Response
+    CreateCustomVerificationEmailTemplateResponse (..),
+    newCreateCustomVerificationEmailTemplateResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a custom verification email template.
+--
+-- /See:/ 'newCreateCustomVerificationEmailTemplate' smart constructor.
+data CreateCustomVerificationEmailTemplate = CreateCustomVerificationEmailTemplate'
+  { -- | The name of the custom verification email template.
+    templateName :: Prelude.Text,
+    -- | The email address that the custom verification email is sent from.
+    fromEmailAddress :: Prelude.Text,
+    -- | The subject line of the custom verification email.
+    templateSubject :: Prelude.Text,
+    -- | The content of the custom verification email. The total size of the
+    -- email must be less than 10 MB. The message body may contain HTML, with
+    -- some limitations. For more information, see
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+    -- in the /Amazon SES Developer Guide/.
+    templateContent :: Prelude.Text,
+    -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is successfully verified.
+    successRedirectionURL :: Prelude.Text,
+    -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is not successfully verified.
+    failureRedirectionURL :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCustomVerificationEmailTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'createCustomVerificationEmailTemplate_templateName' - The name of the custom verification email template.
+--
+-- 'fromEmailAddress', 'createCustomVerificationEmailTemplate_fromEmailAddress' - The email address that the custom verification email is sent from.
+--
+-- 'templateSubject', 'createCustomVerificationEmailTemplate_templateSubject' - The subject line of the custom verification email.
+--
+-- 'templateContent', 'createCustomVerificationEmailTemplate_templateContent' - The content of the custom verification email. The total size of the
+-- email must be less than 10 MB. The message body may contain HTML, with
+-- some limitations. For more information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+-- in the /Amazon SES Developer Guide/.
+--
+-- 'successRedirectionURL', 'createCustomVerificationEmailTemplate_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+--
+-- 'failureRedirectionURL', 'createCustomVerificationEmailTemplate_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+newCreateCustomVerificationEmailTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  -- | 'fromEmailAddress'
+  Prelude.Text ->
+  -- | 'templateSubject'
+  Prelude.Text ->
+  -- | 'templateContent'
+  Prelude.Text ->
+  -- | 'successRedirectionURL'
+  Prelude.Text ->
+  -- | 'failureRedirectionURL'
+  Prelude.Text ->
+  CreateCustomVerificationEmailTemplate
+newCreateCustomVerificationEmailTemplate
+  pTemplateName_
+  pFromEmailAddress_
+  pTemplateSubject_
+  pTemplateContent_
+  pSuccessRedirectionURL_
+  pFailureRedirectionURL_ =
+    CreateCustomVerificationEmailTemplate'
+      { templateName =
+          pTemplateName_,
+        fromEmailAddress =
+          pFromEmailAddress_,
+        templateSubject = pTemplateSubject_,
+        templateContent = pTemplateContent_,
+        successRedirectionURL =
+          pSuccessRedirectionURL_,
+        failureRedirectionURL =
+          pFailureRedirectionURL_
+      }
+
+-- | The name of the custom verification email template.
+createCustomVerificationEmailTemplate_templateName :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_templateName = Lens.lens (\CreateCustomVerificationEmailTemplate' {templateName} -> templateName) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {templateName = a} :: CreateCustomVerificationEmailTemplate)
+
+-- | The email address that the custom verification email is sent from.
+createCustomVerificationEmailTemplate_fromEmailAddress :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_fromEmailAddress = Lens.lens (\CreateCustomVerificationEmailTemplate' {fromEmailAddress} -> fromEmailAddress) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {fromEmailAddress = a} :: CreateCustomVerificationEmailTemplate)
+
+-- | The subject line of the custom verification email.
+createCustomVerificationEmailTemplate_templateSubject :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_templateSubject = Lens.lens (\CreateCustomVerificationEmailTemplate' {templateSubject} -> templateSubject) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {templateSubject = a} :: CreateCustomVerificationEmailTemplate)
+
+-- | The content of the custom verification email. The total size of the
+-- email must be less than 10 MB. The message body may contain HTML, with
+-- some limitations. For more information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+-- in the /Amazon SES Developer Guide/.
+createCustomVerificationEmailTemplate_templateContent :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_templateContent = Lens.lens (\CreateCustomVerificationEmailTemplate' {templateContent} -> templateContent) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {templateContent = a} :: CreateCustomVerificationEmailTemplate)
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+createCustomVerificationEmailTemplate_successRedirectionURL :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_successRedirectionURL = Lens.lens (\CreateCustomVerificationEmailTemplate' {successRedirectionURL} -> successRedirectionURL) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {successRedirectionURL = a} :: CreateCustomVerificationEmailTemplate)
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+createCustomVerificationEmailTemplate_failureRedirectionURL :: Lens.Lens' CreateCustomVerificationEmailTemplate Prelude.Text
+createCustomVerificationEmailTemplate_failureRedirectionURL = Lens.lens (\CreateCustomVerificationEmailTemplate' {failureRedirectionURL} -> failureRedirectionURL) (\s@CreateCustomVerificationEmailTemplate' {} a -> s {failureRedirectionURL = a} :: CreateCustomVerificationEmailTemplate)
+
+instance
+  Core.AWSRequest
+    CreateCustomVerificationEmailTemplate
+  where
+  type
+    AWSResponse
+      CreateCustomVerificationEmailTemplate =
+      CreateCustomVerificationEmailTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      CreateCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.Hashable
+    CreateCustomVerificationEmailTemplate
+  where
+  hashWithSalt
+    _salt
+    CreateCustomVerificationEmailTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` templateName
+        `Prelude.hashWithSalt` fromEmailAddress
+        `Prelude.hashWithSalt` templateSubject
+        `Prelude.hashWithSalt` templateContent
+        `Prelude.hashWithSalt` successRedirectionURL
+        `Prelude.hashWithSalt` failureRedirectionURL
+
+instance
+  Prelude.NFData
+    CreateCustomVerificationEmailTemplate
+  where
+  rnf CreateCustomVerificationEmailTemplate' {..} =
+    Prelude.rnf templateName
+      `Prelude.seq` Prelude.rnf fromEmailAddress
+      `Prelude.seq` Prelude.rnf templateSubject
+      `Prelude.seq` Prelude.rnf templateContent
+      `Prelude.seq` Prelude.rnf successRedirectionURL
+      `Prelude.seq` Prelude.rnf failureRedirectionURL
+
+instance
+  Data.ToHeaders
+    CreateCustomVerificationEmailTemplate
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    CreateCustomVerificationEmailTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    CreateCustomVerificationEmailTemplate
+  where
+  toQuery CreateCustomVerificationEmailTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "CreateCustomVerificationEmailTemplate" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName,
+        "FromEmailAddress" Data.=: fromEmailAddress,
+        "TemplateSubject" Data.=: templateSubject,
+        "TemplateContent" Data.=: templateContent,
+        "SuccessRedirectionURL"
+          Data.=: successRedirectionURL,
+        "FailureRedirectionURL"
+          Data.=: failureRedirectionURL
+      ]
+
+-- | /See:/ 'newCreateCustomVerificationEmailTemplateResponse' smart constructor.
+data CreateCustomVerificationEmailTemplateResponse = CreateCustomVerificationEmailTemplateResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCustomVerificationEmailTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newCreateCustomVerificationEmailTemplateResponse ::
+  CreateCustomVerificationEmailTemplateResponse
+newCreateCustomVerificationEmailTemplateResponse =
+  CreateCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.NFData
+    CreateCustomVerificationEmailTemplateResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/CreateReceiptFilter.hs b/gen/Amazonka/SES/CreateReceiptFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateReceiptFilter.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateReceiptFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new IP address filter.
+--
+-- For information about setting up IP address filters, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateReceiptFilter
+  ( -- * Creating a Request
+    CreateReceiptFilter (..),
+    newCreateReceiptFilter,
+
+    -- * Request Lenses
+    createReceiptFilter_filter,
+
+    -- * Destructuring the Response
+    CreateReceiptFilterResponse (..),
+    newCreateReceiptFilterResponse,
+
+    -- * Response Lenses
+    createReceiptFilterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a new IP address filter. You use IP
+-- address filters when you receive email with Amazon SES. For more
+-- information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateReceiptFilter' smart constructor.
+data CreateReceiptFilter = CreateReceiptFilter'
+  { -- | 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.
+    filter' :: ReceiptFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filter'', 'createReceiptFilter_filter' - 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.
+newCreateReceiptFilter ::
+  -- | 'filter''
+  ReceiptFilter ->
+  CreateReceiptFilter
+newCreateReceiptFilter pFilter_ =
+  CreateReceiptFilter' {filter' = 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.
+createReceiptFilter_filter :: Lens.Lens' CreateReceiptFilter ReceiptFilter
+createReceiptFilter_filter = Lens.lens (\CreateReceiptFilter' {filter'} -> filter') (\s@CreateReceiptFilter' {} a -> s {filter' = a} :: CreateReceiptFilter)
+
+instance Core.AWSRequest CreateReceiptFilter where
+  type
+    AWSResponse CreateReceiptFilter =
+      CreateReceiptFilterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateReceiptFilterResult"
+      ( \s h x ->
+          CreateReceiptFilterResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateReceiptFilter where
+  hashWithSalt _salt CreateReceiptFilter' {..} =
+    _salt `Prelude.hashWithSalt` filter'
+
+instance Prelude.NFData CreateReceiptFilter where
+  rnf CreateReceiptFilter' {..} = Prelude.rnf filter'
+
+instance Data.ToHeaders CreateReceiptFilter where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateReceiptFilter where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateReceiptFilter where
+  toQuery CreateReceiptFilter' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateReceiptFilter" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Filter" Data.=: filter'
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateReceiptFilterResponse' smart constructor.
+data CreateReceiptFilterResponse = CreateReceiptFilterResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptFilterResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createReceiptFilterResponse_httpStatus' - The response's http status code.
+newCreateReceiptFilterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateReceiptFilterResponse
+newCreateReceiptFilterResponse pHttpStatus_ =
+  CreateReceiptFilterResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createReceiptFilterResponse_httpStatus :: Lens.Lens' CreateReceiptFilterResponse Prelude.Int
+createReceiptFilterResponse_httpStatus = Lens.lens (\CreateReceiptFilterResponse' {httpStatus} -> httpStatus) (\s@CreateReceiptFilterResponse' {} a -> s {httpStatus = a} :: CreateReceiptFilterResponse)
+
+instance Prelude.NFData CreateReceiptFilterResponse where
+  rnf CreateReceiptFilterResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateReceiptRule.hs b/gen/Amazonka/SES/CreateReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateReceiptRule.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateReceiptRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a receipt rule.
+--
+-- For information about setting up receipt rules, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateReceiptRule
+  ( -- * Creating a Request
+    CreateReceiptRule (..),
+    newCreateReceiptRule,
+
+    -- * Request Lenses
+    createReceiptRule_after,
+    createReceiptRule_ruleSetName,
+    createReceiptRule_rule,
+
+    -- * Destructuring the Response
+    CreateReceiptRuleResponse (..),
+    newCreateReceiptRuleResponse,
+
+    -- * Response Lenses
+    createReceiptRuleResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create a receipt rule. You use receipt rules to
+-- receive email with Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateReceiptRule' smart constructor.
+data CreateReceiptRule = CreateReceiptRule'
+  { -- | 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.
+    after :: Prelude.Maybe Prelude.Text,
+    -- | The name of the rule set that the receipt rule will be added to.
+    ruleSetName :: Prelude.Text,
+    -- | A data structure that contains the specified rule\'s name, actions,
+    -- recipients, domains, enabled status, scan status, and TLS policy.
+    rule :: ReceiptRule
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'after', 'createReceiptRule_after' - 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.
+--
+-- 'ruleSetName', 'createReceiptRule_ruleSetName' - The name of the rule set that the receipt rule will be added to.
+--
+-- 'rule', 'createReceiptRule_rule' - A data structure that contains the specified rule\'s name, actions,
+-- recipients, domains, enabled status, scan status, and TLS policy.
+newCreateReceiptRule ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'rule'
+  ReceiptRule ->
+  CreateReceiptRule
+newCreateReceiptRule pRuleSetName_ pRule_ =
+  CreateReceiptRule'
+    { after = Prelude.Nothing,
+      ruleSetName = pRuleSetName_,
+      rule = 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.
+createReceiptRule_after :: Lens.Lens' CreateReceiptRule (Prelude.Maybe Prelude.Text)
+createReceiptRule_after = Lens.lens (\CreateReceiptRule' {after} -> after) (\s@CreateReceiptRule' {} a -> s {after = a} :: CreateReceiptRule)
+
+-- | The name of the rule set that the receipt rule will be added to.
+createReceiptRule_ruleSetName :: Lens.Lens' CreateReceiptRule Prelude.Text
+createReceiptRule_ruleSetName = Lens.lens (\CreateReceiptRule' {ruleSetName} -> ruleSetName) (\s@CreateReceiptRule' {} a -> s {ruleSetName = a} :: CreateReceiptRule)
+
+-- | A data structure that contains the specified rule\'s name, actions,
+-- recipients, domains, enabled status, scan status, and TLS policy.
+createReceiptRule_rule :: Lens.Lens' CreateReceiptRule ReceiptRule
+createReceiptRule_rule = Lens.lens (\CreateReceiptRule' {rule} -> rule) (\s@CreateReceiptRule' {} a -> s {rule = a} :: CreateReceiptRule)
+
+instance Core.AWSRequest CreateReceiptRule where
+  type
+    AWSResponse CreateReceiptRule =
+      CreateReceiptRuleResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateReceiptRuleResult"
+      ( \s h x ->
+          CreateReceiptRuleResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateReceiptRule where
+  hashWithSalt _salt CreateReceiptRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` after
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` rule
+
+instance Prelude.NFData CreateReceiptRule where
+  rnf CreateReceiptRule' {..} =
+    Prelude.rnf after
+      `Prelude.seq` Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf rule
+
+instance Data.ToHeaders CreateReceiptRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateReceiptRule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateReceiptRule where
+  toQuery CreateReceiptRule' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateReceiptRule" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "After" Data.=: after,
+        "RuleSetName" Data.=: ruleSetName,
+        "Rule" Data.=: rule
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateReceiptRuleResponse' smart constructor.
+data CreateReceiptRuleResponse = CreateReceiptRuleResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createReceiptRuleResponse_httpStatus' - The response's http status code.
+newCreateReceiptRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateReceiptRuleResponse
+newCreateReceiptRuleResponse pHttpStatus_ =
+  CreateReceiptRuleResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createReceiptRuleResponse_httpStatus :: Lens.Lens' CreateReceiptRuleResponse Prelude.Int
+createReceiptRuleResponse_httpStatus = Lens.lens (\CreateReceiptRuleResponse' {httpStatus} -> httpStatus) (\s@CreateReceiptRuleResponse' {} a -> s {httpStatus = a} :: CreateReceiptRuleResponse)
+
+instance Prelude.NFData CreateReceiptRuleResponse where
+  rnf CreateReceiptRuleResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateReceiptRuleSet.hs b/gen/Amazonka/SES/CreateReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateReceiptRuleSet.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an empty receipt rule set.
+--
+-- For information about setting up receipt rule sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateReceiptRuleSet
+  ( -- * Creating a Request
+    CreateReceiptRuleSet (..),
+    newCreateReceiptRuleSet,
+
+    -- * Request Lenses
+    createReceiptRuleSet_ruleSetName,
+
+    -- * Destructuring the Response
+    CreateReceiptRuleSetResponse (..),
+    newCreateReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    createReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create an empty receipt rule set. You use
+-- receipt rule sets to receive email with Amazon SES. For more
+-- information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateReceiptRuleSet' smart constructor.
+data CreateReceiptRuleSet = CreateReceiptRuleSet'
+  { -- | The name of the rule set to create. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Start and end with a letter or number.
+    --
+    -- -   Contain less than 64 characters.
+    ruleSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'createReceiptRuleSet_ruleSetName' - The name of the rule set to create. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+newCreateReceiptRuleSet ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  CreateReceiptRuleSet
+newCreateReceiptRuleSet pRuleSetName_ =
+  CreateReceiptRuleSet' {ruleSetName = pRuleSetName_}
+
+-- | The name of the rule set to create. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+createReceiptRuleSet_ruleSetName :: Lens.Lens' CreateReceiptRuleSet Prelude.Text
+createReceiptRuleSet_ruleSetName = Lens.lens (\CreateReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@CreateReceiptRuleSet' {} a -> s {ruleSetName = a} :: CreateReceiptRuleSet)
+
+instance Core.AWSRequest CreateReceiptRuleSet where
+  type
+    AWSResponse CreateReceiptRuleSet =
+      CreateReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateReceiptRuleSetResult"
+      ( \s h x ->
+          CreateReceiptRuleSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateReceiptRuleSet where
+  hashWithSalt _salt CreateReceiptRuleSet' {..} =
+    _salt `Prelude.hashWithSalt` ruleSetName
+
+instance Prelude.NFData CreateReceiptRuleSet where
+  rnf CreateReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+
+instance Data.ToHeaders CreateReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateReceiptRuleSet where
+  toQuery CreateReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newCreateReceiptRuleSetResponse' smart constructor.
+data CreateReceiptRuleSetResponse = CreateReceiptRuleSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newCreateReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateReceiptRuleSetResponse
+newCreateReceiptRuleSetResponse pHttpStatus_ =
+  CreateReceiptRuleSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createReceiptRuleSetResponse_httpStatus :: Lens.Lens' CreateReceiptRuleSetResponse Prelude.Int
+createReceiptRuleSetResponse_httpStatus = Lens.lens (\CreateReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@CreateReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: CreateReceiptRuleSetResponse)
+
+instance Prelude.NFData CreateReceiptRuleSetResponse where
+  rnf CreateReceiptRuleSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/CreateTemplate.hs b/gen/Amazonka/SES/CreateTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/CreateTemplate.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.CreateTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates an email template. Email templates enable you to send
+-- personalized email to one or more destinations in a single API
+-- operation. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.CreateTemplate
+  ( -- * Creating a Request
+    CreateTemplate (..),
+    newCreateTemplate,
+
+    -- * Request Lenses
+    createTemplate_template,
+
+    -- * Destructuring the Response
+    CreateTemplateResponse (..),
+    newCreateTemplateResponse,
+
+    -- * Response Lenses
+    createTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to create an email template. For more information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCreateTemplate' smart constructor.
+data CreateTemplate = CreateTemplate'
+  { -- | The content of the email, composed of a subject line, an HTML part, and
+    -- a text-only part.
+    template :: Template
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'template', 'createTemplate_template' - The content of the email, composed of a subject line, an HTML part, and
+-- a text-only part.
+newCreateTemplate ::
+  -- | 'template'
+  Template ->
+  CreateTemplate
+newCreateTemplate pTemplate_ =
+  CreateTemplate' {template = pTemplate_}
+
+-- | The content of the email, composed of a subject line, an HTML part, and
+-- a text-only part.
+createTemplate_template :: Lens.Lens' CreateTemplate Template
+createTemplate_template = Lens.lens (\CreateTemplate' {template} -> template) (\s@CreateTemplate' {} a -> s {template = a} :: CreateTemplate)
+
+instance Core.AWSRequest CreateTemplate where
+  type
+    AWSResponse CreateTemplate =
+      CreateTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "CreateTemplateResult"
+      ( \s h x ->
+          CreateTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateTemplate where
+  hashWithSalt _salt CreateTemplate' {..} =
+    _salt `Prelude.hashWithSalt` template
+
+instance Prelude.NFData CreateTemplate where
+  rnf CreateTemplate' {..} = Prelude.rnf template
+
+instance Data.ToHeaders CreateTemplate where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath CreateTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery CreateTemplate where
+  toQuery CreateTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("CreateTemplate" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Template" Data.=: template
+      ]
+
+-- | /See:/ 'newCreateTemplateResponse' smart constructor.
+data CreateTemplateResponse = CreateTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'createTemplateResponse_httpStatus' - The response's http status code.
+newCreateTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateTemplateResponse
+newCreateTemplateResponse pHttpStatus_ =
+  CreateTemplateResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+createTemplateResponse_httpStatus :: Lens.Lens' CreateTemplateResponse Prelude.Int
+createTemplateResponse_httpStatus = Lens.lens (\CreateTemplateResponse' {httpStatus} -> httpStatus) (\s@CreateTemplateResponse' {} a -> s {httpStatus = a} :: CreateTemplateResponse)
+
+instance Prelude.NFData CreateTemplateResponse where
+  rnf CreateTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteConfigurationSet.hs b/gen/Amazonka/SES/DeleteConfigurationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteConfigurationSet.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteConfigurationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a configuration set. Configuration sets enable you to publish
+-- email sending events. For information about using configuration sets,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteConfigurationSet
+  ( -- * Creating a Request
+    DeleteConfigurationSet (..),
+    newDeleteConfigurationSet,
+
+    -- * Request Lenses
+    deleteConfigurationSet_configurationSetName,
+
+    -- * Destructuring the Response
+    DeleteConfigurationSetResponse (..),
+    newDeleteConfigurationSetResponse,
+
+    -- * Response Lenses
+    deleteConfigurationSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete a configuration set. Configuration sets
+-- enable you to publish email sending events. For information about using
+-- configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteConfigurationSet' smart constructor.
+data DeleteConfigurationSet = DeleteConfigurationSet'
+  { -- | The name of the configuration set to delete.
+    configurationSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'deleteConfigurationSet_configurationSetName' - The name of the configuration set to delete.
+newDeleteConfigurationSet ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  DeleteConfigurationSet
+newDeleteConfigurationSet pConfigurationSetName_ =
+  DeleteConfigurationSet'
+    { configurationSetName =
+        pConfigurationSetName_
+    }
+
+-- | The name of the configuration set to delete.
+deleteConfigurationSet_configurationSetName :: Lens.Lens' DeleteConfigurationSet Prelude.Text
+deleteConfigurationSet_configurationSetName = Lens.lens (\DeleteConfigurationSet' {configurationSetName} -> configurationSetName) (\s@DeleteConfigurationSet' {} a -> s {configurationSetName = a} :: DeleteConfigurationSet)
+
+instance Core.AWSRequest DeleteConfigurationSet where
+  type
+    AWSResponse DeleteConfigurationSet =
+      DeleteConfigurationSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteConfigurationSetResult"
+      ( \s h x ->
+          DeleteConfigurationSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteConfigurationSet where
+  hashWithSalt _salt DeleteConfigurationSet' {..} =
+    _salt `Prelude.hashWithSalt` configurationSetName
+
+instance Prelude.NFData DeleteConfigurationSet where
+  rnf DeleteConfigurationSet' {..} =
+    Prelude.rnf configurationSetName
+
+instance Data.ToHeaders DeleteConfigurationSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteConfigurationSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteConfigurationSet where
+  toQuery DeleteConfigurationSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteConfigurationSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteConfigurationSetResponse' smart constructor.
+data DeleteConfigurationSetResponse = DeleteConfigurationSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteConfigurationSetResponse_httpStatus' - The response's http status code.
+newDeleteConfigurationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConfigurationSetResponse
+newDeleteConfigurationSetResponse pHttpStatus_ =
+  DeleteConfigurationSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteConfigurationSetResponse_httpStatus :: Lens.Lens' DeleteConfigurationSetResponse Prelude.Int
+deleteConfigurationSetResponse_httpStatus = Lens.lens (\DeleteConfigurationSetResponse' {httpStatus} -> httpStatus) (\s@DeleteConfigurationSetResponse' {} a -> s {httpStatus = a} :: DeleteConfigurationSetResponse)
+
+instance
+  Prelude.NFData
+    DeleteConfigurationSetResponse
+  where
+  rnf DeleteConfigurationSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteConfigurationSetEventDestination.hs b/gen/Amazonka/SES/DeleteConfigurationSetEventDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteConfigurationSetEventDestination.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteConfigurationSetEventDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a configuration set event destination. Configuration set event
+-- destinations are associated with configuration sets, which enable you to
+-- publish email sending events. For information about using configuration
+-- sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteConfigurationSetEventDestination
+  ( -- * Creating a Request
+    DeleteConfigurationSetEventDestination (..),
+    newDeleteConfigurationSetEventDestination,
+
+    -- * Request Lenses
+    deleteConfigurationSetEventDestination_configurationSetName,
+    deleteConfigurationSetEventDestination_eventDestinationName,
+
+    -- * Destructuring the Response
+    DeleteConfigurationSetEventDestinationResponse (..),
+    newDeleteConfigurationSetEventDestinationResponse,
+
+    -- * Response Lenses
+    deleteConfigurationSetEventDestinationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete a configuration set event destination.
+-- Configuration set event destinations are associated with configuration
+-- sets, which enable you to publish email sending events. For information
+-- about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteConfigurationSetEventDestination' smart constructor.
+data DeleteConfigurationSetEventDestination = DeleteConfigurationSetEventDestination'
+  { -- | The name of the configuration set from which to delete the event
+    -- destination.
+    configurationSetName :: Prelude.Text,
+    -- | The name of the event destination to delete.
+    eventDestinationName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSetEventDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'deleteConfigurationSetEventDestination_configurationSetName' - The name of the configuration set from which to delete the event
+-- destination.
+--
+-- 'eventDestinationName', 'deleteConfigurationSetEventDestination_eventDestinationName' - The name of the event destination to delete.
+newDeleteConfigurationSetEventDestination ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'eventDestinationName'
+  Prelude.Text ->
+  DeleteConfigurationSetEventDestination
+newDeleteConfigurationSetEventDestination
+  pConfigurationSetName_
+  pEventDestinationName_ =
+    DeleteConfigurationSetEventDestination'
+      { configurationSetName =
+          pConfigurationSetName_,
+        eventDestinationName =
+          pEventDestinationName_
+      }
+
+-- | The name of the configuration set from which to delete the event
+-- destination.
+deleteConfigurationSetEventDestination_configurationSetName :: Lens.Lens' DeleteConfigurationSetEventDestination Prelude.Text
+deleteConfigurationSetEventDestination_configurationSetName = Lens.lens (\DeleteConfigurationSetEventDestination' {configurationSetName} -> configurationSetName) (\s@DeleteConfigurationSetEventDestination' {} a -> s {configurationSetName = a} :: DeleteConfigurationSetEventDestination)
+
+-- | The name of the event destination to delete.
+deleteConfigurationSetEventDestination_eventDestinationName :: Lens.Lens' DeleteConfigurationSetEventDestination Prelude.Text
+deleteConfigurationSetEventDestination_eventDestinationName = Lens.lens (\DeleteConfigurationSetEventDestination' {eventDestinationName} -> eventDestinationName) (\s@DeleteConfigurationSetEventDestination' {} a -> s {eventDestinationName = a} :: DeleteConfigurationSetEventDestination)
+
+instance
+  Core.AWSRequest
+    DeleteConfigurationSetEventDestination
+  where
+  type
+    AWSResponse
+      DeleteConfigurationSetEventDestination =
+      DeleteConfigurationSetEventDestinationResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteConfigurationSetEventDestinationResult"
+      ( \s h x ->
+          DeleteConfigurationSetEventDestinationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteConfigurationSetEventDestination
+  where
+  hashWithSalt
+    _salt
+    DeleteConfigurationSetEventDestination' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` eventDestinationName
+
+instance
+  Prelude.NFData
+    DeleteConfigurationSetEventDestination
+  where
+  rnf DeleteConfigurationSetEventDestination' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf eventDestinationName
+
+instance
+  Data.ToHeaders
+    DeleteConfigurationSetEventDestination
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteConfigurationSetEventDestination
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteConfigurationSetEventDestination
+  where
+  toQuery DeleteConfigurationSetEventDestination' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DeleteConfigurationSetEventDestination" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "EventDestinationName" Data.=: eventDestinationName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteConfigurationSetEventDestinationResponse' smart constructor.
+data DeleteConfigurationSetEventDestinationResponse = DeleteConfigurationSetEventDestinationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSetEventDestinationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteConfigurationSetEventDestinationResponse_httpStatus' - The response's http status code.
+newDeleteConfigurationSetEventDestinationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConfigurationSetEventDestinationResponse
+newDeleteConfigurationSetEventDestinationResponse
+  pHttpStatus_ =
+    DeleteConfigurationSetEventDestinationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteConfigurationSetEventDestinationResponse_httpStatus :: Lens.Lens' DeleteConfigurationSetEventDestinationResponse Prelude.Int
+deleteConfigurationSetEventDestinationResponse_httpStatus = Lens.lens (\DeleteConfigurationSetEventDestinationResponse' {httpStatus} -> httpStatus) (\s@DeleteConfigurationSetEventDestinationResponse' {} a -> s {httpStatus = a} :: DeleteConfigurationSetEventDestinationResponse)
+
+instance
+  Prelude.NFData
+    DeleteConfigurationSetEventDestinationResponse
+  where
+  rnf
+    DeleteConfigurationSetEventDestinationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteConfigurationSetTrackingOptions.hs b/gen/Amazonka/SES/DeleteConfigurationSetTrackingOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteConfigurationSetTrackingOptions.hs
@@ -0,0 +1,197 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteConfigurationSetTrackingOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an association between a configuration set and a custom domain
+-- for open and click event tracking.
+--
+-- By default, images and links used for tracking open and click events are
+-- hosted on domains operated by Amazon SES. You can configure a subdomain
+-- of your own to handle these events. For information about using custom
+-- domains, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Amazon SES Developer Guide>.
+--
+-- Deleting this kind of association will result in emails sent using the
+-- specified configuration set to capture open and click events using the
+-- standard, Amazon SES-operated domains.
+module Amazonka.SES.DeleteConfigurationSetTrackingOptions
+  ( -- * Creating a Request
+    DeleteConfigurationSetTrackingOptions (..),
+    newDeleteConfigurationSetTrackingOptions,
+
+    -- * Request Lenses
+    deleteConfigurationSetTrackingOptions_configurationSetName,
+
+    -- * Destructuring the Response
+    DeleteConfigurationSetTrackingOptionsResponse (..),
+    newDeleteConfigurationSetTrackingOptionsResponse,
+
+    -- * Response Lenses
+    deleteConfigurationSetTrackingOptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete open and click tracking options in a
+-- configuration set.
+--
+-- /See:/ 'newDeleteConfigurationSetTrackingOptions' smart constructor.
+data DeleteConfigurationSetTrackingOptions = DeleteConfigurationSetTrackingOptions'
+  { -- | The name of the configuration set from which you want to delete the
+    -- tracking options.
+    configurationSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSetTrackingOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'deleteConfigurationSetTrackingOptions_configurationSetName' - The name of the configuration set from which you want to delete the
+-- tracking options.
+newDeleteConfigurationSetTrackingOptions ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  DeleteConfigurationSetTrackingOptions
+newDeleteConfigurationSetTrackingOptions
+  pConfigurationSetName_ =
+    DeleteConfigurationSetTrackingOptions'
+      { configurationSetName =
+          pConfigurationSetName_
+      }
+
+-- | The name of the configuration set from which you want to delete the
+-- tracking options.
+deleteConfigurationSetTrackingOptions_configurationSetName :: Lens.Lens' DeleteConfigurationSetTrackingOptions Prelude.Text
+deleteConfigurationSetTrackingOptions_configurationSetName = Lens.lens (\DeleteConfigurationSetTrackingOptions' {configurationSetName} -> configurationSetName) (\s@DeleteConfigurationSetTrackingOptions' {} a -> s {configurationSetName = a} :: DeleteConfigurationSetTrackingOptions)
+
+instance
+  Core.AWSRequest
+    DeleteConfigurationSetTrackingOptions
+  where
+  type
+    AWSResponse
+      DeleteConfigurationSetTrackingOptions =
+      DeleteConfigurationSetTrackingOptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteConfigurationSetTrackingOptionsResult"
+      ( \s h x ->
+          DeleteConfigurationSetTrackingOptionsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DeleteConfigurationSetTrackingOptions
+  where
+  hashWithSalt
+    _salt
+    DeleteConfigurationSetTrackingOptions' {..} =
+      _salt `Prelude.hashWithSalt` configurationSetName
+
+instance
+  Prelude.NFData
+    DeleteConfigurationSetTrackingOptions
+  where
+  rnf DeleteConfigurationSetTrackingOptions' {..} =
+    Prelude.rnf configurationSetName
+
+instance
+  Data.ToHeaders
+    DeleteConfigurationSetTrackingOptions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteConfigurationSetTrackingOptions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteConfigurationSetTrackingOptions
+  where
+  toQuery DeleteConfigurationSetTrackingOptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DeleteConfigurationSetTrackingOptions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteConfigurationSetTrackingOptionsResponse' smart constructor.
+data DeleteConfigurationSetTrackingOptionsResponse = DeleteConfigurationSetTrackingOptionsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteConfigurationSetTrackingOptionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteConfigurationSetTrackingOptionsResponse_httpStatus' - The response's http status code.
+newDeleteConfigurationSetTrackingOptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteConfigurationSetTrackingOptionsResponse
+newDeleteConfigurationSetTrackingOptionsResponse
+  pHttpStatus_ =
+    DeleteConfigurationSetTrackingOptionsResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+deleteConfigurationSetTrackingOptionsResponse_httpStatus :: Lens.Lens' DeleteConfigurationSetTrackingOptionsResponse Prelude.Int
+deleteConfigurationSetTrackingOptionsResponse_httpStatus = Lens.lens (\DeleteConfigurationSetTrackingOptionsResponse' {httpStatus} -> httpStatus) (\s@DeleteConfigurationSetTrackingOptionsResponse' {} a -> s {httpStatus = a} :: DeleteConfigurationSetTrackingOptionsResponse)
+
+instance
+  Prelude.NFData
+    DeleteConfigurationSetTrackingOptionsResponse
+  where
+  rnf
+    DeleteConfigurationSetTrackingOptionsResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteCustomVerificationEmailTemplate.hs b/gen/Amazonka/SES/DeleteCustomVerificationEmailTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteCustomVerificationEmailTemplate.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteCustomVerificationEmailTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an existing custom verification email template.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteCustomVerificationEmailTemplate
+  ( -- * Creating a Request
+    DeleteCustomVerificationEmailTemplate (..),
+    newDeleteCustomVerificationEmailTemplate,
+
+    -- * Request Lenses
+    deleteCustomVerificationEmailTemplate_templateName,
+
+    -- * Destructuring the Response
+    DeleteCustomVerificationEmailTemplateResponse (..),
+    newDeleteCustomVerificationEmailTemplateResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete an existing custom verification email
+-- template.
+--
+-- /See:/ 'newDeleteCustomVerificationEmailTemplate' smart constructor.
+data DeleteCustomVerificationEmailTemplate = DeleteCustomVerificationEmailTemplate'
+  { -- | The name of the custom verification email template that you want to
+    -- delete.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCustomVerificationEmailTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'deleteCustomVerificationEmailTemplate_templateName' - The name of the custom verification email template that you want to
+-- delete.
+newDeleteCustomVerificationEmailTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  DeleteCustomVerificationEmailTemplate
+newDeleteCustomVerificationEmailTemplate
+  pTemplateName_ =
+    DeleteCustomVerificationEmailTemplate'
+      { templateName =
+          pTemplateName_
+      }
+
+-- | The name of the custom verification email template that you want to
+-- delete.
+deleteCustomVerificationEmailTemplate_templateName :: Lens.Lens' DeleteCustomVerificationEmailTemplate Prelude.Text
+deleteCustomVerificationEmailTemplate_templateName = Lens.lens (\DeleteCustomVerificationEmailTemplate' {templateName} -> templateName) (\s@DeleteCustomVerificationEmailTemplate' {} a -> s {templateName = a} :: DeleteCustomVerificationEmailTemplate)
+
+instance
+  Core.AWSRequest
+    DeleteCustomVerificationEmailTemplate
+  where
+  type
+    AWSResponse
+      DeleteCustomVerificationEmailTemplate =
+      DeleteCustomVerificationEmailTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.Hashable
+    DeleteCustomVerificationEmailTemplate
+  where
+  hashWithSalt
+    _salt
+    DeleteCustomVerificationEmailTemplate' {..} =
+      _salt `Prelude.hashWithSalt` templateName
+
+instance
+  Prelude.NFData
+    DeleteCustomVerificationEmailTemplate
+  where
+  rnf DeleteCustomVerificationEmailTemplate' {..} =
+    Prelude.rnf templateName
+
+instance
+  Data.ToHeaders
+    DeleteCustomVerificationEmailTemplate
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    DeleteCustomVerificationEmailTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    DeleteCustomVerificationEmailTemplate
+  where
+  toQuery DeleteCustomVerificationEmailTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "DeleteCustomVerificationEmailTemplate" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | /See:/ 'newDeleteCustomVerificationEmailTemplateResponse' smart constructor.
+data DeleteCustomVerificationEmailTemplateResponse = DeleteCustomVerificationEmailTemplateResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCustomVerificationEmailTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteCustomVerificationEmailTemplateResponse ::
+  DeleteCustomVerificationEmailTemplateResponse
+newDeleteCustomVerificationEmailTemplateResponse =
+  DeleteCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.NFData
+    DeleteCustomVerificationEmailTemplateResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/DeleteIdentity.hs b/gen/Amazonka/SES/DeleteIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteIdentity.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteIdentity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified identity (an email address or a domain) from the
+-- list of verified identities.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteIdentity
+  ( -- * Creating a Request
+    DeleteIdentity (..),
+    newDeleteIdentity,
+
+    -- * Request Lenses
+    deleteIdentity_identity,
+
+    -- * Destructuring the Response
+    DeleteIdentityResponse (..),
+    newDeleteIdentityResponse,
+
+    -- * Response Lenses
+    deleteIdentityResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete one of your Amazon SES identities (an
+-- email address or domain).
+--
+-- /See:/ 'newDeleteIdentity' smart constructor.
+data DeleteIdentity = DeleteIdentity'
+  { -- | The identity to be removed from the list of identities for the AWS
+    -- Account.
+    identity :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIdentity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'deleteIdentity_identity' - The identity to be removed from the list of identities for the AWS
+-- Account.
+newDeleteIdentity ::
+  -- | 'identity'
+  Prelude.Text ->
+  DeleteIdentity
+newDeleteIdentity pIdentity_ =
+  DeleteIdentity' {identity = pIdentity_}
+
+-- | The identity to be removed from the list of identities for the AWS
+-- Account.
+deleteIdentity_identity :: Lens.Lens' DeleteIdentity Prelude.Text
+deleteIdentity_identity = Lens.lens (\DeleteIdentity' {identity} -> identity) (\s@DeleteIdentity' {} a -> s {identity = a} :: DeleteIdentity)
+
+instance Core.AWSRequest DeleteIdentity where
+  type
+    AWSResponse DeleteIdentity =
+      DeleteIdentityResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteIdentityResult"
+      ( \s h x ->
+          DeleteIdentityResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteIdentity where
+  hashWithSalt _salt DeleteIdentity' {..} =
+    _salt `Prelude.hashWithSalt` identity
+
+instance Prelude.NFData DeleteIdentity where
+  rnf DeleteIdentity' {..} = Prelude.rnf identity
+
+instance Data.ToHeaders DeleteIdentity where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteIdentity where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteIdentity where
+  toQuery DeleteIdentity' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteIdentity" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteIdentityResponse' smart constructor.
+data DeleteIdentityResponse = DeleteIdentityResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIdentityResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteIdentityResponse_httpStatus' - The response's http status code.
+newDeleteIdentityResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteIdentityResponse
+newDeleteIdentityResponse pHttpStatus_ =
+  DeleteIdentityResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteIdentityResponse_httpStatus :: Lens.Lens' DeleteIdentityResponse Prelude.Int
+deleteIdentityResponse_httpStatus = Lens.lens (\DeleteIdentityResponse' {httpStatus} -> httpStatus) (\s@DeleteIdentityResponse' {} a -> s {httpStatus = a} :: DeleteIdentityResponse)
+
+instance Prelude.NFData DeleteIdentityResponse where
+  rnf DeleteIdentityResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteIdentityPolicy.hs b/gen/Amazonka/SES/DeleteIdentityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteIdentityPolicy.hs
@@ -0,0 +1,199 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteIdentityPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified sending authorization policy for the given
+-- identity (an email address or a domain). This API returns successfully
+-- even if a policy with the specified name does not exist.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteIdentityPolicy
+  ( -- * Creating a Request
+    DeleteIdentityPolicy (..),
+    newDeleteIdentityPolicy,
+
+    -- * Request Lenses
+    deleteIdentityPolicy_identity,
+    deleteIdentityPolicy_policyName,
+
+    -- * Destructuring the Response
+    DeleteIdentityPolicyResponse (..),
+    newDeleteIdentityPolicyResponse,
+
+    -- * Response Lenses
+    deleteIdentityPolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete a sending authorization policy for an
+-- identity. Sending authorization is an Amazon SES feature that enables
+-- you to authorize other senders to use your identities. For information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteIdentityPolicy' smart constructor.
+data DeleteIdentityPolicy = DeleteIdentityPolicy'
+  { -- | The identity that is associated with the policy that you want to delete.
+    -- You can specify the identity by using its name or by using its Amazon
+    -- Resource Name (ARN). Examples: @user\@example.com@, @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    --
+    -- To successfully call this API, you must own the identity.
+    identity :: Prelude.Text,
+    -- | The name of the policy to be deleted.
+    policyName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIdentityPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'deleteIdentityPolicy_identity' - The identity that is associated with the policy that you want to delete.
+-- You can specify the identity by using its name or by using its Amazon
+-- Resource Name (ARN). Examples: @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+--
+-- 'policyName', 'deleteIdentityPolicy_policyName' - The name of the policy to be deleted.
+newDeleteIdentityPolicy ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'policyName'
+  Prelude.Text ->
+  DeleteIdentityPolicy
+newDeleteIdentityPolicy pIdentity_ pPolicyName_ =
+  DeleteIdentityPolicy'
+    { identity = pIdentity_,
+      policyName = pPolicyName_
+    }
+
+-- | The identity that is associated with the policy that you want to delete.
+-- You can specify the identity by using its name or by using its Amazon
+-- Resource Name (ARN). Examples: @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+deleteIdentityPolicy_identity :: Lens.Lens' DeleteIdentityPolicy Prelude.Text
+deleteIdentityPolicy_identity = Lens.lens (\DeleteIdentityPolicy' {identity} -> identity) (\s@DeleteIdentityPolicy' {} a -> s {identity = a} :: DeleteIdentityPolicy)
+
+-- | The name of the policy to be deleted.
+deleteIdentityPolicy_policyName :: Lens.Lens' DeleteIdentityPolicy Prelude.Text
+deleteIdentityPolicy_policyName = Lens.lens (\DeleteIdentityPolicy' {policyName} -> policyName) (\s@DeleteIdentityPolicy' {} a -> s {policyName = a} :: DeleteIdentityPolicy)
+
+instance Core.AWSRequest DeleteIdentityPolicy where
+  type
+    AWSResponse DeleteIdentityPolicy =
+      DeleteIdentityPolicyResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteIdentityPolicyResult"
+      ( \s h x ->
+          DeleteIdentityPolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteIdentityPolicy where
+  hashWithSalt _salt DeleteIdentityPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` identity
+      `Prelude.hashWithSalt` policyName
+
+instance Prelude.NFData DeleteIdentityPolicy where
+  rnf DeleteIdentityPolicy' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf policyName
+
+instance Data.ToHeaders DeleteIdentityPolicy where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteIdentityPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteIdentityPolicy where
+  toQuery DeleteIdentityPolicy' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteIdentityPolicy" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "PolicyName" Data.=: policyName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteIdentityPolicyResponse' smart constructor.
+data DeleteIdentityPolicyResponse = DeleteIdentityPolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteIdentityPolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteIdentityPolicyResponse_httpStatus' - The response's http status code.
+newDeleteIdentityPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteIdentityPolicyResponse
+newDeleteIdentityPolicyResponse pHttpStatus_ =
+  DeleteIdentityPolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteIdentityPolicyResponse_httpStatus :: Lens.Lens' DeleteIdentityPolicyResponse Prelude.Int
+deleteIdentityPolicyResponse_httpStatus = Lens.lens (\DeleteIdentityPolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteIdentityPolicyResponse' {} a -> s {httpStatus = a} :: DeleteIdentityPolicyResponse)
+
+instance Prelude.NFData DeleteIdentityPolicyResponse where
+  rnf DeleteIdentityPolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteReceiptFilter.hs b/gen/Amazonka/SES/DeleteReceiptFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteReceiptFilter.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteReceiptFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified IP address filter.
+--
+-- For information about managing IP address filters, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteReceiptFilter
+  ( -- * Creating a Request
+    DeleteReceiptFilter (..),
+    newDeleteReceiptFilter,
+
+    -- * Request Lenses
+    deleteReceiptFilter_filterName,
+
+    -- * Destructuring the Response
+    DeleteReceiptFilterResponse (..),
+    newDeleteReceiptFilterResponse,
+
+    -- * Response Lenses
+    deleteReceiptFilterResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete an IP address filter. You use IP address
+-- filters when you receive email with Amazon SES. For more information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteReceiptFilter' smart constructor.
+data DeleteReceiptFilter = DeleteReceiptFilter'
+  { -- | The name of the IP address filter to delete.
+    filterName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filterName', 'deleteReceiptFilter_filterName' - The name of the IP address filter to delete.
+newDeleteReceiptFilter ::
+  -- | 'filterName'
+  Prelude.Text ->
+  DeleteReceiptFilter
+newDeleteReceiptFilter pFilterName_ =
+  DeleteReceiptFilter' {filterName = pFilterName_}
+
+-- | The name of the IP address filter to delete.
+deleteReceiptFilter_filterName :: Lens.Lens' DeleteReceiptFilter Prelude.Text
+deleteReceiptFilter_filterName = Lens.lens (\DeleteReceiptFilter' {filterName} -> filterName) (\s@DeleteReceiptFilter' {} a -> s {filterName = a} :: DeleteReceiptFilter)
+
+instance Core.AWSRequest DeleteReceiptFilter where
+  type
+    AWSResponse DeleteReceiptFilter =
+      DeleteReceiptFilterResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteReceiptFilterResult"
+      ( \s h x ->
+          DeleteReceiptFilterResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteReceiptFilter where
+  hashWithSalt _salt DeleteReceiptFilter' {..} =
+    _salt `Prelude.hashWithSalt` filterName
+
+instance Prelude.NFData DeleteReceiptFilter where
+  rnf DeleteReceiptFilter' {..} = Prelude.rnf filterName
+
+instance Data.ToHeaders DeleteReceiptFilter where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteReceiptFilter where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteReceiptFilter where
+  toQuery DeleteReceiptFilter' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteReceiptFilter" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "FilterName" Data.=: filterName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteReceiptFilterResponse' smart constructor.
+data DeleteReceiptFilterResponse = DeleteReceiptFilterResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptFilterResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteReceiptFilterResponse_httpStatus' - The response's http status code.
+newDeleteReceiptFilterResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteReceiptFilterResponse
+newDeleteReceiptFilterResponse pHttpStatus_ =
+  DeleteReceiptFilterResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteReceiptFilterResponse_httpStatus :: Lens.Lens' DeleteReceiptFilterResponse Prelude.Int
+deleteReceiptFilterResponse_httpStatus = Lens.lens (\DeleteReceiptFilterResponse' {httpStatus} -> httpStatus) (\s@DeleteReceiptFilterResponse' {} a -> s {httpStatus = a} :: DeleteReceiptFilterResponse)
+
+instance Prelude.NFData DeleteReceiptFilterResponse where
+  rnf DeleteReceiptFilterResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteReceiptRule.hs b/gen/Amazonka/SES/DeleteReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteReceiptRule.hs
@@ -0,0 +1,178 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteReceiptRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified receipt rule.
+--
+-- For information about managing receipt rules, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteReceiptRule
+  ( -- * Creating a Request
+    DeleteReceiptRule (..),
+    newDeleteReceiptRule,
+
+    -- * Request Lenses
+    deleteReceiptRule_ruleSetName,
+    deleteReceiptRule_ruleName,
+
+    -- * Destructuring the Response
+    DeleteReceiptRuleResponse (..),
+    newDeleteReceiptRuleResponse,
+
+    -- * Response Lenses
+    deleteReceiptRuleResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete a receipt rule. You use receipt rules to
+-- receive email with Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteReceiptRule' smart constructor.
+data DeleteReceiptRule = DeleteReceiptRule'
+  { -- | The name of the receipt rule set that contains the receipt rule to
+    -- delete.
+    ruleSetName :: Prelude.Text,
+    -- | The name of the receipt rule to delete.
+    ruleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'deleteReceiptRule_ruleSetName' - The name of the receipt rule set that contains the receipt rule to
+-- delete.
+--
+-- 'ruleName', 'deleteReceiptRule_ruleName' - The name of the receipt rule to delete.
+newDeleteReceiptRule ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'ruleName'
+  Prelude.Text ->
+  DeleteReceiptRule
+newDeleteReceiptRule pRuleSetName_ pRuleName_ =
+  DeleteReceiptRule'
+    { ruleSetName = pRuleSetName_,
+      ruleName = pRuleName_
+    }
+
+-- | The name of the receipt rule set that contains the receipt rule to
+-- delete.
+deleteReceiptRule_ruleSetName :: Lens.Lens' DeleteReceiptRule Prelude.Text
+deleteReceiptRule_ruleSetName = Lens.lens (\DeleteReceiptRule' {ruleSetName} -> ruleSetName) (\s@DeleteReceiptRule' {} a -> s {ruleSetName = a} :: DeleteReceiptRule)
+
+-- | The name of the receipt rule to delete.
+deleteReceiptRule_ruleName :: Lens.Lens' DeleteReceiptRule Prelude.Text
+deleteReceiptRule_ruleName = Lens.lens (\DeleteReceiptRule' {ruleName} -> ruleName) (\s@DeleteReceiptRule' {} a -> s {ruleName = a} :: DeleteReceiptRule)
+
+instance Core.AWSRequest DeleteReceiptRule where
+  type
+    AWSResponse DeleteReceiptRule =
+      DeleteReceiptRuleResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteReceiptRuleResult"
+      ( \s h x ->
+          DeleteReceiptRuleResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteReceiptRule where
+  hashWithSalt _salt DeleteReceiptRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` ruleName
+
+instance Prelude.NFData DeleteReceiptRule where
+  rnf DeleteReceiptRule' {..} =
+    Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf ruleName
+
+instance Data.ToHeaders DeleteReceiptRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteReceiptRule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteReceiptRule where
+  toQuery DeleteReceiptRule' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteReceiptRule" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName,
+        "RuleName" Data.=: ruleName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteReceiptRuleResponse' smart constructor.
+data DeleteReceiptRuleResponse = DeleteReceiptRuleResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteReceiptRuleResponse_httpStatus' - The response's http status code.
+newDeleteReceiptRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteReceiptRuleResponse
+newDeleteReceiptRuleResponse pHttpStatus_ =
+  DeleteReceiptRuleResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteReceiptRuleResponse_httpStatus :: Lens.Lens' DeleteReceiptRuleResponse Prelude.Int
+deleteReceiptRuleResponse_httpStatus = Lens.lens (\DeleteReceiptRuleResponse' {httpStatus} -> httpStatus) (\s@DeleteReceiptRuleResponse' {} a -> s {httpStatus = a} :: DeleteReceiptRuleResponse)
+
+instance Prelude.NFData DeleteReceiptRuleResponse where
+  rnf DeleteReceiptRuleResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteReceiptRuleSet.hs b/gen/Amazonka/SES/DeleteReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteReceiptRuleSet.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteReceiptRuleSet
+  ( -- * Creating a Request
+    DeleteReceiptRuleSet (..),
+    newDeleteReceiptRuleSet,
+
+    -- * Request Lenses
+    deleteReceiptRuleSet_ruleSetName,
+
+    -- * Destructuring the Response
+    DeleteReceiptRuleSetResponse (..),
+    newDeleteReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    deleteReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete a receipt rule set and all of the receipt
+-- rules it contains. You use receipt rule sets to receive email with
+-- Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteReceiptRuleSet' smart constructor.
+data DeleteReceiptRuleSet = DeleteReceiptRuleSet'
+  { -- | The name of the receipt rule set to delete.
+    ruleSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'deleteReceiptRuleSet_ruleSetName' - The name of the receipt rule set to delete.
+newDeleteReceiptRuleSet ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  DeleteReceiptRuleSet
+newDeleteReceiptRuleSet pRuleSetName_ =
+  DeleteReceiptRuleSet' {ruleSetName = pRuleSetName_}
+
+-- | The name of the receipt rule set to delete.
+deleteReceiptRuleSet_ruleSetName :: Lens.Lens' DeleteReceiptRuleSet Prelude.Text
+deleteReceiptRuleSet_ruleSetName = Lens.lens (\DeleteReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@DeleteReceiptRuleSet' {} a -> s {ruleSetName = a} :: DeleteReceiptRuleSet)
+
+instance Core.AWSRequest DeleteReceiptRuleSet where
+  type
+    AWSResponse DeleteReceiptRuleSet =
+      DeleteReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteReceiptRuleSetResult"
+      ( \s h x ->
+          DeleteReceiptRuleSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteReceiptRuleSet where
+  hashWithSalt _salt DeleteReceiptRuleSet' {..} =
+    _salt `Prelude.hashWithSalt` ruleSetName
+
+instance Prelude.NFData DeleteReceiptRuleSet where
+  rnf DeleteReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+
+instance Data.ToHeaders DeleteReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteReceiptRuleSet where
+  toQuery DeleteReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newDeleteReceiptRuleSetResponse' smart constructor.
+data DeleteReceiptRuleSetResponse = DeleteReceiptRuleSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newDeleteReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteReceiptRuleSetResponse
+newDeleteReceiptRuleSetResponse pHttpStatus_ =
+  DeleteReceiptRuleSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteReceiptRuleSetResponse_httpStatus :: Lens.Lens' DeleteReceiptRuleSetResponse Prelude.Int
+deleteReceiptRuleSetResponse_httpStatus = Lens.lens (\DeleteReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@DeleteReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: DeleteReceiptRuleSetResponse)
+
+instance Prelude.NFData DeleteReceiptRuleSetResponse where
+  rnf DeleteReceiptRuleSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteTemplate.hs b/gen/Amazonka/SES/DeleteTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteTemplate.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes an email template.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DeleteTemplate
+  ( -- * Creating a Request
+    DeleteTemplate (..),
+    newDeleteTemplate,
+
+    -- * Request Lenses
+    deleteTemplate_templateName,
+
+    -- * Destructuring the Response
+    DeleteTemplateResponse (..),
+    newDeleteTemplateResponse,
+
+    -- * Response Lenses
+    deleteTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete an email template. For more information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDeleteTemplate' smart constructor.
+data DeleteTemplate = DeleteTemplate'
+  { -- | The name of the template to be deleted.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'deleteTemplate_templateName' - The name of the template to be deleted.
+newDeleteTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  DeleteTemplate
+newDeleteTemplate pTemplateName_ =
+  DeleteTemplate' {templateName = pTemplateName_}
+
+-- | The name of the template to be deleted.
+deleteTemplate_templateName :: Lens.Lens' DeleteTemplate Prelude.Text
+deleteTemplate_templateName = Lens.lens (\DeleteTemplate' {templateName} -> templateName) (\s@DeleteTemplate' {} a -> s {templateName = a} :: DeleteTemplate)
+
+instance Core.AWSRequest DeleteTemplate where
+  type
+    AWSResponse DeleteTemplate =
+      DeleteTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DeleteTemplateResult"
+      ( \s h x ->
+          DeleteTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteTemplate where
+  hashWithSalt _salt DeleteTemplate' {..} =
+    _salt `Prelude.hashWithSalt` templateName
+
+instance Prelude.NFData DeleteTemplate where
+  rnf DeleteTemplate' {..} = Prelude.rnf templateName
+
+instance Data.ToHeaders DeleteTemplate where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteTemplate where
+  toQuery DeleteTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteTemplate" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | /See:/ 'newDeleteTemplateResponse' smart constructor.
+data DeleteTemplateResponse = DeleteTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'deleteTemplateResponse_httpStatus' - The response's http status code.
+newDeleteTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteTemplateResponse
+newDeleteTemplateResponse pHttpStatus_ =
+  DeleteTemplateResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteTemplateResponse_httpStatus :: Lens.Lens' DeleteTemplateResponse Prelude.Int
+deleteTemplateResponse_httpStatus = Lens.lens (\DeleteTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteTemplateResponse' {} a -> s {httpStatus = a} :: DeleteTemplateResponse)
+
+instance Prelude.NFData DeleteTemplateResponse where
+  rnf DeleteTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DeleteVerifiedEmailAddress.hs b/gen/Amazonka/SES/DeleteVerifiedEmailAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DeleteVerifiedEmailAddress.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DeleteVerifiedEmailAddress
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deprecated. Use the @DeleteIdentity@ operation to delete email addresses
+-- and domains.
+module Amazonka.SES.DeleteVerifiedEmailAddress
+  ( -- * Creating a Request
+    DeleteVerifiedEmailAddress (..),
+    newDeleteVerifiedEmailAddress,
+
+    -- * Request Lenses
+    deleteVerifiedEmailAddress_emailAddress,
+
+    -- * Destructuring the Response
+    DeleteVerifiedEmailAddressResponse (..),
+    newDeleteVerifiedEmailAddressResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to delete an email address from the list of email
+-- addresses you have attempted to verify under your AWS account.
+--
+-- /See:/ 'newDeleteVerifiedEmailAddress' smart constructor.
+data DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddress'
+  { -- | An email address to be removed from the list of verified addresses.
+    emailAddress :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVerifiedEmailAddress' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailAddress', 'deleteVerifiedEmailAddress_emailAddress' - An email address to be removed from the list of verified addresses.
+newDeleteVerifiedEmailAddress ::
+  -- | 'emailAddress'
+  Prelude.Text ->
+  DeleteVerifiedEmailAddress
+newDeleteVerifiedEmailAddress pEmailAddress_ =
+  DeleteVerifiedEmailAddress'
+    { emailAddress =
+        pEmailAddress_
+    }
+
+-- | An email address to be removed from the list of verified addresses.
+deleteVerifiedEmailAddress_emailAddress :: Lens.Lens' DeleteVerifiedEmailAddress Prelude.Text
+deleteVerifiedEmailAddress_emailAddress = Lens.lens (\DeleteVerifiedEmailAddress' {emailAddress} -> emailAddress) (\s@DeleteVerifiedEmailAddress' {} a -> s {emailAddress = a} :: DeleteVerifiedEmailAddress)
+
+instance Core.AWSRequest DeleteVerifiedEmailAddress where
+  type
+    AWSResponse DeleteVerifiedEmailAddress =
+      DeleteVerifiedEmailAddressResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteVerifiedEmailAddressResponse'
+
+instance Prelude.Hashable DeleteVerifiedEmailAddress where
+  hashWithSalt _salt DeleteVerifiedEmailAddress' {..} =
+    _salt `Prelude.hashWithSalt` emailAddress
+
+instance Prelude.NFData DeleteVerifiedEmailAddress where
+  rnf DeleteVerifiedEmailAddress' {..} =
+    Prelude.rnf emailAddress
+
+instance Data.ToHeaders DeleteVerifiedEmailAddress where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DeleteVerifiedEmailAddress where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DeleteVerifiedEmailAddress where
+  toQuery DeleteVerifiedEmailAddress' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DeleteVerifiedEmailAddress" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "EmailAddress" Data.=: emailAddress
+      ]
+
+-- | /See:/ 'newDeleteVerifiedEmailAddressResponse' smart constructor.
+data DeleteVerifiedEmailAddressResponse = DeleteVerifiedEmailAddressResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteVerifiedEmailAddressResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDeleteVerifiedEmailAddressResponse ::
+  DeleteVerifiedEmailAddressResponse
+newDeleteVerifiedEmailAddressResponse =
+  DeleteVerifiedEmailAddressResponse'
+
+instance
+  Prelude.NFData
+    DeleteVerifiedEmailAddressResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/DescribeActiveReceiptRuleSet.hs b/gen/Amazonka/SES/DescribeActiveReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DescribeActiveReceiptRuleSet.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DescribeActiveReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DescribeActiveReceiptRuleSet
+  ( -- * Creating a Request
+    DescribeActiveReceiptRuleSet (..),
+    newDescribeActiveReceiptRuleSet,
+
+    -- * Destructuring the Response
+    DescribeActiveReceiptRuleSetResponse (..),
+    newDescribeActiveReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    describeActiveReceiptRuleSetResponse_metadata,
+    describeActiveReceiptRuleSetResponse_rules,
+    describeActiveReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the metadata and receipt rules for the
+-- receipt rule set that is currently active. You use receipt rule sets to
+-- receive email with Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDescribeActiveReceiptRuleSet' smart constructor.
+data DescribeActiveReceiptRuleSet = DescribeActiveReceiptRuleSet'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeActiveReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newDescribeActiveReceiptRuleSet ::
+  DescribeActiveReceiptRuleSet
+newDescribeActiveReceiptRuleSet =
+  DescribeActiveReceiptRuleSet'
+
+instance Core.AWSRequest DescribeActiveReceiptRuleSet where
+  type
+    AWSResponse DescribeActiveReceiptRuleSet =
+      DescribeActiveReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeActiveReceiptRuleSetResult"
+      ( \s h x ->
+          DescribeActiveReceiptRuleSetResponse'
+            Prelude.<$> (x Data..@? "Metadata")
+            Prelude.<*> ( x
+                            Data..@? "Rules"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeActiveReceiptRuleSet
+  where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData DescribeActiveReceiptRuleSet where
+  rnf _ = ()
+
+instance Data.ToHeaders DescribeActiveReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeActiveReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeActiveReceiptRuleSet where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ( "DescribeActiveReceiptRuleSet" ::
+                          Prelude.ByteString
+                      ),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | Represents the metadata and receipt rules for the receipt rule set that
+-- is currently active.
+--
+-- /See:/ 'newDescribeActiveReceiptRuleSetResponse' smart constructor.
+data DescribeActiveReceiptRuleSetResponse = DescribeActiveReceiptRuleSetResponse'
+  { -- | 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.
+    metadata :: Prelude.Maybe ReceiptRuleSetMetadata,
+    -- | The receipt rules that belong to the active rule set.
+    rules :: Prelude.Maybe [ReceiptRule],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeActiveReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'describeActiveReceiptRuleSetResponse_metadata' - 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.
+--
+-- 'rules', 'describeActiveReceiptRuleSetResponse_rules' - The receipt rules that belong to the active rule set.
+--
+-- 'httpStatus', 'describeActiveReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newDescribeActiveReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeActiveReceiptRuleSetResponse
+newDescribeActiveReceiptRuleSetResponse pHttpStatus_ =
+  DescribeActiveReceiptRuleSetResponse'
+    { metadata =
+        Prelude.Nothing,
+      rules = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | 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.
+describeActiveReceiptRuleSetResponse_metadata :: Lens.Lens' DescribeActiveReceiptRuleSetResponse (Prelude.Maybe ReceiptRuleSetMetadata)
+describeActiveReceiptRuleSetResponse_metadata = Lens.lens (\DescribeActiveReceiptRuleSetResponse' {metadata} -> metadata) (\s@DescribeActiveReceiptRuleSetResponse' {} a -> s {metadata = a} :: DescribeActiveReceiptRuleSetResponse)
+
+-- | The receipt rules that belong to the active rule set.
+describeActiveReceiptRuleSetResponse_rules :: Lens.Lens' DescribeActiveReceiptRuleSetResponse (Prelude.Maybe [ReceiptRule])
+describeActiveReceiptRuleSetResponse_rules = Lens.lens (\DescribeActiveReceiptRuleSetResponse' {rules} -> rules) (\s@DescribeActiveReceiptRuleSetResponse' {} a -> s {rules = a} :: DescribeActiveReceiptRuleSetResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeActiveReceiptRuleSetResponse_httpStatus :: Lens.Lens' DescribeActiveReceiptRuleSetResponse Prelude.Int
+describeActiveReceiptRuleSetResponse_httpStatus = Lens.lens (\DescribeActiveReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@DescribeActiveReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: DescribeActiveReceiptRuleSetResponse)
+
+instance
+  Prelude.NFData
+    DescribeActiveReceiptRuleSetResponse
+  where
+  rnf DescribeActiveReceiptRuleSetResponse' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf rules
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DescribeConfigurationSet.hs b/gen/Amazonka/SES/DescribeConfigurationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DescribeConfigurationSet.hs
@@ -0,0 +1,256 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DescribeConfigurationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the details of the specified configuration set. For information
+-- about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DescribeConfigurationSet
+  ( -- * Creating a Request
+    DescribeConfigurationSet (..),
+    newDescribeConfigurationSet,
+
+    -- * Request Lenses
+    describeConfigurationSet_configurationSetAttributeNames,
+    describeConfigurationSet_configurationSetName,
+
+    -- * Destructuring the Response
+    DescribeConfigurationSetResponse (..),
+    newDescribeConfigurationSetResponse,
+
+    -- * Response Lenses
+    describeConfigurationSetResponse_configurationSet,
+    describeConfigurationSetResponse_deliveryOptions,
+    describeConfigurationSetResponse_eventDestinations,
+    describeConfigurationSetResponse_reputationOptions,
+    describeConfigurationSetResponse_trackingOptions,
+    describeConfigurationSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the details of a configuration set.
+-- Configuration sets enable you to publish email sending events. For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDescribeConfigurationSet' smart constructor.
+data DescribeConfigurationSet = DescribeConfigurationSet'
+  { -- | A list of configuration set attributes to return.
+    configurationSetAttributeNames :: Prelude.Maybe [ConfigurationSetAttribute],
+    -- | The name of the configuration set to describe.
+    configurationSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConfigurationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetAttributeNames', 'describeConfigurationSet_configurationSetAttributeNames' - A list of configuration set attributes to return.
+--
+-- 'configurationSetName', 'describeConfigurationSet_configurationSetName' - The name of the configuration set to describe.
+newDescribeConfigurationSet ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  DescribeConfigurationSet
+newDescribeConfigurationSet pConfigurationSetName_ =
+  DescribeConfigurationSet'
+    { configurationSetAttributeNames =
+        Prelude.Nothing,
+      configurationSetName = pConfigurationSetName_
+    }
+
+-- | A list of configuration set attributes to return.
+describeConfigurationSet_configurationSetAttributeNames :: Lens.Lens' DescribeConfigurationSet (Prelude.Maybe [ConfigurationSetAttribute])
+describeConfigurationSet_configurationSetAttributeNames = Lens.lens (\DescribeConfigurationSet' {configurationSetAttributeNames} -> configurationSetAttributeNames) (\s@DescribeConfigurationSet' {} a -> s {configurationSetAttributeNames = a} :: DescribeConfigurationSet) Prelude.. Lens.mapping Lens.coerced
+
+-- | The name of the configuration set to describe.
+describeConfigurationSet_configurationSetName :: Lens.Lens' DescribeConfigurationSet Prelude.Text
+describeConfigurationSet_configurationSetName = Lens.lens (\DescribeConfigurationSet' {configurationSetName} -> configurationSetName) (\s@DescribeConfigurationSet' {} a -> s {configurationSetName = a} :: DescribeConfigurationSet)
+
+instance Core.AWSRequest DescribeConfigurationSet where
+  type
+    AWSResponse DescribeConfigurationSet =
+      DescribeConfigurationSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeConfigurationSetResult"
+      ( \s h x ->
+          DescribeConfigurationSetResponse'
+            Prelude.<$> (x Data..@? "ConfigurationSet")
+            Prelude.<*> (x Data..@? "DeliveryOptions")
+            Prelude.<*> ( x
+                            Data..@? "EventDestinations"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (x Data..@? "ReputationOptions")
+            Prelude.<*> (x Data..@? "TrackingOptions")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeConfigurationSet where
+  hashWithSalt _salt DescribeConfigurationSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetAttributeNames
+      `Prelude.hashWithSalt` configurationSetName
+
+instance Prelude.NFData DescribeConfigurationSet where
+  rnf DescribeConfigurationSet' {..} =
+    Prelude.rnf configurationSetAttributeNames
+      `Prelude.seq` Prelude.rnf configurationSetName
+
+instance Data.ToHeaders DescribeConfigurationSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeConfigurationSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeConfigurationSet where
+  toQuery DescribeConfigurationSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeConfigurationSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetAttributeNames"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> configurationSetAttributeNames
+            ),
+        "ConfigurationSetName" Data.=: configurationSetName
+      ]
+
+-- | Represents the details of a configuration set. Configuration sets enable
+-- you to publish email sending events. For information about using
+-- configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDescribeConfigurationSetResponse' smart constructor.
+data DescribeConfigurationSetResponse = DescribeConfigurationSetResponse'
+  { -- | The configuration set object associated with the specified configuration
+    -- set.
+    configurationSet :: Prelude.Maybe ConfigurationSet,
+    deliveryOptions :: Prelude.Maybe DeliveryOptions,
+    -- | A list of event destinations associated with the configuration set.
+    eventDestinations :: Prelude.Maybe [EventDestination],
+    -- | An object that represents the reputation settings for the configuration
+    -- set.
+    reputationOptions :: Prelude.Maybe ReputationOptions,
+    -- | The name of the custom open and click tracking domain associated with
+    -- the configuration set.
+    trackingOptions :: Prelude.Maybe TrackingOptions,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeConfigurationSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSet', 'describeConfigurationSetResponse_configurationSet' - The configuration set object associated with the specified configuration
+-- set.
+--
+-- 'deliveryOptions', 'describeConfigurationSetResponse_deliveryOptions' - Undocumented member.
+--
+-- 'eventDestinations', 'describeConfigurationSetResponse_eventDestinations' - A list of event destinations associated with the configuration set.
+--
+-- 'reputationOptions', 'describeConfigurationSetResponse_reputationOptions' - An object that represents the reputation settings for the configuration
+-- set.
+--
+-- 'trackingOptions', 'describeConfigurationSetResponse_trackingOptions' - The name of the custom open and click tracking domain associated with
+-- the configuration set.
+--
+-- 'httpStatus', 'describeConfigurationSetResponse_httpStatus' - The response's http status code.
+newDescribeConfigurationSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeConfigurationSetResponse
+newDescribeConfigurationSetResponse pHttpStatus_ =
+  DescribeConfigurationSetResponse'
+    { configurationSet =
+        Prelude.Nothing,
+      deliveryOptions = Prelude.Nothing,
+      eventDestinations = Prelude.Nothing,
+      reputationOptions = Prelude.Nothing,
+      trackingOptions = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The configuration set object associated with the specified configuration
+-- set.
+describeConfigurationSetResponse_configurationSet :: Lens.Lens' DescribeConfigurationSetResponse (Prelude.Maybe ConfigurationSet)
+describeConfigurationSetResponse_configurationSet = Lens.lens (\DescribeConfigurationSetResponse' {configurationSet} -> configurationSet) (\s@DescribeConfigurationSetResponse' {} a -> s {configurationSet = a} :: DescribeConfigurationSetResponse)
+
+-- | Undocumented member.
+describeConfigurationSetResponse_deliveryOptions :: Lens.Lens' DescribeConfigurationSetResponse (Prelude.Maybe DeliveryOptions)
+describeConfigurationSetResponse_deliveryOptions = Lens.lens (\DescribeConfigurationSetResponse' {deliveryOptions} -> deliveryOptions) (\s@DescribeConfigurationSetResponse' {} a -> s {deliveryOptions = a} :: DescribeConfigurationSetResponse)
+
+-- | A list of event destinations associated with the configuration set.
+describeConfigurationSetResponse_eventDestinations :: Lens.Lens' DescribeConfigurationSetResponse (Prelude.Maybe [EventDestination])
+describeConfigurationSetResponse_eventDestinations = Lens.lens (\DescribeConfigurationSetResponse' {eventDestinations} -> eventDestinations) (\s@DescribeConfigurationSetResponse' {} a -> s {eventDestinations = a} :: DescribeConfigurationSetResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | An object that represents the reputation settings for the configuration
+-- set.
+describeConfigurationSetResponse_reputationOptions :: Lens.Lens' DescribeConfigurationSetResponse (Prelude.Maybe ReputationOptions)
+describeConfigurationSetResponse_reputationOptions = Lens.lens (\DescribeConfigurationSetResponse' {reputationOptions} -> reputationOptions) (\s@DescribeConfigurationSetResponse' {} a -> s {reputationOptions = a} :: DescribeConfigurationSetResponse)
+
+-- | The name of the custom open and click tracking domain associated with
+-- the configuration set.
+describeConfigurationSetResponse_trackingOptions :: Lens.Lens' DescribeConfigurationSetResponse (Prelude.Maybe TrackingOptions)
+describeConfigurationSetResponse_trackingOptions = Lens.lens (\DescribeConfigurationSetResponse' {trackingOptions} -> trackingOptions) (\s@DescribeConfigurationSetResponse' {} a -> s {trackingOptions = a} :: DescribeConfigurationSetResponse)
+
+-- | The response's http status code.
+describeConfigurationSetResponse_httpStatus :: Lens.Lens' DescribeConfigurationSetResponse Prelude.Int
+describeConfigurationSetResponse_httpStatus = Lens.lens (\DescribeConfigurationSetResponse' {httpStatus} -> httpStatus) (\s@DescribeConfigurationSetResponse' {} a -> s {httpStatus = a} :: DescribeConfigurationSetResponse)
+
+instance
+  Prelude.NFData
+    DescribeConfigurationSetResponse
+  where
+  rnf DescribeConfigurationSetResponse' {..} =
+    Prelude.rnf configurationSet
+      `Prelude.seq` Prelude.rnf deliveryOptions
+      `Prelude.seq` Prelude.rnf eventDestinations
+      `Prelude.seq` Prelude.rnf reputationOptions
+      `Prelude.seq` Prelude.rnf trackingOptions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DescribeReceiptRule.hs b/gen/Amazonka/SES/DescribeReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DescribeReceiptRule.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DescribeReceiptRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DescribeReceiptRule
+  ( -- * Creating a Request
+    DescribeReceiptRule (..),
+    newDescribeReceiptRule,
+
+    -- * Request Lenses
+    describeReceiptRule_ruleSetName,
+    describeReceiptRule_ruleName,
+
+    -- * Destructuring the Response
+    DescribeReceiptRuleResponse (..),
+    newDescribeReceiptRuleResponse,
+
+    -- * Response Lenses
+    describeReceiptRuleResponse_rule,
+    describeReceiptRuleResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the details of a receipt rule. You use
+-- receipt rules to receive email with Amazon SES. For more information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDescribeReceiptRule' smart constructor.
+data DescribeReceiptRule = DescribeReceiptRule'
+  { -- | The name of the receipt rule set that the receipt rule belongs to.
+    ruleSetName :: Prelude.Text,
+    -- | The name of the receipt rule.
+    ruleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReceiptRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'describeReceiptRule_ruleSetName' - The name of the receipt rule set that the receipt rule belongs to.
+--
+-- 'ruleName', 'describeReceiptRule_ruleName' - The name of the receipt rule.
+newDescribeReceiptRule ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'ruleName'
+  Prelude.Text ->
+  DescribeReceiptRule
+newDescribeReceiptRule pRuleSetName_ pRuleName_ =
+  DescribeReceiptRule'
+    { ruleSetName = pRuleSetName_,
+      ruleName = pRuleName_
+    }
+
+-- | The name of the receipt rule set that the receipt rule belongs to.
+describeReceiptRule_ruleSetName :: Lens.Lens' DescribeReceiptRule Prelude.Text
+describeReceiptRule_ruleSetName = Lens.lens (\DescribeReceiptRule' {ruleSetName} -> ruleSetName) (\s@DescribeReceiptRule' {} a -> s {ruleSetName = a} :: DescribeReceiptRule)
+
+-- | The name of the receipt rule.
+describeReceiptRule_ruleName :: Lens.Lens' DescribeReceiptRule Prelude.Text
+describeReceiptRule_ruleName = Lens.lens (\DescribeReceiptRule' {ruleName} -> ruleName) (\s@DescribeReceiptRule' {} a -> s {ruleName = a} :: DescribeReceiptRule)
+
+instance Core.AWSRequest DescribeReceiptRule where
+  type
+    AWSResponse DescribeReceiptRule =
+      DescribeReceiptRuleResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeReceiptRuleResult"
+      ( \s h x ->
+          DescribeReceiptRuleResponse'
+            Prelude.<$> (x Data..@? "Rule")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeReceiptRule where
+  hashWithSalt _salt DescribeReceiptRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` ruleName
+
+instance Prelude.NFData DescribeReceiptRule where
+  rnf DescribeReceiptRule' {..} =
+    Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf ruleName
+
+instance Data.ToHeaders DescribeReceiptRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeReceiptRule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeReceiptRule where
+  toQuery DescribeReceiptRule' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeReceiptRule" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName,
+        "RuleName" Data.=: ruleName
+      ]
+
+-- | Represents the details of a receipt rule.
+--
+-- /See:/ 'newDescribeReceiptRuleResponse' smart constructor.
+data DescribeReceiptRuleResponse = DescribeReceiptRuleResponse'
+  { -- | A data structure that contains the specified receipt rule\'s name,
+    -- actions, recipients, domains, enabled status, scan status, and Transport
+    -- Layer Security (TLS) policy.
+    rule :: Prelude.Maybe ReceiptRule,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReceiptRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'rule', 'describeReceiptRuleResponse_rule' - A data structure that contains the specified receipt rule\'s name,
+-- actions, recipients, domains, enabled status, scan status, and Transport
+-- Layer Security (TLS) policy.
+--
+-- 'httpStatus', 'describeReceiptRuleResponse_httpStatus' - The response's http status code.
+newDescribeReceiptRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeReceiptRuleResponse
+newDescribeReceiptRuleResponse pHttpStatus_ =
+  DescribeReceiptRuleResponse'
+    { rule =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A data structure that contains the specified receipt rule\'s name,
+-- actions, recipients, domains, enabled status, scan status, and Transport
+-- Layer Security (TLS) policy.
+describeReceiptRuleResponse_rule :: Lens.Lens' DescribeReceiptRuleResponse (Prelude.Maybe ReceiptRule)
+describeReceiptRuleResponse_rule = Lens.lens (\DescribeReceiptRuleResponse' {rule} -> rule) (\s@DescribeReceiptRuleResponse' {} a -> s {rule = a} :: DescribeReceiptRuleResponse)
+
+-- | The response's http status code.
+describeReceiptRuleResponse_httpStatus :: Lens.Lens' DescribeReceiptRuleResponse Prelude.Int
+describeReceiptRuleResponse_httpStatus = Lens.lens (\DescribeReceiptRuleResponse' {httpStatus} -> httpStatus) (\s@DescribeReceiptRuleResponse' {} a -> s {httpStatus = a} :: DescribeReceiptRuleResponse)
+
+instance Prelude.NFData DescribeReceiptRuleResponse where
+  rnf DescribeReceiptRuleResponse' {..} =
+    Prelude.rnf rule
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/DescribeReceiptRuleSet.hs b/gen/Amazonka/SES/DescribeReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/DescribeReceiptRuleSet.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.DescribeReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.DescribeReceiptRuleSet
+  ( -- * Creating a Request
+    DescribeReceiptRuleSet (..),
+    newDescribeReceiptRuleSet,
+
+    -- * Request Lenses
+    describeReceiptRuleSet_ruleSetName,
+
+    -- * Destructuring the Response
+    DescribeReceiptRuleSetResponse (..),
+    newDescribeReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    describeReceiptRuleSetResponse_metadata,
+    describeReceiptRuleSetResponse_rules,
+    describeReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the details of a receipt rule set. You
+-- use receipt rule sets to receive email with Amazon SES. For more
+-- information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newDescribeReceiptRuleSet' smart constructor.
+data DescribeReceiptRuleSet = DescribeReceiptRuleSet'
+  { -- | The name of the receipt rule set to describe.
+    ruleSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'describeReceiptRuleSet_ruleSetName' - The name of the receipt rule set to describe.
+newDescribeReceiptRuleSet ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  DescribeReceiptRuleSet
+newDescribeReceiptRuleSet pRuleSetName_ =
+  DescribeReceiptRuleSet'
+    { ruleSetName =
+        pRuleSetName_
+    }
+
+-- | The name of the receipt rule set to describe.
+describeReceiptRuleSet_ruleSetName :: Lens.Lens' DescribeReceiptRuleSet Prelude.Text
+describeReceiptRuleSet_ruleSetName = Lens.lens (\DescribeReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@DescribeReceiptRuleSet' {} a -> s {ruleSetName = a} :: DescribeReceiptRuleSet)
+
+instance Core.AWSRequest DescribeReceiptRuleSet where
+  type
+    AWSResponse DescribeReceiptRuleSet =
+      DescribeReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "DescribeReceiptRuleSetResult"
+      ( \s h x ->
+          DescribeReceiptRuleSetResponse'
+            Prelude.<$> (x Data..@? "Metadata")
+            Prelude.<*> ( x
+                            Data..@? "Rules"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeReceiptRuleSet where
+  hashWithSalt _salt DescribeReceiptRuleSet' {..} =
+    _salt `Prelude.hashWithSalt` ruleSetName
+
+instance Prelude.NFData DescribeReceiptRuleSet where
+  rnf DescribeReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+
+instance Data.ToHeaders DescribeReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath DescribeReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery DescribeReceiptRuleSet where
+  toQuery DescribeReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("DescribeReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName
+      ]
+
+-- | Represents the details of the specified receipt rule set.
+--
+-- /See:/ 'newDescribeReceiptRuleSetResponse' smart constructor.
+data DescribeReceiptRuleSetResponse = DescribeReceiptRuleSetResponse'
+  { -- | The metadata for the receipt rule set, which consists of the rule set
+    -- name and the timestamp of when the rule set was created.
+    metadata :: Prelude.Maybe ReceiptRuleSetMetadata,
+    -- | A list of the receipt rules that belong to the specified receipt rule
+    -- set.
+    rules :: Prelude.Maybe [ReceiptRule],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'metadata', 'describeReceiptRuleSetResponse_metadata' - The metadata for the receipt rule set, which consists of the rule set
+-- name and the timestamp of when the rule set was created.
+--
+-- 'rules', 'describeReceiptRuleSetResponse_rules' - A list of the receipt rules that belong to the specified receipt rule
+-- set.
+--
+-- 'httpStatus', 'describeReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newDescribeReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeReceiptRuleSetResponse
+newDescribeReceiptRuleSetResponse pHttpStatus_ =
+  DescribeReceiptRuleSetResponse'
+    { metadata =
+        Prelude.Nothing,
+      rules = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The metadata for the receipt rule set, which consists of the rule set
+-- name and the timestamp of when the rule set was created.
+describeReceiptRuleSetResponse_metadata :: Lens.Lens' DescribeReceiptRuleSetResponse (Prelude.Maybe ReceiptRuleSetMetadata)
+describeReceiptRuleSetResponse_metadata = Lens.lens (\DescribeReceiptRuleSetResponse' {metadata} -> metadata) (\s@DescribeReceiptRuleSetResponse' {} a -> s {metadata = a} :: DescribeReceiptRuleSetResponse)
+
+-- | A list of the receipt rules that belong to the specified receipt rule
+-- set.
+describeReceiptRuleSetResponse_rules :: Lens.Lens' DescribeReceiptRuleSetResponse (Prelude.Maybe [ReceiptRule])
+describeReceiptRuleSetResponse_rules = Lens.lens (\DescribeReceiptRuleSetResponse' {rules} -> rules) (\s@DescribeReceiptRuleSetResponse' {} a -> s {rules = a} :: DescribeReceiptRuleSetResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeReceiptRuleSetResponse_httpStatus :: Lens.Lens' DescribeReceiptRuleSetResponse Prelude.Int
+describeReceiptRuleSetResponse_httpStatus = Lens.lens (\DescribeReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@DescribeReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: DescribeReceiptRuleSetResponse)
+
+instance
+  Prelude.NFData
+    DescribeReceiptRuleSetResponse
+  where
+  rnf DescribeReceiptRuleSetResponse' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf rules
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/GetAccountSendingEnabled.hs b/gen/Amazonka/SES/GetAccountSendingEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetAccountSendingEnabled.hs
@@ -0,0 +1,155 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetAccountSendingEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the email sending status of the Amazon SES account for the
+-- current region.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetAccountSendingEnabled
+  ( -- * Creating a Request
+    GetAccountSendingEnabled (..),
+    newGetAccountSendingEnabled,
+
+    -- * Destructuring the Response
+    GetAccountSendingEnabledResponse (..),
+    newGetAccountSendingEnabledResponse,
+
+    -- * Response Lenses
+    getAccountSendingEnabledResponse_enabled,
+    getAccountSendingEnabledResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newGetAccountSendingEnabled' smart constructor.
+data GetAccountSendingEnabled = GetAccountSendingEnabled'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccountSendingEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetAccountSendingEnabled ::
+  GetAccountSendingEnabled
+newGetAccountSendingEnabled =
+  GetAccountSendingEnabled'
+
+instance Core.AWSRequest GetAccountSendingEnabled where
+  type
+    AWSResponse GetAccountSendingEnabled =
+      GetAccountSendingEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetAccountSendingEnabledResult"
+      ( \s h x ->
+          GetAccountSendingEnabledResponse'
+            Prelude.<$> (x Data..@? "Enabled")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetAccountSendingEnabled where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetAccountSendingEnabled where
+  rnf _ = ()
+
+instance Data.ToHeaders GetAccountSendingEnabled where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetAccountSendingEnabled where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetAccountSendingEnabled where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ("GetAccountSendingEnabled" :: Prelude.ByteString),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | Represents a request to return the email sending status for your Amazon
+-- SES account in the current AWS Region.
+--
+-- /See:/ 'newGetAccountSendingEnabledResponse' smart constructor.
+data GetAccountSendingEnabledResponse = GetAccountSendingEnabledResponse'
+  { -- | Describes whether email sending is enabled or disabled for your Amazon
+    -- SES account in the current AWS Region.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetAccountSendingEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'enabled', 'getAccountSendingEnabledResponse_enabled' - Describes whether email sending is enabled or disabled for your Amazon
+-- SES account in the current AWS Region.
+--
+-- 'httpStatus', 'getAccountSendingEnabledResponse_httpStatus' - The response's http status code.
+newGetAccountSendingEnabledResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetAccountSendingEnabledResponse
+newGetAccountSendingEnabledResponse pHttpStatus_ =
+  GetAccountSendingEnabledResponse'
+    { enabled =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Describes whether email sending is enabled or disabled for your Amazon
+-- SES account in the current AWS Region.
+getAccountSendingEnabledResponse_enabled :: Lens.Lens' GetAccountSendingEnabledResponse (Prelude.Maybe Prelude.Bool)
+getAccountSendingEnabledResponse_enabled = Lens.lens (\GetAccountSendingEnabledResponse' {enabled} -> enabled) (\s@GetAccountSendingEnabledResponse' {} a -> s {enabled = a} :: GetAccountSendingEnabledResponse)
+
+-- | The response's http status code.
+getAccountSendingEnabledResponse_httpStatus :: Lens.Lens' GetAccountSendingEnabledResponse Prelude.Int
+getAccountSendingEnabledResponse_httpStatus = Lens.lens (\GetAccountSendingEnabledResponse' {httpStatus} -> httpStatus) (\s@GetAccountSendingEnabledResponse' {} a -> s {httpStatus = a} :: GetAccountSendingEnabledResponse)
+
+instance
+  Prelude.NFData
+    GetAccountSendingEnabledResponse
+  where
+  rnf GetAccountSendingEnabledResponse' {..} =
+    Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/GetCustomVerificationEmailTemplate.hs b/gen/Amazonka/SES/GetCustomVerificationEmailTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetCustomVerificationEmailTemplate.hs
@@ -0,0 +1,272 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetCustomVerificationEmailTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the custom email verification template for the template name you
+-- specify.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetCustomVerificationEmailTemplate
+  ( -- * Creating a Request
+    GetCustomVerificationEmailTemplate (..),
+    newGetCustomVerificationEmailTemplate,
+
+    -- * Request Lenses
+    getCustomVerificationEmailTemplate_templateName,
+
+    -- * Destructuring the Response
+    GetCustomVerificationEmailTemplateResponse (..),
+    newGetCustomVerificationEmailTemplateResponse,
+
+    -- * Response Lenses
+    getCustomVerificationEmailTemplateResponse_failureRedirectionURL,
+    getCustomVerificationEmailTemplateResponse_fromEmailAddress,
+    getCustomVerificationEmailTemplateResponse_successRedirectionURL,
+    getCustomVerificationEmailTemplateResponse_templateContent,
+    getCustomVerificationEmailTemplateResponse_templateName,
+    getCustomVerificationEmailTemplateResponse_templateSubject,
+    getCustomVerificationEmailTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to retrieve an existing custom verification email
+-- template.
+--
+-- /See:/ 'newGetCustomVerificationEmailTemplate' smart constructor.
+data GetCustomVerificationEmailTemplate = GetCustomVerificationEmailTemplate'
+  { -- | The name of the custom verification email template that you want to
+    -- retrieve.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCustomVerificationEmailTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'getCustomVerificationEmailTemplate_templateName' - The name of the custom verification email template that you want to
+-- retrieve.
+newGetCustomVerificationEmailTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  GetCustomVerificationEmailTemplate
+newGetCustomVerificationEmailTemplate pTemplateName_ =
+  GetCustomVerificationEmailTemplate'
+    { templateName =
+        pTemplateName_
+    }
+
+-- | The name of the custom verification email template that you want to
+-- retrieve.
+getCustomVerificationEmailTemplate_templateName :: Lens.Lens' GetCustomVerificationEmailTemplate Prelude.Text
+getCustomVerificationEmailTemplate_templateName = Lens.lens (\GetCustomVerificationEmailTemplate' {templateName} -> templateName) (\s@GetCustomVerificationEmailTemplate' {} a -> s {templateName = a} :: GetCustomVerificationEmailTemplate)
+
+instance
+  Core.AWSRequest
+    GetCustomVerificationEmailTemplate
+  where
+  type
+    AWSResponse GetCustomVerificationEmailTemplate =
+      GetCustomVerificationEmailTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetCustomVerificationEmailTemplateResult"
+      ( \s h x ->
+          GetCustomVerificationEmailTemplateResponse'
+            Prelude.<$> (x Data..@? "FailureRedirectionURL")
+            Prelude.<*> (x Data..@? "FromEmailAddress")
+            Prelude.<*> (x Data..@? "SuccessRedirectionURL")
+            Prelude.<*> (x Data..@? "TemplateContent")
+            Prelude.<*> (x Data..@? "TemplateName")
+            Prelude.<*> (x Data..@? "TemplateSubject")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetCustomVerificationEmailTemplate
+  where
+  hashWithSalt
+    _salt
+    GetCustomVerificationEmailTemplate' {..} =
+      _salt `Prelude.hashWithSalt` templateName
+
+instance
+  Prelude.NFData
+    GetCustomVerificationEmailTemplate
+  where
+  rnf GetCustomVerificationEmailTemplate' {..} =
+    Prelude.rnf templateName
+
+instance
+  Data.ToHeaders
+    GetCustomVerificationEmailTemplate
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetCustomVerificationEmailTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetCustomVerificationEmailTemplate
+  where
+  toQuery GetCustomVerificationEmailTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "GetCustomVerificationEmailTemplate" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | The content of the custom verification email template.
+--
+-- /See:/ 'newGetCustomVerificationEmailTemplateResponse' smart constructor.
+data GetCustomVerificationEmailTemplateResponse = GetCustomVerificationEmailTemplateResponse'
+  { -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is not successfully verified.
+    failureRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The email address that the custom verification email is sent from.
+    fromEmailAddress :: Prelude.Maybe Prelude.Text,
+    -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is successfully verified.
+    successRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The content of the custom verification email.
+    templateContent :: Prelude.Maybe Prelude.Text,
+    -- | The name of the custom verification email template.
+    templateName :: Prelude.Maybe Prelude.Text,
+    -- | The subject line of the custom verification email.
+    templateSubject :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCustomVerificationEmailTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failureRedirectionURL', 'getCustomVerificationEmailTemplateResponse_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+--
+-- 'fromEmailAddress', 'getCustomVerificationEmailTemplateResponse_fromEmailAddress' - The email address that the custom verification email is sent from.
+--
+-- 'successRedirectionURL', 'getCustomVerificationEmailTemplateResponse_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+--
+-- 'templateContent', 'getCustomVerificationEmailTemplateResponse_templateContent' - The content of the custom verification email.
+--
+-- 'templateName', 'getCustomVerificationEmailTemplateResponse_templateName' - The name of the custom verification email template.
+--
+-- 'templateSubject', 'getCustomVerificationEmailTemplateResponse_templateSubject' - The subject line of the custom verification email.
+--
+-- 'httpStatus', 'getCustomVerificationEmailTemplateResponse_httpStatus' - The response's http status code.
+newGetCustomVerificationEmailTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCustomVerificationEmailTemplateResponse
+newGetCustomVerificationEmailTemplateResponse
+  pHttpStatus_ =
+    GetCustomVerificationEmailTemplateResponse'
+      { failureRedirectionURL =
+          Prelude.Nothing,
+        fromEmailAddress =
+          Prelude.Nothing,
+        successRedirectionURL =
+          Prelude.Nothing,
+        templateContent =
+          Prelude.Nothing,
+        templateName = Prelude.Nothing,
+        templateSubject =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+getCustomVerificationEmailTemplateResponse_failureRedirectionURL :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_failureRedirectionURL = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {failureRedirectionURL} -> failureRedirectionURL) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {failureRedirectionURL = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The email address that the custom verification email is sent from.
+getCustomVerificationEmailTemplateResponse_fromEmailAddress :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_fromEmailAddress = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {fromEmailAddress} -> fromEmailAddress) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {fromEmailAddress = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+getCustomVerificationEmailTemplateResponse_successRedirectionURL :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_successRedirectionURL = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {successRedirectionURL} -> successRedirectionURL) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {successRedirectionURL = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The content of the custom verification email.
+getCustomVerificationEmailTemplateResponse_templateContent :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_templateContent = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {templateContent} -> templateContent) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {templateContent = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The name of the custom verification email template.
+getCustomVerificationEmailTemplateResponse_templateName :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_templateName = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {templateName} -> templateName) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {templateName = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The subject line of the custom verification email.
+getCustomVerificationEmailTemplateResponse_templateSubject :: Lens.Lens' GetCustomVerificationEmailTemplateResponse (Prelude.Maybe Prelude.Text)
+getCustomVerificationEmailTemplateResponse_templateSubject = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {templateSubject} -> templateSubject) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {templateSubject = a} :: GetCustomVerificationEmailTemplateResponse)
+
+-- | The response's http status code.
+getCustomVerificationEmailTemplateResponse_httpStatus :: Lens.Lens' GetCustomVerificationEmailTemplateResponse Prelude.Int
+getCustomVerificationEmailTemplateResponse_httpStatus = Lens.lens (\GetCustomVerificationEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@GetCustomVerificationEmailTemplateResponse' {} a -> s {httpStatus = a} :: GetCustomVerificationEmailTemplateResponse)
+
+instance
+  Prelude.NFData
+    GetCustomVerificationEmailTemplateResponse
+  where
+  rnf GetCustomVerificationEmailTemplateResponse' {..} =
+    Prelude.rnf failureRedirectionURL
+      `Prelude.seq` Prelude.rnf fromEmailAddress
+      `Prelude.seq` Prelude.rnf successRedirectionURL
+      `Prelude.seq` Prelude.rnf templateContent
+      `Prelude.seq` Prelude.rnf templateName
+      `Prelude.seq` Prelude.rnf templateSubject
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/GetIdentityDkimAttributes.hs b/gen/Amazonka/SES/GetIdentityDkimAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetIdentityDkimAttributes.hs
@@ -0,0 +1,204 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetIdentityDkimAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the current status of Easy DKIM signing for an entity. For
+-- domain name identities, this operation also returns the DKIM tokens that
+-- are required for Easy DKIM signing, and whether Amazon SES has
+-- successfully verified that these tokens have been published.
+--
+-- This operation takes a list of identities as input and returns the
+-- following information for each:
+--
+-- -   Whether Easy DKIM signing is enabled or disabled.
+--
+-- -   A set of DKIM tokens that represent the identity. If the identity is
+--     an email address, the tokens represent the domain of that address.
+--
+-- -   Whether Amazon SES has successfully verified the DKIM tokens
+--     published in the domain\'s DNS. This information is only returned
+--     for domain name identities, not for email addresses.
+--
+-- This operation is throttled at one request per second and can only get
+-- DKIM attributes for up to 100 identities at a time.
+--
+-- For more information about creating DNS records using DKIM tokens, go to
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim-dns-records.html Amazon SES Developer Guide>.
+module Amazonka.SES.GetIdentityDkimAttributes
+  ( -- * Creating a Request
+    GetIdentityDkimAttributes (..),
+    newGetIdentityDkimAttributes,
+
+    -- * Request Lenses
+    getIdentityDkimAttributes_identities,
+
+    -- * Destructuring the Response
+    GetIdentityDkimAttributesResponse (..),
+    newGetIdentityDkimAttributesResponse,
+
+    -- * Response Lenses
+    getIdentityDkimAttributesResponse_httpStatus,
+    getIdentityDkimAttributesResponse_dkimAttributes,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request for the status of Amazon SES Easy DKIM signing for
+-- an identity. For domain identities, this request also returns the DKIM
+-- tokens that are required for Easy DKIM signing, and whether Amazon SES
+-- successfully verified that these tokens were published. For more
+-- information about Easy DKIM, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newGetIdentityDkimAttributes' smart constructor.
+data GetIdentityDkimAttributes = GetIdentityDkimAttributes'
+  { -- | A list of one or more verified identities - email addresses, domains, or
+    -- both.
+    identities :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityDkimAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identities', 'getIdentityDkimAttributes_identities' - A list of one or more verified identities - email addresses, domains, or
+-- both.
+newGetIdentityDkimAttributes ::
+  GetIdentityDkimAttributes
+newGetIdentityDkimAttributes =
+  GetIdentityDkimAttributes'
+    { identities =
+        Prelude.mempty
+    }
+
+-- | A list of one or more verified identities - email addresses, domains, or
+-- both.
+getIdentityDkimAttributes_identities :: Lens.Lens' GetIdentityDkimAttributes [Prelude.Text]
+getIdentityDkimAttributes_identities = Lens.lens (\GetIdentityDkimAttributes' {identities} -> identities) (\s@GetIdentityDkimAttributes' {} a -> s {identities = a} :: GetIdentityDkimAttributes) Prelude.. Lens.coerced
+
+instance Core.AWSRequest GetIdentityDkimAttributes where
+  type
+    AWSResponse GetIdentityDkimAttributes =
+      GetIdentityDkimAttributesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetIdentityDkimAttributesResult"
+      ( \s h x ->
+          GetIdentityDkimAttributesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "DkimAttributes"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLMap "entry" "key" "value"
+                        )
+      )
+
+instance Prelude.Hashable GetIdentityDkimAttributes where
+  hashWithSalt _salt GetIdentityDkimAttributes' {..} =
+    _salt `Prelude.hashWithSalt` identities
+
+instance Prelude.NFData GetIdentityDkimAttributes where
+  rnf GetIdentityDkimAttributes' {..} =
+    Prelude.rnf identities
+
+instance Data.ToHeaders GetIdentityDkimAttributes where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetIdentityDkimAttributes where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetIdentityDkimAttributes where
+  toQuery GetIdentityDkimAttributes' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("GetIdentityDkimAttributes" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identities"
+          Data.=: Data.toQueryList "member" identities
+      ]
+
+-- | Represents the status of Amazon SES Easy DKIM signing for an identity.
+-- For domain identities, this response also contains the DKIM tokens that
+-- are required for Easy DKIM signing, and whether Amazon SES successfully
+-- verified that these tokens were published.
+--
+-- /See:/ 'newGetIdentityDkimAttributesResponse' smart constructor.
+data GetIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The DKIM attributes for an email address or a domain.
+    dkimAttributes :: Prelude.HashMap Prelude.Text IdentityDkimAttributes
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityDkimAttributesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIdentityDkimAttributesResponse_httpStatus' - The response's http status code.
+--
+-- 'dkimAttributes', 'getIdentityDkimAttributesResponse_dkimAttributes' - The DKIM attributes for an email address or a domain.
+newGetIdentityDkimAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityDkimAttributesResponse
+newGetIdentityDkimAttributesResponse pHttpStatus_ =
+  GetIdentityDkimAttributesResponse'
+    { httpStatus =
+        pHttpStatus_,
+      dkimAttributes = Prelude.mempty
+    }
+
+-- | The response's http status code.
+getIdentityDkimAttributesResponse_httpStatus :: Lens.Lens' GetIdentityDkimAttributesResponse Prelude.Int
+getIdentityDkimAttributesResponse_httpStatus = Lens.lens (\GetIdentityDkimAttributesResponse' {httpStatus} -> httpStatus) (\s@GetIdentityDkimAttributesResponse' {} a -> s {httpStatus = a} :: GetIdentityDkimAttributesResponse)
+
+-- | The DKIM attributes for an email address or a domain.
+getIdentityDkimAttributesResponse_dkimAttributes :: Lens.Lens' GetIdentityDkimAttributesResponse (Prelude.HashMap Prelude.Text IdentityDkimAttributes)
+getIdentityDkimAttributesResponse_dkimAttributes = Lens.lens (\GetIdentityDkimAttributesResponse' {dkimAttributes} -> dkimAttributes) (\s@GetIdentityDkimAttributesResponse' {} a -> s {dkimAttributes = a} :: GetIdentityDkimAttributesResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    GetIdentityDkimAttributesResponse
+  where
+  rnf GetIdentityDkimAttributesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf dkimAttributes
diff --git a/gen/Amazonka/SES/GetIdentityMailFromDomainAttributes.hs b/gen/Amazonka/SES/GetIdentityMailFromDomainAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetIdentityMailFromDomainAttributes.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetIdentityMailFromDomainAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the custom MAIL FROM attributes for a list of identities (email
+-- addresses : domains).
+--
+-- This operation is throttled at one request per second and can only get
+-- custom MAIL FROM attributes for up to 100 identities at a time.
+module Amazonka.SES.GetIdentityMailFromDomainAttributes
+  ( -- * Creating a Request
+    GetIdentityMailFromDomainAttributes (..),
+    newGetIdentityMailFromDomainAttributes,
+
+    -- * Request Lenses
+    getIdentityMailFromDomainAttributes_identities,
+
+    -- * Destructuring the Response
+    GetIdentityMailFromDomainAttributesResponse (..),
+    newGetIdentityMailFromDomainAttributesResponse,
+
+    -- * Response Lenses
+    getIdentityMailFromDomainAttributesResponse_httpStatus,
+    getIdentityMailFromDomainAttributesResponse_mailFromDomainAttributes,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the Amazon SES custom MAIL FROM
+-- attributes for a list of identities. For information about using a
+-- custom MAIL FROM domain, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newGetIdentityMailFromDomainAttributes' smart constructor.
+data GetIdentityMailFromDomainAttributes = GetIdentityMailFromDomainAttributes'
+  { -- | A list of one or more identities.
+    identities :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityMailFromDomainAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identities', 'getIdentityMailFromDomainAttributes_identities' - A list of one or more identities.
+newGetIdentityMailFromDomainAttributes ::
+  GetIdentityMailFromDomainAttributes
+newGetIdentityMailFromDomainAttributes =
+  GetIdentityMailFromDomainAttributes'
+    { identities =
+        Prelude.mempty
+    }
+
+-- | A list of one or more identities.
+getIdentityMailFromDomainAttributes_identities :: Lens.Lens' GetIdentityMailFromDomainAttributes [Prelude.Text]
+getIdentityMailFromDomainAttributes_identities = Lens.lens (\GetIdentityMailFromDomainAttributes' {identities} -> identities) (\s@GetIdentityMailFromDomainAttributes' {} a -> s {identities = a} :: GetIdentityMailFromDomainAttributes) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    GetIdentityMailFromDomainAttributes
+  where
+  type
+    AWSResponse GetIdentityMailFromDomainAttributes =
+      GetIdentityMailFromDomainAttributesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetIdentityMailFromDomainAttributesResult"
+      ( \s h x ->
+          GetIdentityMailFromDomainAttributesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "MailFromDomainAttributes"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLMap "entry" "key" "value"
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    GetIdentityMailFromDomainAttributes
+  where
+  hashWithSalt
+    _salt
+    GetIdentityMailFromDomainAttributes' {..} =
+      _salt `Prelude.hashWithSalt` identities
+
+instance
+  Prelude.NFData
+    GetIdentityMailFromDomainAttributes
+  where
+  rnf GetIdentityMailFromDomainAttributes' {..} =
+    Prelude.rnf identities
+
+instance
+  Data.ToHeaders
+    GetIdentityMailFromDomainAttributes
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetIdentityMailFromDomainAttributes
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetIdentityMailFromDomainAttributes
+  where
+  toQuery GetIdentityMailFromDomainAttributes' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "GetIdentityMailFromDomainAttributes" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identities"
+          Data.=: Data.toQueryList "member" identities
+      ]
+
+-- | Represents the custom MAIL FROM attributes for a list of identities.
+--
+-- /See:/ 'newGetIdentityMailFromDomainAttributesResponse' smart constructor.
+data GetIdentityMailFromDomainAttributesResponse = GetIdentityMailFromDomainAttributesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A map of identities to custom MAIL FROM attributes.
+    mailFromDomainAttributes :: Prelude.HashMap Prelude.Text IdentityMailFromDomainAttributes
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityMailFromDomainAttributesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIdentityMailFromDomainAttributesResponse_httpStatus' - The response's http status code.
+--
+-- 'mailFromDomainAttributes', 'getIdentityMailFromDomainAttributesResponse_mailFromDomainAttributes' - A map of identities to custom MAIL FROM attributes.
+newGetIdentityMailFromDomainAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityMailFromDomainAttributesResponse
+newGetIdentityMailFromDomainAttributesResponse
+  pHttpStatus_ =
+    GetIdentityMailFromDomainAttributesResponse'
+      { httpStatus =
+          pHttpStatus_,
+        mailFromDomainAttributes =
+          Prelude.mempty
+      }
+
+-- | The response's http status code.
+getIdentityMailFromDomainAttributesResponse_httpStatus :: Lens.Lens' GetIdentityMailFromDomainAttributesResponse Prelude.Int
+getIdentityMailFromDomainAttributesResponse_httpStatus = Lens.lens (\GetIdentityMailFromDomainAttributesResponse' {httpStatus} -> httpStatus) (\s@GetIdentityMailFromDomainAttributesResponse' {} a -> s {httpStatus = a} :: GetIdentityMailFromDomainAttributesResponse)
+
+-- | A map of identities to custom MAIL FROM attributes.
+getIdentityMailFromDomainAttributesResponse_mailFromDomainAttributes :: Lens.Lens' GetIdentityMailFromDomainAttributesResponse (Prelude.HashMap Prelude.Text IdentityMailFromDomainAttributes)
+getIdentityMailFromDomainAttributesResponse_mailFromDomainAttributes = Lens.lens (\GetIdentityMailFromDomainAttributesResponse' {mailFromDomainAttributes} -> mailFromDomainAttributes) (\s@GetIdentityMailFromDomainAttributesResponse' {} a -> s {mailFromDomainAttributes = a} :: GetIdentityMailFromDomainAttributesResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    GetIdentityMailFromDomainAttributesResponse
+  where
+  rnf GetIdentityMailFromDomainAttributesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf mailFromDomainAttributes
diff --git a/gen/Amazonka/SES/GetIdentityNotificationAttributes.hs b/gen/Amazonka/SES/GetIdentityNotificationAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetIdentityNotificationAttributes.hs
@@ -0,0 +1,214 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetIdentityNotificationAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Given a list of verified identities (email addresses and\/or domains),
+-- returns a structure describing identity notification attributes.
+--
+-- This operation is throttled at one request per second and can only get
+-- notification attributes for up to 100 identities at a time.
+--
+-- For more information about using notifications with Amazon SES, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+module Amazonka.SES.GetIdentityNotificationAttributes
+  ( -- * Creating a Request
+    GetIdentityNotificationAttributes (..),
+    newGetIdentityNotificationAttributes,
+
+    -- * Request Lenses
+    getIdentityNotificationAttributes_identities,
+
+    -- * Destructuring the Response
+    GetIdentityNotificationAttributesResponse (..),
+    newGetIdentityNotificationAttributesResponse,
+
+    -- * Response Lenses
+    getIdentityNotificationAttributesResponse_httpStatus,
+    getIdentityNotificationAttributesResponse_notificationAttributes,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the notification attributes for a list of
+-- identities you verified with Amazon SES. For information about Amazon
+-- SES notifications, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newGetIdentityNotificationAttributes' smart constructor.
+data GetIdentityNotificationAttributes = GetIdentityNotificationAttributes'
+  { -- | A list of one or more identities. You can specify an identity by using
+    -- its name or by using its Amazon Resource Name (ARN). Examples:
+    -- @user\@example.com@, @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    identities :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityNotificationAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identities', 'getIdentityNotificationAttributes_identities' - A list of one or more identities. You can specify an identity by using
+-- its name or by using its Amazon Resource Name (ARN). Examples:
+-- @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+newGetIdentityNotificationAttributes ::
+  GetIdentityNotificationAttributes
+newGetIdentityNotificationAttributes =
+  GetIdentityNotificationAttributes'
+    { identities =
+        Prelude.mempty
+    }
+
+-- | A list of one or more identities. You can specify an identity by using
+-- its name or by using its Amazon Resource Name (ARN). Examples:
+-- @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+getIdentityNotificationAttributes_identities :: Lens.Lens' GetIdentityNotificationAttributes [Prelude.Text]
+getIdentityNotificationAttributes_identities = Lens.lens (\GetIdentityNotificationAttributes' {identities} -> identities) (\s@GetIdentityNotificationAttributes' {} a -> s {identities = a} :: GetIdentityNotificationAttributes) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    GetIdentityNotificationAttributes
+  where
+  type
+    AWSResponse GetIdentityNotificationAttributes =
+      GetIdentityNotificationAttributesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetIdentityNotificationAttributesResult"
+      ( \s h x ->
+          GetIdentityNotificationAttributesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "NotificationAttributes"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLMap "entry" "key" "value"
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    GetIdentityNotificationAttributes
+  where
+  hashWithSalt
+    _salt
+    GetIdentityNotificationAttributes' {..} =
+      _salt `Prelude.hashWithSalt` identities
+
+instance
+  Prelude.NFData
+    GetIdentityNotificationAttributes
+  where
+  rnf GetIdentityNotificationAttributes' {..} =
+    Prelude.rnf identities
+
+instance
+  Data.ToHeaders
+    GetIdentityNotificationAttributes
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetIdentityNotificationAttributes
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetIdentityNotificationAttributes
+  where
+  toQuery GetIdentityNotificationAttributes' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "GetIdentityNotificationAttributes" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identities"
+          Data.=: Data.toQueryList "member" identities
+      ]
+
+-- | Represents the notification attributes for a list of identities.
+--
+-- /See:/ 'newGetIdentityNotificationAttributesResponse' smart constructor.
+data GetIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A map of Identity to IdentityNotificationAttributes.
+    notificationAttributes :: Prelude.HashMap Prelude.Text IdentityNotificationAttributes
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityNotificationAttributesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIdentityNotificationAttributesResponse_httpStatus' - The response's http status code.
+--
+-- 'notificationAttributes', 'getIdentityNotificationAttributesResponse_notificationAttributes' - A map of Identity to IdentityNotificationAttributes.
+newGetIdentityNotificationAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityNotificationAttributesResponse
+newGetIdentityNotificationAttributesResponse
+  pHttpStatus_ =
+    GetIdentityNotificationAttributesResponse'
+      { httpStatus =
+          pHttpStatus_,
+        notificationAttributes =
+          Prelude.mempty
+      }
+
+-- | The response's http status code.
+getIdentityNotificationAttributesResponse_httpStatus :: Lens.Lens' GetIdentityNotificationAttributesResponse Prelude.Int
+getIdentityNotificationAttributesResponse_httpStatus = Lens.lens (\GetIdentityNotificationAttributesResponse' {httpStatus} -> httpStatus) (\s@GetIdentityNotificationAttributesResponse' {} a -> s {httpStatus = a} :: GetIdentityNotificationAttributesResponse)
+
+-- | A map of Identity to IdentityNotificationAttributes.
+getIdentityNotificationAttributesResponse_notificationAttributes :: Lens.Lens' GetIdentityNotificationAttributesResponse (Prelude.HashMap Prelude.Text IdentityNotificationAttributes)
+getIdentityNotificationAttributesResponse_notificationAttributes = Lens.lens (\GetIdentityNotificationAttributesResponse' {notificationAttributes} -> notificationAttributes) (\s@GetIdentityNotificationAttributesResponse' {} a -> s {notificationAttributes = a} :: GetIdentityNotificationAttributesResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    GetIdentityNotificationAttributesResponse
+  where
+  rnf GetIdentityNotificationAttributesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf notificationAttributes
diff --git a/gen/Amazonka/SES/GetIdentityPolicies.hs b/gen/Amazonka/SES/GetIdentityPolicies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetIdentityPolicies.hs
@@ -0,0 +1,224 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetIdentityPolicies
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the requested sending authorization policies for the given
+-- identity (an email address or a domain). The policies are returned as a
+-- map of policy names to policy contents. You can retrieve a maximum of 20
+-- policies at a time.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetIdentityPolicies
+  ( -- * Creating a Request
+    GetIdentityPolicies (..),
+    newGetIdentityPolicies,
+
+    -- * Request Lenses
+    getIdentityPolicies_identity,
+    getIdentityPolicies_policyNames,
+
+    -- * Destructuring the Response
+    GetIdentityPoliciesResponse (..),
+    newGetIdentityPoliciesResponse,
+
+    -- * Response Lenses
+    getIdentityPoliciesResponse_httpStatus,
+    getIdentityPoliciesResponse_policies,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the requested sending authorization
+-- policies for an identity. Sending authorization is an Amazon SES feature
+-- that enables you to authorize other senders to use your identities. For
+-- information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newGetIdentityPolicies' smart constructor.
+data GetIdentityPolicies = GetIdentityPolicies'
+  { -- | The identity for which the policies will be retrieved. You can specify
+    -- an identity by using its name or by using its Amazon Resource Name
+    -- (ARN). Examples: @user\@example.com@, @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    --
+    -- To successfully call this API, you must own the identity.
+    identity :: Prelude.Text,
+    -- | A list of the names of policies to be retrieved. You can retrieve a
+    -- maximum of 20 policies at a time. If you do not know the names of the
+    -- policies that are attached to the identity, you can use
+    -- @ListIdentityPolicies@.
+    policyNames :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityPolicies' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'getIdentityPolicies_identity' - The identity for which the policies will be retrieved. You can specify
+-- an identity by using its name or by using its Amazon Resource Name
+-- (ARN). Examples: @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+--
+-- 'policyNames', 'getIdentityPolicies_policyNames' - A list of the names of policies to be retrieved. You can retrieve a
+-- maximum of 20 policies at a time. If you do not know the names of the
+-- policies that are attached to the identity, you can use
+-- @ListIdentityPolicies@.
+newGetIdentityPolicies ::
+  -- | 'identity'
+  Prelude.Text ->
+  GetIdentityPolicies
+newGetIdentityPolicies pIdentity_ =
+  GetIdentityPolicies'
+    { identity = pIdentity_,
+      policyNames = Prelude.mempty
+    }
+
+-- | The identity for which the policies will be retrieved. You can specify
+-- an identity by using its name or by using its Amazon Resource Name
+-- (ARN). Examples: @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+getIdentityPolicies_identity :: Lens.Lens' GetIdentityPolicies Prelude.Text
+getIdentityPolicies_identity = Lens.lens (\GetIdentityPolicies' {identity} -> identity) (\s@GetIdentityPolicies' {} a -> s {identity = a} :: GetIdentityPolicies)
+
+-- | A list of the names of policies to be retrieved. You can retrieve a
+-- maximum of 20 policies at a time. If you do not know the names of the
+-- policies that are attached to the identity, you can use
+-- @ListIdentityPolicies@.
+getIdentityPolicies_policyNames :: Lens.Lens' GetIdentityPolicies [Prelude.Text]
+getIdentityPolicies_policyNames = Lens.lens (\GetIdentityPolicies' {policyNames} -> policyNames) (\s@GetIdentityPolicies' {} a -> s {policyNames = a} :: GetIdentityPolicies) Prelude.. Lens.coerced
+
+instance Core.AWSRequest GetIdentityPolicies where
+  type
+    AWSResponse GetIdentityPolicies =
+      GetIdentityPoliciesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetIdentityPoliciesResult"
+      ( \s h x ->
+          GetIdentityPoliciesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "Policies"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLMap "entry" "key" "value"
+                        )
+      )
+
+instance Prelude.Hashable GetIdentityPolicies where
+  hashWithSalt _salt GetIdentityPolicies' {..} =
+    _salt
+      `Prelude.hashWithSalt` identity
+      `Prelude.hashWithSalt` policyNames
+
+instance Prelude.NFData GetIdentityPolicies where
+  rnf GetIdentityPolicies' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf policyNames
+
+instance Data.ToHeaders GetIdentityPolicies where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetIdentityPolicies where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetIdentityPolicies where
+  toQuery GetIdentityPolicies' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("GetIdentityPolicies" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "PolicyNames"
+          Data.=: Data.toQueryList "member" policyNames
+      ]
+
+-- | Represents the requested sending authorization policies.
+--
+-- /See:/ 'newGetIdentityPoliciesResponse' smart constructor.
+data GetIdentityPoliciesResponse = GetIdentityPoliciesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A map of policy names to policies.
+    policies :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityPoliciesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIdentityPoliciesResponse_httpStatus' - The response's http status code.
+--
+-- 'policies', 'getIdentityPoliciesResponse_policies' - A map of policy names to policies.
+newGetIdentityPoliciesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityPoliciesResponse
+newGetIdentityPoliciesResponse pHttpStatus_ =
+  GetIdentityPoliciesResponse'
+    { httpStatus =
+        pHttpStatus_,
+      policies = Prelude.mempty
+    }
+
+-- | The response's http status code.
+getIdentityPoliciesResponse_httpStatus :: Lens.Lens' GetIdentityPoliciesResponse Prelude.Int
+getIdentityPoliciesResponse_httpStatus = Lens.lens (\GetIdentityPoliciesResponse' {httpStatus} -> httpStatus) (\s@GetIdentityPoliciesResponse' {} a -> s {httpStatus = a} :: GetIdentityPoliciesResponse)
+
+-- | A map of policy names to policies.
+getIdentityPoliciesResponse_policies :: Lens.Lens' GetIdentityPoliciesResponse (Prelude.HashMap Prelude.Text Prelude.Text)
+getIdentityPoliciesResponse_policies = Lens.lens (\GetIdentityPoliciesResponse' {policies} -> policies) (\s@GetIdentityPoliciesResponse' {} a -> s {policies = a} :: GetIdentityPoliciesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData GetIdentityPoliciesResponse where
+  rnf GetIdentityPoliciesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf policies
diff --git a/gen/Amazonka/SES/GetIdentityVerificationAttributes.hs b/gen/Amazonka/SES/GetIdentityVerificationAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetIdentityVerificationAttributes.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetIdentityVerificationAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Given a list of identities (email addresses and\/or domains), returns
+-- the verification status and (for domain identities) the verification
+-- token for each identity.
+--
+-- The verification status of an email address is \"Pending\" until the
+-- email address owner clicks the link within the verification email that
+-- Amazon SES sent to that address. If the email address owner clicks the
+-- link within 24 hours, the verification status of the email address
+-- changes to \"Success\". If the link is not clicked within 24 hours, the
+-- verification status changes to \"Failed.\" In that case, if you still
+-- want to verify the email address, you must restart the verification
+-- process from the beginning.
+--
+-- For domain identities, the domain\'s verification status is \"Pending\"
+-- as Amazon SES searches for the required TXT record in the DNS settings
+-- of the domain. When Amazon SES detects the record, the domain\'s
+-- verification status changes to \"Success\". If Amazon SES is unable to
+-- detect the record within 72 hours, the domain\'s verification status
+-- changes to \"Failed.\" In that case, if you still want to verify the
+-- domain, you must restart the verification process from the beginning.
+--
+-- This operation is throttled at one request per second and can only get
+-- verification attributes for up to 100 identities at a time.
+module Amazonka.SES.GetIdentityVerificationAttributes
+  ( -- * Creating a Request
+    GetIdentityVerificationAttributes (..),
+    newGetIdentityVerificationAttributes,
+
+    -- * Request Lenses
+    getIdentityVerificationAttributes_identities,
+
+    -- * Destructuring the Response
+    GetIdentityVerificationAttributesResponse (..),
+    newGetIdentityVerificationAttributesResponse,
+
+    -- * Response Lenses
+    getIdentityVerificationAttributesResponse_httpStatus,
+    getIdentityVerificationAttributesResponse_verificationAttributes,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return the Amazon SES verification status of a
+-- list of identities. For domain identities, this request also returns the
+-- verification token. For information about verifying identities with
+-- Amazon SES, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newGetIdentityVerificationAttributes' smart constructor.
+data GetIdentityVerificationAttributes = GetIdentityVerificationAttributes'
+  { -- | A list of identities.
+    identities :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityVerificationAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identities', 'getIdentityVerificationAttributes_identities' - A list of identities.
+newGetIdentityVerificationAttributes ::
+  GetIdentityVerificationAttributes
+newGetIdentityVerificationAttributes =
+  GetIdentityVerificationAttributes'
+    { identities =
+        Prelude.mempty
+    }
+
+-- | A list of identities.
+getIdentityVerificationAttributes_identities :: Lens.Lens' GetIdentityVerificationAttributes [Prelude.Text]
+getIdentityVerificationAttributes_identities = Lens.lens (\GetIdentityVerificationAttributes' {identities} -> identities) (\s@GetIdentityVerificationAttributes' {} a -> s {identities = a} :: GetIdentityVerificationAttributes) Prelude.. Lens.coerced
+
+instance
+  Core.AWSRequest
+    GetIdentityVerificationAttributes
+  where
+  type
+    AWSResponse GetIdentityVerificationAttributes =
+      GetIdentityVerificationAttributesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetIdentityVerificationAttributesResult"
+      ( \s h x ->
+          GetIdentityVerificationAttributesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "VerificationAttributes"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLMap "entry" "key" "value"
+                        )
+      )
+
+instance
+  Prelude.Hashable
+    GetIdentityVerificationAttributes
+  where
+  hashWithSalt
+    _salt
+    GetIdentityVerificationAttributes' {..} =
+      _salt `Prelude.hashWithSalt` identities
+
+instance
+  Prelude.NFData
+    GetIdentityVerificationAttributes
+  where
+  rnf GetIdentityVerificationAttributes' {..} =
+    Prelude.rnf identities
+
+instance
+  Data.ToHeaders
+    GetIdentityVerificationAttributes
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    GetIdentityVerificationAttributes
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    GetIdentityVerificationAttributes
+  where
+  toQuery GetIdentityVerificationAttributes' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "GetIdentityVerificationAttributes" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identities"
+          Data.=: Data.toQueryList "member" identities
+      ]
+
+-- | The Amazon SES verification status of a list of identities. For domain
+-- identities, this response also contains the verification token.
+--
+-- /See:/ 'newGetIdentityVerificationAttributesResponse' smart constructor.
+data GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A map of Identities to IdentityVerificationAttributes objects.
+    verificationAttributes :: Prelude.HashMap Prelude.Text IdentityVerificationAttributes
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityVerificationAttributesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'getIdentityVerificationAttributesResponse_httpStatus' - The response's http status code.
+--
+-- 'verificationAttributes', 'getIdentityVerificationAttributesResponse_verificationAttributes' - A map of Identities to IdentityVerificationAttributes objects.
+newGetIdentityVerificationAttributesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityVerificationAttributesResponse
+newGetIdentityVerificationAttributesResponse
+  pHttpStatus_ =
+    GetIdentityVerificationAttributesResponse'
+      { httpStatus =
+          pHttpStatus_,
+        verificationAttributes =
+          Prelude.mempty
+      }
+
+-- | The response's http status code.
+getIdentityVerificationAttributesResponse_httpStatus :: Lens.Lens' GetIdentityVerificationAttributesResponse Prelude.Int
+getIdentityVerificationAttributesResponse_httpStatus = Lens.lens (\GetIdentityVerificationAttributesResponse' {httpStatus} -> httpStatus) (\s@GetIdentityVerificationAttributesResponse' {} a -> s {httpStatus = a} :: GetIdentityVerificationAttributesResponse)
+
+-- | A map of Identities to IdentityVerificationAttributes objects.
+getIdentityVerificationAttributesResponse_verificationAttributes :: Lens.Lens' GetIdentityVerificationAttributesResponse (Prelude.HashMap Prelude.Text IdentityVerificationAttributes)
+getIdentityVerificationAttributesResponse_verificationAttributes = Lens.lens (\GetIdentityVerificationAttributesResponse' {verificationAttributes} -> verificationAttributes) (\s@GetIdentityVerificationAttributesResponse' {} a -> s {verificationAttributes = a} :: GetIdentityVerificationAttributesResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    GetIdentityVerificationAttributesResponse
+  where
+  rnf GetIdentityVerificationAttributesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf verificationAttributes
diff --git a/gen/Amazonka/SES/GetSendQuota.hs b/gen/Amazonka/SES/GetSendQuota.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetSendQuota.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetSendQuota
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides the sending limits for the Amazon SES account.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetSendQuota
+  ( -- * Creating a Request
+    GetSendQuota (..),
+    newGetSendQuota,
+
+    -- * Destructuring the Response
+    GetSendQuotaResponse (..),
+    newGetSendQuotaResponse,
+
+    -- * Response Lenses
+    getSendQuotaResponse_max24HourSend,
+    getSendQuotaResponse_maxSendRate,
+    getSendQuotaResponse_sentLast24Hours,
+    getSendQuotaResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newGetSendQuota' smart constructor.
+data GetSendQuota = GetSendQuota'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSendQuota' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetSendQuota ::
+  GetSendQuota
+newGetSendQuota = GetSendQuota'
+
+instance Core.AWSRequest GetSendQuota where
+  type AWSResponse GetSendQuota = GetSendQuotaResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetSendQuotaResult"
+      ( \s h x ->
+          GetSendQuotaResponse'
+            Prelude.<$> (x Data..@? "Max24HourSend")
+            Prelude.<*> (x Data..@? "MaxSendRate")
+            Prelude.<*> (x Data..@? "SentLast24Hours")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSendQuota where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetSendQuota where
+  rnf _ = ()
+
+instance Data.ToHeaders GetSendQuota where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetSendQuota where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetSendQuota where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ("GetSendQuota" :: Prelude.ByteString),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | Represents your Amazon SES daily sending quota, maximum send rate, and
+-- the number of emails you have sent in the last 24 hours.
+--
+-- /See:/ 'newGetSendQuotaResponse' smart constructor.
+data GetSendQuotaResponse = GetSendQuotaResponse'
+  { -- | The maximum number of emails the user is allowed to send in a 24-hour
+    -- interval. A value of -1 signifies an unlimited quota.
+    max24HourSend :: Prelude.Maybe Prelude.Double,
+    -- | The maximum number of emails that Amazon SES can accept from the user\'s
+    -- account per second.
+    --
+    -- The rate at which Amazon SES accepts the user\'s messages might be less
+    -- than the maximum send rate.
+    maxSendRate :: Prelude.Maybe Prelude.Double,
+    -- | The number of emails sent during the previous 24 hours.
+    sentLast24Hours :: Prelude.Maybe Prelude.Double,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSendQuotaResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'max24HourSend', 'getSendQuotaResponse_max24HourSend' - The maximum number of emails the user is allowed to send in a 24-hour
+-- interval. A value of -1 signifies an unlimited quota.
+--
+-- 'maxSendRate', 'getSendQuotaResponse_maxSendRate' - The maximum number of emails that Amazon SES can accept from the user\'s
+-- account per second.
+--
+-- The rate at which Amazon SES accepts the user\'s messages might be less
+-- than the maximum send rate.
+--
+-- 'sentLast24Hours', 'getSendQuotaResponse_sentLast24Hours' - The number of emails sent during the previous 24 hours.
+--
+-- 'httpStatus', 'getSendQuotaResponse_httpStatus' - The response's http status code.
+newGetSendQuotaResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSendQuotaResponse
+newGetSendQuotaResponse pHttpStatus_ =
+  GetSendQuotaResponse'
+    { max24HourSend =
+        Prelude.Nothing,
+      maxSendRate = Prelude.Nothing,
+      sentLast24Hours = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The maximum number of emails the user is allowed to send in a 24-hour
+-- interval. A value of -1 signifies an unlimited quota.
+getSendQuotaResponse_max24HourSend :: Lens.Lens' GetSendQuotaResponse (Prelude.Maybe Prelude.Double)
+getSendQuotaResponse_max24HourSend = Lens.lens (\GetSendQuotaResponse' {max24HourSend} -> max24HourSend) (\s@GetSendQuotaResponse' {} a -> s {max24HourSend = a} :: GetSendQuotaResponse)
+
+-- | The maximum number of emails that Amazon SES can accept from the user\'s
+-- account per second.
+--
+-- The rate at which Amazon SES accepts the user\'s messages might be less
+-- than the maximum send rate.
+getSendQuotaResponse_maxSendRate :: Lens.Lens' GetSendQuotaResponse (Prelude.Maybe Prelude.Double)
+getSendQuotaResponse_maxSendRate = Lens.lens (\GetSendQuotaResponse' {maxSendRate} -> maxSendRate) (\s@GetSendQuotaResponse' {} a -> s {maxSendRate = a} :: GetSendQuotaResponse)
+
+-- | The number of emails sent during the previous 24 hours.
+getSendQuotaResponse_sentLast24Hours :: Lens.Lens' GetSendQuotaResponse (Prelude.Maybe Prelude.Double)
+getSendQuotaResponse_sentLast24Hours = Lens.lens (\GetSendQuotaResponse' {sentLast24Hours} -> sentLast24Hours) (\s@GetSendQuotaResponse' {} a -> s {sentLast24Hours = a} :: GetSendQuotaResponse)
+
+-- | The response's http status code.
+getSendQuotaResponse_httpStatus :: Lens.Lens' GetSendQuotaResponse Prelude.Int
+getSendQuotaResponse_httpStatus = Lens.lens (\GetSendQuotaResponse' {httpStatus} -> httpStatus) (\s@GetSendQuotaResponse' {} a -> s {httpStatus = a} :: GetSendQuotaResponse)
+
+instance Prelude.NFData GetSendQuotaResponse where
+  rnf GetSendQuotaResponse' {..} =
+    Prelude.rnf max24HourSend
+      `Prelude.seq` Prelude.rnf maxSendRate
+      `Prelude.seq` Prelude.rnf sentLast24Hours
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/GetSendStatistics.hs b/gen/Amazonka/SES/GetSendStatistics.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetSendStatistics.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetSendStatistics
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides sending statistics for the current AWS Region. The result is a
+-- list of data points, representing the last two weeks of sending
+-- activity. Each data point in the list contains statistics for a
+-- 15-minute period of time.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetSendStatistics
+  ( -- * Creating a Request
+    GetSendStatistics (..),
+    newGetSendStatistics,
+
+    -- * Destructuring the Response
+    GetSendStatisticsResponse (..),
+    newGetSendStatisticsResponse,
+
+    -- * Response Lenses
+    getSendStatisticsResponse_sendDataPoints,
+    getSendStatisticsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newGetSendStatistics' smart constructor.
+data GetSendStatistics = GetSendStatistics'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSendStatistics' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newGetSendStatistics ::
+  GetSendStatistics
+newGetSendStatistics = GetSendStatistics'
+
+instance Core.AWSRequest GetSendStatistics where
+  type
+    AWSResponse GetSendStatistics =
+      GetSendStatisticsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetSendStatisticsResult"
+      ( \s h x ->
+          GetSendStatisticsResponse'
+            Prelude.<$> ( x
+                            Data..@? "SendDataPoints"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetSendStatistics where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData GetSendStatistics where
+  rnf _ = ()
+
+instance Data.ToHeaders GetSendStatistics where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetSendStatistics where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetSendStatistics where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ("GetSendStatistics" :: Prelude.ByteString),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | Represents a list of data points. This list contains aggregated data
+-- from the previous two weeks of your sending activity with Amazon SES.
+--
+-- /See:/ 'newGetSendStatisticsResponse' smart constructor.
+data GetSendStatisticsResponse = GetSendStatisticsResponse'
+  { -- | A list of data points, each of which represents 15 minutes of activity.
+    sendDataPoints :: Prelude.Maybe [SendDataPoint],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetSendStatisticsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'sendDataPoints', 'getSendStatisticsResponse_sendDataPoints' - A list of data points, each of which represents 15 minutes of activity.
+--
+-- 'httpStatus', 'getSendStatisticsResponse_httpStatus' - The response's http status code.
+newGetSendStatisticsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetSendStatisticsResponse
+newGetSendStatisticsResponse pHttpStatus_ =
+  GetSendStatisticsResponse'
+    { sendDataPoints =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of data points, each of which represents 15 minutes of activity.
+getSendStatisticsResponse_sendDataPoints :: Lens.Lens' GetSendStatisticsResponse (Prelude.Maybe [SendDataPoint])
+getSendStatisticsResponse_sendDataPoints = Lens.lens (\GetSendStatisticsResponse' {sendDataPoints} -> sendDataPoints) (\s@GetSendStatisticsResponse' {} a -> s {sendDataPoints = a} :: GetSendStatisticsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getSendStatisticsResponse_httpStatus :: Lens.Lens' GetSendStatisticsResponse Prelude.Int
+getSendStatisticsResponse_httpStatus = Lens.lens (\GetSendStatisticsResponse' {httpStatus} -> httpStatus) (\s@GetSendStatisticsResponse' {} a -> s {httpStatus = a} :: GetSendStatisticsResponse)
+
+instance Prelude.NFData GetSendStatisticsResponse where
+  rnf GetSendStatisticsResponse' {..} =
+    Prelude.rnf sendDataPoints
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/GetTemplate.hs b/gen/Amazonka/SES/GetTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/GetTemplate.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.GetTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Displays the template object (which includes the Subject line, HTML part
+-- and text part) for the template you specify.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.GetTemplate
+  ( -- * Creating a Request
+    GetTemplate (..),
+    newGetTemplate,
+
+    -- * Request Lenses
+    getTemplate_templateName,
+
+    -- * Destructuring the Response
+    GetTemplateResponse (..),
+    newGetTemplateResponse,
+
+    -- * Response Lenses
+    getTemplateResponse_template,
+    getTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newGetTemplate' smart constructor.
+data GetTemplate = GetTemplate'
+  { -- | The name of the template you want to retrieve.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'getTemplate_templateName' - The name of the template you want to retrieve.
+newGetTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  GetTemplate
+newGetTemplate pTemplateName_ =
+  GetTemplate' {templateName = pTemplateName_}
+
+-- | The name of the template you want to retrieve.
+getTemplate_templateName :: Lens.Lens' GetTemplate Prelude.Text
+getTemplate_templateName = Lens.lens (\GetTemplate' {templateName} -> templateName) (\s@GetTemplate' {} a -> s {templateName = a} :: GetTemplate)
+
+instance Core.AWSRequest GetTemplate where
+  type AWSResponse GetTemplate = GetTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "GetTemplateResult"
+      ( \s h x ->
+          GetTemplateResponse'
+            Prelude.<$> (x Data..@? "Template")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetTemplate where
+  hashWithSalt _salt GetTemplate' {..} =
+    _salt `Prelude.hashWithSalt` templateName
+
+instance Prelude.NFData GetTemplate where
+  rnf GetTemplate' {..} = Prelude.rnf templateName
+
+instance Data.ToHeaders GetTemplate where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath GetTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery GetTemplate where
+  toQuery GetTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("GetTemplate" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | /See:/ 'newGetTemplateResponse' smart constructor.
+data GetTemplateResponse = GetTemplateResponse'
+  { template :: Prelude.Maybe Template,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'template', 'getTemplateResponse_template' - Undocumented member.
+--
+-- 'httpStatus', 'getTemplateResponse_httpStatus' - The response's http status code.
+newGetTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetTemplateResponse
+newGetTemplateResponse pHttpStatus_ =
+  GetTemplateResponse'
+    { template = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Undocumented member.
+getTemplateResponse_template :: Lens.Lens' GetTemplateResponse (Prelude.Maybe Template)
+getTemplateResponse_template = Lens.lens (\GetTemplateResponse' {template} -> template) (\s@GetTemplateResponse' {} a -> s {template = a} :: GetTemplateResponse)
+
+-- | The response's http status code.
+getTemplateResponse_httpStatus :: Lens.Lens' GetTemplateResponse Prelude.Int
+getTemplateResponse_httpStatus = Lens.lens (\GetTemplateResponse' {httpStatus} -> httpStatus) (\s@GetTemplateResponse' {} a -> s {httpStatus = a} :: GetTemplateResponse)
+
+instance Prelude.NFData GetTemplateResponse where
+  rnf GetTemplateResponse' {..} =
+    Prelude.rnf template
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/Lens.hs b/gen/Amazonka/SES/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Lens.hs
@@ -0,0 +1,744 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Lens
+  ( -- * Operations
+
+    -- ** CloneReceiptRuleSet
+    cloneReceiptRuleSet_ruleSetName,
+    cloneReceiptRuleSet_originalRuleSetName,
+    cloneReceiptRuleSetResponse_httpStatus,
+
+    -- ** CreateConfigurationSet
+    createConfigurationSet_configurationSet,
+    createConfigurationSetResponse_httpStatus,
+
+    -- ** CreateConfigurationSetEventDestination
+    createConfigurationSetEventDestination_configurationSetName,
+    createConfigurationSetEventDestination_eventDestination,
+    createConfigurationSetEventDestinationResponse_httpStatus,
+
+    -- ** CreateConfigurationSetTrackingOptions
+    createConfigurationSetTrackingOptions_configurationSetName,
+    createConfigurationSetTrackingOptions_trackingOptions,
+    createConfigurationSetTrackingOptionsResponse_httpStatus,
+
+    -- ** CreateCustomVerificationEmailTemplate
+    createCustomVerificationEmailTemplate_templateName,
+    createCustomVerificationEmailTemplate_fromEmailAddress,
+    createCustomVerificationEmailTemplate_templateSubject,
+    createCustomVerificationEmailTemplate_templateContent,
+    createCustomVerificationEmailTemplate_successRedirectionURL,
+    createCustomVerificationEmailTemplate_failureRedirectionURL,
+
+    -- ** CreateReceiptFilter
+    createReceiptFilter_filter,
+    createReceiptFilterResponse_httpStatus,
+
+    -- ** CreateReceiptRule
+    createReceiptRule_after,
+    createReceiptRule_ruleSetName,
+    createReceiptRule_rule,
+    createReceiptRuleResponse_httpStatus,
+
+    -- ** CreateReceiptRuleSet
+    createReceiptRuleSet_ruleSetName,
+    createReceiptRuleSetResponse_httpStatus,
+
+    -- ** CreateTemplate
+    createTemplate_template,
+    createTemplateResponse_httpStatus,
+
+    -- ** DeleteConfigurationSet
+    deleteConfigurationSet_configurationSetName,
+    deleteConfigurationSetResponse_httpStatus,
+
+    -- ** DeleteConfigurationSetEventDestination
+    deleteConfigurationSetEventDestination_configurationSetName,
+    deleteConfigurationSetEventDestination_eventDestinationName,
+    deleteConfigurationSetEventDestinationResponse_httpStatus,
+
+    -- ** DeleteConfigurationSetTrackingOptions
+    deleteConfigurationSetTrackingOptions_configurationSetName,
+    deleteConfigurationSetTrackingOptionsResponse_httpStatus,
+
+    -- ** DeleteCustomVerificationEmailTemplate
+    deleteCustomVerificationEmailTemplate_templateName,
+
+    -- ** DeleteIdentity
+    deleteIdentity_identity,
+    deleteIdentityResponse_httpStatus,
+
+    -- ** DeleteIdentityPolicy
+    deleteIdentityPolicy_identity,
+    deleteIdentityPolicy_policyName,
+    deleteIdentityPolicyResponse_httpStatus,
+
+    -- ** DeleteReceiptFilter
+    deleteReceiptFilter_filterName,
+    deleteReceiptFilterResponse_httpStatus,
+
+    -- ** DeleteReceiptRule
+    deleteReceiptRule_ruleSetName,
+    deleteReceiptRule_ruleName,
+    deleteReceiptRuleResponse_httpStatus,
+
+    -- ** DeleteReceiptRuleSet
+    deleteReceiptRuleSet_ruleSetName,
+    deleteReceiptRuleSetResponse_httpStatus,
+
+    -- ** DeleteTemplate
+    deleteTemplate_templateName,
+    deleteTemplateResponse_httpStatus,
+
+    -- ** DeleteVerifiedEmailAddress
+    deleteVerifiedEmailAddress_emailAddress,
+
+    -- ** DescribeActiveReceiptRuleSet
+    describeActiveReceiptRuleSetResponse_metadata,
+    describeActiveReceiptRuleSetResponse_rules,
+    describeActiveReceiptRuleSetResponse_httpStatus,
+
+    -- ** DescribeConfigurationSet
+    describeConfigurationSet_configurationSetAttributeNames,
+    describeConfigurationSet_configurationSetName,
+    describeConfigurationSetResponse_configurationSet,
+    describeConfigurationSetResponse_deliveryOptions,
+    describeConfigurationSetResponse_eventDestinations,
+    describeConfigurationSetResponse_reputationOptions,
+    describeConfigurationSetResponse_trackingOptions,
+    describeConfigurationSetResponse_httpStatus,
+
+    -- ** DescribeReceiptRule
+    describeReceiptRule_ruleSetName,
+    describeReceiptRule_ruleName,
+    describeReceiptRuleResponse_rule,
+    describeReceiptRuleResponse_httpStatus,
+
+    -- ** DescribeReceiptRuleSet
+    describeReceiptRuleSet_ruleSetName,
+    describeReceiptRuleSetResponse_metadata,
+    describeReceiptRuleSetResponse_rules,
+    describeReceiptRuleSetResponse_httpStatus,
+
+    -- ** GetAccountSendingEnabled
+    getAccountSendingEnabledResponse_enabled,
+    getAccountSendingEnabledResponse_httpStatus,
+
+    -- ** GetCustomVerificationEmailTemplate
+    getCustomVerificationEmailTemplate_templateName,
+    getCustomVerificationEmailTemplateResponse_failureRedirectionURL,
+    getCustomVerificationEmailTemplateResponse_fromEmailAddress,
+    getCustomVerificationEmailTemplateResponse_successRedirectionURL,
+    getCustomVerificationEmailTemplateResponse_templateContent,
+    getCustomVerificationEmailTemplateResponse_templateName,
+    getCustomVerificationEmailTemplateResponse_templateSubject,
+    getCustomVerificationEmailTemplateResponse_httpStatus,
+
+    -- ** GetIdentityDkimAttributes
+    getIdentityDkimAttributes_identities,
+    getIdentityDkimAttributesResponse_httpStatus,
+    getIdentityDkimAttributesResponse_dkimAttributes,
+
+    -- ** GetIdentityMailFromDomainAttributes
+    getIdentityMailFromDomainAttributes_identities,
+    getIdentityMailFromDomainAttributesResponse_httpStatus,
+    getIdentityMailFromDomainAttributesResponse_mailFromDomainAttributes,
+
+    -- ** GetIdentityNotificationAttributes
+    getIdentityNotificationAttributes_identities,
+    getIdentityNotificationAttributesResponse_httpStatus,
+    getIdentityNotificationAttributesResponse_notificationAttributes,
+
+    -- ** GetIdentityPolicies
+    getIdentityPolicies_identity,
+    getIdentityPolicies_policyNames,
+    getIdentityPoliciesResponse_httpStatus,
+    getIdentityPoliciesResponse_policies,
+
+    -- ** GetIdentityVerificationAttributes
+    getIdentityVerificationAttributes_identities,
+    getIdentityVerificationAttributesResponse_httpStatus,
+    getIdentityVerificationAttributesResponse_verificationAttributes,
+
+    -- ** GetSendQuota
+    getSendQuotaResponse_max24HourSend,
+    getSendQuotaResponse_maxSendRate,
+    getSendQuotaResponse_sentLast24Hours,
+    getSendQuotaResponse_httpStatus,
+
+    -- ** GetSendStatistics
+    getSendStatisticsResponse_sendDataPoints,
+    getSendStatisticsResponse_httpStatus,
+
+    -- ** GetTemplate
+    getTemplate_templateName,
+    getTemplateResponse_template,
+    getTemplateResponse_httpStatus,
+
+    -- ** ListConfigurationSets
+    listConfigurationSets_maxItems,
+    listConfigurationSets_nextToken,
+    listConfigurationSetsResponse_configurationSets,
+    listConfigurationSetsResponse_nextToken,
+    listConfigurationSetsResponse_httpStatus,
+
+    -- ** ListCustomVerificationEmailTemplates
+    listCustomVerificationEmailTemplates_maxResults,
+    listCustomVerificationEmailTemplates_nextToken,
+    listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates,
+    listCustomVerificationEmailTemplatesResponse_nextToken,
+    listCustomVerificationEmailTemplatesResponse_httpStatus,
+
+    -- ** ListIdentities
+    listIdentities_identityType,
+    listIdentities_maxItems,
+    listIdentities_nextToken,
+    listIdentitiesResponse_nextToken,
+    listIdentitiesResponse_httpStatus,
+    listIdentitiesResponse_identities,
+
+    -- ** ListIdentityPolicies
+    listIdentityPolicies_identity,
+    listIdentityPoliciesResponse_httpStatus,
+    listIdentityPoliciesResponse_policyNames,
+
+    -- ** ListReceiptFilters
+    listReceiptFiltersResponse_filters,
+    listReceiptFiltersResponse_httpStatus,
+
+    -- ** ListReceiptRuleSets
+    listReceiptRuleSets_nextToken,
+    listReceiptRuleSetsResponse_nextToken,
+    listReceiptRuleSetsResponse_ruleSets,
+    listReceiptRuleSetsResponse_httpStatus,
+
+    -- ** ListTemplates
+    listTemplates_maxItems,
+    listTemplates_nextToken,
+    listTemplatesResponse_nextToken,
+    listTemplatesResponse_templatesMetadata,
+    listTemplatesResponse_httpStatus,
+
+    -- ** ListVerifiedEmailAddresses
+    listVerifiedEmailAddressesResponse_verifiedEmailAddresses,
+    listVerifiedEmailAddressesResponse_httpStatus,
+
+    -- ** PutConfigurationSetDeliveryOptions
+    putConfigurationSetDeliveryOptions_deliveryOptions,
+    putConfigurationSetDeliveryOptions_configurationSetName,
+    putConfigurationSetDeliveryOptionsResponse_httpStatus,
+
+    -- ** PutIdentityPolicy
+    putIdentityPolicy_identity,
+    putIdentityPolicy_policyName,
+    putIdentityPolicy_policy,
+    putIdentityPolicyResponse_httpStatus,
+
+    -- ** ReorderReceiptRuleSet
+    reorderReceiptRuleSet_ruleSetName,
+    reorderReceiptRuleSet_ruleNames,
+    reorderReceiptRuleSetResponse_httpStatus,
+
+    -- ** SendBounce
+    sendBounce_bounceSenderArn,
+    sendBounce_explanation,
+    sendBounce_messageDsn,
+    sendBounce_originalMessageId,
+    sendBounce_bounceSender,
+    sendBounce_bouncedRecipientInfoList,
+    sendBounceResponse_messageId,
+    sendBounceResponse_httpStatus,
+
+    -- ** SendBulkTemplatedEmail
+    sendBulkTemplatedEmail_configurationSetName,
+    sendBulkTemplatedEmail_defaultTags,
+    sendBulkTemplatedEmail_defaultTemplateData,
+    sendBulkTemplatedEmail_replyToAddresses,
+    sendBulkTemplatedEmail_returnPath,
+    sendBulkTemplatedEmail_returnPathArn,
+    sendBulkTemplatedEmail_sourceArn,
+    sendBulkTemplatedEmail_templateArn,
+    sendBulkTemplatedEmail_source,
+    sendBulkTemplatedEmail_template,
+    sendBulkTemplatedEmail_destinations,
+    sendBulkTemplatedEmailResponse_httpStatus,
+    sendBulkTemplatedEmailResponse_status,
+
+    -- ** SendCustomVerificationEmail
+    sendCustomVerificationEmail_configurationSetName,
+    sendCustomVerificationEmail_emailAddress,
+    sendCustomVerificationEmail_templateName,
+    sendCustomVerificationEmailResponse_messageId,
+    sendCustomVerificationEmailResponse_httpStatus,
+
+    -- ** SendEmail
+    sendEmail_configurationSetName,
+    sendEmail_replyToAddresses,
+    sendEmail_returnPath,
+    sendEmail_returnPathArn,
+    sendEmail_sourceArn,
+    sendEmail_tags,
+    sendEmail_source,
+    sendEmail_destination,
+    sendEmail_message,
+    sendEmailResponse_httpStatus,
+    sendEmailResponse_messageId,
+
+    -- ** SendRawEmail
+    sendRawEmail_configurationSetName,
+    sendRawEmail_destinations,
+    sendRawEmail_fromArn,
+    sendRawEmail_returnPathArn,
+    sendRawEmail_source,
+    sendRawEmail_sourceArn,
+    sendRawEmail_tags,
+    sendRawEmail_rawMessage,
+    sendRawEmailResponse_httpStatus,
+    sendRawEmailResponse_messageId,
+
+    -- ** SendTemplatedEmail
+    sendTemplatedEmail_configurationSetName,
+    sendTemplatedEmail_replyToAddresses,
+    sendTemplatedEmail_returnPath,
+    sendTemplatedEmail_returnPathArn,
+    sendTemplatedEmail_sourceArn,
+    sendTemplatedEmail_tags,
+    sendTemplatedEmail_templateArn,
+    sendTemplatedEmail_source,
+    sendTemplatedEmail_destination,
+    sendTemplatedEmail_template,
+    sendTemplatedEmail_templateData,
+    sendTemplatedEmailResponse_httpStatus,
+    sendTemplatedEmailResponse_messageId,
+
+    -- ** SetActiveReceiptRuleSet
+    setActiveReceiptRuleSet_ruleSetName,
+    setActiveReceiptRuleSetResponse_httpStatus,
+
+    -- ** SetIdentityDkimEnabled
+    setIdentityDkimEnabled_identity,
+    setIdentityDkimEnabled_dkimEnabled,
+    setIdentityDkimEnabledResponse_httpStatus,
+
+    -- ** SetIdentityFeedbackForwardingEnabled
+    setIdentityFeedbackForwardingEnabled_identity,
+    setIdentityFeedbackForwardingEnabled_forwardingEnabled,
+    setIdentityFeedbackForwardingEnabledResponse_httpStatus,
+
+    -- ** SetIdentityHeadersInNotificationsEnabled
+    setIdentityHeadersInNotificationsEnabled_identity,
+    setIdentityHeadersInNotificationsEnabled_notificationType,
+    setIdentityHeadersInNotificationsEnabled_enabled,
+    setIdentityHeadersInNotificationsEnabledResponse_httpStatus,
+
+    -- ** SetIdentityMailFromDomain
+    setIdentityMailFromDomain_behaviorOnMXFailure,
+    setIdentityMailFromDomain_mailFromDomain,
+    setIdentityMailFromDomain_identity,
+    setIdentityMailFromDomainResponse_httpStatus,
+
+    -- ** SetIdentityNotificationTopic
+    setIdentityNotificationTopic_snsTopic,
+    setIdentityNotificationTopic_identity,
+    setIdentityNotificationTopic_notificationType,
+    setIdentityNotificationTopicResponse_httpStatus,
+
+    -- ** SetReceiptRulePosition
+    setReceiptRulePosition_after,
+    setReceiptRulePosition_ruleSetName,
+    setReceiptRulePosition_ruleName,
+    setReceiptRulePositionResponse_httpStatus,
+
+    -- ** TestRenderTemplate
+    testRenderTemplate_templateName,
+    testRenderTemplate_templateData,
+    testRenderTemplateResponse_renderedTemplate,
+    testRenderTemplateResponse_httpStatus,
+
+    -- ** UpdateAccountSendingEnabled
+    updateAccountSendingEnabled_enabled,
+
+    -- ** UpdateConfigurationSetEventDestination
+    updateConfigurationSetEventDestination_configurationSetName,
+    updateConfigurationSetEventDestination_eventDestination,
+    updateConfigurationSetEventDestinationResponse_httpStatus,
+
+    -- ** UpdateConfigurationSetReputationMetricsEnabled
+    updateConfigurationSetReputationMetricsEnabled_configurationSetName,
+    updateConfigurationSetReputationMetricsEnabled_enabled,
+
+    -- ** UpdateConfigurationSetSendingEnabled
+    updateConfigurationSetSendingEnabled_configurationSetName,
+    updateConfigurationSetSendingEnabled_enabled,
+
+    -- ** UpdateConfigurationSetTrackingOptions
+    updateConfigurationSetTrackingOptions_configurationSetName,
+    updateConfigurationSetTrackingOptions_trackingOptions,
+    updateConfigurationSetTrackingOptionsResponse_httpStatus,
+
+    -- ** UpdateCustomVerificationEmailTemplate
+    updateCustomVerificationEmailTemplate_failureRedirectionURL,
+    updateCustomVerificationEmailTemplate_fromEmailAddress,
+    updateCustomVerificationEmailTemplate_successRedirectionURL,
+    updateCustomVerificationEmailTemplate_templateContent,
+    updateCustomVerificationEmailTemplate_templateSubject,
+    updateCustomVerificationEmailTemplate_templateName,
+
+    -- ** UpdateReceiptRule
+    updateReceiptRule_ruleSetName,
+    updateReceiptRule_rule,
+    updateReceiptRuleResponse_httpStatus,
+
+    -- ** UpdateTemplate
+    updateTemplate_template,
+    updateTemplateResponse_httpStatus,
+
+    -- ** VerifyDomainDkim
+    verifyDomainDkim_domain,
+    verifyDomainDkimResponse_httpStatus,
+    verifyDomainDkimResponse_dkimTokens,
+
+    -- ** VerifyDomainIdentity
+    verifyDomainIdentity_domain,
+    verifyDomainIdentityResponse_httpStatus,
+    verifyDomainIdentityResponse_verificationToken,
+
+    -- ** VerifyEmailAddress
+    verifyEmailAddress_emailAddress,
+
+    -- ** VerifyEmailIdentity
+    verifyEmailIdentity_emailAddress,
+    verifyEmailIdentityResponse_httpStatus,
+
+    -- * Types
+
+    -- ** AddHeaderAction
+    addHeaderAction_headerName,
+    addHeaderAction_headerValue,
+
+    -- ** Body
+    body_html,
+    body_text,
+
+    -- ** BounceAction
+    bounceAction_statusCode,
+    bounceAction_topicArn,
+    bounceAction_smtpReplyCode,
+    bounceAction_message,
+    bounceAction_sender,
+
+    -- ** BouncedRecipientInfo
+    bouncedRecipientInfo_bounceType,
+    bouncedRecipientInfo_recipientArn,
+    bouncedRecipientInfo_recipientDsnFields,
+    bouncedRecipientInfo_recipient,
+
+    -- ** BulkEmailDestination
+    bulkEmailDestination_replacementTags,
+    bulkEmailDestination_replacementTemplateData,
+    bulkEmailDestination_destination,
+
+    -- ** BulkEmailDestinationStatus
+    bulkEmailDestinationStatus_error,
+    bulkEmailDestinationStatus_messageId,
+    bulkEmailDestinationStatus_status,
+
+    -- ** CloudWatchDestination
+    cloudWatchDestination_dimensionConfigurations,
+
+    -- ** CloudWatchDimensionConfiguration
+    cloudWatchDimensionConfiguration_dimensionName,
+    cloudWatchDimensionConfiguration_dimensionValueSource,
+    cloudWatchDimensionConfiguration_defaultDimensionValue,
+
+    -- ** ConfigurationSet
+    configurationSet_name,
+
+    -- ** Content
+    content_charset,
+    content_data,
+
+    -- ** CustomVerificationEmailTemplate
+    customVerificationEmailTemplate_failureRedirectionURL,
+    customVerificationEmailTemplate_fromEmailAddress,
+    customVerificationEmailTemplate_successRedirectionURL,
+    customVerificationEmailTemplate_templateName,
+    customVerificationEmailTemplate_templateSubject,
+
+    -- ** DeliveryOptions
+    deliveryOptions_tlsPolicy,
+
+    -- ** Destination
+    destination_bccAddresses,
+    destination_ccAddresses,
+    destination_toAddresses,
+
+    -- ** EventDestination
+    eventDestination_cloudWatchDestination,
+    eventDestination_enabled,
+    eventDestination_kinesisFirehoseDestination,
+    eventDestination_sNSDestination,
+    eventDestination_name,
+    eventDestination_matchingEventTypes,
+
+    -- ** ExtensionField
+    extensionField_name,
+    extensionField_value,
+
+    -- ** IdentityDkimAttributes
+    identityDkimAttributes_dkimTokens,
+    identityDkimAttributes_dkimEnabled,
+    identityDkimAttributes_dkimVerificationStatus,
+
+    -- ** IdentityMailFromDomainAttributes
+    identityMailFromDomainAttributes_mailFromDomain,
+    identityMailFromDomainAttributes_mailFromDomainStatus,
+    identityMailFromDomainAttributes_behaviorOnMXFailure,
+
+    -- ** IdentityNotificationAttributes
+    identityNotificationAttributes_headersInBounceNotificationsEnabled,
+    identityNotificationAttributes_headersInComplaintNotificationsEnabled,
+    identityNotificationAttributes_headersInDeliveryNotificationsEnabled,
+    identityNotificationAttributes_bounceTopic,
+    identityNotificationAttributes_complaintTopic,
+    identityNotificationAttributes_deliveryTopic,
+    identityNotificationAttributes_forwardingEnabled,
+
+    -- ** IdentityVerificationAttributes
+    identityVerificationAttributes_verificationToken,
+    identityVerificationAttributes_verificationStatus,
+
+    -- ** KinesisFirehoseDestination
+    kinesisFirehoseDestination_iAMRoleARN,
+    kinesisFirehoseDestination_deliveryStreamARN,
+
+    -- ** LambdaAction
+    lambdaAction_invocationType,
+    lambdaAction_topicArn,
+    lambdaAction_functionArn,
+
+    -- ** Message
+    message_subject,
+    message_body,
+
+    -- ** MessageDsn
+    messageDsn_arrivalDate,
+    messageDsn_extensionFields,
+    messageDsn_reportingMta,
+
+    -- ** MessageTag
+    messageTag_name,
+    messageTag_value,
+
+    -- ** RawMessage
+    rawMessage_data,
+
+    -- ** ReceiptAction
+    receiptAction_addHeaderAction,
+    receiptAction_bounceAction,
+    receiptAction_lambdaAction,
+    receiptAction_s3Action,
+    receiptAction_sNSAction,
+    receiptAction_stopAction,
+    receiptAction_workmailAction,
+
+    -- ** ReceiptFilter
+    receiptFilter_name,
+    receiptFilter_ipFilter,
+
+    -- ** ReceiptIpFilter
+    receiptIpFilter_policy,
+    receiptIpFilter_cidr,
+
+    -- ** ReceiptRule
+    receiptRule_actions,
+    receiptRule_enabled,
+    receiptRule_recipients,
+    receiptRule_scanEnabled,
+    receiptRule_tlsPolicy,
+    receiptRule_name,
+
+    -- ** ReceiptRuleSetMetadata
+    receiptRuleSetMetadata_createdTimestamp,
+    receiptRuleSetMetadata_name,
+
+    -- ** RecipientDsnFields
+    recipientDsnFields_diagnosticCode,
+    recipientDsnFields_extensionFields,
+    recipientDsnFields_finalRecipient,
+    recipientDsnFields_lastAttemptDate,
+    recipientDsnFields_remoteMta,
+    recipientDsnFields_action,
+    recipientDsnFields_status,
+
+    -- ** ReputationOptions
+    reputationOptions_lastFreshStart,
+    reputationOptions_reputationMetricsEnabled,
+    reputationOptions_sendingEnabled,
+
+    -- ** S3Action
+    s3Action_kmsKeyArn,
+    s3Action_objectKeyPrefix,
+    s3Action_topicArn,
+    s3Action_bucketName,
+
+    -- ** SNSAction
+    sNSAction_encoding,
+    sNSAction_topicArn,
+
+    -- ** SNSDestination
+    sNSDestination_topicARN,
+
+    -- ** SendDataPoint
+    sendDataPoint_bounces,
+    sendDataPoint_complaints,
+    sendDataPoint_deliveryAttempts,
+    sendDataPoint_rejects,
+    sendDataPoint_timestamp,
+
+    -- ** StopAction
+    stopAction_topicArn,
+    stopAction_scope,
+
+    -- ** Template
+    template_htmlPart,
+    template_subjectPart,
+    template_textPart,
+    template_templateName,
+
+    -- ** TemplateMetadata
+    templateMetadata_createdTimestamp,
+    templateMetadata_name,
+
+    -- ** TrackingOptions
+    trackingOptions_customRedirectDomain,
+
+    -- ** WorkmailAction
+    workmailAction_topicArn,
+    workmailAction_organizationArn,
+  )
+where
+
+import Amazonka.SES.CloneReceiptRuleSet
+import Amazonka.SES.CreateConfigurationSet
+import Amazonka.SES.CreateConfigurationSetEventDestination
+import Amazonka.SES.CreateConfigurationSetTrackingOptions
+import Amazonka.SES.CreateCustomVerificationEmailTemplate
+import Amazonka.SES.CreateReceiptFilter
+import Amazonka.SES.CreateReceiptRule
+import Amazonka.SES.CreateReceiptRuleSet
+import Amazonka.SES.CreateTemplate
+import Amazonka.SES.DeleteConfigurationSet
+import Amazonka.SES.DeleteConfigurationSetEventDestination
+import Amazonka.SES.DeleteConfigurationSetTrackingOptions
+import Amazonka.SES.DeleteCustomVerificationEmailTemplate
+import Amazonka.SES.DeleteIdentity
+import Amazonka.SES.DeleteIdentityPolicy
+import Amazonka.SES.DeleteReceiptFilter
+import Amazonka.SES.DeleteReceiptRule
+import Amazonka.SES.DeleteReceiptRuleSet
+import Amazonka.SES.DeleteTemplate
+import Amazonka.SES.DeleteVerifiedEmailAddress
+import Amazonka.SES.DescribeActiveReceiptRuleSet
+import Amazonka.SES.DescribeConfigurationSet
+import Amazonka.SES.DescribeReceiptRule
+import Amazonka.SES.DescribeReceiptRuleSet
+import Amazonka.SES.GetAccountSendingEnabled
+import Amazonka.SES.GetCustomVerificationEmailTemplate
+import Amazonka.SES.GetIdentityDkimAttributes
+import Amazonka.SES.GetIdentityMailFromDomainAttributes
+import Amazonka.SES.GetIdentityNotificationAttributes
+import Amazonka.SES.GetIdentityPolicies
+import Amazonka.SES.GetIdentityVerificationAttributes
+import Amazonka.SES.GetSendQuota
+import Amazonka.SES.GetSendStatistics
+import Amazonka.SES.GetTemplate
+import Amazonka.SES.ListConfigurationSets
+import Amazonka.SES.ListCustomVerificationEmailTemplates
+import Amazonka.SES.ListIdentities
+import Amazonka.SES.ListIdentityPolicies
+import Amazonka.SES.ListReceiptFilters
+import Amazonka.SES.ListReceiptRuleSets
+import Amazonka.SES.ListTemplates
+import Amazonka.SES.ListVerifiedEmailAddresses
+import Amazonka.SES.PutConfigurationSetDeliveryOptions
+import Amazonka.SES.PutIdentityPolicy
+import Amazonka.SES.ReorderReceiptRuleSet
+import Amazonka.SES.SendBounce
+import Amazonka.SES.SendBulkTemplatedEmail
+import Amazonka.SES.SendCustomVerificationEmail
+import Amazonka.SES.SendEmail
+import Amazonka.SES.SendRawEmail
+import Amazonka.SES.SendTemplatedEmail
+import Amazonka.SES.SetActiveReceiptRuleSet
+import Amazonka.SES.SetIdentityDkimEnabled
+import Amazonka.SES.SetIdentityFeedbackForwardingEnabled
+import Amazonka.SES.SetIdentityHeadersInNotificationsEnabled
+import Amazonka.SES.SetIdentityMailFromDomain
+import Amazonka.SES.SetIdentityNotificationTopic
+import Amazonka.SES.SetReceiptRulePosition
+import Amazonka.SES.TestRenderTemplate
+import Amazonka.SES.Types.AddHeaderAction
+import Amazonka.SES.Types.Body
+import Amazonka.SES.Types.BounceAction
+import Amazonka.SES.Types.BouncedRecipientInfo
+import Amazonka.SES.Types.BulkEmailDestination
+import Amazonka.SES.Types.BulkEmailDestinationStatus
+import Amazonka.SES.Types.CloudWatchDestination
+import Amazonka.SES.Types.CloudWatchDimensionConfiguration
+import Amazonka.SES.Types.ConfigurationSet
+import Amazonka.SES.Types.Content
+import Amazonka.SES.Types.CustomVerificationEmailTemplate
+import Amazonka.SES.Types.DeliveryOptions
+import Amazonka.SES.Types.Destination
+import Amazonka.SES.Types.EventDestination
+import Amazonka.SES.Types.ExtensionField
+import Amazonka.SES.Types.IdentityDkimAttributes
+import Amazonka.SES.Types.IdentityMailFromDomainAttributes
+import Amazonka.SES.Types.IdentityNotificationAttributes
+import Amazonka.SES.Types.IdentityVerificationAttributes
+import Amazonka.SES.Types.KinesisFirehoseDestination
+import Amazonka.SES.Types.LambdaAction
+import Amazonka.SES.Types.Message
+import Amazonka.SES.Types.MessageDsn
+import Amazonka.SES.Types.MessageTag
+import Amazonka.SES.Types.RawMessage
+import Amazonka.SES.Types.ReceiptAction
+import Amazonka.SES.Types.ReceiptFilter
+import Amazonka.SES.Types.ReceiptIpFilter
+import Amazonka.SES.Types.ReceiptRule
+import Amazonka.SES.Types.ReceiptRuleSetMetadata
+import Amazonka.SES.Types.RecipientDsnFields
+import Amazonka.SES.Types.ReputationOptions
+import Amazonka.SES.Types.S3Action
+import Amazonka.SES.Types.SNSAction
+import Amazonka.SES.Types.SNSDestination
+import Amazonka.SES.Types.SendDataPoint
+import Amazonka.SES.Types.StopAction
+import Amazonka.SES.Types.Template
+import Amazonka.SES.Types.TemplateMetadata
+import Amazonka.SES.Types.TrackingOptions
+import Amazonka.SES.Types.WorkmailAction
+import Amazonka.SES.UpdateAccountSendingEnabled
+import Amazonka.SES.UpdateConfigurationSetEventDestination
+import Amazonka.SES.UpdateConfigurationSetReputationMetricsEnabled
+import Amazonka.SES.UpdateConfigurationSetSendingEnabled
+import Amazonka.SES.UpdateConfigurationSetTrackingOptions
+import Amazonka.SES.UpdateCustomVerificationEmailTemplate
+import Amazonka.SES.UpdateReceiptRule
+import Amazonka.SES.UpdateTemplate
+import Amazonka.SES.VerifyDomainDkim
+import Amazonka.SES.VerifyDomainIdentity
+import Amazonka.SES.VerifyEmailAddress
+import Amazonka.SES.VerifyEmailIdentity
diff --git a/gen/Amazonka/SES/ListConfigurationSets.hs b/gen/Amazonka/SES/ListConfigurationSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListConfigurationSets.hs
@@ -0,0 +1,246 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListConfigurationSets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Provides a list of the configuration sets associated with your Amazon
+-- SES account in the current AWS Region. For information about using
+-- configuration sets, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Monitoring Your Amazon SES Sending Activity>
+-- in the /Amazon SES Developer Guide./
+--
+-- You can execute this operation no more than once per second. This
+-- operation will return up to 1,000 configuration sets each time it is
+-- run. If your Amazon SES account has more than 1,000 configuration sets,
+-- this operation will also return a NextToken element. You can then
+-- execute the @ListConfigurationSets@ operation again, passing the
+-- @NextToken@ parameter and the value of the NextToken element to retrieve
+-- additional results.
+--
+-- This operation returns paginated results.
+module Amazonka.SES.ListConfigurationSets
+  ( -- * Creating a Request
+    ListConfigurationSets (..),
+    newListConfigurationSets,
+
+    -- * Request Lenses
+    listConfigurationSets_maxItems,
+    listConfigurationSets_nextToken,
+
+    -- * Destructuring the Response
+    ListConfigurationSetsResponse (..),
+    newListConfigurationSetsResponse,
+
+    -- * Response Lenses
+    listConfigurationSetsResponse_configurationSets,
+    listConfigurationSetsResponse_nextToken,
+    listConfigurationSetsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to list the configuration sets associated with your
+-- AWS account. Configuration sets enable you to publish email sending
+-- events. For information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newListConfigurationSets' smart constructor.
+data ListConfigurationSets = ListConfigurationSets'
+  { -- | The number of configuration sets to return.
+    maxItems :: Prelude.Maybe Prelude.Int,
+    -- | A token returned from a previous call to @ListConfigurationSets@ to
+    -- indicate the position of the configuration set in the configuration set
+    -- list.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurationSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxItems', 'listConfigurationSets_maxItems' - The number of configuration sets to return.
+--
+-- 'nextToken', 'listConfigurationSets_nextToken' - A token returned from a previous call to @ListConfigurationSets@ to
+-- indicate the position of the configuration set in the configuration set
+-- list.
+newListConfigurationSets ::
+  ListConfigurationSets
+newListConfigurationSets =
+  ListConfigurationSets'
+    { maxItems = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The number of configuration sets to return.
+listConfigurationSets_maxItems :: Lens.Lens' ListConfigurationSets (Prelude.Maybe Prelude.Int)
+listConfigurationSets_maxItems = Lens.lens (\ListConfigurationSets' {maxItems} -> maxItems) (\s@ListConfigurationSets' {} a -> s {maxItems = a} :: ListConfigurationSets)
+
+-- | A token returned from a previous call to @ListConfigurationSets@ to
+-- indicate the position of the configuration set in the configuration set
+-- list.
+listConfigurationSets_nextToken :: Lens.Lens' ListConfigurationSets (Prelude.Maybe Prelude.Text)
+listConfigurationSets_nextToken = Lens.lens (\ListConfigurationSets' {nextToken} -> nextToken) (\s@ListConfigurationSets' {} a -> s {nextToken = a} :: ListConfigurationSets)
+
+instance Core.AWSPager ListConfigurationSets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listConfigurationSetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listConfigurationSetsResponse_configurationSets
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listConfigurationSets_nextToken
+          Lens..~ rs
+          Lens.^? listConfigurationSetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListConfigurationSets where
+  type
+    AWSResponse ListConfigurationSets =
+      ListConfigurationSetsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListConfigurationSetsResult"
+      ( \s h x ->
+          ListConfigurationSetsResponse'
+            Prelude.<$> ( x
+                            Data..@? "ConfigurationSets"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (x Data..@? "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListConfigurationSets where
+  hashWithSalt _salt ListConfigurationSets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxItems
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListConfigurationSets where
+  rnf ListConfigurationSets' {..} =
+    Prelude.rnf maxItems
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListConfigurationSets where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListConfigurationSets where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListConfigurationSets where
+  toQuery ListConfigurationSets' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListConfigurationSets" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "MaxItems" Data.=: maxItems,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | A list of configuration sets associated with your AWS account.
+-- Configuration sets enable you to publish email sending events. For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newListConfigurationSetsResponse' smart constructor.
+data ListConfigurationSetsResponse = ListConfigurationSetsResponse'
+  { -- | A list of configuration sets.
+    configurationSets :: Prelude.Maybe [ConfigurationSet],
+    -- | A token indicating that there are additional configuration sets
+    -- available to be listed. Pass this token to successive calls of
+    -- @ListConfigurationSets@.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListConfigurationSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSets', 'listConfigurationSetsResponse_configurationSets' - A list of configuration sets.
+--
+-- 'nextToken', 'listConfigurationSetsResponse_nextToken' - A token indicating that there are additional configuration sets
+-- available to be listed. Pass this token to successive calls of
+-- @ListConfigurationSets@.
+--
+-- 'httpStatus', 'listConfigurationSetsResponse_httpStatus' - The response's http status code.
+newListConfigurationSetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListConfigurationSetsResponse
+newListConfigurationSetsResponse pHttpStatus_ =
+  ListConfigurationSetsResponse'
+    { configurationSets =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of configuration sets.
+listConfigurationSetsResponse_configurationSets :: Lens.Lens' ListConfigurationSetsResponse (Prelude.Maybe [ConfigurationSet])
+listConfigurationSetsResponse_configurationSets = Lens.lens (\ListConfigurationSetsResponse' {configurationSets} -> configurationSets) (\s@ListConfigurationSetsResponse' {} a -> s {configurationSets = a} :: ListConfigurationSetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token indicating that there are additional configuration sets
+-- available to be listed. Pass this token to successive calls of
+-- @ListConfigurationSets@.
+listConfigurationSetsResponse_nextToken :: Lens.Lens' ListConfigurationSetsResponse (Prelude.Maybe Prelude.Text)
+listConfigurationSetsResponse_nextToken = Lens.lens (\ListConfigurationSetsResponse' {nextToken} -> nextToken) (\s@ListConfigurationSetsResponse' {} a -> s {nextToken = a} :: ListConfigurationSetsResponse)
+
+-- | The response's http status code.
+listConfigurationSetsResponse_httpStatus :: Lens.Lens' ListConfigurationSetsResponse Prelude.Int
+listConfigurationSetsResponse_httpStatus = Lens.lens (\ListConfigurationSetsResponse' {httpStatus} -> httpStatus) (\s@ListConfigurationSetsResponse' {} a -> s {httpStatus = a} :: ListConfigurationSetsResponse)
+
+instance Prelude.NFData ListConfigurationSetsResponse where
+  rnf ListConfigurationSetsResponse' {..} =
+    Prelude.rnf configurationSets
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ListCustomVerificationEmailTemplates.hs b/gen/Amazonka/SES/ListCustomVerificationEmailTemplates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListCustomVerificationEmailTemplates.hs
@@ -0,0 +1,282 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListCustomVerificationEmailTemplates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the existing custom verification email templates for your account
+-- in the current AWS Region.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+--
+-- This operation returns paginated results.
+module Amazonka.SES.ListCustomVerificationEmailTemplates
+  ( -- * Creating a Request
+    ListCustomVerificationEmailTemplates (..),
+    newListCustomVerificationEmailTemplates,
+
+    -- * Request Lenses
+    listCustomVerificationEmailTemplates_maxResults,
+    listCustomVerificationEmailTemplates_nextToken,
+
+    -- * Destructuring the Response
+    ListCustomVerificationEmailTemplatesResponse (..),
+    newListCustomVerificationEmailTemplatesResponse,
+
+    -- * Response Lenses
+    listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates,
+    listCustomVerificationEmailTemplatesResponse_nextToken,
+    listCustomVerificationEmailTemplatesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to list the existing custom verification email
+-- templates for your account.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- /See:/ 'newListCustomVerificationEmailTemplates' smart constructor.
+data ListCustomVerificationEmailTemplates = ListCustomVerificationEmailTemplates'
+  { -- | The maximum number of custom verification email templates to return.
+    -- This value must be at least 1 and less than or equal to 50. If you do
+    -- not specify a value, or if you specify a value less than 1 or greater
+    -- than 50, the operation will return up to 50 results.
+    maxResults :: Prelude.Maybe Prelude.Natural,
+    -- | An array the contains the name and creation time stamp for each template
+    -- in your Amazon SES account.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomVerificationEmailTemplates' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listCustomVerificationEmailTemplates_maxResults' - The maximum number of custom verification email templates to return.
+-- This value must be at least 1 and less than or equal to 50. If you do
+-- not specify a value, or if you specify a value less than 1 or greater
+-- than 50, the operation will return up to 50 results.
+--
+-- 'nextToken', 'listCustomVerificationEmailTemplates_nextToken' - An array the contains the name and creation time stamp for each template
+-- in your Amazon SES account.
+newListCustomVerificationEmailTemplates ::
+  ListCustomVerificationEmailTemplates
+newListCustomVerificationEmailTemplates =
+  ListCustomVerificationEmailTemplates'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of custom verification email templates to return.
+-- This value must be at least 1 and less than or equal to 50. If you do
+-- not specify a value, or if you specify a value less than 1 or greater
+-- than 50, the operation will return up to 50 results.
+listCustomVerificationEmailTemplates_maxResults :: Lens.Lens' ListCustomVerificationEmailTemplates (Prelude.Maybe Prelude.Natural)
+listCustomVerificationEmailTemplates_maxResults = Lens.lens (\ListCustomVerificationEmailTemplates' {maxResults} -> maxResults) (\s@ListCustomVerificationEmailTemplates' {} a -> s {maxResults = a} :: ListCustomVerificationEmailTemplates)
+
+-- | An array the contains the name and creation time stamp for each template
+-- in your Amazon SES account.
+listCustomVerificationEmailTemplates_nextToken :: Lens.Lens' ListCustomVerificationEmailTemplates (Prelude.Maybe Prelude.Text)
+listCustomVerificationEmailTemplates_nextToken = Lens.lens (\ListCustomVerificationEmailTemplates' {nextToken} -> nextToken) (\s@ListCustomVerificationEmailTemplates' {} a -> s {nextToken = a} :: ListCustomVerificationEmailTemplates)
+
+instance
+  Core.AWSPager
+    ListCustomVerificationEmailTemplates
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listCustomVerificationEmailTemplatesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listCustomVerificationEmailTemplates_nextToken
+          Lens..~ rs
+          Lens.^? listCustomVerificationEmailTemplatesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    ListCustomVerificationEmailTemplates
+  where
+  type
+    AWSResponse ListCustomVerificationEmailTemplates =
+      ListCustomVerificationEmailTemplatesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListCustomVerificationEmailTemplatesResult"
+      ( \s h x ->
+          ListCustomVerificationEmailTemplatesResponse'
+            Prelude.<$> ( x
+                            Data..@? "CustomVerificationEmailTemplates"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (x Data..@? "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    ListCustomVerificationEmailTemplates
+  where
+  hashWithSalt
+    _salt
+    ListCustomVerificationEmailTemplates' {..} =
+      _salt
+        `Prelude.hashWithSalt` maxResults
+        `Prelude.hashWithSalt` nextToken
+
+instance
+  Prelude.NFData
+    ListCustomVerificationEmailTemplates
+  where
+  rnf ListCustomVerificationEmailTemplates' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance
+  Data.ToHeaders
+    ListCustomVerificationEmailTemplates
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    ListCustomVerificationEmailTemplates
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    ListCustomVerificationEmailTemplates
+  where
+  toQuery ListCustomVerificationEmailTemplates' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "ListCustomVerificationEmailTemplates" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "MaxResults" Data.=: maxResults,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | A paginated list of custom verification email templates.
+--
+-- /See:/ 'newListCustomVerificationEmailTemplatesResponse' smart constructor.
+data ListCustomVerificationEmailTemplatesResponse = ListCustomVerificationEmailTemplatesResponse'
+  { -- | A list of the custom verification email templates that exist in your
+    -- account.
+    customVerificationEmailTemplates :: Prelude.Maybe [CustomVerificationEmailTemplate],
+    -- | A token indicating that there are additional custom verification email
+    -- templates available to be listed. Pass this token to a subsequent call
+    -- to @ListTemplates@ to retrieve the next 50 custom verification email
+    -- templates.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListCustomVerificationEmailTemplatesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customVerificationEmailTemplates', 'listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates' - A list of the custom verification email templates that exist in your
+-- account.
+--
+-- 'nextToken', 'listCustomVerificationEmailTemplatesResponse_nextToken' - A token indicating that there are additional custom verification email
+-- templates available to be listed. Pass this token to a subsequent call
+-- to @ListTemplates@ to retrieve the next 50 custom verification email
+-- templates.
+--
+-- 'httpStatus', 'listCustomVerificationEmailTemplatesResponse_httpStatus' - The response's http status code.
+newListCustomVerificationEmailTemplatesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListCustomVerificationEmailTemplatesResponse
+newListCustomVerificationEmailTemplatesResponse
+  pHttpStatus_ =
+    ListCustomVerificationEmailTemplatesResponse'
+      { customVerificationEmailTemplates =
+          Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | A list of the custom verification email templates that exist in your
+-- account.
+listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates :: Lens.Lens' ListCustomVerificationEmailTemplatesResponse (Prelude.Maybe [CustomVerificationEmailTemplate])
+listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates = Lens.lens (\ListCustomVerificationEmailTemplatesResponse' {customVerificationEmailTemplates} -> customVerificationEmailTemplates) (\s@ListCustomVerificationEmailTemplatesResponse' {} a -> s {customVerificationEmailTemplates = a} :: ListCustomVerificationEmailTemplatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token indicating that there are additional custom verification email
+-- templates available to be listed. Pass this token to a subsequent call
+-- to @ListTemplates@ to retrieve the next 50 custom verification email
+-- templates.
+listCustomVerificationEmailTemplatesResponse_nextToken :: Lens.Lens' ListCustomVerificationEmailTemplatesResponse (Prelude.Maybe Prelude.Text)
+listCustomVerificationEmailTemplatesResponse_nextToken = Lens.lens (\ListCustomVerificationEmailTemplatesResponse' {nextToken} -> nextToken) (\s@ListCustomVerificationEmailTemplatesResponse' {} a -> s {nextToken = a} :: ListCustomVerificationEmailTemplatesResponse)
+
+-- | The response's http status code.
+listCustomVerificationEmailTemplatesResponse_httpStatus :: Lens.Lens' ListCustomVerificationEmailTemplatesResponse Prelude.Int
+listCustomVerificationEmailTemplatesResponse_httpStatus = Lens.lens (\ListCustomVerificationEmailTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListCustomVerificationEmailTemplatesResponse' {} a -> s {httpStatus = a} :: ListCustomVerificationEmailTemplatesResponse)
+
+instance
+  Prelude.NFData
+    ListCustomVerificationEmailTemplatesResponse
+  where
+  rnf ListCustomVerificationEmailTemplatesResponse' {..} =
+    Prelude.rnf customVerificationEmailTemplates
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ListIdentities.hs b/gen/Amazonka/SES/ListIdentities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListIdentities.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListIdentities
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list containing all of the identities (email addresses and
+-- domains) for your AWS account in the current AWS Region, regardless of
+-- verification status.
+--
+-- You can execute this operation no more than once per second.
+--
+-- This operation returns paginated results.
+module Amazonka.SES.ListIdentities
+  ( -- * Creating a Request
+    ListIdentities (..),
+    newListIdentities,
+
+    -- * Request Lenses
+    listIdentities_identityType,
+    listIdentities_maxItems,
+    listIdentities_nextToken,
+
+    -- * Destructuring the Response
+    ListIdentitiesResponse (..),
+    newListIdentitiesResponse,
+
+    -- * Response Lenses
+    listIdentitiesResponse_nextToken,
+    listIdentitiesResponse_httpStatus,
+    listIdentitiesResponse_identities,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return a list of all identities (email addresses
+-- and domains) that you have attempted to verify under your AWS account,
+-- regardless of verification status.
+--
+-- /See:/ 'newListIdentities' smart constructor.
+data ListIdentities = ListIdentities'
+  { -- | The type of the identities to list. Possible values are \"EmailAddress\"
+    -- and \"Domain\". If this parameter is omitted, then all identities will
+    -- be listed.
+    identityType :: Prelude.Maybe IdentityType,
+    -- | The maximum number of identities per page. Possible values are 1-1000
+    -- inclusive.
+    maxItems :: Prelude.Maybe Prelude.Int,
+    -- | The token to use for pagination.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentities' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityType', 'listIdentities_identityType' - The type of the identities to list. Possible values are \"EmailAddress\"
+-- and \"Domain\". If this parameter is omitted, then all identities will
+-- be listed.
+--
+-- 'maxItems', 'listIdentities_maxItems' - The maximum number of identities per page. Possible values are 1-1000
+-- inclusive.
+--
+-- 'nextToken', 'listIdentities_nextToken' - The token to use for pagination.
+newListIdentities ::
+  ListIdentities
+newListIdentities =
+  ListIdentities'
+    { identityType = Prelude.Nothing,
+      maxItems = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The type of the identities to list. Possible values are \"EmailAddress\"
+-- and \"Domain\". If this parameter is omitted, then all identities will
+-- be listed.
+listIdentities_identityType :: Lens.Lens' ListIdentities (Prelude.Maybe IdentityType)
+listIdentities_identityType = Lens.lens (\ListIdentities' {identityType} -> identityType) (\s@ListIdentities' {} a -> s {identityType = a} :: ListIdentities)
+
+-- | The maximum number of identities per page. Possible values are 1-1000
+-- inclusive.
+listIdentities_maxItems :: Lens.Lens' ListIdentities (Prelude.Maybe Prelude.Int)
+listIdentities_maxItems = Lens.lens (\ListIdentities' {maxItems} -> maxItems) (\s@ListIdentities' {} a -> s {maxItems = a} :: ListIdentities)
+
+-- | The token to use for pagination.
+listIdentities_nextToken :: Lens.Lens' ListIdentities (Prelude.Maybe Prelude.Text)
+listIdentities_nextToken = Lens.lens (\ListIdentities' {nextToken} -> nextToken) (\s@ListIdentities' {} a -> s {nextToken = a} :: ListIdentities)
+
+instance Core.AWSPager ListIdentities where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listIdentitiesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        (rs Lens.^. listIdentitiesResponse_identities) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listIdentities_nextToken
+          Lens..~ rs
+          Lens.^? listIdentitiesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListIdentities where
+  type
+    AWSResponse ListIdentities =
+      ListIdentitiesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListIdentitiesResult"
+      ( \s h x ->
+          ListIdentitiesResponse'
+            Prelude.<$> (x Data..@? "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "Identities"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLList "member"
+                        )
+      )
+
+instance Prelude.Hashable ListIdentities where
+  hashWithSalt _salt ListIdentities' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityType
+      `Prelude.hashWithSalt` maxItems
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListIdentities where
+  rnf ListIdentities' {..} =
+    Prelude.rnf identityType
+      `Prelude.seq` Prelude.rnf maxItems
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListIdentities where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListIdentities where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListIdentities where
+  toQuery ListIdentities' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListIdentities" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "IdentityType" Data.=: identityType,
+        "MaxItems" Data.=: maxItems,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | A list of all identities that you have attempted to verify under your
+-- AWS account, regardless of verification status.
+--
+-- /See:/ 'newListIdentitiesResponse' smart constructor.
+data ListIdentitiesResponse = ListIdentitiesResponse'
+  { -- | The token used for pagination.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of identities.
+    identities :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentitiesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listIdentitiesResponse_nextToken' - The token used for pagination.
+--
+-- 'httpStatus', 'listIdentitiesResponse_httpStatus' - The response's http status code.
+--
+-- 'identities', 'listIdentitiesResponse_identities' - A list of identities.
+newListIdentitiesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIdentitiesResponse
+newListIdentitiesResponse pHttpStatus_ =
+  ListIdentitiesResponse'
+    { nextToken =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_,
+      identities = Prelude.mempty
+    }
+
+-- | The token used for pagination.
+listIdentitiesResponse_nextToken :: Lens.Lens' ListIdentitiesResponse (Prelude.Maybe Prelude.Text)
+listIdentitiesResponse_nextToken = Lens.lens (\ListIdentitiesResponse' {nextToken} -> nextToken) (\s@ListIdentitiesResponse' {} a -> s {nextToken = a} :: ListIdentitiesResponse)
+
+-- | The response's http status code.
+listIdentitiesResponse_httpStatus :: Lens.Lens' ListIdentitiesResponse Prelude.Int
+listIdentitiesResponse_httpStatus = Lens.lens (\ListIdentitiesResponse' {httpStatus} -> httpStatus) (\s@ListIdentitiesResponse' {} a -> s {httpStatus = a} :: ListIdentitiesResponse)
+
+-- | A list of identities.
+listIdentitiesResponse_identities :: Lens.Lens' ListIdentitiesResponse [Prelude.Text]
+listIdentitiesResponse_identities = Lens.lens (\ListIdentitiesResponse' {identities} -> identities) (\s@ListIdentitiesResponse' {} a -> s {identities = a} :: ListIdentitiesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListIdentitiesResponse where
+  rnf ListIdentitiesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf identities
diff --git a/gen/Amazonka/SES/ListIdentityPolicies.hs b/gen/Amazonka/SES/ListIdentityPolicies.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListIdentityPolicies.hs
@@ -0,0 +1,201 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListIdentityPolicies
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a list of sending authorization policies that are attached to
+-- the given identity (an email address or a domain). This API returns only
+-- a list. If you want the actual policy content, you can use
+-- @GetIdentityPolicies@.
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.ListIdentityPolicies
+  ( -- * Creating a Request
+    ListIdentityPolicies (..),
+    newListIdentityPolicies,
+
+    -- * Request Lenses
+    listIdentityPolicies_identity,
+
+    -- * Destructuring the Response
+    ListIdentityPoliciesResponse (..),
+    newListIdentityPoliciesResponse,
+
+    -- * Response Lenses
+    listIdentityPoliciesResponse_httpStatus,
+    listIdentityPoliciesResponse_policyNames,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to return a list of sending authorization policies
+-- that are attached to an identity. Sending authorization is an Amazon SES
+-- feature that enables you to authorize other senders to use your
+-- identities. For information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newListIdentityPolicies' smart constructor.
+data ListIdentityPolicies = ListIdentityPolicies'
+  { -- | The identity that is associated with the policy for which the policies
+    -- will be listed. You can specify an identity by using its name or by
+    -- using its Amazon Resource Name (ARN). Examples: @user\@example.com@,
+    -- @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    --
+    -- To successfully call this API, you must own the identity.
+    identity :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityPolicies' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'listIdentityPolicies_identity' - The identity that is associated with the policy for which the policies
+-- will be listed. You can specify an identity by using its name or by
+-- using its Amazon Resource Name (ARN). Examples: @user\@example.com@,
+-- @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+newListIdentityPolicies ::
+  -- | 'identity'
+  Prelude.Text ->
+  ListIdentityPolicies
+newListIdentityPolicies pIdentity_ =
+  ListIdentityPolicies' {identity = pIdentity_}
+
+-- | The identity that is associated with the policy for which the policies
+-- will be listed. You can specify an identity by using its name or by
+-- using its Amazon Resource Name (ARN). Examples: @user\@example.com@,
+-- @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+listIdentityPolicies_identity :: Lens.Lens' ListIdentityPolicies Prelude.Text
+listIdentityPolicies_identity = Lens.lens (\ListIdentityPolicies' {identity} -> identity) (\s@ListIdentityPolicies' {} a -> s {identity = a} :: ListIdentityPolicies)
+
+instance Core.AWSRequest ListIdentityPolicies where
+  type
+    AWSResponse ListIdentityPolicies =
+      ListIdentityPoliciesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListIdentityPoliciesResult"
+      ( \s h x ->
+          ListIdentityPoliciesResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "PolicyNames"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLList "member"
+                        )
+      )
+
+instance Prelude.Hashable ListIdentityPolicies where
+  hashWithSalt _salt ListIdentityPolicies' {..} =
+    _salt `Prelude.hashWithSalt` identity
+
+instance Prelude.NFData ListIdentityPolicies where
+  rnf ListIdentityPolicies' {..} = Prelude.rnf identity
+
+instance Data.ToHeaders ListIdentityPolicies where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListIdentityPolicies where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListIdentityPolicies where
+  toQuery ListIdentityPolicies' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListIdentityPolicies" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity
+      ]
+
+-- | A list of names of sending authorization policies that apply to an
+-- identity.
+--
+-- /See:/ 'newListIdentityPoliciesResponse' smart constructor.
+data ListIdentityPoliciesResponse = ListIdentityPoliciesResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A list of names of policies that apply to the specified identity.
+    policyNames :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityPoliciesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'listIdentityPoliciesResponse_httpStatus' - The response's http status code.
+--
+-- 'policyNames', 'listIdentityPoliciesResponse_policyNames' - A list of names of policies that apply to the specified identity.
+newListIdentityPoliciesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIdentityPoliciesResponse
+newListIdentityPoliciesResponse pHttpStatus_ =
+  ListIdentityPoliciesResponse'
+    { httpStatus =
+        pHttpStatus_,
+      policyNames = Prelude.mempty
+    }
+
+-- | The response's http status code.
+listIdentityPoliciesResponse_httpStatus :: Lens.Lens' ListIdentityPoliciesResponse Prelude.Int
+listIdentityPoliciesResponse_httpStatus = Lens.lens (\ListIdentityPoliciesResponse' {httpStatus} -> httpStatus) (\s@ListIdentityPoliciesResponse' {} a -> s {httpStatus = a} :: ListIdentityPoliciesResponse)
+
+-- | A list of names of policies that apply to the specified identity.
+listIdentityPoliciesResponse_policyNames :: Lens.Lens' ListIdentityPoliciesResponse [Prelude.Text]
+listIdentityPoliciesResponse_policyNames = Lens.lens (\ListIdentityPoliciesResponse' {policyNames} -> policyNames) (\s@ListIdentityPoliciesResponse' {} a -> s {policyNames = a} :: ListIdentityPoliciesResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData ListIdentityPoliciesResponse where
+  rnf ListIdentityPoliciesResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf policyNames
diff --git a/gen/Amazonka/SES/ListReceiptFilters.hs b/gen/Amazonka/SES/ListReceiptFilters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListReceiptFilters.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListReceiptFilters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the IP address filters associated with your AWS account in the
+-- current AWS Region.
+--
+-- For information about managing IP address filters, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-ip-filters.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.ListReceiptFilters
+  ( -- * Creating a Request
+    ListReceiptFilters (..),
+    newListReceiptFilters,
+
+    -- * Destructuring the Response
+    ListReceiptFiltersResponse (..),
+    newListReceiptFiltersResponse,
+
+    -- * Response Lenses
+    listReceiptFiltersResponse_filters,
+    listReceiptFiltersResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to list the IP address filters that exist under
+-- your AWS account. You use IP address filters when you receive email with
+-- Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newListReceiptFilters' smart constructor.
+data ListReceiptFilters = ListReceiptFilters'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReceiptFilters' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newListReceiptFilters ::
+  ListReceiptFilters
+newListReceiptFilters = ListReceiptFilters'
+
+instance Core.AWSRequest ListReceiptFilters where
+  type
+    AWSResponse ListReceiptFilters =
+      ListReceiptFiltersResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListReceiptFiltersResult"
+      ( \s h x ->
+          ListReceiptFiltersResponse'
+            Prelude.<$> ( x
+                            Data..@? "Filters"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListReceiptFilters where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData ListReceiptFilters where
+  rnf _ = ()
+
+instance Data.ToHeaders ListReceiptFilters where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListReceiptFilters where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListReceiptFilters where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ("ListReceiptFilters" :: Prelude.ByteString),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | A list of IP address filters that exist under your AWS account.
+--
+-- /See:/ 'newListReceiptFiltersResponse' smart constructor.
+data ListReceiptFiltersResponse = ListReceiptFiltersResponse'
+  { -- | 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.
+    filters :: Prelude.Maybe [ReceiptFilter],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReceiptFiltersResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'filters', 'listReceiptFiltersResponse_filters' - 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.
+--
+-- 'httpStatus', 'listReceiptFiltersResponse_httpStatus' - The response's http status code.
+newListReceiptFiltersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListReceiptFiltersResponse
+newListReceiptFiltersResponse pHttpStatus_ =
+  ListReceiptFiltersResponse'
+    { filters =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | 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.
+listReceiptFiltersResponse_filters :: Lens.Lens' ListReceiptFiltersResponse (Prelude.Maybe [ReceiptFilter])
+listReceiptFiltersResponse_filters = Lens.lens (\ListReceiptFiltersResponse' {filters} -> filters) (\s@ListReceiptFiltersResponse' {} a -> s {filters = a} :: ListReceiptFiltersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listReceiptFiltersResponse_httpStatus :: Lens.Lens' ListReceiptFiltersResponse Prelude.Int
+listReceiptFiltersResponse_httpStatus = Lens.lens (\ListReceiptFiltersResponse' {httpStatus} -> httpStatus) (\s@ListReceiptFiltersResponse' {} a -> s {httpStatus = a} :: ListReceiptFiltersResponse)
+
+instance Prelude.NFData ListReceiptFiltersResponse where
+  rnf ListReceiptFiltersResponse' {..} =
+    Prelude.rnf filters
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ListReceiptRuleSets.hs b/gen/Amazonka/SES/ListReceiptRuleSets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListReceiptRuleSets.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListReceiptRuleSets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the receipt rule sets that exist under your AWS account in the
+-- current AWS Region. 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+--
+-- This operation returns paginated results.
+module Amazonka.SES.ListReceiptRuleSets
+  ( -- * Creating a Request
+    ListReceiptRuleSets (..),
+    newListReceiptRuleSets,
+
+    -- * Request Lenses
+    listReceiptRuleSets_nextToken,
+
+    -- * Destructuring the Response
+    ListReceiptRuleSetsResponse (..),
+    newListReceiptRuleSetsResponse,
+
+    -- * Response Lenses
+    listReceiptRuleSetsResponse_nextToken,
+    listReceiptRuleSetsResponse_ruleSets,
+    listReceiptRuleSetsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to list the receipt rule sets that exist under your
+-- AWS account. You use receipt rule sets to receive email with Amazon SES.
+-- For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newListReceiptRuleSets' smart constructor.
+data ListReceiptRuleSets = ListReceiptRuleSets'
+  { -- | A token returned from a previous call to @ListReceiptRuleSets@ to
+    -- indicate the position in the receipt rule set list.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReceiptRuleSets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listReceiptRuleSets_nextToken' - A token returned from a previous call to @ListReceiptRuleSets@ to
+-- indicate the position in the receipt rule set list.
+newListReceiptRuleSets ::
+  ListReceiptRuleSets
+newListReceiptRuleSets =
+  ListReceiptRuleSets' {nextToken = Prelude.Nothing}
+
+-- | A token returned from a previous call to @ListReceiptRuleSets@ to
+-- indicate the position in the receipt rule set list.
+listReceiptRuleSets_nextToken :: Lens.Lens' ListReceiptRuleSets (Prelude.Maybe Prelude.Text)
+listReceiptRuleSets_nextToken = Lens.lens (\ListReceiptRuleSets' {nextToken} -> nextToken) (\s@ListReceiptRuleSets' {} a -> s {nextToken = a} :: ListReceiptRuleSets)
+
+instance Core.AWSPager ListReceiptRuleSets where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listReceiptRuleSetsResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listReceiptRuleSetsResponse_ruleSets
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listReceiptRuleSets_nextToken
+          Lens..~ rs
+          Lens.^? listReceiptRuleSetsResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListReceiptRuleSets where
+  type
+    AWSResponse ListReceiptRuleSets =
+      ListReceiptRuleSetsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListReceiptRuleSetsResult"
+      ( \s h x ->
+          ListReceiptRuleSetsResponse'
+            Prelude.<$> (x Data..@? "NextToken")
+            Prelude.<*> ( x
+                            Data..@? "RuleSets"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListReceiptRuleSets where
+  hashWithSalt _salt ListReceiptRuleSets' {..} =
+    _salt `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListReceiptRuleSets where
+  rnf ListReceiptRuleSets' {..} = Prelude.rnf nextToken
+
+instance Data.ToHeaders ListReceiptRuleSets where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListReceiptRuleSets where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListReceiptRuleSets where
+  toQuery ListReceiptRuleSets' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListReceiptRuleSets" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | A list of receipt rule sets that exist under your AWS account.
+--
+-- /See:/ 'newListReceiptRuleSetsResponse' smart constructor.
+data ListReceiptRuleSetsResponse = ListReceiptRuleSetsResponse'
+  { -- | 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.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | 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.
+    ruleSets :: Prelude.Maybe [ReceiptRuleSetMetadata],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListReceiptRuleSetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listReceiptRuleSetsResponse_nextToken' - 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.
+--
+-- 'ruleSets', 'listReceiptRuleSetsResponse_ruleSets' - 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.
+--
+-- 'httpStatus', 'listReceiptRuleSetsResponse_httpStatus' - The response's http status code.
+newListReceiptRuleSetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListReceiptRuleSetsResponse
+newListReceiptRuleSetsResponse pHttpStatus_ =
+  ListReceiptRuleSetsResponse'
+    { nextToken =
+        Prelude.Nothing,
+      ruleSets = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | 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.
+listReceiptRuleSetsResponse_nextToken :: Lens.Lens' ListReceiptRuleSetsResponse (Prelude.Maybe Prelude.Text)
+listReceiptRuleSetsResponse_nextToken = Lens.lens (\ListReceiptRuleSetsResponse' {nextToken} -> nextToken) (\s@ListReceiptRuleSetsResponse' {} a -> s {nextToken = a} :: ListReceiptRuleSetsResponse)
+
+-- | 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.
+listReceiptRuleSetsResponse_ruleSets :: Lens.Lens' ListReceiptRuleSetsResponse (Prelude.Maybe [ReceiptRuleSetMetadata])
+listReceiptRuleSetsResponse_ruleSets = Lens.lens (\ListReceiptRuleSetsResponse' {ruleSets} -> ruleSets) (\s@ListReceiptRuleSetsResponse' {} a -> s {ruleSets = a} :: ListReceiptRuleSetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listReceiptRuleSetsResponse_httpStatus :: Lens.Lens' ListReceiptRuleSetsResponse Prelude.Int
+listReceiptRuleSetsResponse_httpStatus = Lens.lens (\ListReceiptRuleSetsResponse' {httpStatus} -> httpStatus) (\s@ListReceiptRuleSetsResponse' {} a -> s {httpStatus = a} :: ListReceiptRuleSetsResponse)
+
+instance Prelude.NFData ListReceiptRuleSetsResponse where
+  rnf ListReceiptRuleSetsResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf ruleSets
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ListTemplates.hs b/gen/Amazonka/SES/ListTemplates.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListTemplates.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListTemplates
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the email templates present in your Amazon SES account in the
+-- current AWS Region.
+--
+-- You can execute this operation no more than once per second.
+--
+-- This operation returns paginated results.
+module Amazonka.SES.ListTemplates
+  ( -- * Creating a Request
+    ListTemplates (..),
+    newListTemplates,
+
+    -- * Request Lenses
+    listTemplates_maxItems,
+    listTemplates_nextToken,
+
+    -- * Destructuring the Response
+    ListTemplatesResponse (..),
+    newListTemplatesResponse,
+
+    -- * Response Lenses
+    listTemplatesResponse_nextToken,
+    listTemplatesResponse_templatesMetadata,
+    listTemplatesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newListTemplates' smart constructor.
+data ListTemplates = ListTemplates'
+  { -- | The maximum number of templates to return. This value must be at least 1
+    -- and less than or equal to 10. If you do not specify a value, or if you
+    -- specify a value less than 1 or greater than 10, the operation will
+    -- return up to 10 results.
+    maxItems :: Prelude.Maybe Prelude.Int,
+    -- | A token returned from a previous call to @ListTemplates@ to indicate the
+    -- position in the list of email templates.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplates' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxItems', 'listTemplates_maxItems' - The maximum number of templates to return. This value must be at least 1
+-- and less than or equal to 10. If you do not specify a value, or if you
+-- specify a value less than 1 or greater than 10, the operation will
+-- return up to 10 results.
+--
+-- 'nextToken', 'listTemplates_nextToken' - A token returned from a previous call to @ListTemplates@ to indicate the
+-- position in the list of email templates.
+newListTemplates ::
+  ListTemplates
+newListTemplates =
+  ListTemplates'
+    { maxItems = Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of templates to return. This value must be at least 1
+-- and less than or equal to 10. If you do not specify a value, or if you
+-- specify a value less than 1 or greater than 10, the operation will
+-- return up to 10 results.
+listTemplates_maxItems :: Lens.Lens' ListTemplates (Prelude.Maybe Prelude.Int)
+listTemplates_maxItems = Lens.lens (\ListTemplates' {maxItems} -> maxItems) (\s@ListTemplates' {} a -> s {maxItems = a} :: ListTemplates)
+
+-- | A token returned from a previous call to @ListTemplates@ to indicate the
+-- position in the list of email templates.
+listTemplates_nextToken :: Lens.Lens' ListTemplates (Prelude.Maybe Prelude.Text)
+listTemplates_nextToken = Lens.lens (\ListTemplates' {nextToken} -> nextToken) (\s@ListTemplates' {} a -> s {nextToken = a} :: ListTemplates)
+
+instance Core.AWSPager ListTemplates where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? listTemplatesResponse_nextToken
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? listTemplatesResponse_templatesMetadata
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& listTemplates_nextToken
+          Lens..~ rs
+          Lens.^? listTemplatesResponse_nextToken
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest ListTemplates where
+  type
+    AWSResponse ListTemplates =
+      ListTemplatesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListTemplatesResult"
+      ( \s h x ->
+          ListTemplatesResponse'
+            Prelude.<$> (x Data..@? "NextToken")
+            Prelude.<*> ( x
+                            Data..@? "TemplatesMetadata"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListTemplates where
+  hashWithSalt _salt ListTemplates' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxItems
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListTemplates where
+  rnf ListTemplates' {..} =
+    Prelude.rnf maxItems
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListTemplates where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListTemplates where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListTemplates where
+  toQuery ListTemplates' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ListTemplates" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "MaxItems" Data.=: maxItems,
+        "NextToken" Data.=: nextToken
+      ]
+
+-- | /See:/ 'newListTemplatesResponse' smart constructor.
+data ListTemplatesResponse = ListTemplatesResponse'
+  { -- | A token indicating that there are additional email templates available
+    -- to be listed. Pass this token to a subsequent call to @ListTemplates@ to
+    -- retrieve the next 50 email templates.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | An array the contains the name and creation time stamp for each template
+    -- in your Amazon SES account.
+    templatesMetadata :: Prelude.Maybe [TemplateMetadata],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListTemplatesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'nextToken', 'listTemplatesResponse_nextToken' - A token indicating that there are additional email templates available
+-- to be listed. Pass this token to a subsequent call to @ListTemplates@ to
+-- retrieve the next 50 email templates.
+--
+-- 'templatesMetadata', 'listTemplatesResponse_templatesMetadata' - An array the contains the name and creation time stamp for each template
+-- in your Amazon SES account.
+--
+-- 'httpStatus', 'listTemplatesResponse_httpStatus' - The response's http status code.
+newListTemplatesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListTemplatesResponse
+newListTemplatesResponse pHttpStatus_ =
+  ListTemplatesResponse'
+    { nextToken = Prelude.Nothing,
+      templatesMetadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A token indicating that there are additional email templates available
+-- to be listed. Pass this token to a subsequent call to @ListTemplates@ to
+-- retrieve the next 50 email templates.
+listTemplatesResponse_nextToken :: Lens.Lens' ListTemplatesResponse (Prelude.Maybe Prelude.Text)
+listTemplatesResponse_nextToken = Lens.lens (\ListTemplatesResponse' {nextToken} -> nextToken) (\s@ListTemplatesResponse' {} a -> s {nextToken = a} :: ListTemplatesResponse)
+
+-- | An array the contains the name and creation time stamp for each template
+-- in your Amazon SES account.
+listTemplatesResponse_templatesMetadata :: Lens.Lens' ListTemplatesResponse (Prelude.Maybe [TemplateMetadata])
+listTemplatesResponse_templatesMetadata = Lens.lens (\ListTemplatesResponse' {templatesMetadata} -> templatesMetadata) (\s@ListTemplatesResponse' {} a -> s {templatesMetadata = a} :: ListTemplatesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listTemplatesResponse_httpStatus :: Lens.Lens' ListTemplatesResponse Prelude.Int
+listTemplatesResponse_httpStatus = Lens.lens (\ListTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListTemplatesResponse' {} a -> s {httpStatus = a} :: ListTemplatesResponse)
+
+instance Prelude.NFData ListTemplatesResponse where
+  rnf ListTemplatesResponse' {..} =
+    Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf templatesMetadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ListVerifiedEmailAddresses.hs b/gen/Amazonka/SES/ListVerifiedEmailAddresses.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ListVerifiedEmailAddresses.hs
@@ -0,0 +1,154 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ListVerifiedEmailAddresses
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deprecated. Use the @ListIdentities@ operation to list the email
+-- addresses and domains associated with your account.
+module Amazonka.SES.ListVerifiedEmailAddresses
+  ( -- * Creating a Request
+    ListVerifiedEmailAddresses (..),
+    newListVerifiedEmailAddresses,
+
+    -- * Destructuring the Response
+    ListVerifiedEmailAddressesResponse (..),
+    newListVerifiedEmailAddressesResponse,
+
+    -- * Response Lenses
+    listVerifiedEmailAddressesResponse_verifiedEmailAddresses,
+    listVerifiedEmailAddressesResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newListVerifiedEmailAddresses' smart constructor.
+data ListVerifiedEmailAddresses = ListVerifiedEmailAddresses'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVerifiedEmailAddresses' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newListVerifiedEmailAddresses ::
+  ListVerifiedEmailAddresses
+newListVerifiedEmailAddresses =
+  ListVerifiedEmailAddresses'
+
+instance Core.AWSRequest ListVerifiedEmailAddresses where
+  type
+    AWSResponse ListVerifiedEmailAddresses =
+      ListVerifiedEmailAddressesResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ListVerifiedEmailAddressesResult"
+      ( \s h x ->
+          ListVerifiedEmailAddressesResponse'
+            Prelude.<$> ( x
+                            Data..@? "VerifiedEmailAddresses"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Core.may (Data.parseXMLList "member")
+                        )
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListVerifiedEmailAddresses where
+  hashWithSalt _salt _ =
+    _salt `Prelude.hashWithSalt` ()
+
+instance Prelude.NFData ListVerifiedEmailAddresses where
+  rnf _ = ()
+
+instance Data.ToHeaders ListVerifiedEmailAddresses where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ListVerifiedEmailAddresses where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ListVerifiedEmailAddresses where
+  toQuery =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Action"
+              Data.=: ("ListVerifiedEmailAddresses" :: Prelude.ByteString),
+            "Version"
+              Data.=: ("2010-12-01" :: Prelude.ByteString)
+          ]
+      )
+
+-- | A list of email addresses that you have verified with Amazon SES under
+-- your AWS account.
+--
+-- /See:/ 'newListVerifiedEmailAddressesResponse' smart constructor.
+data ListVerifiedEmailAddressesResponse = ListVerifiedEmailAddressesResponse'
+  { -- | A list of email addresses that have been verified.
+    verifiedEmailAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListVerifiedEmailAddressesResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'verifiedEmailAddresses', 'listVerifiedEmailAddressesResponse_verifiedEmailAddresses' - A list of email addresses that have been verified.
+--
+-- 'httpStatus', 'listVerifiedEmailAddressesResponse_httpStatus' - The response's http status code.
+newListVerifiedEmailAddressesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListVerifiedEmailAddressesResponse
+newListVerifiedEmailAddressesResponse pHttpStatus_ =
+  ListVerifiedEmailAddressesResponse'
+    { verifiedEmailAddresses =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of email addresses that have been verified.
+listVerifiedEmailAddressesResponse_verifiedEmailAddresses :: Lens.Lens' ListVerifiedEmailAddressesResponse (Prelude.Maybe [Prelude.Text])
+listVerifiedEmailAddressesResponse_verifiedEmailAddresses = Lens.lens (\ListVerifiedEmailAddressesResponse' {verifiedEmailAddresses} -> verifiedEmailAddresses) (\s@ListVerifiedEmailAddressesResponse' {} a -> s {verifiedEmailAddresses = a} :: ListVerifiedEmailAddressesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+listVerifiedEmailAddressesResponse_httpStatus :: Lens.Lens' ListVerifiedEmailAddressesResponse Prelude.Int
+listVerifiedEmailAddressesResponse_httpStatus = Lens.lens (\ListVerifiedEmailAddressesResponse' {httpStatus} -> httpStatus) (\s@ListVerifiedEmailAddressesResponse' {} a -> s {httpStatus = a} :: ListVerifiedEmailAddressesResponse)
+
+instance
+  Prelude.NFData
+    ListVerifiedEmailAddressesResponse
+  where
+  rnf ListVerifiedEmailAddressesResponse' {..} =
+    Prelude.rnf verifiedEmailAddresses
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/PutConfigurationSetDeliveryOptions.hs b/gen/Amazonka/SES/PutConfigurationSetDeliveryOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/PutConfigurationSetDeliveryOptions.hs
@@ -0,0 +1,202 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.PutConfigurationSetDeliveryOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds or updates the delivery options for a configuration set.
+module Amazonka.SES.PutConfigurationSetDeliveryOptions
+  ( -- * Creating a Request
+    PutConfigurationSetDeliveryOptions (..),
+    newPutConfigurationSetDeliveryOptions,
+
+    -- * Request Lenses
+    putConfigurationSetDeliveryOptions_deliveryOptions,
+    putConfigurationSetDeliveryOptions_configurationSetName,
+
+    -- * Destructuring the Response
+    PutConfigurationSetDeliveryOptionsResponse (..),
+    newPutConfigurationSetDeliveryOptionsResponse,
+
+    -- * Response Lenses
+    putConfigurationSetDeliveryOptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | A request to modify the delivery options for a configuration set.
+--
+-- /See:/ 'newPutConfigurationSetDeliveryOptions' smart constructor.
+data PutConfigurationSetDeliveryOptions = PutConfigurationSetDeliveryOptions'
+  { -- | Specifies whether messages that use the configuration set are required
+    -- to use Transport Layer Security (TLS).
+    deliveryOptions :: Prelude.Maybe DeliveryOptions,
+    -- | The name of the configuration set that you want to specify the delivery
+    -- options for.
+    configurationSetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutConfigurationSetDeliveryOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deliveryOptions', 'putConfigurationSetDeliveryOptions_deliveryOptions' - Specifies whether messages that use the configuration set are required
+-- to use Transport Layer Security (TLS).
+--
+-- 'configurationSetName', 'putConfigurationSetDeliveryOptions_configurationSetName' - The name of the configuration set that you want to specify the delivery
+-- options for.
+newPutConfigurationSetDeliveryOptions ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  PutConfigurationSetDeliveryOptions
+newPutConfigurationSetDeliveryOptions
+  pConfigurationSetName_ =
+    PutConfigurationSetDeliveryOptions'
+      { deliveryOptions =
+          Prelude.Nothing,
+        configurationSetName =
+          pConfigurationSetName_
+      }
+
+-- | Specifies whether messages that use the configuration set are required
+-- to use Transport Layer Security (TLS).
+putConfigurationSetDeliveryOptions_deliveryOptions :: Lens.Lens' PutConfigurationSetDeliveryOptions (Prelude.Maybe DeliveryOptions)
+putConfigurationSetDeliveryOptions_deliveryOptions = Lens.lens (\PutConfigurationSetDeliveryOptions' {deliveryOptions} -> deliveryOptions) (\s@PutConfigurationSetDeliveryOptions' {} a -> s {deliveryOptions = a} :: PutConfigurationSetDeliveryOptions)
+
+-- | The name of the configuration set that you want to specify the delivery
+-- options for.
+putConfigurationSetDeliveryOptions_configurationSetName :: Lens.Lens' PutConfigurationSetDeliveryOptions Prelude.Text
+putConfigurationSetDeliveryOptions_configurationSetName = Lens.lens (\PutConfigurationSetDeliveryOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetDeliveryOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetDeliveryOptions)
+
+instance
+  Core.AWSRequest
+    PutConfigurationSetDeliveryOptions
+  where
+  type
+    AWSResponse PutConfigurationSetDeliveryOptions =
+      PutConfigurationSetDeliveryOptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "PutConfigurationSetDeliveryOptionsResult"
+      ( \s h x ->
+          PutConfigurationSetDeliveryOptionsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    PutConfigurationSetDeliveryOptions
+  where
+  hashWithSalt
+    _salt
+    PutConfigurationSetDeliveryOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` deliveryOptions
+        `Prelude.hashWithSalt` configurationSetName
+
+instance
+  Prelude.NFData
+    PutConfigurationSetDeliveryOptions
+  where
+  rnf PutConfigurationSetDeliveryOptions' {..} =
+    Prelude.rnf deliveryOptions
+      `Prelude.seq` Prelude.rnf configurationSetName
+
+instance
+  Data.ToHeaders
+    PutConfigurationSetDeliveryOptions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    PutConfigurationSetDeliveryOptions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    PutConfigurationSetDeliveryOptions
+  where
+  toQuery PutConfigurationSetDeliveryOptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "PutConfigurationSetDeliveryOptions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "DeliveryOptions" Data.=: deliveryOptions,
+        "ConfigurationSetName" Data.=: configurationSetName
+      ]
+
+-- | An HTTP 200 response if the request succeeds, or an error message if the
+-- request fails.
+--
+-- /See:/ 'newPutConfigurationSetDeliveryOptionsResponse' smart constructor.
+data PutConfigurationSetDeliveryOptionsResponse = PutConfigurationSetDeliveryOptionsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutConfigurationSetDeliveryOptionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'putConfigurationSetDeliveryOptionsResponse_httpStatus' - The response's http status code.
+newPutConfigurationSetDeliveryOptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutConfigurationSetDeliveryOptionsResponse
+newPutConfigurationSetDeliveryOptionsResponse
+  pHttpStatus_ =
+    PutConfigurationSetDeliveryOptionsResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+putConfigurationSetDeliveryOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetDeliveryOptionsResponse Prelude.Int
+putConfigurationSetDeliveryOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetDeliveryOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetDeliveryOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetDeliveryOptionsResponse)
+
+instance
+  Prelude.NFData
+    PutConfigurationSetDeliveryOptionsResponse
+  where
+  rnf PutConfigurationSetDeliveryOptionsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/PutIdentityPolicy.hs b/gen/Amazonka/SES/PutIdentityPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/PutIdentityPolicy.hs
@@ -0,0 +1,234 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.PutIdentityPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds or updates a sending authorization policy for the specified
+-- identity (an email address or a domain).
+--
+-- This API is for the identity owner only. If you have not verified the
+-- identity, this API will return an error.
+--
+-- Sending authorization is a feature that enables an identity owner to
+-- authorize other senders to use its identities. For information about
+-- using sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.PutIdentityPolicy
+  ( -- * Creating a Request
+    PutIdentityPolicy (..),
+    newPutIdentityPolicy,
+
+    -- * Request Lenses
+    putIdentityPolicy_identity,
+    putIdentityPolicy_policyName,
+    putIdentityPolicy_policy,
+
+    -- * Destructuring the Response
+    PutIdentityPolicyResponse (..),
+    newPutIdentityPolicyResponse,
+
+    -- * Response Lenses
+    putIdentityPolicyResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to add or update a sending authorization policy for
+-- an identity. Sending authorization is an Amazon SES feature that enables
+-- you to authorize other senders to use your identities. For information,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newPutIdentityPolicy' smart constructor.
+data PutIdentityPolicy = PutIdentityPolicy'
+  { -- | The identity that the policy will apply to. You can specify an identity
+    -- by using its name or by using its Amazon Resource Name (ARN). Examples:
+    -- @user\@example.com@, @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    --
+    -- To successfully call this API, you must own the identity.
+    identity :: Prelude.Text,
+    -- | The name of the policy.
+    --
+    -- The policy name cannot exceed 64 characters and can only include
+    -- alphanumeric characters, dashes, and underscores.
+    policyName :: Prelude.Text,
+    -- | The text of the policy in JSON format. The policy cannot exceed 4 KB.
+    --
+    -- For information about the syntax of sending authorization policies, see
+    -- the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide>.
+    policy :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutIdentityPolicy' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'putIdentityPolicy_identity' - The identity that the policy will apply to. You can specify an identity
+-- by using its name or by using its Amazon Resource Name (ARN). Examples:
+-- @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+--
+-- 'policyName', 'putIdentityPolicy_policyName' - The name of the policy.
+--
+-- The policy name cannot exceed 64 characters and can only include
+-- alphanumeric characters, dashes, and underscores.
+--
+-- 'policy', 'putIdentityPolicy_policy' - The text of the policy in JSON format. The policy cannot exceed 4 KB.
+--
+-- For information about the syntax of sending authorization policies, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide>.
+newPutIdentityPolicy ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'policyName'
+  Prelude.Text ->
+  -- | 'policy'
+  Prelude.Text ->
+  PutIdentityPolicy
+newPutIdentityPolicy pIdentity_ pPolicyName_ pPolicy_ =
+  PutIdentityPolicy'
+    { identity = pIdentity_,
+      policyName = pPolicyName_,
+      policy = pPolicy_
+    }
+
+-- | The identity that the policy will apply to. You can specify an identity
+-- by using its name or by using its Amazon Resource Name (ARN). Examples:
+-- @user\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- To successfully call this API, you must own the identity.
+putIdentityPolicy_identity :: Lens.Lens' PutIdentityPolicy Prelude.Text
+putIdentityPolicy_identity = Lens.lens (\PutIdentityPolicy' {identity} -> identity) (\s@PutIdentityPolicy' {} a -> s {identity = a} :: PutIdentityPolicy)
+
+-- | The name of the policy.
+--
+-- The policy name cannot exceed 64 characters and can only include
+-- alphanumeric characters, dashes, and underscores.
+putIdentityPolicy_policyName :: Lens.Lens' PutIdentityPolicy Prelude.Text
+putIdentityPolicy_policyName = Lens.lens (\PutIdentityPolicy' {policyName} -> policyName) (\s@PutIdentityPolicy' {} a -> s {policyName = a} :: PutIdentityPolicy)
+
+-- | The text of the policy in JSON format. The policy cannot exceed 4 KB.
+--
+-- For information about the syntax of sending authorization policies, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide>.
+putIdentityPolicy_policy :: Lens.Lens' PutIdentityPolicy Prelude.Text
+putIdentityPolicy_policy = Lens.lens (\PutIdentityPolicy' {policy} -> policy) (\s@PutIdentityPolicy' {} a -> s {policy = a} :: PutIdentityPolicy)
+
+instance Core.AWSRequest PutIdentityPolicy where
+  type
+    AWSResponse PutIdentityPolicy =
+      PutIdentityPolicyResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "PutIdentityPolicyResult"
+      ( \s h x ->
+          PutIdentityPolicyResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable PutIdentityPolicy where
+  hashWithSalt _salt PutIdentityPolicy' {..} =
+    _salt
+      `Prelude.hashWithSalt` identity
+      `Prelude.hashWithSalt` policyName
+      `Prelude.hashWithSalt` policy
+
+instance Prelude.NFData PutIdentityPolicy where
+  rnf PutIdentityPolicy' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf policyName
+      `Prelude.seq` Prelude.rnf policy
+
+instance Data.ToHeaders PutIdentityPolicy where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath PutIdentityPolicy where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery PutIdentityPolicy where
+  toQuery PutIdentityPolicy' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("PutIdentityPolicy" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "PolicyName" Data.=: policyName,
+        "Policy" Data.=: policy
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newPutIdentityPolicyResponse' smart constructor.
+data PutIdentityPolicyResponse = PutIdentityPolicyResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PutIdentityPolicyResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'putIdentityPolicyResponse_httpStatus' - The response's http status code.
+newPutIdentityPolicyResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  PutIdentityPolicyResponse
+newPutIdentityPolicyResponse pHttpStatus_ =
+  PutIdentityPolicyResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+putIdentityPolicyResponse_httpStatus :: Lens.Lens' PutIdentityPolicyResponse Prelude.Int
+putIdentityPolicyResponse_httpStatus = Lens.lens (\PutIdentityPolicyResponse' {httpStatus} -> httpStatus) (\s@PutIdentityPolicyResponse' {} a -> s {httpStatus = a} :: PutIdentityPolicyResponse)
+
+instance Prelude.NFData PutIdentityPolicyResponse where
+  rnf PutIdentityPolicyResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/ReorderReceiptRuleSet.hs b/gen/Amazonka/SES/ReorderReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/ReorderReceiptRuleSet.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.ReorderReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.ReorderReceiptRuleSet
+  ( -- * Creating a Request
+    ReorderReceiptRuleSet (..),
+    newReorderReceiptRuleSet,
+
+    -- * Request Lenses
+    reorderReceiptRuleSet_ruleSetName,
+    reorderReceiptRuleSet_ruleNames,
+
+    -- * Destructuring the Response
+    ReorderReceiptRuleSetResponse (..),
+    newReorderReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    reorderReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to reorder the receipt rules within a receipt rule
+-- set. You use receipt rule sets to receive email with Amazon SES. For
+-- more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReorderReceiptRuleSet' smart constructor.
+data ReorderReceiptRuleSet = ReorderReceiptRuleSet'
+  { -- | The name of the receipt rule set to reorder.
+    ruleSetName :: Prelude.Text,
+    -- | A list of the specified receipt rule set\'s receipt rules in the order
+    -- that you want to put them.
+    ruleNames :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReorderReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'reorderReceiptRuleSet_ruleSetName' - The name of the receipt rule set to reorder.
+--
+-- 'ruleNames', 'reorderReceiptRuleSet_ruleNames' - A list of the specified receipt rule set\'s receipt rules in the order
+-- that you want to put them.
+newReorderReceiptRuleSet ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  ReorderReceiptRuleSet
+newReorderReceiptRuleSet pRuleSetName_ =
+  ReorderReceiptRuleSet'
+    { ruleSetName = pRuleSetName_,
+      ruleNames = Prelude.mempty
+    }
+
+-- | The name of the receipt rule set to reorder.
+reorderReceiptRuleSet_ruleSetName :: Lens.Lens' ReorderReceiptRuleSet Prelude.Text
+reorderReceiptRuleSet_ruleSetName = Lens.lens (\ReorderReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@ReorderReceiptRuleSet' {} a -> s {ruleSetName = a} :: ReorderReceiptRuleSet)
+
+-- | A list of the specified receipt rule set\'s receipt rules in the order
+-- that you want to put them.
+reorderReceiptRuleSet_ruleNames :: Lens.Lens' ReorderReceiptRuleSet [Prelude.Text]
+reorderReceiptRuleSet_ruleNames = Lens.lens (\ReorderReceiptRuleSet' {ruleNames} -> ruleNames) (\s@ReorderReceiptRuleSet' {} a -> s {ruleNames = a} :: ReorderReceiptRuleSet) Prelude.. Lens.coerced
+
+instance Core.AWSRequest ReorderReceiptRuleSet where
+  type
+    AWSResponse ReorderReceiptRuleSet =
+      ReorderReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "ReorderReceiptRuleSetResult"
+      ( \s h x ->
+          ReorderReceiptRuleSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ReorderReceiptRuleSet where
+  hashWithSalt _salt ReorderReceiptRuleSet' {..} =
+    _salt
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` ruleNames
+
+instance Prelude.NFData ReorderReceiptRuleSet where
+  rnf ReorderReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf ruleNames
+
+instance Data.ToHeaders ReorderReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath ReorderReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery ReorderReceiptRuleSet where
+  toQuery ReorderReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("ReorderReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName,
+        "RuleNames"
+          Data.=: Data.toQueryList "member" ruleNames
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newReorderReceiptRuleSetResponse' smart constructor.
+data ReorderReceiptRuleSetResponse = ReorderReceiptRuleSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReorderReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'reorderReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newReorderReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ReorderReceiptRuleSetResponse
+newReorderReceiptRuleSetResponse pHttpStatus_ =
+  ReorderReceiptRuleSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+reorderReceiptRuleSetResponse_httpStatus :: Lens.Lens' ReorderReceiptRuleSetResponse Prelude.Int
+reorderReceiptRuleSetResponse_httpStatus = Lens.lens (\ReorderReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@ReorderReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: ReorderReceiptRuleSetResponse)
+
+instance Prelude.NFData ReorderReceiptRuleSetResponse where
+  rnf ReorderReceiptRuleSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SendBounce.hs b/gen/Amazonka/SES/SendBounce.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendBounce.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendBounce
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.SendBounce
+  ( -- * Creating a Request
+    SendBounce (..),
+    newSendBounce,
+
+    -- * Request Lenses
+    sendBounce_bounceSenderArn,
+    sendBounce_explanation,
+    sendBounce_messageDsn,
+    sendBounce_originalMessageId,
+    sendBounce_bounceSender,
+    sendBounce_bouncedRecipientInfoList,
+
+    -- * Destructuring the Response
+    SendBounceResponse (..),
+    newSendBounceResponse,
+
+    -- * Response Lenses
+    sendBounceResponse_messageId,
+    sendBounceResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a bounce message to the sender of an email
+-- you received through Amazon SES.
+--
+-- /See:/ 'newSendBounce' smart constructor.
+data SendBounce = SendBounce'
+  { -- | 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
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    bounceSenderArn :: Prelude.Maybe Prelude.Text,
+    -- | 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.
+    explanation :: Prelude.Maybe Prelude.Text,
+    -- | Message-related DSN fields. If not specified, Amazon SES will choose the
+    -- values.
+    messageDsn :: Prelude.Maybe MessageDsn,
+    -- | The message ID of the message to be bounced.
+    originalMessageId :: Prelude.Text,
+    -- | The address to use in the \"From\" header of the bounce message. This
+    -- must be an identity that you have verified with Amazon SES.
+    bounceSender :: Prelude.Text,
+    -- | 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.
+    bouncedRecipientInfoList :: [BouncedRecipientInfo]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendBounce' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bounceSenderArn', 'sendBounce_bounceSenderArn' - 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'explanation', 'sendBounce_explanation' - 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.
+--
+-- 'messageDsn', 'sendBounce_messageDsn' - Message-related DSN fields. If not specified, Amazon SES will choose the
+-- values.
+--
+-- 'originalMessageId', 'sendBounce_originalMessageId' - The message ID of the message to be bounced.
+--
+-- 'bounceSender', 'sendBounce_bounceSender' - The address to use in the \"From\" header of the bounce message. This
+-- must be an identity that you have verified with Amazon SES.
+--
+-- 'bouncedRecipientInfoList', 'sendBounce_bouncedRecipientInfoList' - 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.
+newSendBounce ::
+  -- | 'originalMessageId'
+  Prelude.Text ->
+  -- | 'bounceSender'
+  Prelude.Text ->
+  SendBounce
+newSendBounce pOriginalMessageId_ pBounceSender_ =
+  SendBounce'
+    { bounceSenderArn = Prelude.Nothing,
+      explanation = Prelude.Nothing,
+      messageDsn = Prelude.Nothing,
+      originalMessageId = pOriginalMessageId_,
+      bounceSender = pBounceSender_,
+      bouncedRecipientInfoList = Prelude.mempty
+    }
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendBounce_bounceSenderArn :: Lens.Lens' SendBounce (Prelude.Maybe Prelude.Text)
+sendBounce_bounceSenderArn = Lens.lens (\SendBounce' {bounceSenderArn} -> bounceSenderArn) (\s@SendBounce' {} a -> s {bounceSenderArn = a} :: SendBounce)
+
+-- | 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.
+sendBounce_explanation :: Lens.Lens' SendBounce (Prelude.Maybe Prelude.Text)
+sendBounce_explanation = Lens.lens (\SendBounce' {explanation} -> explanation) (\s@SendBounce' {} a -> s {explanation = a} :: SendBounce)
+
+-- | Message-related DSN fields. If not specified, Amazon SES will choose the
+-- values.
+sendBounce_messageDsn :: Lens.Lens' SendBounce (Prelude.Maybe MessageDsn)
+sendBounce_messageDsn = Lens.lens (\SendBounce' {messageDsn} -> messageDsn) (\s@SendBounce' {} a -> s {messageDsn = a} :: SendBounce)
+
+-- | The message ID of the message to be bounced.
+sendBounce_originalMessageId :: Lens.Lens' SendBounce Prelude.Text
+sendBounce_originalMessageId = Lens.lens (\SendBounce' {originalMessageId} -> originalMessageId) (\s@SendBounce' {} a -> s {originalMessageId = a} :: SendBounce)
+
+-- | The address to use in the \"From\" header of the bounce message. This
+-- must be an identity that you have verified with Amazon SES.
+sendBounce_bounceSender :: Lens.Lens' SendBounce Prelude.Text
+sendBounce_bounceSender = Lens.lens (\SendBounce' {bounceSender} -> bounceSender) (\s@SendBounce' {} a -> s {bounceSender = a} :: SendBounce)
+
+-- | 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.
+sendBounce_bouncedRecipientInfoList :: Lens.Lens' SendBounce [BouncedRecipientInfo]
+sendBounce_bouncedRecipientInfoList = Lens.lens (\SendBounce' {bouncedRecipientInfoList} -> bouncedRecipientInfoList) (\s@SendBounce' {} a -> s {bouncedRecipientInfoList = a} :: SendBounce) Prelude.. Lens.coerced
+
+instance Core.AWSRequest SendBounce where
+  type AWSResponse SendBounce = SendBounceResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendBounceResult"
+      ( \s h x ->
+          SendBounceResponse'
+            Prelude.<$> (x Data..@? "MessageId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SendBounce where
+  hashWithSalt _salt SendBounce' {..} =
+    _salt
+      `Prelude.hashWithSalt` bounceSenderArn
+      `Prelude.hashWithSalt` explanation
+      `Prelude.hashWithSalt` messageDsn
+      `Prelude.hashWithSalt` originalMessageId
+      `Prelude.hashWithSalt` bounceSender
+      `Prelude.hashWithSalt` bouncedRecipientInfoList
+
+instance Prelude.NFData SendBounce where
+  rnf SendBounce' {..} =
+    Prelude.rnf bounceSenderArn
+      `Prelude.seq` Prelude.rnf explanation
+      `Prelude.seq` Prelude.rnf messageDsn
+      `Prelude.seq` Prelude.rnf originalMessageId
+      `Prelude.seq` Prelude.rnf bounceSender
+      `Prelude.seq` Prelude.rnf bouncedRecipientInfoList
+
+instance Data.ToHeaders SendBounce where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendBounce where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendBounce where
+  toQuery SendBounce' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SendBounce" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "BounceSenderArn" Data.=: bounceSenderArn,
+        "Explanation" Data.=: explanation,
+        "MessageDsn" Data.=: messageDsn,
+        "OriginalMessageId" Data.=: originalMessageId,
+        "BounceSender" Data.=: bounceSender,
+        "BouncedRecipientInfoList"
+          Data.=: Data.toQueryList "member" bouncedRecipientInfoList
+      ]
+
+-- | Represents a unique message ID.
+--
+-- /See:/ 'newSendBounceResponse' smart constructor.
+data SendBounceResponse = SendBounceResponse'
+  { -- | The message ID of the bounce message.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendBounceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'messageId', 'sendBounceResponse_messageId' - The message ID of the bounce message.
+--
+-- 'httpStatus', 'sendBounceResponse_httpStatus' - The response's http status code.
+newSendBounceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendBounceResponse
+newSendBounceResponse pHttpStatus_ =
+  SendBounceResponse'
+    { messageId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The message ID of the bounce message.
+sendBounceResponse_messageId :: Lens.Lens' SendBounceResponse (Prelude.Maybe Prelude.Text)
+sendBounceResponse_messageId = Lens.lens (\SendBounceResponse' {messageId} -> messageId) (\s@SendBounceResponse' {} a -> s {messageId = a} :: SendBounceResponse)
+
+-- | The response's http status code.
+sendBounceResponse_httpStatus :: Lens.Lens' SendBounceResponse Prelude.Int
+sendBounceResponse_httpStatus = Lens.lens (\SendBounceResponse' {httpStatus} -> httpStatus) (\s@SendBounceResponse' {} a -> s {httpStatus = a} :: SendBounceResponse)
+
+instance Prelude.NFData SendBounceResponse where
+  rnf SendBounceResponse' {..} =
+    Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SendBulkTemplatedEmail.hs b/gen/Amazonka/SES/SendBulkTemplatedEmail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendBulkTemplatedEmail.hs
@@ -0,0 +1,554 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendBulkTemplatedEmail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Composes an email message to multiple destinations. The message body is
+-- created using an email template.
+--
+-- In order to send email using the @SendBulkTemplatedEmail@ operation,
+-- your call to the API must meet the following requirements:
+--
+-- -   The call must refer to an existing email template. You can create
+--     email templates using the CreateTemplate operation.
+--
+-- -   The message must be sent from a verified email address or domain.
+--
+-- -   If your account is still in the Amazon SES sandbox, you may only
+--     send to verified addresses or domains, or to email addresses
+--     associated with the Amazon SES Mailbox Simulator. For more
+--     information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains>
+--     in the /Amazon SES Developer Guide./
+--
+-- -   The maximum message size is 10 MB.
+--
+-- -   Each @Destination@ parameter must include at least one recipient
+--     email address. The recipient address can be a To: address, a CC:
+--     address, or a BCC: address. If a recipient email address is invalid
+--     (that is, it is not in the format
+--     /UserName\@[SubDomain.]Domain.TopLevelDomain/), the entire message
+--     will be rejected, even if the message contains other recipients that
+--     are valid.
+--
+-- -   The message may not include more than 50 recipients, across the To:,
+--     CC: and BCC: fields. If you need to send an email message to a
+--     larger audience, you can divide your recipient list into groups of
+--     50 or fewer, and then call the @SendBulkTemplatedEmail@ operation
+--     several times to send the message to each group.
+--
+-- -   The number of destinations you can contact in a single call to the
+--     API may be limited by your account\'s maximum sending rate.
+module Amazonka.SES.SendBulkTemplatedEmail
+  ( -- * Creating a Request
+    SendBulkTemplatedEmail (..),
+    newSendBulkTemplatedEmail,
+
+    -- * Request Lenses
+    sendBulkTemplatedEmail_configurationSetName,
+    sendBulkTemplatedEmail_defaultTags,
+    sendBulkTemplatedEmail_defaultTemplateData,
+    sendBulkTemplatedEmail_replyToAddresses,
+    sendBulkTemplatedEmail_returnPath,
+    sendBulkTemplatedEmail_returnPathArn,
+    sendBulkTemplatedEmail_sourceArn,
+    sendBulkTemplatedEmail_templateArn,
+    sendBulkTemplatedEmail_source,
+    sendBulkTemplatedEmail_template,
+    sendBulkTemplatedEmail_destinations,
+
+    -- * Destructuring the Response
+    SendBulkTemplatedEmailResponse (..),
+    newSendBulkTemplatedEmailResponse,
+
+    -- * Response Lenses
+    sendBulkTemplatedEmailResponse_httpStatus,
+    sendBulkTemplatedEmailResponse_status,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a templated email to multiple destinations
+-- using Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSendBulkTemplatedEmail' smart constructor.
+data SendBulkTemplatedEmail = SendBulkTemplatedEmail'
+  { -- | The name of the configuration set to use when you send an email using
+    -- @SendBulkTemplatedEmail@.
+    configurationSetName :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags, in the form of name\/value pairs, to apply to an email
+    -- that you send to a destination using @SendBulkTemplatedEmail@.
+    defaultTags :: Prelude.Maybe [MessageTag],
+    -- | A list of replacement values to apply to the template when replacement
+    -- data is not specified in a Destination object. These values act as a
+    -- default or fallback option when no other data is available.
+    --
+    -- The template data is a JSON object, typically consisting of key-value
+    -- pairs in which the keys correspond to replacement tags in the email
+    -- template.
+    defaultTemplateData :: Prelude.Maybe Prelude.Text,
+    -- | The reply-to email address(es) for the message. If the recipient replies
+    -- to the message, each reply-to address will receive the reply.
+    replyToAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The email address that bounces and complaints will be forwarded to when
+    -- feedback forwarding is enabled. If the message cannot be delivered to
+    -- the recipient, then an error message will be returned from the
+    -- recipient\'s ISP; this message will then be forwarded to the email
+    -- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+    -- parameter is never overwritten. This email address must be either
+    -- individually verified with Amazon SES, or from a domain that has been
+    -- verified with Amazon SES.
+    returnPath :: Prelude.Maybe Prelude.Text,
+    -- | 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 email address specified in the @ReturnPath@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to use @feedback\@example.com@, then
+    -- you would specify the @ReturnPathArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @ReturnPath@ to be @feedback\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    returnPathArn :: Prelude.Maybe Prelude.Text,
+    -- | 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 send for the email address specified in the @Source@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to send from @user\@example.com@, then
+    -- you would specify the @SourceArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @Source@ to be @user\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | The ARN of the template to use when sending this email.
+    templateArn :: Prelude.Maybe Prelude.Text,
+    -- | The email address that is sending the email. This email address must be
+    -- either individually verified with Amazon SES, or from a domain that has
+    -- been verified with Amazon SES. For information about verifying
+    -- identities, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+    --
+    -- If you are sending on behalf of another user and have been permitted to
+    -- do so by a sending authorization policy, then you must also specify the
+    -- @SourceArn@ parameter. For more information about sending authorization,
+    -- see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    --
+    -- Amazon SES does not support the SMTPUTF8 extension, as described in
+    -- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+    -- /local part/ of a source email address (the part of the email address
+    -- that precedes the \@ sign) may only contain
+    -- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+    -- If the /domain part/ of an address (the part after the \@ sign) contains
+    -- non-ASCII characters, they must be encoded using Punycode, as described
+    -- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+    -- (also known as the /friendly name/) may contain non-ASCII characters.
+    -- These characters must be encoded using MIME encoded-word syntax, as
+    -- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+    -- encoded-word syntax uses the following form:
+    -- @=?charset?encoding?encoded-text?=@.
+    source :: Prelude.Text,
+    -- | The template to use when sending this email.
+    template :: Prelude.Text,
+    -- | One or more @Destination@ objects. All of the recipients in a
+    -- @Destination@ will receive the same version of the email. You can
+    -- specify up to 50 @Destination@ objects within a @Destinations@ array.
+    destinations :: [BulkEmailDestination]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendBulkTemplatedEmail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'sendBulkTemplatedEmail_configurationSetName' - The name of the configuration set to use when you send an email using
+-- @SendBulkTemplatedEmail@.
+--
+-- 'defaultTags', 'sendBulkTemplatedEmail_defaultTags' - A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send to a destination using @SendBulkTemplatedEmail@.
+--
+-- 'defaultTemplateData', 'sendBulkTemplatedEmail_defaultTemplateData' - A list of replacement values to apply to the template when replacement
+-- data is not specified in a Destination object. These values act as a
+-- default or fallback option when no other data is available.
+--
+-- The template data is a JSON object, typically consisting of key-value
+-- pairs in which the keys correspond to replacement tags in the email
+-- template.
+--
+-- 'replyToAddresses', 'sendBulkTemplatedEmail_replyToAddresses' - The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+--
+-- 'returnPath', 'sendBulkTemplatedEmail_returnPath' - The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+--
+-- 'returnPathArn', 'sendBulkTemplatedEmail_returnPathArn' - 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'sourceArn', 'sendBulkTemplatedEmail_sourceArn' - 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'templateArn', 'sendBulkTemplatedEmail_templateArn' - The ARN of the template to use when sending this email.
+--
+-- 'source', 'sendBulkTemplatedEmail_source' - The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+--
+-- 'template', 'sendBulkTemplatedEmail_template' - The template to use when sending this email.
+--
+-- 'destinations', 'sendBulkTemplatedEmail_destinations' - One or more @Destination@ objects. All of the recipients in a
+-- @Destination@ will receive the same version of the email. You can
+-- specify up to 50 @Destination@ objects within a @Destinations@ array.
+newSendBulkTemplatedEmail ::
+  -- | 'source'
+  Prelude.Text ->
+  -- | 'template'
+  Prelude.Text ->
+  SendBulkTemplatedEmail
+newSendBulkTemplatedEmail pSource_ pTemplate_ =
+  SendBulkTemplatedEmail'
+    { configurationSetName =
+        Prelude.Nothing,
+      defaultTags = Prelude.Nothing,
+      defaultTemplateData = Prelude.Nothing,
+      replyToAddresses = Prelude.Nothing,
+      returnPath = Prelude.Nothing,
+      returnPathArn = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      templateArn = Prelude.Nothing,
+      source = pSource_,
+      template = pTemplate_,
+      destinations = Prelude.mempty
+    }
+
+-- | The name of the configuration set to use when you send an email using
+-- @SendBulkTemplatedEmail@.
+sendBulkTemplatedEmail_configurationSetName :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_configurationSetName = Lens.lens (\SendBulkTemplatedEmail' {configurationSetName} -> configurationSetName) (\s@SendBulkTemplatedEmail' {} a -> s {configurationSetName = a} :: SendBulkTemplatedEmail)
+
+-- | A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send to a destination using @SendBulkTemplatedEmail@.
+sendBulkTemplatedEmail_defaultTags :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe [MessageTag])
+sendBulkTemplatedEmail_defaultTags = Lens.lens (\SendBulkTemplatedEmail' {defaultTags} -> defaultTags) (\s@SendBulkTemplatedEmail' {} a -> s {defaultTags = a} :: SendBulkTemplatedEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of replacement values to apply to the template when replacement
+-- data is not specified in a Destination object. These values act as a
+-- default or fallback option when no other data is available.
+--
+-- The template data is a JSON object, typically consisting of key-value
+-- pairs in which the keys correspond to replacement tags in the email
+-- template.
+sendBulkTemplatedEmail_defaultTemplateData :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_defaultTemplateData = Lens.lens (\SendBulkTemplatedEmail' {defaultTemplateData} -> defaultTemplateData) (\s@SendBulkTemplatedEmail' {} a -> s {defaultTemplateData = a} :: SendBulkTemplatedEmail)
+
+-- | The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+sendBulkTemplatedEmail_replyToAddresses :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe [Prelude.Text])
+sendBulkTemplatedEmail_replyToAddresses = Lens.lens (\SendBulkTemplatedEmail' {replyToAddresses} -> replyToAddresses) (\s@SendBulkTemplatedEmail' {} a -> s {replyToAddresses = a} :: SendBulkTemplatedEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+sendBulkTemplatedEmail_returnPath :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_returnPath = Lens.lens (\SendBulkTemplatedEmail' {returnPath} -> returnPath) (\s@SendBulkTemplatedEmail' {} a -> s {returnPath = a} :: SendBulkTemplatedEmail)
+
+-- | 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendBulkTemplatedEmail_returnPathArn :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_returnPathArn = Lens.lens (\SendBulkTemplatedEmail' {returnPathArn} -> returnPathArn) (\s@SendBulkTemplatedEmail' {} a -> s {returnPathArn = a} :: SendBulkTemplatedEmail)
+
+-- | 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendBulkTemplatedEmail_sourceArn :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_sourceArn = Lens.lens (\SendBulkTemplatedEmail' {sourceArn} -> sourceArn) (\s@SendBulkTemplatedEmail' {} a -> s {sourceArn = a} :: SendBulkTemplatedEmail)
+
+-- | The ARN of the template to use when sending this email.
+sendBulkTemplatedEmail_templateArn :: Lens.Lens' SendBulkTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendBulkTemplatedEmail_templateArn = Lens.lens (\SendBulkTemplatedEmail' {templateArn} -> templateArn) (\s@SendBulkTemplatedEmail' {} a -> s {templateArn = a} :: SendBulkTemplatedEmail)
+
+-- | The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+sendBulkTemplatedEmail_source :: Lens.Lens' SendBulkTemplatedEmail Prelude.Text
+sendBulkTemplatedEmail_source = Lens.lens (\SendBulkTemplatedEmail' {source} -> source) (\s@SendBulkTemplatedEmail' {} a -> s {source = a} :: SendBulkTemplatedEmail)
+
+-- | The template to use when sending this email.
+sendBulkTemplatedEmail_template :: Lens.Lens' SendBulkTemplatedEmail Prelude.Text
+sendBulkTemplatedEmail_template = Lens.lens (\SendBulkTemplatedEmail' {template} -> template) (\s@SendBulkTemplatedEmail' {} a -> s {template = a} :: SendBulkTemplatedEmail)
+
+-- | One or more @Destination@ objects. All of the recipients in a
+-- @Destination@ will receive the same version of the email. You can
+-- specify up to 50 @Destination@ objects within a @Destinations@ array.
+sendBulkTemplatedEmail_destinations :: Lens.Lens' SendBulkTemplatedEmail [BulkEmailDestination]
+sendBulkTemplatedEmail_destinations = Lens.lens (\SendBulkTemplatedEmail' {destinations} -> destinations) (\s@SendBulkTemplatedEmail' {} a -> s {destinations = a} :: SendBulkTemplatedEmail) Prelude.. Lens.coerced
+
+instance Core.AWSRequest SendBulkTemplatedEmail where
+  type
+    AWSResponse SendBulkTemplatedEmail =
+      SendBulkTemplatedEmailResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendBulkTemplatedEmailResult"
+      ( \s h x ->
+          SendBulkTemplatedEmailResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "Status"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLList "member"
+                        )
+      )
+
+instance Prelude.Hashable SendBulkTemplatedEmail where
+  hashWithSalt _salt SendBulkTemplatedEmail' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetName
+      `Prelude.hashWithSalt` defaultTags
+      `Prelude.hashWithSalt` defaultTemplateData
+      `Prelude.hashWithSalt` replyToAddresses
+      `Prelude.hashWithSalt` returnPath
+      `Prelude.hashWithSalt` returnPathArn
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` templateArn
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` template
+      `Prelude.hashWithSalt` destinations
+
+instance Prelude.NFData SendBulkTemplatedEmail where
+  rnf SendBulkTemplatedEmail' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf defaultTags
+      `Prelude.seq` Prelude.rnf defaultTemplateData
+      `Prelude.seq` Prelude.rnf replyToAddresses
+      `Prelude.seq` Prelude.rnf returnPath
+      `Prelude.seq` Prelude.rnf returnPathArn
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf templateArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf template
+      `Prelude.seq` Prelude.rnf destinations
+
+instance Data.ToHeaders SendBulkTemplatedEmail where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendBulkTemplatedEmail where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendBulkTemplatedEmail where
+  toQuery SendBulkTemplatedEmail' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SendBulkTemplatedEmail" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "DefaultTags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> defaultTags),
+        "DefaultTemplateData" Data.=: defaultTemplateData,
+        "ReplyToAddresses"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> replyToAddresses
+            ),
+        "ReturnPath" Data.=: returnPath,
+        "ReturnPathArn" Data.=: returnPathArn,
+        "SourceArn" Data.=: sourceArn,
+        "TemplateArn" Data.=: templateArn,
+        "Source" Data.=: source,
+        "Template" Data.=: template,
+        "Destinations"
+          Data.=: Data.toQueryList "member" destinations
+      ]
+
+-- | /See:/ 'newSendBulkTemplatedEmailResponse' smart constructor.
+data SendBulkTemplatedEmailResponse = SendBulkTemplatedEmailResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique message identifier returned from the @SendBulkTemplatedEmail@
+    -- action.
+    status :: [BulkEmailDestinationStatus]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendBulkTemplatedEmailResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'sendBulkTemplatedEmailResponse_httpStatus' - The response's http status code.
+--
+-- 'status', 'sendBulkTemplatedEmailResponse_status' - The unique message identifier returned from the @SendBulkTemplatedEmail@
+-- action.
+newSendBulkTemplatedEmailResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendBulkTemplatedEmailResponse
+newSendBulkTemplatedEmailResponse pHttpStatus_ =
+  SendBulkTemplatedEmailResponse'
+    { httpStatus =
+        pHttpStatus_,
+      status = Prelude.mempty
+    }
+
+-- | The response's http status code.
+sendBulkTemplatedEmailResponse_httpStatus :: Lens.Lens' SendBulkTemplatedEmailResponse Prelude.Int
+sendBulkTemplatedEmailResponse_httpStatus = Lens.lens (\SendBulkTemplatedEmailResponse' {httpStatus} -> httpStatus) (\s@SendBulkTemplatedEmailResponse' {} a -> s {httpStatus = a} :: SendBulkTemplatedEmailResponse)
+
+-- | The unique message identifier returned from the @SendBulkTemplatedEmail@
+-- action.
+sendBulkTemplatedEmailResponse_status :: Lens.Lens' SendBulkTemplatedEmailResponse [BulkEmailDestinationStatus]
+sendBulkTemplatedEmailResponse_status = Lens.lens (\SendBulkTemplatedEmailResponse' {status} -> status) (\s@SendBulkTemplatedEmailResponse' {} a -> s {status = a} :: SendBulkTemplatedEmailResponse) Prelude.. Lens.coerced
+
+instance
+  Prelude.NFData
+    SendBulkTemplatedEmailResponse
+  where
+  rnf SendBulkTemplatedEmailResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SES/SendCustomVerificationEmail.hs b/gen/Amazonka/SES/SendCustomVerificationEmail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendCustomVerificationEmail.hs
@@ -0,0 +1,220 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendCustomVerificationEmail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds an email address to the list of identities for your Amazon SES
+-- account in the current AWS Region and attempts to verify it. As a result
+-- of executing this operation, a customized verification email is sent to
+-- the specified address.
+--
+-- To use this operation, you must first create a custom verification email
+-- template. For more information about creating and using custom
+-- verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.SendCustomVerificationEmail
+  ( -- * Creating a Request
+    SendCustomVerificationEmail (..),
+    newSendCustomVerificationEmail,
+
+    -- * Request Lenses
+    sendCustomVerificationEmail_configurationSetName,
+    sendCustomVerificationEmail_emailAddress,
+    sendCustomVerificationEmail_templateName,
+
+    -- * Destructuring the Response
+    SendCustomVerificationEmailResponse (..),
+    newSendCustomVerificationEmailResponse,
+
+    -- * Response Lenses
+    sendCustomVerificationEmailResponse_messageId,
+    sendCustomVerificationEmailResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a custom verification email to a specified
+-- recipient.
+--
+-- /See:/ 'newSendCustomVerificationEmail' smart constructor.
+data SendCustomVerificationEmail = SendCustomVerificationEmail'
+  { -- | Name of a configuration set to use when sending the verification email.
+    configurationSetName :: Prelude.Maybe Prelude.Text,
+    -- | The email address to verify.
+    emailAddress :: Prelude.Text,
+    -- | The name of the custom verification email template to use when sending
+    -- the verification email.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendCustomVerificationEmail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'sendCustomVerificationEmail_configurationSetName' - Name of a configuration set to use when sending the verification email.
+--
+-- 'emailAddress', 'sendCustomVerificationEmail_emailAddress' - The email address to verify.
+--
+-- 'templateName', 'sendCustomVerificationEmail_templateName' - The name of the custom verification email template to use when sending
+-- the verification email.
+newSendCustomVerificationEmail ::
+  -- | 'emailAddress'
+  Prelude.Text ->
+  -- | 'templateName'
+  Prelude.Text ->
+  SendCustomVerificationEmail
+newSendCustomVerificationEmail
+  pEmailAddress_
+  pTemplateName_ =
+    SendCustomVerificationEmail'
+      { configurationSetName =
+          Prelude.Nothing,
+        emailAddress = pEmailAddress_,
+        templateName = pTemplateName_
+      }
+
+-- | Name of a configuration set to use when sending the verification email.
+sendCustomVerificationEmail_configurationSetName :: Lens.Lens' SendCustomVerificationEmail (Prelude.Maybe Prelude.Text)
+sendCustomVerificationEmail_configurationSetName = Lens.lens (\SendCustomVerificationEmail' {configurationSetName} -> configurationSetName) (\s@SendCustomVerificationEmail' {} a -> s {configurationSetName = a} :: SendCustomVerificationEmail)
+
+-- | The email address to verify.
+sendCustomVerificationEmail_emailAddress :: Lens.Lens' SendCustomVerificationEmail Prelude.Text
+sendCustomVerificationEmail_emailAddress = Lens.lens (\SendCustomVerificationEmail' {emailAddress} -> emailAddress) (\s@SendCustomVerificationEmail' {} a -> s {emailAddress = a} :: SendCustomVerificationEmail)
+
+-- | The name of the custom verification email template to use when sending
+-- the verification email.
+sendCustomVerificationEmail_templateName :: Lens.Lens' SendCustomVerificationEmail Prelude.Text
+sendCustomVerificationEmail_templateName = Lens.lens (\SendCustomVerificationEmail' {templateName} -> templateName) (\s@SendCustomVerificationEmail' {} a -> s {templateName = a} :: SendCustomVerificationEmail)
+
+instance Core.AWSRequest SendCustomVerificationEmail where
+  type
+    AWSResponse SendCustomVerificationEmail =
+      SendCustomVerificationEmailResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendCustomVerificationEmailResult"
+      ( \s h x ->
+          SendCustomVerificationEmailResponse'
+            Prelude.<$> (x Data..@? "MessageId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SendCustomVerificationEmail where
+  hashWithSalt _salt SendCustomVerificationEmail' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetName
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` templateName
+
+instance Prelude.NFData SendCustomVerificationEmail where
+  rnf SendCustomVerificationEmail' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf templateName
+
+instance Data.ToHeaders SendCustomVerificationEmail where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendCustomVerificationEmail where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendCustomVerificationEmail where
+  toQuery SendCustomVerificationEmail' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "SendCustomVerificationEmail" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "EmailAddress" Data.=: emailAddress,
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | The response received when attempting to send the custom verification
+-- email.
+--
+-- /See:/ 'newSendCustomVerificationEmailResponse' smart constructor.
+data SendCustomVerificationEmailResponse = SendCustomVerificationEmailResponse'
+  { -- | The unique message identifier returned from the
+    -- @SendCustomVerificationEmail@ operation.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendCustomVerificationEmailResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'messageId', 'sendCustomVerificationEmailResponse_messageId' - The unique message identifier returned from the
+-- @SendCustomVerificationEmail@ operation.
+--
+-- 'httpStatus', 'sendCustomVerificationEmailResponse_httpStatus' - The response's http status code.
+newSendCustomVerificationEmailResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SendCustomVerificationEmailResponse
+newSendCustomVerificationEmailResponse pHttpStatus_ =
+  SendCustomVerificationEmailResponse'
+    { messageId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The unique message identifier returned from the
+-- @SendCustomVerificationEmail@ operation.
+sendCustomVerificationEmailResponse_messageId :: Lens.Lens' SendCustomVerificationEmailResponse (Prelude.Maybe Prelude.Text)
+sendCustomVerificationEmailResponse_messageId = Lens.lens (\SendCustomVerificationEmailResponse' {messageId} -> messageId) (\s@SendCustomVerificationEmailResponse' {} a -> s {messageId = a} :: SendCustomVerificationEmailResponse)
+
+-- | The response's http status code.
+sendCustomVerificationEmailResponse_httpStatus :: Lens.Lens' SendCustomVerificationEmailResponse Prelude.Int
+sendCustomVerificationEmailResponse_httpStatus = Lens.lens (\SendCustomVerificationEmailResponse' {httpStatus} -> httpStatus) (\s@SendCustomVerificationEmailResponse' {} a -> s {httpStatus = a} :: SendCustomVerificationEmailResponse)
+
+instance
+  Prelude.NFData
+    SendCustomVerificationEmailResponse
+  where
+  rnf SendCustomVerificationEmailResponse' {..} =
+    Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SendEmail.hs b/gen/Amazonka/SES/SendEmail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendEmail.hs
@@ -0,0 +1,500 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendEmail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Composes an email message and immediately queues it for sending. In
+-- order to send email using the @SendEmail@ operation, your message must
+-- meet the following requirements:
+--
+-- -   The message must be sent from a verified email address or domain. If
+--     you attempt to send email using a non-verified address or domain,
+--     the operation will result in an \"Email address not verified\"
+--     error.
+--
+-- -   If your account is still in the Amazon SES sandbox, you may only
+--     send to verified addresses or domains, or to email addresses
+--     associated with the Amazon SES Mailbox Simulator. For more
+--     information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains>
+--     in the /Amazon SES Developer Guide./
+--
+-- -   The maximum message size is 10 MB.
+--
+-- -   The message must include at least one recipient email address. The
+--     recipient address can be a To: address, a CC: address, or a BCC:
+--     address. If a recipient email address is invalid (that is, it is not
+--     in the format /UserName\@[SubDomain.]Domain.TopLevelDomain/), the
+--     entire message will be rejected, even if the message contains other
+--     recipients that are valid.
+--
+-- -   The message may not include more than 50 recipients, across the To:,
+--     CC: and BCC: fields. If you need to send an email message to a
+--     larger audience, you can divide your recipient list into groups of
+--     50 or fewer, and then call the @SendEmail@ operation several times
+--     to send the message to each group.
+--
+-- For every message that you send, the total number of recipients
+-- (including each recipient in the To:, CC: and BCC: fields) is counted
+-- against the maximum number of emails you can send in a 24-hour period
+-- (your /sending quota/). For more information about sending quotas in
+-- Amazon SES, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Managing Your Amazon SES Sending Limits>
+-- in the /Amazon SES Developer Guide./
+module Amazonka.SES.SendEmail
+  ( -- * Creating a Request
+    SendEmail (..),
+    newSendEmail,
+
+    -- * Request Lenses
+    sendEmail_configurationSetName,
+    sendEmail_replyToAddresses,
+    sendEmail_returnPath,
+    sendEmail_returnPathArn,
+    sendEmail_sourceArn,
+    sendEmail_tags,
+    sendEmail_source,
+    sendEmail_destination,
+    sendEmail_message,
+
+    -- * Destructuring the Response
+    SendEmailResponse (..),
+    newSendEmailResponse,
+
+    -- * Response Lenses
+    sendEmailResponse_httpStatus,
+    sendEmailResponse_messageId,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a single formatted email using Amazon SES.
+-- For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-formatted.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSendEmail' smart constructor.
+data SendEmail = SendEmail'
+  { -- | The name of the configuration set to use when you send an email using
+    -- @SendEmail@.
+    configurationSetName :: Prelude.Maybe Prelude.Text,
+    -- | The reply-to email address(es) for the message. If the recipient replies
+    -- to the message, each reply-to address will receive the reply.
+    replyToAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The email address that bounces and complaints will be forwarded to when
+    -- feedback forwarding is enabled. If the message cannot be delivered to
+    -- the recipient, then an error message will be returned from the
+    -- recipient\'s ISP; this message will then be forwarded to the email
+    -- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+    -- parameter is never overwritten. This email address must be either
+    -- individually verified with Amazon SES, or from a domain that has been
+    -- verified with Amazon SES.
+    returnPath :: Prelude.Maybe Prelude.Text,
+    -- | 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 email address specified in the @ReturnPath@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to use @feedback\@example.com@, then
+    -- you would specify the @ReturnPathArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @ReturnPath@ to be @feedback\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    returnPathArn :: Prelude.Maybe Prelude.Text,
+    -- | 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 send for the email address specified in the @Source@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to send from @user\@example.com@, then
+    -- you would specify the @SourceArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @Source@ to be @user\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags, in the form of name\/value pairs, to apply to an email
+    -- that you send using @SendEmail@. Tags correspond to characteristics of
+    -- the email that you define, so that you can publish email sending events.
+    tags :: Prelude.Maybe [MessageTag],
+    -- | The email address that is sending the email. This email address must be
+    -- either individually verified with Amazon SES, or from a domain that has
+    -- been verified with Amazon SES. For information about verifying
+    -- identities, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+    --
+    -- If you are sending on behalf of another user and have been permitted to
+    -- do so by a sending authorization policy, then you must also specify the
+    -- @SourceArn@ parameter. For more information about sending authorization,
+    -- see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    --
+    -- Amazon SES does not support the SMTPUTF8 extension, as described in
+    -- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+    -- /local part/ of a source email address (the part of the email address
+    -- that precedes the \@ sign) may only contain
+    -- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+    -- If the /domain part/ of an address (the part after the \@ sign) contains
+    -- non-ASCII characters, they must be encoded using Punycode, as described
+    -- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+    -- (also known as the /friendly name/) may contain non-ASCII characters.
+    -- These characters must be encoded using MIME encoded-word syntax, as
+    -- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+    -- encoded-word syntax uses the following form:
+    -- @=?charset?encoding?encoded-text?=@.
+    source :: Prelude.Text,
+    -- | The destination for this email, composed of To:, CC:, and BCC: fields.
+    destination :: Destination,
+    -- | The message to be sent.
+    message :: Message
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendEmail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'sendEmail_configurationSetName' - The name of the configuration set to use when you send an email using
+-- @SendEmail@.
+--
+-- 'replyToAddresses', 'sendEmail_replyToAddresses' - The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+--
+-- 'returnPath', 'sendEmail_returnPath' - The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+--
+-- 'returnPathArn', 'sendEmail_returnPathArn' - 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'sourceArn', 'sendEmail_sourceArn' - 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'tags', 'sendEmail_tags' - A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendEmail@. Tags correspond to characteristics of
+-- the email that you define, so that you can publish email sending events.
+--
+-- 'source', 'sendEmail_source' - The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+--
+-- 'destination', 'sendEmail_destination' - The destination for this email, composed of To:, CC:, and BCC: fields.
+--
+-- 'message', 'sendEmail_message' - The message to be sent.
+newSendEmail ::
+  -- | 'source'
+  Prelude.Text ->
+  -- | 'destination'
+  Destination ->
+  -- | 'message'
+  Message ->
+  SendEmail
+newSendEmail pSource_ pDestination_ pMessage_ =
+  SendEmail'
+    { configurationSetName = Prelude.Nothing,
+      replyToAddresses = Prelude.Nothing,
+      returnPath = Prelude.Nothing,
+      returnPathArn = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      source = pSource_,
+      destination = pDestination_,
+      message = pMessage_
+    }
+
+-- | The name of the configuration set to use when you send an email using
+-- @SendEmail@.
+sendEmail_configurationSetName :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)
+sendEmail_configurationSetName = Lens.lens (\SendEmail' {configurationSetName} -> configurationSetName) (\s@SendEmail' {} a -> s {configurationSetName = a} :: SendEmail)
+
+-- | The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+sendEmail_replyToAddresses :: Lens.Lens' SendEmail (Prelude.Maybe [Prelude.Text])
+sendEmail_replyToAddresses = Lens.lens (\SendEmail' {replyToAddresses} -> replyToAddresses) (\s@SendEmail' {} a -> s {replyToAddresses = a} :: SendEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+sendEmail_returnPath :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)
+sendEmail_returnPath = Lens.lens (\SendEmail' {returnPath} -> returnPath) (\s@SendEmail' {} a -> s {returnPath = a} :: SendEmail)
+
+-- | 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendEmail_returnPathArn :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)
+sendEmail_returnPathArn = Lens.lens (\SendEmail' {returnPathArn} -> returnPathArn) (\s@SendEmail' {} a -> s {returnPathArn = a} :: SendEmail)
+
+-- | 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendEmail_sourceArn :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)
+sendEmail_sourceArn = Lens.lens (\SendEmail' {sourceArn} -> sourceArn) (\s@SendEmail' {} a -> s {sourceArn = a} :: SendEmail)
+
+-- | A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendEmail@. Tags correspond to characteristics of
+-- the email that you define, so that you can publish email sending events.
+sendEmail_tags :: Lens.Lens' SendEmail (Prelude.Maybe [MessageTag])
+sendEmail_tags = Lens.lens (\SendEmail' {tags} -> tags) (\s@SendEmail' {} a -> s {tags = a} :: SendEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+sendEmail_source :: Lens.Lens' SendEmail Prelude.Text
+sendEmail_source = Lens.lens (\SendEmail' {source} -> source) (\s@SendEmail' {} a -> s {source = a} :: SendEmail)
+
+-- | The destination for this email, composed of To:, CC:, and BCC: fields.
+sendEmail_destination :: Lens.Lens' SendEmail Destination
+sendEmail_destination = Lens.lens (\SendEmail' {destination} -> destination) (\s@SendEmail' {} a -> s {destination = a} :: SendEmail)
+
+-- | The message to be sent.
+sendEmail_message :: Lens.Lens' SendEmail Message
+sendEmail_message = Lens.lens (\SendEmail' {message} -> message) (\s@SendEmail' {} a -> s {message = a} :: SendEmail)
+
+instance Core.AWSRequest SendEmail where
+  type AWSResponse SendEmail = SendEmailResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendEmailResult"
+      ( \s h x ->
+          SendEmailResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..@ "MessageId")
+      )
+
+instance Prelude.Hashable SendEmail where
+  hashWithSalt _salt SendEmail' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetName
+      `Prelude.hashWithSalt` replyToAddresses
+      `Prelude.hashWithSalt` returnPath
+      `Prelude.hashWithSalt` returnPathArn
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` message
+
+instance Prelude.NFData SendEmail where
+  rnf SendEmail' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf replyToAddresses
+      `Prelude.seq` Prelude.rnf returnPath
+      `Prelude.seq` Prelude.rnf returnPathArn
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf message
+
+instance Data.ToHeaders SendEmail where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendEmail where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendEmail where
+  toQuery SendEmail' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SendEmail" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "ReplyToAddresses"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> replyToAddresses
+            ),
+        "ReturnPath" Data.=: returnPath,
+        "ReturnPathArn" Data.=: returnPathArn,
+        "SourceArn" Data.=: sourceArn,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> tags),
+        "Source" Data.=: source,
+        "Destination" Data.=: destination,
+        "Message" Data.=: message
+      ]
+
+-- | Represents a unique message ID.
+--
+-- /See:/ 'newSendEmailResponse' smart constructor.
+data SendEmailResponse = SendEmailResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique message identifier returned from the @SendEmail@ action.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendEmailResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'sendEmailResponse_httpStatus' - The response's http status code.
+--
+-- 'messageId', 'sendEmailResponse_messageId' - The unique message identifier returned from the @SendEmail@ action.
+newSendEmailResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'messageId'
+  Prelude.Text ->
+  SendEmailResponse
+newSendEmailResponse pHttpStatus_ pMessageId_ =
+  SendEmailResponse'
+    { httpStatus = pHttpStatus_,
+      messageId = pMessageId_
+    }
+
+-- | The response's http status code.
+sendEmailResponse_httpStatus :: Lens.Lens' SendEmailResponse Prelude.Int
+sendEmailResponse_httpStatus = Lens.lens (\SendEmailResponse' {httpStatus} -> httpStatus) (\s@SendEmailResponse' {} a -> s {httpStatus = a} :: SendEmailResponse)
+
+-- | The unique message identifier returned from the @SendEmail@ action.
+sendEmailResponse_messageId :: Lens.Lens' SendEmailResponse Prelude.Text
+sendEmailResponse_messageId = Lens.lens (\SendEmailResponse' {messageId} -> messageId) (\s@SendEmailResponse' {} a -> s {messageId = a} :: SendEmailResponse)
+
+instance Prelude.NFData SendEmailResponse where
+  rnf SendEmailResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf messageId
diff --git a/gen/Amazonka/SES/SendRawEmail.hs b/gen/Amazonka/SES/SendRawEmail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendRawEmail.hs
@@ -0,0 +1,656 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendRawEmail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Composes an email message and immediately queues it for sending.
+--
+-- This operation is more flexible than the @SendEmail@ API operation. When
+-- you use the @SendRawEmail@ operation, you can specify the headers of the
+-- message as well as its content. This flexibility is useful, for example,
+-- when you want to send a multipart MIME email (such a message that
+-- contains both a text and an HTML version). You can also use this
+-- operation to send messages that include attachments.
+--
+-- The @SendRawEmail@ operation has the following requirements:
+--
+-- -   You can only send email from
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html verified email addresses or domains>.
+--     If you try to send email from an address that isn\'t verified, the
+--     operation results in an \"Email address not verified\" error.
+--
+-- -   If your account is still in the
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/request-production-access.html Amazon SES sandbox>,
+--     you can only send email to other verified addresses in your account,
+--     or to addresses that are associated with the
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mailbox-simulator.html Amazon SES mailbox simulator>.
+--
+-- -   The maximum message size, including attachments, is 10 MB.
+--
+-- -   Each message has to include at least one recipient address. A
+--     recipient address includes any address on the To:, CC:, or BCC:
+--     lines.
+--
+-- -   If you send a single message to more than one recipient address, and
+--     one of the recipient addresses isn\'t in a valid format (that is,
+--     it\'s not in the format
+--     /UserName\@[SubDomain.]Domain.TopLevelDomain/), Amazon SES rejects
+--     the entire message, even if the other addresses are valid.
+--
+-- -   Each message can include up to 50 recipient addresses across the
+--     To:, CC:, or BCC: lines. If you need to send a single message to
+--     more than 50 recipients, you have to split the list of recipient
+--     addresses into groups of less than 50 recipients, and send separate
+--     messages to each group.
+--
+-- -   Amazon SES allows you to specify 8-bit Content-Transfer-Encoding for
+--     MIME message parts. However, if Amazon SES has to modify the
+--     contents of your message (for example, if you use open and click
+--     tracking), 8-bit content isn\'t preserved. For this reason, we
+--     highly recommend that you encode all content that isn\'t 7-bit
+--     ASCII. For more information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html#send-email-mime-encoding MIME Encoding>
+--     in the /Amazon SES Developer Guide/.
+--
+-- Additionally, keep the following considerations in mind when using the
+-- @SendRawEmail@ operation:
+--
+-- -   Although you can customize the message headers when using the
+--     @SendRawEmail@ operation, Amazon SES will automatically apply its
+--     own @Message-ID@ and @Date@ headers; if you passed these headers
+--     when creating the message, they will be overwritten by the values
+--     that Amazon SES provides.
+--
+-- -   If you are using sending authorization to send on behalf of another
+--     user, @SendRawEmail@ enables you to specify the cross-account
+--     identity for the email\'s Source, From, and Return-Path parameters
+--     in one of two ways: you can pass optional parameters @SourceArn@,
+--     @FromArn@, and\/or @ReturnPathArn@ to the API, or you can include
+--     the following X-headers in the header of your raw email:
+--
+--     -   @X-SES-SOURCE-ARN@
+--
+--     -   @X-SES-FROM-ARN@
+--
+--     -   @X-SES-RETURN-PATH-ARN@
+--
+--     Don\'t include these X-headers in the DKIM signature. Amazon SES
+--     removes these before it sends the email.
+--
+--     If you only specify the @SourceIdentityArn@ parameter, Amazon SES
+--     sets the From and Return-Path addresses to the same identity that
+--     you specified.
+--
+--     For more information about sending authorization, see the
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Using Sending Authorization with Amazon SES>
+--     in the /Amazon SES Developer Guide./
+--
+-- -   For every message that you send, the total number of recipients
+--     (including each recipient in the To:, CC: and BCC: fields) is
+--     counted against the maximum number of emails you can send in a
+--     24-hour period (your /sending quota/). For more information about
+--     sending quotas in Amazon SES, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Managing Your Amazon SES Sending Limits>
+--     in the /Amazon SES Developer Guide./
+module Amazonka.SES.SendRawEmail
+  ( -- * Creating a Request
+    SendRawEmail (..),
+    newSendRawEmail,
+
+    -- * Request Lenses
+    sendRawEmail_configurationSetName,
+    sendRawEmail_destinations,
+    sendRawEmail_fromArn,
+    sendRawEmail_returnPathArn,
+    sendRawEmail_source,
+    sendRawEmail_sourceArn,
+    sendRawEmail_tags,
+    sendRawEmail_rawMessage,
+
+    -- * Destructuring the Response
+    SendRawEmailResponse (..),
+    newSendRawEmailResponse,
+
+    -- * Response Lenses
+    sendRawEmailResponse_httpStatus,
+    sendRawEmailResponse_messageId,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a single raw email using Amazon SES. For
+-- more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSendRawEmail' smart constructor.
+data SendRawEmail = SendRawEmail'
+  { -- | The name of the configuration set to use when you send an email using
+    -- @SendRawEmail@.
+    configurationSetName :: Prelude.Maybe Prelude.Text,
+    -- | A list of destinations for the message, consisting of To:, CC:, and BCC:
+    -- addresses.
+    destinations :: Prelude.Maybe [Prelude.Text],
+    -- | 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 specify a particular \"From\" address in the header
+    -- of the raw email.
+    --
+    -- Instead of using this parameter, you can use the X-header
+    -- @X-SES-FROM-ARN@ in the raw message of the email. If you use both the
+    -- @FromArn@ parameter and the corresponding X-header, Amazon SES uses the
+    -- value of the @FromArn@ parameter.
+    --
+    -- For information about when to use this parameter, see the description of
+    -- @SendRawEmail@ in this guide, or see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+    fromArn :: Prelude.Maybe Prelude.Text,
+    -- | 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 email address specified in the @ReturnPath@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to use @feedback\@example.com@, then
+    -- you would specify the @ReturnPathArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @ReturnPath@ to be @feedback\@example.com@.
+    --
+    -- Instead of using this parameter, you can use the X-header
+    -- @X-SES-RETURN-PATH-ARN@ in the raw message of the email. If you use both
+    -- the @ReturnPathArn@ parameter and the corresponding X-header, Amazon SES
+    -- uses the value of the @ReturnPathArn@ parameter.
+    --
+    -- For information about when to use this parameter, see the description of
+    -- @SendRawEmail@ in this guide, or see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+    returnPathArn :: Prelude.Maybe Prelude.Text,
+    -- | The identity\'s email address. If you do not provide a value for this
+    -- parameter, you must specify a \"From\" address in the raw text of the
+    -- message. (You can also specify both.)
+    --
+    -- Amazon SES does not support the SMTPUTF8 extension, as described
+    -- in<https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+    -- /local part/ of a source email address (the part of the email address
+    -- that precedes the \@ sign) may only contain
+    -- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+    -- If the /domain part/ of an address (the part after the \@ sign) contains
+    -- non-ASCII characters, they must be encoded using Punycode, as described
+    -- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+    -- (also known as the /friendly name/) may contain non-ASCII characters.
+    -- These characters must be encoded using MIME encoded-word syntax, as
+    -- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+    -- encoded-word syntax uses the following form:
+    -- @=?charset?encoding?encoded-text?=@.
+    --
+    -- If you specify the @Source@ parameter and have feedback forwarding
+    -- enabled, then bounces and complaints will be sent to this email address.
+    -- This takes precedence over any Return-Path header that you might include
+    -- in the raw text of the message.
+    source :: Prelude.Maybe Prelude.Text,
+    -- | 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 send for the email address specified in the @Source@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to send from @user\@example.com@, then
+    -- you would specify the @SourceArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @Source@ to be @user\@example.com@.
+    --
+    -- Instead of using this parameter, you can use the X-header
+    -- @X-SES-SOURCE-ARN@ in the raw message of the email. If you use both the
+    -- @SourceArn@ parameter and the corresponding X-header, Amazon SES uses
+    -- the value of the @SourceArn@ parameter.
+    --
+    -- For information about when to use this parameter, see the description of
+    -- @SendRawEmail@ in this guide, or see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags, in the form of name\/value pairs, to apply to an email
+    -- that you send using @SendRawEmail@. Tags correspond to characteristics
+    -- of the email that you define, so that you can publish email sending
+    -- events.
+    tags :: Prelude.Maybe [MessageTag],
+    -- | The raw email message itself. The message has to meet the following
+    -- criteria:
+    --
+    -- -   The message has to contain a header and a body, separated by a blank
+    --     line.
+    --
+    -- -   All of the required header fields must be present in the message.
+    --
+    -- -   Each part of a multipart MIME message must be formatted properly.
+    --
+    -- -   Attachments must be of a content type that Amazon SES supports. For
+    --     a list on unsupported content types, see
+    --     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Unsupported Attachment Types>
+    --     in the /Amazon SES Developer Guide/.
+    --
+    -- -   The entire message must be base64-encoded.
+    --
+    -- -   If any of the MIME parts in your message contain content that is
+    --     outside of the 7-bit ASCII character range, we highly recommend that
+    --     you encode that content. For more information, see
+    --     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Sending Raw Email>
+    --     in the /Amazon SES Developer Guide/.
+    --
+    -- -   Per
+    --     <https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6 RFC 5321>,
+    --     the maximum length of each line of text, including the \<CRLF>, must
+    --     not exceed 1,000 characters.
+    rawMessage :: RawMessage
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendRawEmail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'sendRawEmail_configurationSetName' - The name of the configuration set to use when you send an email using
+-- @SendRawEmail@.
+--
+-- 'destinations', 'sendRawEmail_destinations' - A list of destinations for the message, consisting of To:, CC:, and BCC:
+-- addresses.
+--
+-- 'fromArn', 'sendRawEmail_fromArn' - 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 specify a particular \"From\" address in the header
+-- of the raw email.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-FROM-ARN@ in the raw message of the email. If you use both the
+-- @FromArn@ parameter and the corresponding X-header, Amazon SES uses the
+-- value of the @FromArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+--
+-- 'returnPathArn', 'sendRawEmail_returnPathArn' - 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-RETURN-PATH-ARN@ in the raw message of the email. If you use both
+-- the @ReturnPathArn@ parameter and the corresponding X-header, Amazon SES
+-- uses the value of the @ReturnPathArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+--
+-- 'source', 'sendRawEmail_source' - The identity\'s email address. If you do not provide a value for this
+-- parameter, you must specify a \"From\" address in the raw text of the
+-- message. (You can also specify both.)
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described
+-- in<https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+--
+-- If you specify the @Source@ parameter and have feedback forwarding
+-- enabled, then bounces and complaints will be sent to this email address.
+-- This takes precedence over any Return-Path header that you might include
+-- in the raw text of the message.
+--
+-- 'sourceArn', 'sendRawEmail_sourceArn' - 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-SOURCE-ARN@ in the raw message of the email. If you use both the
+-- @SourceArn@ parameter and the corresponding X-header, Amazon SES uses
+-- the value of the @SourceArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+--
+-- 'tags', 'sendRawEmail_tags' - A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendRawEmail@. Tags correspond to characteristics
+-- of the email that you define, so that you can publish email sending
+-- events.
+--
+-- 'rawMessage', 'sendRawEmail_rawMessage' - The raw email message itself. The message has to meet the following
+-- criteria:
+--
+-- -   The message has to contain a header and a body, separated by a blank
+--     line.
+--
+-- -   All of the required header fields must be present in the message.
+--
+-- -   Each part of a multipart MIME message must be formatted properly.
+--
+-- -   Attachments must be of a content type that Amazon SES supports. For
+--     a list on unsupported content types, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Unsupported Attachment Types>
+--     in the /Amazon SES Developer Guide/.
+--
+-- -   The entire message must be base64-encoded.
+--
+-- -   If any of the MIME parts in your message contain content that is
+--     outside of the 7-bit ASCII character range, we highly recommend that
+--     you encode that content. For more information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Sending Raw Email>
+--     in the /Amazon SES Developer Guide/.
+--
+-- -   Per
+--     <https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6 RFC 5321>,
+--     the maximum length of each line of text, including the \<CRLF>, must
+--     not exceed 1,000 characters.
+newSendRawEmail ::
+  -- | 'rawMessage'
+  RawMessage ->
+  SendRawEmail
+newSendRawEmail pRawMessage_ =
+  SendRawEmail'
+    { configurationSetName =
+        Prelude.Nothing,
+      destinations = Prelude.Nothing,
+      fromArn = Prelude.Nothing,
+      returnPathArn = Prelude.Nothing,
+      source = Prelude.Nothing,
+      sourceArn = Prelude.Nothing,
+      tags = Prelude.Nothing,
+      rawMessage = pRawMessage_
+    }
+
+-- | The name of the configuration set to use when you send an email using
+-- @SendRawEmail@.
+sendRawEmail_configurationSetName :: Lens.Lens' SendRawEmail (Prelude.Maybe Prelude.Text)
+sendRawEmail_configurationSetName = Lens.lens (\SendRawEmail' {configurationSetName} -> configurationSetName) (\s@SendRawEmail' {} a -> s {configurationSetName = a} :: SendRawEmail)
+
+-- | A list of destinations for the message, consisting of To:, CC:, and BCC:
+-- addresses.
+sendRawEmail_destinations :: Lens.Lens' SendRawEmail (Prelude.Maybe [Prelude.Text])
+sendRawEmail_destinations = Lens.lens (\SendRawEmail' {destinations} -> destinations) (\s@SendRawEmail' {} a -> s {destinations = a} :: SendRawEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | 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 specify a particular \"From\" address in the header
+-- of the raw email.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-FROM-ARN@ in the raw message of the email. If you use both the
+-- @FromArn@ parameter and the corresponding X-header, Amazon SES uses the
+-- value of the @FromArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sendRawEmail_fromArn :: Lens.Lens' SendRawEmail (Prelude.Maybe Prelude.Text)
+sendRawEmail_fromArn = Lens.lens (\SendRawEmail' {fromArn} -> fromArn) (\s@SendRawEmail' {} a -> s {fromArn = a} :: SendRawEmail)
+
+-- | 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-RETURN-PATH-ARN@ in the raw message of the email. If you use both
+-- the @ReturnPathArn@ parameter and the corresponding X-header, Amazon SES
+-- uses the value of the @ReturnPathArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sendRawEmail_returnPathArn :: Lens.Lens' SendRawEmail (Prelude.Maybe Prelude.Text)
+sendRawEmail_returnPathArn = Lens.lens (\SendRawEmail' {returnPathArn} -> returnPathArn) (\s@SendRawEmail' {} a -> s {returnPathArn = a} :: SendRawEmail)
+
+-- | The identity\'s email address. If you do not provide a value for this
+-- parameter, you must specify a \"From\" address in the raw text of the
+-- message. (You can also specify both.)
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described
+-- in<https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in <https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+--
+-- If you specify the @Source@ parameter and have feedback forwarding
+-- enabled, then bounces and complaints will be sent to this email address.
+-- This takes precedence over any Return-Path header that you might include
+-- in the raw text of the message.
+sendRawEmail_source :: Lens.Lens' SendRawEmail (Prelude.Maybe Prelude.Text)
+sendRawEmail_source = Lens.lens (\SendRawEmail' {source} -> source) (\s@SendRawEmail' {} a -> s {source = a} :: SendRawEmail)
+
+-- | 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- Instead of using this parameter, you can use the X-header
+-- @X-SES-SOURCE-ARN@ in the raw message of the email. If you use both the
+-- @SourceArn@ parameter and the corresponding X-header, Amazon SES uses
+-- the value of the @SourceArn@ parameter.
+--
+-- For information about when to use this parameter, see the description of
+-- @SendRawEmail@ in this guide, or see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-delegate-sender-tasks-email.html Amazon SES Developer Guide>.
+sendRawEmail_sourceArn :: Lens.Lens' SendRawEmail (Prelude.Maybe Prelude.Text)
+sendRawEmail_sourceArn = Lens.lens (\SendRawEmail' {sourceArn} -> sourceArn) (\s@SendRawEmail' {} a -> s {sourceArn = a} :: SendRawEmail)
+
+-- | A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendRawEmail@. Tags correspond to characteristics
+-- of the email that you define, so that you can publish email sending
+-- events.
+sendRawEmail_tags :: Lens.Lens' SendRawEmail (Prelude.Maybe [MessageTag])
+sendRawEmail_tags = Lens.lens (\SendRawEmail' {tags} -> tags) (\s@SendRawEmail' {} a -> s {tags = a} :: SendRawEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The raw email message itself. The message has to meet the following
+-- criteria:
+--
+-- -   The message has to contain a header and a body, separated by a blank
+--     line.
+--
+-- -   All of the required header fields must be present in the message.
+--
+-- -   Each part of a multipart MIME message must be formatted properly.
+--
+-- -   Attachments must be of a content type that Amazon SES supports. For
+--     a list on unsupported content types, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Unsupported Attachment Types>
+--     in the /Amazon SES Developer Guide/.
+--
+-- -   The entire message must be base64-encoded.
+--
+-- -   If any of the MIME parts in your message contain content that is
+--     outside of the 7-bit ASCII character range, we highly recommend that
+--     you encode that content. For more information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Sending Raw Email>
+--     in the /Amazon SES Developer Guide/.
+--
+-- -   Per
+--     <https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6 RFC 5321>,
+--     the maximum length of each line of text, including the \<CRLF>, must
+--     not exceed 1,000 characters.
+sendRawEmail_rawMessage :: Lens.Lens' SendRawEmail RawMessage
+sendRawEmail_rawMessage = Lens.lens (\SendRawEmail' {rawMessage} -> rawMessage) (\s@SendRawEmail' {} a -> s {rawMessage = a} :: SendRawEmail)
+
+instance Core.AWSRequest SendRawEmail where
+  type AWSResponse SendRawEmail = SendRawEmailResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendRawEmailResult"
+      ( \s h x ->
+          SendRawEmailResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..@ "MessageId")
+      )
+
+instance Prelude.Hashable SendRawEmail where
+  hashWithSalt _salt SendRawEmail' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetName
+      `Prelude.hashWithSalt` destinations
+      `Prelude.hashWithSalt` fromArn
+      `Prelude.hashWithSalt` returnPathArn
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` rawMessage
+
+instance Prelude.NFData SendRawEmail where
+  rnf SendRawEmail' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf destinations
+      `Prelude.seq` Prelude.rnf fromArn
+      `Prelude.seq` Prelude.rnf returnPathArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf rawMessage
+
+instance Data.ToHeaders SendRawEmail where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendRawEmail where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendRawEmail where
+  toQuery SendRawEmail' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SendRawEmail" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "Destinations"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> destinations),
+        "FromArn" Data.=: fromArn,
+        "ReturnPathArn" Data.=: returnPathArn,
+        "Source" Data.=: source,
+        "SourceArn" Data.=: sourceArn,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> tags),
+        "RawMessage" Data.=: rawMessage
+      ]
+
+-- | Represents a unique message ID.
+--
+-- /See:/ 'newSendRawEmailResponse' smart constructor.
+data SendRawEmailResponse = SendRawEmailResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique message identifier returned from the @SendRawEmail@ action.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendRawEmailResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'sendRawEmailResponse_httpStatus' - The response's http status code.
+--
+-- 'messageId', 'sendRawEmailResponse_messageId' - The unique message identifier returned from the @SendRawEmail@ action.
+newSendRawEmailResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'messageId'
+  Prelude.Text ->
+  SendRawEmailResponse
+newSendRawEmailResponse pHttpStatus_ pMessageId_ =
+  SendRawEmailResponse'
+    { httpStatus = pHttpStatus_,
+      messageId = pMessageId_
+    }
+
+-- | The response's http status code.
+sendRawEmailResponse_httpStatus :: Lens.Lens' SendRawEmailResponse Prelude.Int
+sendRawEmailResponse_httpStatus = Lens.lens (\SendRawEmailResponse' {httpStatus} -> httpStatus) (\s@SendRawEmailResponse' {} a -> s {httpStatus = a} :: SendRawEmailResponse)
+
+-- | The unique message identifier returned from the @SendRawEmail@ action.
+sendRawEmailResponse_messageId :: Lens.Lens' SendRawEmailResponse Prelude.Text
+sendRawEmailResponse_messageId = Lens.lens (\SendRawEmailResponse' {messageId} -> messageId) (\s@SendRawEmailResponse' {} a -> s {messageId = a} :: SendRawEmailResponse)
+
+instance Prelude.NFData SendRawEmailResponse where
+  rnf SendRawEmailResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf messageId
diff --git a/gen/Amazonka/SES/SendTemplatedEmail.hs b/gen/Amazonka/SES/SendTemplatedEmail.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SendTemplatedEmail.hs
@@ -0,0 +1,559 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SendTemplatedEmail
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Composes an email message using an email template and immediately queues
+-- it for sending.
+--
+-- In order to send email using the @SendTemplatedEmail@ operation, your
+-- call to the API must meet the following requirements:
+--
+-- -   The call must refer to an existing email template. You can create
+--     email templates using the CreateTemplate operation.
+--
+-- -   The message must be sent from a verified email address or domain.
+--
+-- -   If your account is still in the Amazon SES sandbox, you may only
+--     send to verified addresses or domains, or to email addresses
+--     associated with the Amazon SES Mailbox Simulator. For more
+--     information, see
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains>
+--     in the /Amazon SES Developer Guide./
+--
+-- -   The maximum message size is 10 MB.
+--
+-- -   Calls to the @SendTemplatedEmail@ operation may only include one
+--     @Destination@ parameter. A destination is a set of recipients who
+--     will receive the same version of the email. The @Destination@
+--     parameter can include up to 50 recipients, across the To:, CC: and
+--     BCC: fields.
+--
+-- -   The @Destination@ parameter must include at least one recipient
+--     email address. The recipient address can be a To: address, a CC:
+--     address, or a BCC: address. If a recipient email address is invalid
+--     (that is, it is not in the format
+--     /UserName\@[SubDomain.]Domain.TopLevelDomain/), the entire message
+--     will be rejected, even if the message contains other recipients that
+--     are valid.
+--
+-- If your call to the @SendTemplatedEmail@ operation includes all of the
+-- required parameters, Amazon SES accepts it and returns a Message ID.
+-- However, if Amazon SES can\'t render the email because the template
+-- contains errors, it doesn\'t send the email. Additionally, because it
+-- already accepted the message, Amazon SES doesn\'t return a message
+-- stating that it was unable to send the email.
+--
+-- For these reasons, we highly recommend that you set up Amazon SES to
+-- send you notifications when Rendering Failure events occur. For more
+-- information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Sending Personalized Email Using the Amazon SES API>
+-- in the /Amazon Simple Email Service Developer Guide/.
+module Amazonka.SES.SendTemplatedEmail
+  ( -- * Creating a Request
+    SendTemplatedEmail (..),
+    newSendTemplatedEmail,
+
+    -- * Request Lenses
+    sendTemplatedEmail_configurationSetName,
+    sendTemplatedEmail_replyToAddresses,
+    sendTemplatedEmail_returnPath,
+    sendTemplatedEmail_returnPathArn,
+    sendTemplatedEmail_sourceArn,
+    sendTemplatedEmail_tags,
+    sendTemplatedEmail_templateArn,
+    sendTemplatedEmail_source,
+    sendTemplatedEmail_destination,
+    sendTemplatedEmail_template,
+    sendTemplatedEmail_templateData,
+
+    -- * Destructuring the Response
+    SendTemplatedEmailResponse (..),
+    newSendTemplatedEmailResponse,
+
+    -- * Response Lenses
+    sendTemplatedEmailResponse_httpStatus,
+    sendTemplatedEmailResponse_messageId,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to send a templated email using Amazon SES. For
+-- more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSendTemplatedEmail' smart constructor.
+data SendTemplatedEmail = SendTemplatedEmail'
+  { -- | The name of the configuration set to use when you send an email using
+    -- @SendTemplatedEmail@.
+    configurationSetName :: Prelude.Maybe Prelude.Text,
+    -- | The reply-to email address(es) for the message. If the recipient replies
+    -- to the message, each reply-to address will receive the reply.
+    replyToAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The email address that bounces and complaints will be forwarded to when
+    -- feedback forwarding is enabled. If the message cannot be delivered to
+    -- the recipient, then an error message will be returned from the
+    -- recipient\'s ISP; this message will then be forwarded to the email
+    -- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+    -- parameter is never overwritten. This email address must be either
+    -- individually verified with Amazon SES, or from a domain that has been
+    -- verified with Amazon SES.
+    returnPath :: Prelude.Maybe Prelude.Text,
+    -- | 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 email address specified in the @ReturnPath@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to use @feedback\@example.com@, then
+    -- you would specify the @ReturnPathArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @ReturnPath@ to be @feedback\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    returnPathArn :: Prelude.Maybe Prelude.Text,
+    -- | 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 send for the email address specified in the @Source@
+    -- parameter.
+    --
+    -- For example, if the owner of @example.com@ (which has ARN
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+    -- policy to it that authorizes you to send from @user\@example.com@, then
+    -- you would specify the @SourceArn@ to be
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+    -- @Source@ to be @user\@example.com@.
+    --
+    -- For more information about sending authorization, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    sourceArn :: Prelude.Maybe Prelude.Text,
+    -- | A list of tags, in the form of name\/value pairs, to apply to an email
+    -- that you send using @SendTemplatedEmail@. Tags correspond to
+    -- characteristics of the email that you define, so that you can publish
+    -- email sending events.
+    tags :: Prelude.Maybe [MessageTag],
+    -- | The ARN of the template to use when sending this email.
+    templateArn :: Prelude.Maybe Prelude.Text,
+    -- | The email address that is sending the email. This email address must be
+    -- either individually verified with Amazon SES, or from a domain that has
+    -- been verified with Amazon SES. For information about verifying
+    -- identities, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+    --
+    -- If you are sending on behalf of another user and have been permitted to
+    -- do so by a sending authorization policy, then you must also specify the
+    -- @SourceArn@ parameter. For more information about sending authorization,
+    -- see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    --
+    -- Amazon SES does not support the SMTPUTF8 extension, as described in
+    -- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+    -- /local part/ of a source email address (the part of the email address
+    -- that precedes the \@ sign) may only contain
+    -- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+    -- If the /domain part/ of an address (the part after the \@ sign) contains
+    -- non-ASCII characters, they must be encoded using Punycode, as described
+    -- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+    -- (also known as the /friendly name/) may contain non-ASCII characters.
+    -- These characters must be encoded using MIME encoded-word syntax, as
+    -- described in<https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+    -- encoded-word syntax uses the following form:
+    -- @=?charset?encoding?encoded-text?=@.
+    source :: Prelude.Text,
+    -- | The destination for this email, composed of To:, CC:, and BCC: fields. A
+    -- Destination can include up to 50 recipients across these three fields.
+    destination :: Destination,
+    -- | The template to use when sending this email.
+    template :: Prelude.Text,
+    -- | A list of replacement values to apply to the template. This parameter is
+    -- a JSON object, typically consisting of key-value pairs in which the keys
+    -- correspond to replacement tags in the email template.
+    templateData :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendTemplatedEmail' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'sendTemplatedEmail_configurationSetName' - The name of the configuration set to use when you send an email using
+-- @SendTemplatedEmail@.
+--
+-- 'replyToAddresses', 'sendTemplatedEmail_replyToAddresses' - The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+--
+-- 'returnPath', 'sendTemplatedEmail_returnPath' - The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+--
+-- 'returnPathArn', 'sendTemplatedEmail_returnPathArn' - 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'sourceArn', 'sendTemplatedEmail_sourceArn' - 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'tags', 'sendTemplatedEmail_tags' - A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendTemplatedEmail@. Tags correspond to
+-- characteristics of the email that you define, so that you can publish
+-- email sending events.
+--
+-- 'templateArn', 'sendTemplatedEmail_templateArn' - The ARN of the template to use when sending this email.
+--
+-- 'source', 'sendTemplatedEmail_source' - The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in<https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+--
+-- 'destination', 'sendTemplatedEmail_destination' - The destination for this email, composed of To:, CC:, and BCC: fields. A
+-- Destination can include up to 50 recipients across these three fields.
+--
+-- 'template', 'sendTemplatedEmail_template' - The template to use when sending this email.
+--
+-- 'templateData', 'sendTemplatedEmail_templateData' - A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+newSendTemplatedEmail ::
+  -- | 'source'
+  Prelude.Text ->
+  -- | 'destination'
+  Destination ->
+  -- | 'template'
+  Prelude.Text ->
+  -- | 'templateData'
+  Prelude.Text ->
+  SendTemplatedEmail
+newSendTemplatedEmail
+  pSource_
+  pDestination_
+  pTemplate_
+  pTemplateData_ =
+    SendTemplatedEmail'
+      { configurationSetName =
+          Prelude.Nothing,
+        replyToAddresses = Prelude.Nothing,
+        returnPath = Prelude.Nothing,
+        returnPathArn = Prelude.Nothing,
+        sourceArn = Prelude.Nothing,
+        tags = Prelude.Nothing,
+        templateArn = Prelude.Nothing,
+        source = pSource_,
+        destination = pDestination_,
+        template = pTemplate_,
+        templateData = pTemplateData_
+      }
+
+-- | The name of the configuration set to use when you send an email using
+-- @SendTemplatedEmail@.
+sendTemplatedEmail_configurationSetName :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendTemplatedEmail_configurationSetName = Lens.lens (\SendTemplatedEmail' {configurationSetName} -> configurationSetName) (\s@SendTemplatedEmail' {} a -> s {configurationSetName = a} :: SendTemplatedEmail)
+
+-- | The reply-to email address(es) for the message. If the recipient replies
+-- to the message, each reply-to address will receive the reply.
+sendTemplatedEmail_replyToAddresses :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe [Prelude.Text])
+sendTemplatedEmail_replyToAddresses = Lens.lens (\SendTemplatedEmail' {replyToAddresses} -> replyToAddresses) (\s@SendTemplatedEmail' {} a -> s {replyToAddresses = a} :: SendTemplatedEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The email address that bounces and complaints will be forwarded to when
+-- feedback forwarding is enabled. If the message cannot be delivered to
+-- the recipient, then an error message will be returned from the
+-- recipient\'s ISP; this message will then be forwarded to the email
+-- address specified by the @ReturnPath@ parameter. The @ReturnPath@
+-- parameter is never overwritten. This email address must be either
+-- individually verified with Amazon SES, or from a domain that has been
+-- verified with Amazon SES.
+sendTemplatedEmail_returnPath :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendTemplatedEmail_returnPath = Lens.lens (\SendTemplatedEmail' {returnPath} -> returnPath) (\s@SendTemplatedEmail' {} a -> s {returnPath = a} :: SendTemplatedEmail)
+
+-- | 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 email address specified in the @ReturnPath@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to use @feedback\@example.com@, then
+-- you would specify the @ReturnPathArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @ReturnPath@ to be @feedback\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendTemplatedEmail_returnPathArn :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendTemplatedEmail_returnPathArn = Lens.lens (\SendTemplatedEmail' {returnPathArn} -> returnPathArn) (\s@SendTemplatedEmail' {} a -> s {returnPathArn = a} :: SendTemplatedEmail)
+
+-- | 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 send for the email address specified in the @Source@
+-- parameter.
+--
+-- For example, if the owner of @example.com@ (which has ARN
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@) attaches a
+-- policy to it that authorizes you to send from @user\@example.com@, then
+-- you would specify the @SourceArn@ to be
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@, and the
+-- @Source@ to be @user\@example.com@.
+--
+-- For more information about sending authorization, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+sendTemplatedEmail_sourceArn :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendTemplatedEmail_sourceArn = Lens.lens (\SendTemplatedEmail' {sourceArn} -> sourceArn) (\s@SendTemplatedEmail' {} a -> s {sourceArn = a} :: SendTemplatedEmail)
+
+-- | A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendTemplatedEmail@. Tags correspond to
+-- characteristics of the email that you define, so that you can publish
+-- email sending events.
+sendTemplatedEmail_tags :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe [MessageTag])
+sendTemplatedEmail_tags = Lens.lens (\SendTemplatedEmail' {tags} -> tags) (\s@SendTemplatedEmail' {} a -> s {tags = a} :: SendTemplatedEmail) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ARN of the template to use when sending this email.
+sendTemplatedEmail_templateArn :: Lens.Lens' SendTemplatedEmail (Prelude.Maybe Prelude.Text)
+sendTemplatedEmail_templateArn = Lens.lens (\SendTemplatedEmail' {templateArn} -> templateArn) (\s@SendTemplatedEmail' {} a -> s {templateArn = a} :: SendTemplatedEmail)
+
+-- | The email address that is sending the email. This email address must be
+-- either individually verified with Amazon SES, or from a domain that has
+-- been verified with Amazon SES. For information about verifying
+-- identities, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide>.
+--
+-- If you are sending on behalf of another user and have been permitted to
+-- do so by a sending authorization policy, then you must also specify the
+-- @SourceArn@ parameter. For more information about sending authorization,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a source email address (the part of the email address
+-- that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>. The sender name
+-- (also known as the /friendly name/) may contain non-ASCII characters.
+-- These characters must be encoded using MIME encoded-word syntax, as
+-- described in<https://tools.ietf.org/html/rfc2047 RFC 2047>. MIME
+-- encoded-word syntax uses the following form:
+-- @=?charset?encoding?encoded-text?=@.
+sendTemplatedEmail_source :: Lens.Lens' SendTemplatedEmail Prelude.Text
+sendTemplatedEmail_source = Lens.lens (\SendTemplatedEmail' {source} -> source) (\s@SendTemplatedEmail' {} a -> s {source = a} :: SendTemplatedEmail)
+
+-- | The destination for this email, composed of To:, CC:, and BCC: fields. A
+-- Destination can include up to 50 recipients across these three fields.
+sendTemplatedEmail_destination :: Lens.Lens' SendTemplatedEmail Destination
+sendTemplatedEmail_destination = Lens.lens (\SendTemplatedEmail' {destination} -> destination) (\s@SendTemplatedEmail' {} a -> s {destination = a} :: SendTemplatedEmail)
+
+-- | The template to use when sending this email.
+sendTemplatedEmail_template :: Lens.Lens' SendTemplatedEmail Prelude.Text
+sendTemplatedEmail_template = Lens.lens (\SendTemplatedEmail' {template} -> template) (\s@SendTemplatedEmail' {} a -> s {template = a} :: SendTemplatedEmail)
+
+-- | A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+sendTemplatedEmail_templateData :: Lens.Lens' SendTemplatedEmail Prelude.Text
+sendTemplatedEmail_templateData = Lens.lens (\SendTemplatedEmail' {templateData} -> templateData) (\s@SendTemplatedEmail' {} a -> s {templateData = a} :: SendTemplatedEmail)
+
+instance Core.AWSRequest SendTemplatedEmail where
+  type
+    AWSResponse SendTemplatedEmail =
+      SendTemplatedEmailResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SendTemplatedEmailResult"
+      ( \s h x ->
+          SendTemplatedEmailResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..@ "MessageId")
+      )
+
+instance Prelude.Hashable SendTemplatedEmail where
+  hashWithSalt _salt SendTemplatedEmail' {..} =
+    _salt
+      `Prelude.hashWithSalt` configurationSetName
+      `Prelude.hashWithSalt` replyToAddresses
+      `Prelude.hashWithSalt` returnPath
+      `Prelude.hashWithSalt` returnPathArn
+      `Prelude.hashWithSalt` sourceArn
+      `Prelude.hashWithSalt` tags
+      `Prelude.hashWithSalt` templateArn
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` destination
+      `Prelude.hashWithSalt` template
+      `Prelude.hashWithSalt` templateData
+
+instance Prelude.NFData SendTemplatedEmail where
+  rnf SendTemplatedEmail' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf replyToAddresses
+      `Prelude.seq` Prelude.rnf returnPath
+      `Prelude.seq` Prelude.rnf returnPathArn
+      `Prelude.seq` Prelude.rnf sourceArn
+      `Prelude.seq` Prelude.rnf tags
+      `Prelude.seq` Prelude.rnf templateArn
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf destination
+      `Prelude.seq` Prelude.rnf template
+      `Prelude.seq` Prelude.rnf templateData
+
+instance Data.ToHeaders SendTemplatedEmail where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SendTemplatedEmail where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SendTemplatedEmail where
+  toQuery SendTemplatedEmail' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SendTemplatedEmail" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "ReplyToAddresses"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> replyToAddresses
+            ),
+        "ReturnPath" Data.=: returnPath,
+        "ReturnPathArn" Data.=: returnPathArn,
+        "SourceArn" Data.=: sourceArn,
+        "Tags"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> tags),
+        "TemplateArn" Data.=: templateArn,
+        "Source" Data.=: source,
+        "Destination" Data.=: destination,
+        "Template" Data.=: template,
+        "TemplateData" Data.=: templateData
+      ]
+
+-- | /See:/ 'newSendTemplatedEmailResponse' smart constructor.
+data SendTemplatedEmailResponse = SendTemplatedEmailResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | The unique message identifier returned from the @SendTemplatedEmail@
+    -- action.
+    messageId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendTemplatedEmailResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'sendTemplatedEmailResponse_httpStatus' - The response's http status code.
+--
+-- 'messageId', 'sendTemplatedEmailResponse_messageId' - The unique message identifier returned from the @SendTemplatedEmail@
+-- action.
+newSendTemplatedEmailResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'messageId'
+  Prelude.Text ->
+  SendTemplatedEmailResponse
+newSendTemplatedEmailResponse
+  pHttpStatus_
+  pMessageId_ =
+    SendTemplatedEmailResponse'
+      { httpStatus =
+          pHttpStatus_,
+        messageId = pMessageId_
+      }
+
+-- | The response's http status code.
+sendTemplatedEmailResponse_httpStatus :: Lens.Lens' SendTemplatedEmailResponse Prelude.Int
+sendTemplatedEmailResponse_httpStatus = Lens.lens (\SendTemplatedEmailResponse' {httpStatus} -> httpStatus) (\s@SendTemplatedEmailResponse' {} a -> s {httpStatus = a} :: SendTemplatedEmailResponse)
+
+-- | The unique message identifier returned from the @SendTemplatedEmail@
+-- action.
+sendTemplatedEmailResponse_messageId :: Lens.Lens' SendTemplatedEmailResponse Prelude.Text
+sendTemplatedEmailResponse_messageId = Lens.lens (\SendTemplatedEmailResponse' {messageId} -> messageId) (\s@SendTemplatedEmailResponse' {} a -> s {messageId = a} :: SendTemplatedEmailResponse)
+
+instance Prelude.NFData SendTemplatedEmailResponse where
+  rnf SendTemplatedEmailResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf messageId
diff --git a/gen/Amazonka/SES/SetActiveReceiptRuleSet.hs b/gen/Amazonka/SES/SetActiveReceiptRuleSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetActiveReceiptRuleSet.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetActiveReceiptRuleSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rule-sets.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.SetActiveReceiptRuleSet
+  ( -- * Creating a Request
+    SetActiveReceiptRuleSet (..),
+    newSetActiveReceiptRuleSet,
+
+    -- * Request Lenses
+    setActiveReceiptRuleSet_ruleSetName,
+
+    -- * Destructuring the Response
+    SetActiveReceiptRuleSetResponse (..),
+    newSetActiveReceiptRuleSetResponse,
+
+    -- * Response Lenses
+    setActiveReceiptRuleSetResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to set a receipt rule set as the active receipt
+-- rule set. You use receipt rule sets to receive email with Amazon SES.
+-- For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetActiveReceiptRuleSet' smart constructor.
+data SetActiveReceiptRuleSet = SetActiveReceiptRuleSet'
+  { -- | The name of the receipt rule set to make active. Setting this value to
+    -- null disables all email receiving.
+    ruleSetName :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetActiveReceiptRuleSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'setActiveReceiptRuleSet_ruleSetName' - The name of the receipt rule set to make active. Setting this value to
+-- null disables all email receiving.
+newSetActiveReceiptRuleSet ::
+  SetActiveReceiptRuleSet
+newSetActiveReceiptRuleSet =
+  SetActiveReceiptRuleSet'
+    { ruleSetName =
+        Prelude.Nothing
+    }
+
+-- | The name of the receipt rule set to make active. Setting this value to
+-- null disables all email receiving.
+setActiveReceiptRuleSet_ruleSetName :: Lens.Lens' SetActiveReceiptRuleSet (Prelude.Maybe Prelude.Text)
+setActiveReceiptRuleSet_ruleSetName = Lens.lens (\SetActiveReceiptRuleSet' {ruleSetName} -> ruleSetName) (\s@SetActiveReceiptRuleSet' {} a -> s {ruleSetName = a} :: SetActiveReceiptRuleSet)
+
+instance Core.AWSRequest SetActiveReceiptRuleSet where
+  type
+    AWSResponse SetActiveReceiptRuleSet =
+      SetActiveReceiptRuleSetResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetActiveReceiptRuleSetResult"
+      ( \s h x ->
+          SetActiveReceiptRuleSetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SetActiveReceiptRuleSet where
+  hashWithSalt _salt SetActiveReceiptRuleSet' {..} =
+    _salt `Prelude.hashWithSalt` ruleSetName
+
+instance Prelude.NFData SetActiveReceiptRuleSet where
+  rnf SetActiveReceiptRuleSet' {..} =
+    Prelude.rnf ruleSetName
+
+instance Data.ToHeaders SetActiveReceiptRuleSet where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SetActiveReceiptRuleSet where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SetActiveReceiptRuleSet where
+  toQuery SetActiveReceiptRuleSet' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SetActiveReceiptRuleSet" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetActiveReceiptRuleSetResponse' smart constructor.
+data SetActiveReceiptRuleSetResponse = SetActiveReceiptRuleSetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetActiveReceiptRuleSetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setActiveReceiptRuleSetResponse_httpStatus' - The response's http status code.
+newSetActiveReceiptRuleSetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetActiveReceiptRuleSetResponse
+newSetActiveReceiptRuleSetResponse pHttpStatus_ =
+  SetActiveReceiptRuleSetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+setActiveReceiptRuleSetResponse_httpStatus :: Lens.Lens' SetActiveReceiptRuleSetResponse Prelude.Int
+setActiveReceiptRuleSetResponse_httpStatus = Lens.lens (\SetActiveReceiptRuleSetResponse' {httpStatus} -> httpStatus) (\s@SetActiveReceiptRuleSetResponse' {} a -> s {httpStatus = a} :: SetActiveReceiptRuleSetResponse)
+
+instance
+  Prelude.NFData
+    SetActiveReceiptRuleSetResponse
+  where
+  rnf SetActiveReceiptRuleSetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetIdentityDkimEnabled.hs b/gen/Amazonka/SES/SetIdentityDkimEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetIdentityDkimEnabled.hs
@@ -0,0 +1,194 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetIdentityDkimEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables or disables Easy DKIM signing of email sent from an identity. If
+-- Easy DKIM signing is enabled for a domain, then Amazon SES uses DKIM to
+-- sign all email that it sends from addresses on that domain. If Easy DKIM
+-- signing is enabled for an email address, then Amazon SES uses DKIM to
+-- sign all email it sends from that address.
+--
+-- For email addresses (for example, @user\@example.com@), you can only
+-- enable DKIM signing if the corresponding domain (in this case,
+-- @example.com@) has been set up to use Easy DKIM.
+--
+-- You can enable DKIM signing for an identity at any time after you start
+-- the verification process for the identity, even if the verification
+-- process isn\'t complete.
+--
+-- You can execute this operation no more than once per second.
+--
+-- For more information about Easy DKIM signing, go to the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+module Amazonka.SES.SetIdentityDkimEnabled
+  ( -- * Creating a Request
+    SetIdentityDkimEnabled (..),
+    newSetIdentityDkimEnabled,
+
+    -- * Request Lenses
+    setIdentityDkimEnabled_identity,
+    setIdentityDkimEnabled_dkimEnabled,
+
+    -- * Destructuring the Response
+    SetIdentityDkimEnabledResponse (..),
+    newSetIdentityDkimEnabledResponse,
+
+    -- * Response Lenses
+    setIdentityDkimEnabledResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to enable or disable Amazon SES Easy DKIM signing
+-- for an identity. For more information about setting up Easy DKIM, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetIdentityDkimEnabled' smart constructor.
+data SetIdentityDkimEnabled = SetIdentityDkimEnabled'
+  { -- | The identity for which DKIM signing should be enabled or disabled.
+    identity :: Prelude.Text,
+    -- | Sets whether DKIM signing is enabled for an identity. Set to @true@ to
+    -- enable DKIM signing for this identity; @false@ to disable it.
+    dkimEnabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityDkimEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'setIdentityDkimEnabled_identity' - The identity for which DKIM signing should be enabled or disabled.
+--
+-- 'dkimEnabled', 'setIdentityDkimEnabled_dkimEnabled' - Sets whether DKIM signing is enabled for an identity. Set to @true@ to
+-- enable DKIM signing for this identity; @false@ to disable it.
+newSetIdentityDkimEnabled ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'dkimEnabled'
+  Prelude.Bool ->
+  SetIdentityDkimEnabled
+newSetIdentityDkimEnabled pIdentity_ pDkimEnabled_ =
+  SetIdentityDkimEnabled'
+    { identity = pIdentity_,
+      dkimEnabled = pDkimEnabled_
+    }
+
+-- | The identity for which DKIM signing should be enabled or disabled.
+setIdentityDkimEnabled_identity :: Lens.Lens' SetIdentityDkimEnabled Prelude.Text
+setIdentityDkimEnabled_identity = Lens.lens (\SetIdentityDkimEnabled' {identity} -> identity) (\s@SetIdentityDkimEnabled' {} a -> s {identity = a} :: SetIdentityDkimEnabled)
+
+-- | Sets whether DKIM signing is enabled for an identity. Set to @true@ to
+-- enable DKIM signing for this identity; @false@ to disable it.
+setIdentityDkimEnabled_dkimEnabled :: Lens.Lens' SetIdentityDkimEnabled Prelude.Bool
+setIdentityDkimEnabled_dkimEnabled = Lens.lens (\SetIdentityDkimEnabled' {dkimEnabled} -> dkimEnabled) (\s@SetIdentityDkimEnabled' {} a -> s {dkimEnabled = a} :: SetIdentityDkimEnabled)
+
+instance Core.AWSRequest SetIdentityDkimEnabled where
+  type
+    AWSResponse SetIdentityDkimEnabled =
+      SetIdentityDkimEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetIdentityDkimEnabledResult"
+      ( \s h x ->
+          SetIdentityDkimEnabledResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SetIdentityDkimEnabled where
+  hashWithSalt _salt SetIdentityDkimEnabled' {..} =
+    _salt
+      `Prelude.hashWithSalt` identity
+      `Prelude.hashWithSalt` dkimEnabled
+
+instance Prelude.NFData SetIdentityDkimEnabled where
+  rnf SetIdentityDkimEnabled' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf dkimEnabled
+
+instance Data.ToHeaders SetIdentityDkimEnabled where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SetIdentityDkimEnabled where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SetIdentityDkimEnabled where
+  toQuery SetIdentityDkimEnabled' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SetIdentityDkimEnabled" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "DkimEnabled" Data.=: dkimEnabled
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetIdentityDkimEnabledResponse' smart constructor.
+data SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityDkimEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setIdentityDkimEnabledResponse_httpStatus' - The response's http status code.
+newSetIdentityDkimEnabledResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityDkimEnabledResponse
+newSetIdentityDkimEnabledResponse pHttpStatus_ =
+  SetIdentityDkimEnabledResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+setIdentityDkimEnabledResponse_httpStatus :: Lens.Lens' SetIdentityDkimEnabledResponse Prelude.Int
+setIdentityDkimEnabledResponse_httpStatus = Lens.lens (\SetIdentityDkimEnabledResponse' {httpStatus} -> httpStatus) (\s@SetIdentityDkimEnabledResponse' {} a -> s {httpStatus = a} :: SetIdentityDkimEnabledResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityDkimEnabledResponse
+  where
+  rnf SetIdentityDkimEnabledResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetIdentityFeedbackForwardingEnabled.hs b/gen/Amazonka/SES/SetIdentityFeedbackForwardingEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetIdentityFeedbackForwardingEnabled.hs
@@ -0,0 +1,234 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetIdentityFeedbackForwardingEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Given an identity (an email address or a domain), enables or disables
+-- whether Amazon SES forwards bounce and complaint notifications as email.
+-- Feedback forwarding can only be disabled when Amazon Simple Notification
+-- Service (Amazon SNS) topics are specified for both bounces and
+-- complaints.
+--
+-- Feedback forwarding does not apply to delivery notifications. Delivery
+-- notifications are only available through Amazon SNS.
+--
+-- You can execute this operation no more than once per second.
+--
+-- For more information about using notifications with Amazon SES, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+module Amazonka.SES.SetIdentityFeedbackForwardingEnabled
+  ( -- * Creating a Request
+    SetIdentityFeedbackForwardingEnabled (..),
+    newSetIdentityFeedbackForwardingEnabled,
+
+    -- * Request Lenses
+    setIdentityFeedbackForwardingEnabled_identity,
+    setIdentityFeedbackForwardingEnabled_forwardingEnabled,
+
+    -- * Destructuring the Response
+    SetIdentityFeedbackForwardingEnabledResponse (..),
+    newSetIdentityFeedbackForwardingEnabledResponse,
+
+    -- * Response Lenses
+    setIdentityFeedbackForwardingEnabledResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to enable or disable whether Amazon SES forwards
+-- you bounce and complaint notifications through email. For information
+-- about email feedback forwarding, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetIdentityFeedbackForwardingEnabled' smart constructor.
+data SetIdentityFeedbackForwardingEnabled = SetIdentityFeedbackForwardingEnabled'
+  { -- | The identity for which to set bounce and complaint notification
+    -- forwarding. Examples: @user\@example.com@, @example.com@.
+    identity :: Prelude.Text,
+    -- | Sets whether Amazon SES will forward bounce and complaint notifications
+    -- as email. @true@ specifies that Amazon SES will forward bounce and
+    -- complaint notifications as email, in addition to any Amazon SNS topic
+    -- publishing otherwise specified. @false@ specifies that Amazon SES will
+    -- publish bounce and complaint notifications only through Amazon SNS. This
+    -- value can only be set to @false@ when Amazon SNS topics are set for both
+    -- @Bounce@ and @Complaint@ notification types.
+    forwardingEnabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityFeedbackForwardingEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'setIdentityFeedbackForwardingEnabled_identity' - The identity for which to set bounce and complaint notification
+-- forwarding. Examples: @user\@example.com@, @example.com@.
+--
+-- 'forwardingEnabled', 'setIdentityFeedbackForwardingEnabled_forwardingEnabled' - Sets whether Amazon SES will forward bounce and complaint notifications
+-- as email. @true@ specifies that Amazon SES will forward bounce and
+-- complaint notifications as email, in addition to any Amazon SNS topic
+-- publishing otherwise specified. @false@ specifies that Amazon SES will
+-- publish bounce and complaint notifications only through Amazon SNS. This
+-- value can only be set to @false@ when Amazon SNS topics are set for both
+-- @Bounce@ and @Complaint@ notification types.
+newSetIdentityFeedbackForwardingEnabled ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'forwardingEnabled'
+  Prelude.Bool ->
+  SetIdentityFeedbackForwardingEnabled
+newSetIdentityFeedbackForwardingEnabled
+  pIdentity_
+  pForwardingEnabled_ =
+    SetIdentityFeedbackForwardingEnabled'
+      { identity =
+          pIdentity_,
+        forwardingEnabled =
+          pForwardingEnabled_
+      }
+
+-- | The identity for which to set bounce and complaint notification
+-- forwarding. Examples: @user\@example.com@, @example.com@.
+setIdentityFeedbackForwardingEnabled_identity :: Lens.Lens' SetIdentityFeedbackForwardingEnabled Prelude.Text
+setIdentityFeedbackForwardingEnabled_identity = Lens.lens (\SetIdentityFeedbackForwardingEnabled' {identity} -> identity) (\s@SetIdentityFeedbackForwardingEnabled' {} a -> s {identity = a} :: SetIdentityFeedbackForwardingEnabled)
+
+-- | Sets whether Amazon SES will forward bounce and complaint notifications
+-- as email. @true@ specifies that Amazon SES will forward bounce and
+-- complaint notifications as email, in addition to any Amazon SNS topic
+-- publishing otherwise specified. @false@ specifies that Amazon SES will
+-- publish bounce and complaint notifications only through Amazon SNS. This
+-- value can only be set to @false@ when Amazon SNS topics are set for both
+-- @Bounce@ and @Complaint@ notification types.
+setIdentityFeedbackForwardingEnabled_forwardingEnabled :: Lens.Lens' SetIdentityFeedbackForwardingEnabled Prelude.Bool
+setIdentityFeedbackForwardingEnabled_forwardingEnabled = Lens.lens (\SetIdentityFeedbackForwardingEnabled' {forwardingEnabled} -> forwardingEnabled) (\s@SetIdentityFeedbackForwardingEnabled' {} a -> s {forwardingEnabled = a} :: SetIdentityFeedbackForwardingEnabled)
+
+instance
+  Core.AWSRequest
+    SetIdentityFeedbackForwardingEnabled
+  where
+  type
+    AWSResponse SetIdentityFeedbackForwardingEnabled =
+      SetIdentityFeedbackForwardingEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetIdentityFeedbackForwardingEnabledResult"
+      ( \s h x ->
+          SetIdentityFeedbackForwardingEnabledResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SetIdentityFeedbackForwardingEnabled
+  where
+  hashWithSalt
+    _salt
+    SetIdentityFeedbackForwardingEnabled' {..} =
+      _salt
+        `Prelude.hashWithSalt` identity
+        `Prelude.hashWithSalt` forwardingEnabled
+
+instance
+  Prelude.NFData
+    SetIdentityFeedbackForwardingEnabled
+  where
+  rnf SetIdentityFeedbackForwardingEnabled' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf forwardingEnabled
+
+instance
+  Data.ToHeaders
+    SetIdentityFeedbackForwardingEnabled
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    SetIdentityFeedbackForwardingEnabled
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    SetIdentityFeedbackForwardingEnabled
+  where
+  toQuery SetIdentityFeedbackForwardingEnabled' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "SetIdentityFeedbackForwardingEnabled" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "ForwardingEnabled" Data.=: forwardingEnabled
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetIdentityFeedbackForwardingEnabledResponse' smart constructor.
+data SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityFeedbackForwardingEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setIdentityFeedbackForwardingEnabledResponse_httpStatus' - The response's http status code.
+newSetIdentityFeedbackForwardingEnabledResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityFeedbackForwardingEnabledResponse
+newSetIdentityFeedbackForwardingEnabledResponse
+  pHttpStatus_ =
+    SetIdentityFeedbackForwardingEnabledResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+setIdentityFeedbackForwardingEnabledResponse_httpStatus :: Lens.Lens' SetIdentityFeedbackForwardingEnabledResponse Prelude.Int
+setIdentityFeedbackForwardingEnabledResponse_httpStatus = Lens.lens (\SetIdentityFeedbackForwardingEnabledResponse' {httpStatus} -> httpStatus) (\s@SetIdentityFeedbackForwardingEnabledResponse' {} a -> s {httpStatus = a} :: SetIdentityFeedbackForwardingEnabledResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityFeedbackForwardingEnabledResponse
+  where
+  rnf SetIdentityFeedbackForwardingEnabledResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetIdentityHeadersInNotificationsEnabled.hs b/gen/Amazonka/SES/SetIdentityHeadersInNotificationsEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetIdentityHeadersInNotificationsEnabled.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetIdentityHeadersInNotificationsEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Given an identity (an email address or a domain), sets whether Amazon
+-- SES includes the original email headers in the Amazon Simple
+-- Notification Service (Amazon SNS) notifications of a specified type.
+--
+-- You can execute this operation no more than once per second.
+--
+-- For more information about using notifications with Amazon SES, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+module Amazonka.SES.SetIdentityHeadersInNotificationsEnabled
+  ( -- * Creating a Request
+    SetIdentityHeadersInNotificationsEnabled (..),
+    newSetIdentityHeadersInNotificationsEnabled,
+
+    -- * Request Lenses
+    setIdentityHeadersInNotificationsEnabled_identity,
+    setIdentityHeadersInNotificationsEnabled_notificationType,
+    setIdentityHeadersInNotificationsEnabled_enabled,
+
+    -- * Destructuring the Response
+    SetIdentityHeadersInNotificationsEnabledResponse (..),
+    newSetIdentityHeadersInNotificationsEnabledResponse,
+
+    -- * Response Lenses
+    setIdentityHeadersInNotificationsEnabledResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to set whether Amazon SES includes the original
+-- email headers in the Amazon SNS notifications of a specified type. For
+-- information about notifications, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-sns.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetIdentityHeadersInNotificationsEnabled' smart constructor.
+data SetIdentityHeadersInNotificationsEnabled = SetIdentityHeadersInNotificationsEnabled'
+  { -- | The identity for which to enable or disable headers in notifications.
+    -- Examples: @user\@example.com@, @example.com@.
+    identity :: Prelude.Text,
+    -- | The notification type for which to enable or disable headers in
+    -- notifications.
+    notificationType :: NotificationType,
+    -- | Sets whether Amazon SES includes the original email headers in Amazon
+    -- SNS notifications of the specified notification type. A value of @true@
+    -- specifies that Amazon SES will include headers in notifications, and a
+    -- value of @false@ specifies that Amazon SES will not include headers in
+    -- notifications.
+    --
+    -- This value can only be set when @NotificationType@ is already set to use
+    -- a particular Amazon SNS topic.
+    enabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityHeadersInNotificationsEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identity', 'setIdentityHeadersInNotificationsEnabled_identity' - The identity for which to enable or disable headers in notifications.
+-- Examples: @user\@example.com@, @example.com@.
+--
+-- 'notificationType', 'setIdentityHeadersInNotificationsEnabled_notificationType' - The notification type for which to enable or disable headers in
+-- notifications.
+--
+-- 'enabled', 'setIdentityHeadersInNotificationsEnabled_enabled' - Sets whether Amazon SES includes the original email headers in Amazon
+-- SNS notifications of the specified notification type. A value of @true@
+-- specifies that Amazon SES will include headers in notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- notifications.
+--
+-- This value can only be set when @NotificationType@ is already set to use
+-- a particular Amazon SNS topic.
+newSetIdentityHeadersInNotificationsEnabled ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'notificationType'
+  NotificationType ->
+  -- | 'enabled'
+  Prelude.Bool ->
+  SetIdentityHeadersInNotificationsEnabled
+newSetIdentityHeadersInNotificationsEnabled
+  pIdentity_
+  pNotificationType_
+  pEnabled_ =
+    SetIdentityHeadersInNotificationsEnabled'
+      { identity =
+          pIdentity_,
+        notificationType =
+          pNotificationType_,
+        enabled = pEnabled_
+      }
+
+-- | The identity for which to enable or disable headers in notifications.
+-- Examples: @user\@example.com@, @example.com@.
+setIdentityHeadersInNotificationsEnabled_identity :: Lens.Lens' SetIdentityHeadersInNotificationsEnabled Prelude.Text
+setIdentityHeadersInNotificationsEnabled_identity = Lens.lens (\SetIdentityHeadersInNotificationsEnabled' {identity} -> identity) (\s@SetIdentityHeadersInNotificationsEnabled' {} a -> s {identity = a} :: SetIdentityHeadersInNotificationsEnabled)
+
+-- | The notification type for which to enable or disable headers in
+-- notifications.
+setIdentityHeadersInNotificationsEnabled_notificationType :: Lens.Lens' SetIdentityHeadersInNotificationsEnabled NotificationType
+setIdentityHeadersInNotificationsEnabled_notificationType = Lens.lens (\SetIdentityHeadersInNotificationsEnabled' {notificationType} -> notificationType) (\s@SetIdentityHeadersInNotificationsEnabled' {} a -> s {notificationType = a} :: SetIdentityHeadersInNotificationsEnabled)
+
+-- | Sets whether Amazon SES includes the original email headers in Amazon
+-- SNS notifications of the specified notification type. A value of @true@
+-- specifies that Amazon SES will include headers in notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- notifications.
+--
+-- This value can only be set when @NotificationType@ is already set to use
+-- a particular Amazon SNS topic.
+setIdentityHeadersInNotificationsEnabled_enabled :: Lens.Lens' SetIdentityHeadersInNotificationsEnabled Prelude.Bool
+setIdentityHeadersInNotificationsEnabled_enabled = Lens.lens (\SetIdentityHeadersInNotificationsEnabled' {enabled} -> enabled) (\s@SetIdentityHeadersInNotificationsEnabled' {} a -> s {enabled = a} :: SetIdentityHeadersInNotificationsEnabled)
+
+instance
+  Core.AWSRequest
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  type
+    AWSResponse
+      SetIdentityHeadersInNotificationsEnabled =
+      SetIdentityHeadersInNotificationsEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetIdentityHeadersInNotificationsEnabledResult"
+      ( \s h x ->
+          SetIdentityHeadersInNotificationsEnabledResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  hashWithSalt
+    _salt
+    SetIdentityHeadersInNotificationsEnabled' {..} =
+      _salt
+        `Prelude.hashWithSalt` identity
+        `Prelude.hashWithSalt` notificationType
+        `Prelude.hashWithSalt` enabled
+
+instance
+  Prelude.NFData
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  rnf SetIdentityHeadersInNotificationsEnabled' {..} =
+    Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf notificationType
+      `Prelude.seq` Prelude.rnf enabled
+
+instance
+  Data.ToHeaders
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    SetIdentityHeadersInNotificationsEnabled
+  where
+  toQuery SetIdentityHeadersInNotificationsEnabled' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "SetIdentityHeadersInNotificationsEnabled" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Identity" Data.=: identity,
+        "NotificationType" Data.=: notificationType,
+        "Enabled" Data.=: enabled
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetIdentityHeadersInNotificationsEnabledResponse' smart constructor.
+data SetIdentityHeadersInNotificationsEnabledResponse = SetIdentityHeadersInNotificationsEnabledResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityHeadersInNotificationsEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setIdentityHeadersInNotificationsEnabledResponse_httpStatus' - The response's http status code.
+newSetIdentityHeadersInNotificationsEnabledResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityHeadersInNotificationsEnabledResponse
+newSetIdentityHeadersInNotificationsEnabledResponse
+  pHttpStatus_ =
+    SetIdentityHeadersInNotificationsEnabledResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+setIdentityHeadersInNotificationsEnabledResponse_httpStatus :: Lens.Lens' SetIdentityHeadersInNotificationsEnabledResponse Prelude.Int
+setIdentityHeadersInNotificationsEnabledResponse_httpStatus = Lens.lens (\SetIdentityHeadersInNotificationsEnabledResponse' {httpStatus} -> httpStatus) (\s@SetIdentityHeadersInNotificationsEnabledResponse' {} a -> s {httpStatus = a} :: SetIdentityHeadersInNotificationsEnabledResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityHeadersInNotificationsEnabledResponse
+  where
+  rnf
+    SetIdentityHeadersInNotificationsEnabledResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetIdentityMailFromDomain.hs b/gen/Amazonka/SES/SetIdentityMailFromDomain.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetIdentityMailFromDomain.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetIdentityMailFromDomain
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables or disables the custom MAIL FROM domain setup for a verified
+-- identity (an email address or a domain).
+--
+-- To send emails using the specified MAIL FROM domain, you must add an MX
+-- record to your MAIL FROM domain\'s DNS settings. If you want your emails
+-- to pass Sender Policy Framework (SPF) checks, you must also add or
+-- update an SPF record. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from-set.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.SetIdentityMailFromDomain
+  ( -- * Creating a Request
+    SetIdentityMailFromDomain (..),
+    newSetIdentityMailFromDomain,
+
+    -- * Request Lenses
+    setIdentityMailFromDomain_behaviorOnMXFailure,
+    setIdentityMailFromDomain_mailFromDomain,
+    setIdentityMailFromDomain_identity,
+
+    -- * Destructuring the Response
+    SetIdentityMailFromDomainResponse (..),
+    newSetIdentityMailFromDomainResponse,
+
+    -- * Response Lenses
+    setIdentityMailFromDomainResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to enable or disable the Amazon SES custom MAIL
+-- FROM domain setup for a verified identity. For information about using a
+-- custom MAIL FROM domain, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetIdentityMailFromDomain' smart constructor.
+data SetIdentityMailFromDomain = SetIdentityMailFromDomain'
+  { -- | The action that you want Amazon SES to take if it cannot successfully
+    -- read the required MX record when you send an email. If you choose
+    -- @UseDefaultValue@, Amazon SES will use amazonses.com (or a subdomain of
+    -- that) as the MAIL FROM domain. If you choose @RejectMessage@, Amazon SES
+    -- will return a @MailFromDomainNotVerified@ error and not send the email.
+    --
+    -- The action specified in @BehaviorOnMXFailure@ is taken when the custom
+    -- MAIL FROM domain setup is in the @Pending@, @Failed@, and
+    -- @TemporaryFailure@ states.
+    behaviorOnMXFailure :: Prelude.Maybe BehaviorOnMXFailure,
+    -- | The custom MAIL FROM domain that you want the verified identity to use.
+    -- The MAIL FROM domain must 1) be a subdomain of the verified identity, 2)
+    -- not be used in a \"From\" address if the MAIL FROM domain is the
+    -- destination of email feedback forwarding (for more information, see the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide>),
+    -- and 3) not be used to receive emails. A value of @null@ disables the
+    -- custom MAIL FROM setting for the identity.
+    mailFromDomain :: Prelude.Maybe Prelude.Text,
+    -- | The verified identity for which you want to enable or disable the
+    -- specified custom MAIL FROM domain.
+    identity :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityMailFromDomain' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'behaviorOnMXFailure', 'setIdentityMailFromDomain_behaviorOnMXFailure' - The action that you want Amazon SES to take if it cannot successfully
+-- read the required MX record when you send an email. If you choose
+-- @UseDefaultValue@, Amazon SES will use amazonses.com (or a subdomain of
+-- that) as the MAIL FROM domain. If you choose @RejectMessage@, Amazon SES
+-- will return a @MailFromDomainNotVerified@ error and not send the email.
+--
+-- The action specified in @BehaviorOnMXFailure@ is taken when the custom
+-- MAIL FROM domain setup is in the @Pending@, @Failed@, and
+-- @TemporaryFailure@ states.
+--
+-- 'mailFromDomain', 'setIdentityMailFromDomain_mailFromDomain' - The custom MAIL FROM domain that you want the verified identity to use.
+-- The MAIL FROM domain must 1) be a subdomain of the verified identity, 2)
+-- not be used in a \"From\" address if the MAIL FROM domain is the
+-- destination of email feedback forwarding (for more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide>),
+-- and 3) not be used to receive emails. A value of @null@ disables the
+-- custom MAIL FROM setting for the identity.
+--
+-- 'identity', 'setIdentityMailFromDomain_identity' - The verified identity for which you want to enable or disable the
+-- specified custom MAIL FROM domain.
+newSetIdentityMailFromDomain ::
+  -- | 'identity'
+  Prelude.Text ->
+  SetIdentityMailFromDomain
+newSetIdentityMailFromDomain pIdentity_ =
+  SetIdentityMailFromDomain'
+    { behaviorOnMXFailure =
+        Prelude.Nothing,
+      mailFromDomain = Prelude.Nothing,
+      identity = pIdentity_
+    }
+
+-- | The action that you want Amazon SES to take if it cannot successfully
+-- read the required MX record when you send an email. If you choose
+-- @UseDefaultValue@, Amazon SES will use amazonses.com (or a subdomain of
+-- that) as the MAIL FROM domain. If you choose @RejectMessage@, Amazon SES
+-- will return a @MailFromDomainNotVerified@ error and not send the email.
+--
+-- The action specified in @BehaviorOnMXFailure@ is taken when the custom
+-- MAIL FROM domain setup is in the @Pending@, @Failed@, and
+-- @TemporaryFailure@ states.
+setIdentityMailFromDomain_behaviorOnMXFailure :: Lens.Lens' SetIdentityMailFromDomain (Prelude.Maybe BehaviorOnMXFailure)
+setIdentityMailFromDomain_behaviorOnMXFailure = Lens.lens (\SetIdentityMailFromDomain' {behaviorOnMXFailure} -> behaviorOnMXFailure) (\s@SetIdentityMailFromDomain' {} a -> s {behaviorOnMXFailure = a} :: SetIdentityMailFromDomain)
+
+-- | The custom MAIL FROM domain that you want the verified identity to use.
+-- The MAIL FROM domain must 1) be a subdomain of the verified identity, 2)
+-- not be used in a \"From\" address if the MAIL FROM domain is the
+-- destination of email feedback forwarding (for more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide>),
+-- and 3) not be used to receive emails. A value of @null@ disables the
+-- custom MAIL FROM setting for the identity.
+setIdentityMailFromDomain_mailFromDomain :: Lens.Lens' SetIdentityMailFromDomain (Prelude.Maybe Prelude.Text)
+setIdentityMailFromDomain_mailFromDomain = Lens.lens (\SetIdentityMailFromDomain' {mailFromDomain} -> mailFromDomain) (\s@SetIdentityMailFromDomain' {} a -> s {mailFromDomain = a} :: SetIdentityMailFromDomain)
+
+-- | The verified identity for which you want to enable or disable the
+-- specified custom MAIL FROM domain.
+setIdentityMailFromDomain_identity :: Lens.Lens' SetIdentityMailFromDomain Prelude.Text
+setIdentityMailFromDomain_identity = Lens.lens (\SetIdentityMailFromDomain' {identity} -> identity) (\s@SetIdentityMailFromDomain' {} a -> s {identity = a} :: SetIdentityMailFromDomain)
+
+instance Core.AWSRequest SetIdentityMailFromDomain where
+  type
+    AWSResponse SetIdentityMailFromDomain =
+      SetIdentityMailFromDomainResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetIdentityMailFromDomainResult"
+      ( \s h x ->
+          SetIdentityMailFromDomainResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SetIdentityMailFromDomain where
+  hashWithSalt _salt SetIdentityMailFromDomain' {..} =
+    _salt
+      `Prelude.hashWithSalt` behaviorOnMXFailure
+      `Prelude.hashWithSalt` mailFromDomain
+      `Prelude.hashWithSalt` identity
+
+instance Prelude.NFData SetIdentityMailFromDomain where
+  rnf SetIdentityMailFromDomain' {..} =
+    Prelude.rnf behaviorOnMXFailure
+      `Prelude.seq` Prelude.rnf mailFromDomain
+      `Prelude.seq` Prelude.rnf identity
+
+instance Data.ToHeaders SetIdentityMailFromDomain where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SetIdentityMailFromDomain where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SetIdentityMailFromDomain where
+  toQuery SetIdentityMailFromDomain' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SetIdentityMailFromDomain" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "BehaviorOnMXFailure" Data.=: behaviorOnMXFailure,
+        "MailFromDomain" Data.=: mailFromDomain,
+        "Identity" Data.=: identity
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetIdentityMailFromDomainResponse' smart constructor.
+data SetIdentityMailFromDomainResponse = SetIdentityMailFromDomainResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityMailFromDomainResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setIdentityMailFromDomainResponse_httpStatus' - The response's http status code.
+newSetIdentityMailFromDomainResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityMailFromDomainResponse
+newSetIdentityMailFromDomainResponse pHttpStatus_ =
+  SetIdentityMailFromDomainResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+setIdentityMailFromDomainResponse_httpStatus :: Lens.Lens' SetIdentityMailFromDomainResponse Prelude.Int
+setIdentityMailFromDomainResponse_httpStatus = Lens.lens (\SetIdentityMailFromDomainResponse' {httpStatus} -> httpStatus) (\s@SetIdentityMailFromDomainResponse' {} a -> s {httpStatus = a} :: SetIdentityMailFromDomainResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityMailFromDomainResponse
+  where
+  rnf SetIdentityMailFromDomainResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetIdentityNotificationTopic.hs b/gen/Amazonka/SES/SetIdentityNotificationTopic.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetIdentityNotificationTopic.hs
@@ -0,0 +1,240 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetIdentityNotificationTopic
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets an Amazon Simple Notification Service (Amazon SNS) topic to use
+-- when delivering notifications. When you use this operation, you specify
+-- a verified identity, such as an email address or domain. When you send
+-- an email that uses the chosen identity in the Source field, Amazon SES
+-- sends notifications to the topic you specified. You can send bounce,
+-- complaint, or delivery notifications (or any combination of the three)
+-- to the Amazon SNS topic that you specify.
+--
+-- You can execute this operation no more than once per second.
+--
+-- For more information about feedback notification, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide>.
+module Amazonka.SES.SetIdentityNotificationTopic
+  ( -- * Creating a Request
+    SetIdentityNotificationTopic (..),
+    newSetIdentityNotificationTopic,
+
+    -- * Request Lenses
+    setIdentityNotificationTopic_snsTopic,
+    setIdentityNotificationTopic_identity,
+    setIdentityNotificationTopic_notificationType,
+
+    -- * Destructuring the Response
+    SetIdentityNotificationTopicResponse (..),
+    newSetIdentityNotificationTopicResponse,
+
+    -- * Response Lenses
+    setIdentityNotificationTopicResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to specify the Amazon SNS topic to which Amazon SES
+-- will publish bounce, complaint, or delivery notifications for emails
+-- sent with that identity as the Source. For information about Amazon SES
+-- notifications, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-sns.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetIdentityNotificationTopic' smart constructor.
+data SetIdentityNotificationTopic = SetIdentityNotificationTopic'
+  { -- | The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter
+    -- is omitted from the request or a null value is passed, @SnsTopic@ is
+    -- cleared and publishing is disabled.
+    snsTopic :: Prelude.Maybe Prelude.Text,
+    -- | The identity (email address or domain) that you want to set the Amazon
+    -- SNS topic for.
+    --
+    -- You can only specify a verified identity for this parameter.
+    --
+    -- You can specify an identity by using its name or by using its Amazon
+    -- Resource Name (ARN). The following examples are all valid identities:
+    -- @sender\@example.com@, @example.com@,
+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+    identity :: Prelude.Text,
+    -- | The type of notifications that will be published to the specified Amazon
+    -- SNS topic.
+    notificationType :: NotificationType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityNotificationTopic' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'snsTopic', 'setIdentityNotificationTopic_snsTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter
+-- is omitted from the request or a null value is passed, @SnsTopic@ is
+-- cleared and publishing is disabled.
+--
+-- 'identity', 'setIdentityNotificationTopic_identity' - The identity (email address or domain) that you want to set the Amazon
+-- SNS topic for.
+--
+-- You can only specify a verified identity for this parameter.
+--
+-- You can specify an identity by using its name or by using its Amazon
+-- Resource Name (ARN). The following examples are all valid identities:
+-- @sender\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+--
+-- 'notificationType', 'setIdentityNotificationTopic_notificationType' - The type of notifications that will be published to the specified Amazon
+-- SNS topic.
+newSetIdentityNotificationTopic ::
+  -- | 'identity'
+  Prelude.Text ->
+  -- | 'notificationType'
+  NotificationType ->
+  SetIdentityNotificationTopic
+newSetIdentityNotificationTopic
+  pIdentity_
+  pNotificationType_ =
+    SetIdentityNotificationTopic'
+      { snsTopic =
+          Prelude.Nothing,
+        identity = pIdentity_,
+        notificationType = pNotificationType_
+      }
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter
+-- is omitted from the request or a null value is passed, @SnsTopic@ is
+-- cleared and publishing is disabled.
+setIdentityNotificationTopic_snsTopic :: Lens.Lens' SetIdentityNotificationTopic (Prelude.Maybe Prelude.Text)
+setIdentityNotificationTopic_snsTopic = Lens.lens (\SetIdentityNotificationTopic' {snsTopic} -> snsTopic) (\s@SetIdentityNotificationTopic' {} a -> s {snsTopic = a} :: SetIdentityNotificationTopic)
+
+-- | The identity (email address or domain) that you want to set the Amazon
+-- SNS topic for.
+--
+-- You can only specify a verified identity for this parameter.
+--
+-- You can specify an identity by using its name or by using its Amazon
+-- Resource Name (ARN). The following examples are all valid identities:
+-- @sender\@example.com@, @example.com@,
+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.
+setIdentityNotificationTopic_identity :: Lens.Lens' SetIdentityNotificationTopic Prelude.Text
+setIdentityNotificationTopic_identity = Lens.lens (\SetIdentityNotificationTopic' {identity} -> identity) (\s@SetIdentityNotificationTopic' {} a -> s {identity = a} :: SetIdentityNotificationTopic)
+
+-- | The type of notifications that will be published to the specified Amazon
+-- SNS topic.
+setIdentityNotificationTopic_notificationType :: Lens.Lens' SetIdentityNotificationTopic NotificationType
+setIdentityNotificationTopic_notificationType = Lens.lens (\SetIdentityNotificationTopic' {notificationType} -> notificationType) (\s@SetIdentityNotificationTopic' {} a -> s {notificationType = a} :: SetIdentityNotificationTopic)
+
+instance Core.AWSRequest SetIdentityNotificationTopic where
+  type
+    AWSResponse SetIdentityNotificationTopic =
+      SetIdentityNotificationTopicResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetIdentityNotificationTopicResult"
+      ( \s h x ->
+          SetIdentityNotificationTopicResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SetIdentityNotificationTopic
+  where
+  hashWithSalt _salt SetIdentityNotificationTopic' {..} =
+    _salt
+      `Prelude.hashWithSalt` snsTopic
+      `Prelude.hashWithSalt` identity
+      `Prelude.hashWithSalt` notificationType
+
+instance Prelude.NFData SetIdentityNotificationTopic where
+  rnf SetIdentityNotificationTopic' {..} =
+    Prelude.rnf snsTopic
+      `Prelude.seq` Prelude.rnf identity
+      `Prelude.seq` Prelude.rnf notificationType
+
+instance Data.ToHeaders SetIdentityNotificationTopic where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SetIdentityNotificationTopic where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SetIdentityNotificationTopic where
+  toQuery SetIdentityNotificationTopic' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "SetIdentityNotificationTopic" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "SnsTopic" Data.=: snsTopic,
+        "Identity" Data.=: identity,
+        "NotificationType" Data.=: notificationType
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetIdentityNotificationTopicResponse' smart constructor.
+data SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityNotificationTopicResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setIdentityNotificationTopicResponse_httpStatus' - The response's http status code.
+newSetIdentityNotificationTopicResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityNotificationTopicResponse
+newSetIdentityNotificationTopicResponse pHttpStatus_ =
+  SetIdentityNotificationTopicResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+setIdentityNotificationTopicResponse_httpStatus :: Lens.Lens' SetIdentityNotificationTopicResponse Prelude.Int
+setIdentityNotificationTopicResponse_httpStatus = Lens.lens (\SetIdentityNotificationTopicResponse' {httpStatus} -> httpStatus) (\s@SetIdentityNotificationTopicResponse' {} a -> s {httpStatus = a} :: SetIdentityNotificationTopicResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityNotificationTopicResponse
+  where
+  rnf SetIdentityNotificationTopicResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/SetReceiptRulePosition.hs b/gen/Amazonka/SES/SetReceiptRulePosition.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/SetReceiptRulePosition.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.SetReceiptRulePosition
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.SetReceiptRulePosition
+  ( -- * Creating a Request
+    SetReceiptRulePosition (..),
+    newSetReceiptRulePosition,
+
+    -- * Request Lenses
+    setReceiptRulePosition_after,
+    setReceiptRulePosition_ruleSetName,
+    setReceiptRulePosition_ruleName,
+
+    -- * Destructuring the Response
+    SetReceiptRulePositionResponse (..),
+    newSetReceiptRulePositionResponse,
+
+    -- * Response Lenses
+    setReceiptRulePositionResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to set the position of a receipt rule in a receipt
+-- rule set. You use receipt rule sets to receive email with Amazon SES.
+-- For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSetReceiptRulePosition' smart constructor.
+data SetReceiptRulePosition = SetReceiptRulePosition'
+  { -- | The name of the receipt rule after which to place the specified receipt
+    -- rule.
+    after :: Prelude.Maybe Prelude.Text,
+    -- | The name of the receipt rule set that contains the receipt rule to
+    -- reposition.
+    ruleSetName :: Prelude.Text,
+    -- | The name of the receipt rule to reposition.
+    ruleName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetReceiptRulePosition' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'after', 'setReceiptRulePosition_after' - The name of the receipt rule after which to place the specified receipt
+-- rule.
+--
+-- 'ruleSetName', 'setReceiptRulePosition_ruleSetName' - The name of the receipt rule set that contains the receipt rule to
+-- reposition.
+--
+-- 'ruleName', 'setReceiptRulePosition_ruleName' - The name of the receipt rule to reposition.
+newSetReceiptRulePosition ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'ruleName'
+  Prelude.Text ->
+  SetReceiptRulePosition
+newSetReceiptRulePosition pRuleSetName_ pRuleName_ =
+  SetReceiptRulePosition'
+    { after = Prelude.Nothing,
+      ruleSetName = pRuleSetName_,
+      ruleName = pRuleName_
+    }
+
+-- | The name of the receipt rule after which to place the specified receipt
+-- rule.
+setReceiptRulePosition_after :: Lens.Lens' SetReceiptRulePosition (Prelude.Maybe Prelude.Text)
+setReceiptRulePosition_after = Lens.lens (\SetReceiptRulePosition' {after} -> after) (\s@SetReceiptRulePosition' {} a -> s {after = a} :: SetReceiptRulePosition)
+
+-- | The name of the receipt rule set that contains the receipt rule to
+-- reposition.
+setReceiptRulePosition_ruleSetName :: Lens.Lens' SetReceiptRulePosition Prelude.Text
+setReceiptRulePosition_ruleSetName = Lens.lens (\SetReceiptRulePosition' {ruleSetName} -> ruleSetName) (\s@SetReceiptRulePosition' {} a -> s {ruleSetName = a} :: SetReceiptRulePosition)
+
+-- | The name of the receipt rule to reposition.
+setReceiptRulePosition_ruleName :: Lens.Lens' SetReceiptRulePosition Prelude.Text
+setReceiptRulePosition_ruleName = Lens.lens (\SetReceiptRulePosition' {ruleName} -> ruleName) (\s@SetReceiptRulePosition' {} a -> s {ruleName = a} :: SetReceiptRulePosition)
+
+instance Core.AWSRequest SetReceiptRulePosition where
+  type
+    AWSResponse SetReceiptRulePosition =
+      SetReceiptRulePositionResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "SetReceiptRulePositionResult"
+      ( \s h x ->
+          SetReceiptRulePositionResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SetReceiptRulePosition where
+  hashWithSalt _salt SetReceiptRulePosition' {..} =
+    _salt
+      `Prelude.hashWithSalt` after
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` ruleName
+
+instance Prelude.NFData SetReceiptRulePosition where
+  rnf SetReceiptRulePosition' {..} =
+    Prelude.rnf after
+      `Prelude.seq` Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf ruleName
+
+instance Data.ToHeaders SetReceiptRulePosition where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath SetReceiptRulePosition where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery SetReceiptRulePosition where
+  toQuery SetReceiptRulePosition' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("SetReceiptRulePosition" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "After" Data.=: after,
+        "RuleSetName" Data.=: ruleSetName,
+        "RuleName" Data.=: ruleName
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newSetReceiptRulePositionResponse' smart constructor.
+data SetReceiptRulePositionResponse = SetReceiptRulePositionResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetReceiptRulePositionResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'setReceiptRulePositionResponse_httpStatus' - The response's http status code.
+newSetReceiptRulePositionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetReceiptRulePositionResponse
+newSetReceiptRulePositionResponse pHttpStatus_ =
+  SetReceiptRulePositionResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+setReceiptRulePositionResponse_httpStatus :: Lens.Lens' SetReceiptRulePositionResponse Prelude.Int
+setReceiptRulePositionResponse_httpStatus = Lens.lens (\SetReceiptRulePositionResponse' {httpStatus} -> httpStatus) (\s@SetReceiptRulePositionResponse' {} a -> s {httpStatus = a} :: SetReceiptRulePositionResponse)
+
+instance
+  Prelude.NFData
+    SetReceiptRulePositionResponse
+  where
+  rnf SetReceiptRulePositionResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/TestRenderTemplate.hs b/gen/Amazonka/SES/TestRenderTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/TestRenderTemplate.hs
@@ -0,0 +1,191 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.TestRenderTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a preview of the MIME content of an email when provided with a
+-- template and a set of replacement data.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.TestRenderTemplate
+  ( -- * Creating a Request
+    TestRenderTemplate (..),
+    newTestRenderTemplate,
+
+    -- * Request Lenses
+    testRenderTemplate_templateName,
+    testRenderTemplate_templateData,
+
+    -- * Destructuring the Response
+    TestRenderTemplateResponse (..),
+    newTestRenderTemplateResponse,
+
+    -- * Response Lenses
+    testRenderTemplateResponse_renderedTemplate,
+    testRenderTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newTestRenderTemplate' smart constructor.
+data TestRenderTemplate = TestRenderTemplate'
+  { -- | The name of the template that you want to render.
+    templateName :: Prelude.Text,
+    -- | A list of replacement values to apply to the template. This parameter is
+    -- a JSON object, typically consisting of key-value pairs in which the keys
+    -- correspond to replacement tags in the email template.
+    templateData :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TestRenderTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'templateName', 'testRenderTemplate_templateName' - The name of the template that you want to render.
+--
+-- 'templateData', 'testRenderTemplate_templateData' - A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+newTestRenderTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  -- | 'templateData'
+  Prelude.Text ->
+  TestRenderTemplate
+newTestRenderTemplate pTemplateName_ pTemplateData_ =
+  TestRenderTemplate'
+    { templateName = pTemplateName_,
+      templateData = pTemplateData_
+    }
+
+-- | The name of the template that you want to render.
+testRenderTemplate_templateName :: Lens.Lens' TestRenderTemplate Prelude.Text
+testRenderTemplate_templateName = Lens.lens (\TestRenderTemplate' {templateName} -> templateName) (\s@TestRenderTemplate' {} a -> s {templateName = a} :: TestRenderTemplate)
+
+-- | A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+testRenderTemplate_templateData :: Lens.Lens' TestRenderTemplate Prelude.Text
+testRenderTemplate_templateData = Lens.lens (\TestRenderTemplate' {templateData} -> templateData) (\s@TestRenderTemplate' {} a -> s {templateData = a} :: TestRenderTemplate)
+
+instance Core.AWSRequest TestRenderTemplate where
+  type
+    AWSResponse TestRenderTemplate =
+      TestRenderTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "TestRenderTemplateResult"
+      ( \s h x ->
+          TestRenderTemplateResponse'
+            Prelude.<$> (x Data..@? "RenderedTemplate")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable TestRenderTemplate where
+  hashWithSalt _salt TestRenderTemplate' {..} =
+    _salt
+      `Prelude.hashWithSalt` templateName
+      `Prelude.hashWithSalt` templateData
+
+instance Prelude.NFData TestRenderTemplate where
+  rnf TestRenderTemplate' {..} =
+    Prelude.rnf templateName
+      `Prelude.seq` Prelude.rnf templateData
+
+instance Data.ToHeaders TestRenderTemplate where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath TestRenderTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery TestRenderTemplate where
+  toQuery TestRenderTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("TestRenderTemplate" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "TemplateName" Data.=: templateName,
+        "TemplateData" Data.=: templateData
+      ]
+
+-- | /See:/ 'newTestRenderTemplateResponse' smart constructor.
+data TestRenderTemplateResponse = TestRenderTemplateResponse'
+  { -- | The complete MIME message rendered by applying the data in the
+    -- TemplateData parameter to the template specified in the TemplateName
+    -- parameter.
+    renderedTemplate :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TestRenderTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'renderedTemplate', 'testRenderTemplateResponse_renderedTemplate' - The complete MIME message rendered by applying the data in the
+-- TemplateData parameter to the template specified in the TemplateName
+-- parameter.
+--
+-- 'httpStatus', 'testRenderTemplateResponse_httpStatus' - The response's http status code.
+newTestRenderTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  TestRenderTemplateResponse
+newTestRenderTemplateResponse pHttpStatus_ =
+  TestRenderTemplateResponse'
+    { renderedTemplate =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The complete MIME message rendered by applying the data in the
+-- TemplateData parameter to the template specified in the TemplateName
+-- parameter.
+testRenderTemplateResponse_renderedTemplate :: Lens.Lens' TestRenderTemplateResponse (Prelude.Maybe Prelude.Text)
+testRenderTemplateResponse_renderedTemplate = Lens.lens (\TestRenderTemplateResponse' {renderedTemplate} -> renderedTemplate) (\s@TestRenderTemplateResponse' {} a -> s {renderedTemplate = a} :: TestRenderTemplateResponse)
+
+-- | The response's http status code.
+testRenderTemplateResponse_httpStatus :: Lens.Lens' TestRenderTemplateResponse Prelude.Int
+testRenderTemplateResponse_httpStatus = Lens.lens (\TestRenderTemplateResponse' {httpStatus} -> httpStatus) (\s@TestRenderTemplateResponse' {} a -> s {httpStatus = a} :: TestRenderTemplateResponse)
+
+instance Prelude.NFData TestRenderTemplateResponse where
+  rnf TestRenderTemplateResponse' {..} =
+    Prelude.rnf renderedTemplate
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/Types.hs b/gen/Amazonka/SES/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types.hs
@@ -0,0 +1,848 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AccountSendingPausedException,
+    _AlreadyExistsException,
+    _CannotDeleteException,
+    _ConfigurationSetAlreadyExistsException,
+    _ConfigurationSetDoesNotExistException,
+    _ConfigurationSetSendingPausedException,
+    _CustomVerificationEmailInvalidContentException,
+    _CustomVerificationEmailTemplateAlreadyExistsException,
+    _CustomVerificationEmailTemplateDoesNotExistException,
+    _EventDestinationAlreadyExistsException,
+    _EventDestinationDoesNotExistException,
+    _FromEmailAddressNotVerifiedException,
+    _InvalidCloudWatchDestinationException,
+    _InvalidConfigurationSetException,
+    _InvalidDeliveryOptionsException,
+    _InvalidFirehoseDestinationException,
+    _InvalidLambdaFunctionException,
+    _InvalidPolicyException,
+    _InvalidRenderingParameterException,
+    _InvalidS3ConfigurationException,
+    _InvalidSNSDestinationException,
+    _InvalidSnsTopicException,
+    _InvalidTemplateException,
+    _InvalidTrackingOptionsException,
+    _LimitExceededException,
+    _MailFromDomainNotVerifiedException,
+    _MessageRejected,
+    _MissingRenderingAttributeException,
+    _ProductionAccessNotGrantedException,
+    _RuleDoesNotExistException,
+    _RuleSetDoesNotExistException,
+    _TemplateDoesNotExistException,
+    _TrackingOptionsAlreadyExistsException,
+    _TrackingOptionsDoesNotExistException,
+
+    -- * BehaviorOnMXFailure
+    BehaviorOnMXFailure (..),
+
+    -- * BounceType
+    BounceType (..),
+
+    -- * BulkEmailStatus
+    BulkEmailStatus (..),
+
+    -- * ConfigurationSetAttribute
+    ConfigurationSetAttribute (..),
+
+    -- * CustomMailFromStatus
+    CustomMailFromStatus (..),
+
+    -- * DimensionValueSource
+    DimensionValueSource (..),
+
+    -- * DsnAction
+    DsnAction (..),
+
+    -- * EventType
+    EventType (..),
+
+    -- * IdentityType
+    IdentityType (..),
+
+    -- * InvocationType
+    InvocationType (..),
+
+    -- * NotificationType
+    NotificationType (..),
+
+    -- * ReceiptFilterPolicy
+    ReceiptFilterPolicy (..),
+
+    -- * SNSActionEncoding
+    SNSActionEncoding (..),
+
+    -- * StopScope
+    StopScope (..),
+
+    -- * TlsPolicy
+    TlsPolicy (..),
+
+    -- * VerificationStatus
+    VerificationStatus (..),
+
+    -- * AddHeaderAction
+    AddHeaderAction (..),
+    newAddHeaderAction,
+    addHeaderAction_headerName,
+    addHeaderAction_headerValue,
+
+    -- * Body
+    Body (..),
+    newBody,
+    body_html,
+    body_text,
+
+    -- * BounceAction
+    BounceAction (..),
+    newBounceAction,
+    bounceAction_statusCode,
+    bounceAction_topicArn,
+    bounceAction_smtpReplyCode,
+    bounceAction_message,
+    bounceAction_sender,
+
+    -- * BouncedRecipientInfo
+    BouncedRecipientInfo (..),
+    newBouncedRecipientInfo,
+    bouncedRecipientInfo_bounceType,
+    bouncedRecipientInfo_recipientArn,
+    bouncedRecipientInfo_recipientDsnFields,
+    bouncedRecipientInfo_recipient,
+
+    -- * BulkEmailDestination
+    BulkEmailDestination (..),
+    newBulkEmailDestination,
+    bulkEmailDestination_replacementTags,
+    bulkEmailDestination_replacementTemplateData,
+    bulkEmailDestination_destination,
+
+    -- * BulkEmailDestinationStatus
+    BulkEmailDestinationStatus (..),
+    newBulkEmailDestinationStatus,
+    bulkEmailDestinationStatus_error,
+    bulkEmailDestinationStatus_messageId,
+    bulkEmailDestinationStatus_status,
+
+    -- * CloudWatchDestination
+    CloudWatchDestination (..),
+    newCloudWatchDestination,
+    cloudWatchDestination_dimensionConfigurations,
+
+    -- * CloudWatchDimensionConfiguration
+    CloudWatchDimensionConfiguration (..),
+    newCloudWatchDimensionConfiguration,
+    cloudWatchDimensionConfiguration_dimensionName,
+    cloudWatchDimensionConfiguration_dimensionValueSource,
+    cloudWatchDimensionConfiguration_defaultDimensionValue,
+
+    -- * ConfigurationSet
+    ConfigurationSet (..),
+    newConfigurationSet,
+    configurationSet_name,
+
+    -- * Content
+    Content (..),
+    newContent,
+    content_charset,
+    content_data,
+
+    -- * CustomVerificationEmailTemplate
+    CustomVerificationEmailTemplate (..),
+    newCustomVerificationEmailTemplate,
+    customVerificationEmailTemplate_failureRedirectionURL,
+    customVerificationEmailTemplate_fromEmailAddress,
+    customVerificationEmailTemplate_successRedirectionURL,
+    customVerificationEmailTemplate_templateName,
+    customVerificationEmailTemplate_templateSubject,
+
+    -- * DeliveryOptions
+    DeliveryOptions (..),
+    newDeliveryOptions,
+    deliveryOptions_tlsPolicy,
+
+    -- * Destination
+    Destination (..),
+    newDestination,
+    destination_bccAddresses,
+    destination_ccAddresses,
+    destination_toAddresses,
+
+    -- * EventDestination
+    EventDestination (..),
+    newEventDestination,
+    eventDestination_cloudWatchDestination,
+    eventDestination_enabled,
+    eventDestination_kinesisFirehoseDestination,
+    eventDestination_sNSDestination,
+    eventDestination_name,
+    eventDestination_matchingEventTypes,
+
+    -- * ExtensionField
+    ExtensionField (..),
+    newExtensionField,
+    extensionField_name,
+    extensionField_value,
+
+    -- * IdentityDkimAttributes
+    IdentityDkimAttributes (..),
+    newIdentityDkimAttributes,
+    identityDkimAttributes_dkimTokens,
+    identityDkimAttributes_dkimEnabled,
+    identityDkimAttributes_dkimVerificationStatus,
+
+    -- * IdentityMailFromDomainAttributes
+    IdentityMailFromDomainAttributes (..),
+    newIdentityMailFromDomainAttributes,
+    identityMailFromDomainAttributes_mailFromDomain,
+    identityMailFromDomainAttributes_mailFromDomainStatus,
+    identityMailFromDomainAttributes_behaviorOnMXFailure,
+
+    -- * IdentityNotificationAttributes
+    IdentityNotificationAttributes (..),
+    newIdentityNotificationAttributes,
+    identityNotificationAttributes_headersInBounceNotificationsEnabled,
+    identityNotificationAttributes_headersInComplaintNotificationsEnabled,
+    identityNotificationAttributes_headersInDeliveryNotificationsEnabled,
+    identityNotificationAttributes_bounceTopic,
+    identityNotificationAttributes_complaintTopic,
+    identityNotificationAttributes_deliveryTopic,
+    identityNotificationAttributes_forwardingEnabled,
+
+    -- * IdentityVerificationAttributes
+    IdentityVerificationAttributes (..),
+    newIdentityVerificationAttributes,
+    identityVerificationAttributes_verificationToken,
+    identityVerificationAttributes_verificationStatus,
+
+    -- * KinesisFirehoseDestination
+    KinesisFirehoseDestination (..),
+    newKinesisFirehoseDestination,
+    kinesisFirehoseDestination_iAMRoleARN,
+    kinesisFirehoseDestination_deliveryStreamARN,
+
+    -- * LambdaAction
+    LambdaAction (..),
+    newLambdaAction,
+    lambdaAction_invocationType,
+    lambdaAction_topicArn,
+    lambdaAction_functionArn,
+
+    -- * Message
+    Message (..),
+    newMessage,
+    message_subject,
+    message_body,
+
+    -- * MessageDsn
+    MessageDsn (..),
+    newMessageDsn,
+    messageDsn_arrivalDate,
+    messageDsn_extensionFields,
+    messageDsn_reportingMta,
+
+    -- * MessageTag
+    MessageTag (..),
+    newMessageTag,
+    messageTag_name,
+    messageTag_value,
+
+    -- * RawMessage
+    RawMessage (..),
+    newRawMessage,
+    rawMessage_data,
+
+    -- * ReceiptAction
+    ReceiptAction (..),
+    newReceiptAction,
+    receiptAction_addHeaderAction,
+    receiptAction_bounceAction,
+    receiptAction_lambdaAction,
+    receiptAction_s3Action,
+    receiptAction_sNSAction,
+    receiptAction_stopAction,
+    receiptAction_workmailAction,
+
+    -- * ReceiptFilter
+    ReceiptFilter (..),
+    newReceiptFilter,
+    receiptFilter_name,
+    receiptFilter_ipFilter,
+
+    -- * ReceiptIpFilter
+    ReceiptIpFilter (..),
+    newReceiptIpFilter,
+    receiptIpFilter_policy,
+    receiptIpFilter_cidr,
+
+    -- * ReceiptRule
+    ReceiptRule (..),
+    newReceiptRule,
+    receiptRule_actions,
+    receiptRule_enabled,
+    receiptRule_recipients,
+    receiptRule_scanEnabled,
+    receiptRule_tlsPolicy,
+    receiptRule_name,
+
+    -- * ReceiptRuleSetMetadata
+    ReceiptRuleSetMetadata (..),
+    newReceiptRuleSetMetadata,
+    receiptRuleSetMetadata_createdTimestamp,
+    receiptRuleSetMetadata_name,
+
+    -- * RecipientDsnFields
+    RecipientDsnFields (..),
+    newRecipientDsnFields,
+    recipientDsnFields_diagnosticCode,
+    recipientDsnFields_extensionFields,
+    recipientDsnFields_finalRecipient,
+    recipientDsnFields_lastAttemptDate,
+    recipientDsnFields_remoteMta,
+    recipientDsnFields_action,
+    recipientDsnFields_status,
+
+    -- * ReputationOptions
+    ReputationOptions (..),
+    newReputationOptions,
+    reputationOptions_lastFreshStart,
+    reputationOptions_reputationMetricsEnabled,
+    reputationOptions_sendingEnabled,
+
+    -- * S3Action
+    S3Action (..),
+    newS3Action,
+    s3Action_kmsKeyArn,
+    s3Action_objectKeyPrefix,
+    s3Action_topicArn,
+    s3Action_bucketName,
+
+    -- * SNSAction
+    SNSAction (..),
+    newSNSAction,
+    sNSAction_encoding,
+    sNSAction_topicArn,
+
+    -- * SNSDestination
+    SNSDestination (..),
+    newSNSDestination,
+    sNSDestination_topicARN,
+
+    -- * SendDataPoint
+    SendDataPoint (..),
+    newSendDataPoint,
+    sendDataPoint_bounces,
+    sendDataPoint_complaints,
+    sendDataPoint_deliveryAttempts,
+    sendDataPoint_rejects,
+    sendDataPoint_timestamp,
+
+    -- * StopAction
+    StopAction (..),
+    newStopAction,
+    stopAction_topicArn,
+    stopAction_scope,
+
+    -- * Template
+    Template (..),
+    newTemplate,
+    template_htmlPart,
+    template_subjectPart,
+    template_textPart,
+    template_templateName,
+
+    -- * TemplateMetadata
+    TemplateMetadata (..),
+    newTemplateMetadata,
+    templateMetadata_createdTimestamp,
+    templateMetadata_name,
+
+    -- * TrackingOptions
+    TrackingOptions (..),
+    newTrackingOptions,
+    trackingOptions_customRedirectDomain,
+
+    -- * WorkmailAction
+    WorkmailAction (..),
+    newWorkmailAction,
+    workmailAction_topicArn,
+    workmailAction_organizationArn,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.AddHeaderAction
+import Amazonka.SES.Types.BehaviorOnMXFailure
+import Amazonka.SES.Types.Body
+import Amazonka.SES.Types.BounceAction
+import Amazonka.SES.Types.BounceType
+import Amazonka.SES.Types.BouncedRecipientInfo
+import Amazonka.SES.Types.BulkEmailDestination
+import Amazonka.SES.Types.BulkEmailDestinationStatus
+import Amazonka.SES.Types.BulkEmailStatus
+import Amazonka.SES.Types.CloudWatchDestination
+import Amazonka.SES.Types.CloudWatchDimensionConfiguration
+import Amazonka.SES.Types.ConfigurationSet
+import Amazonka.SES.Types.ConfigurationSetAttribute
+import Amazonka.SES.Types.Content
+import Amazonka.SES.Types.CustomMailFromStatus
+import Amazonka.SES.Types.CustomVerificationEmailTemplate
+import Amazonka.SES.Types.DeliveryOptions
+import Amazonka.SES.Types.Destination
+import Amazonka.SES.Types.DimensionValueSource
+import Amazonka.SES.Types.DsnAction
+import Amazonka.SES.Types.EventDestination
+import Amazonka.SES.Types.EventType
+import Amazonka.SES.Types.ExtensionField
+import Amazonka.SES.Types.IdentityDkimAttributes
+import Amazonka.SES.Types.IdentityMailFromDomainAttributes
+import Amazonka.SES.Types.IdentityNotificationAttributes
+import Amazonka.SES.Types.IdentityType
+import Amazonka.SES.Types.IdentityVerificationAttributes
+import Amazonka.SES.Types.InvocationType
+import Amazonka.SES.Types.KinesisFirehoseDestination
+import Amazonka.SES.Types.LambdaAction
+import Amazonka.SES.Types.Message
+import Amazonka.SES.Types.MessageDsn
+import Amazonka.SES.Types.MessageTag
+import Amazonka.SES.Types.NotificationType
+import Amazonka.SES.Types.RawMessage
+import Amazonka.SES.Types.ReceiptAction
+import Amazonka.SES.Types.ReceiptFilter
+import Amazonka.SES.Types.ReceiptFilterPolicy
+import Amazonka.SES.Types.ReceiptIpFilter
+import Amazonka.SES.Types.ReceiptRule
+import Amazonka.SES.Types.ReceiptRuleSetMetadata
+import Amazonka.SES.Types.RecipientDsnFields
+import Amazonka.SES.Types.ReputationOptions
+import Amazonka.SES.Types.S3Action
+import Amazonka.SES.Types.SNSAction
+import Amazonka.SES.Types.SNSActionEncoding
+import Amazonka.SES.Types.SNSDestination
+import Amazonka.SES.Types.SendDataPoint
+import Amazonka.SES.Types.StopAction
+import Amazonka.SES.Types.StopScope
+import Amazonka.SES.Types.Template
+import Amazonka.SES.Types.TemplateMetadata
+import Amazonka.SES.Types.TlsPolicy
+import Amazonka.SES.Types.TrackingOptions
+import Amazonka.SES.Types.VerificationStatus
+import Amazonka.SES.Types.WorkmailAction
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2010-12-01@ of the Amazon Simple Email Service SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "SES",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "email",
+      Core.signingName = "ses",
+      Core.version = "2010-12-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseXMLError "SES",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | Indicates that email sending is disabled for your entire Amazon SES
+-- account.
+--
+-- You can enable or disable email sending for your Amazon SES account
+-- using UpdateAccountSendingEnabled.
+_AccountSendingPausedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AccountSendingPausedException =
+  Core._MatchServiceError
+    defaultService
+    "AccountSendingPausedException"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that a resource could not be created because of a naming
+-- conflict.
+_AlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "AlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the delete operation could not be completed.
+_CannotDeleteException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CannotDeleteException =
+  Core._MatchServiceError
+    defaultService
+    "CannotDelete"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the configuration set could not be created because of a
+-- naming conflict.
+_ConfigurationSetAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConfigurationSetAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "ConfigurationSetAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the configuration set does not exist.
+_ConfigurationSetDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConfigurationSetDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "ConfigurationSetDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that email sending is disabled for the configuration set.
+--
+-- You can enable or disable email sending for a configuration set using
+-- UpdateConfigurationSetSendingEnabled.
+_ConfigurationSetSendingPausedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConfigurationSetSendingPausedException =
+  Core._MatchServiceError
+    defaultService
+    "ConfigurationSetSendingPausedException"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that custom verification email template provided content is
+-- invalid.
+_CustomVerificationEmailInvalidContentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CustomVerificationEmailInvalidContentException =
+  Core._MatchServiceError
+    defaultService
+    "CustomVerificationEmailInvalidContent"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that a custom verification email template with the name you
+-- specified already exists.
+_CustomVerificationEmailTemplateAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CustomVerificationEmailTemplateAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "CustomVerificationEmailTemplateAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that a custom verification email template with the name you
+-- specified does not exist.
+_CustomVerificationEmailTemplateDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CustomVerificationEmailTemplateDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "CustomVerificationEmailTemplateDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the event destination could not be created because of a
+-- naming conflict.
+_EventDestinationAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_EventDestinationAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "EventDestinationAlreadyExists"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the event destination does not exist.
+_EventDestinationDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_EventDestinationDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "EventDestinationDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the sender address specified for a custom verification
+-- email is not verified, and is therefore not eligible to send the custom
+-- verification email.
+_FromEmailAddressNotVerifiedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_FromEmailAddressNotVerifiedException =
+  Core._MatchServiceError
+    defaultService
+    "FromEmailAddressNotVerified"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the Amazon CloudWatch destination is invalid. See the
+-- error message for details.
+_InvalidCloudWatchDestinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidCloudWatchDestinationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidCloudWatchDestination"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the configuration set is invalid. See the error message
+-- for details.
+_InvalidConfigurationSetException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidConfigurationSetException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidConfigurationSet"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that provided delivery option is invalid.
+_InvalidDeliveryOptionsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidDeliveryOptionsException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidDeliveryOptions"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the Amazon Kinesis Firehose destination is invalid. See
+-- the error message for details.
+_InvalidFirehoseDestinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidFirehoseDestinationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidFirehoseDestination"
+    Prelude.. Core.hasStatus 400
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidLambdaFunctionException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidLambdaFunctionException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidLambdaFunction"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the provided policy is invalid. Check the error stack for
+-- more information about what caused the error.
+_InvalidPolicyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidPolicyException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidPolicy"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that one or more of the replacement values you provided is
+-- invalid. This error may occur when the TemplateData object contains
+-- invalid JSON.
+_InvalidRenderingParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidRenderingParameterException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidRenderingParameter"
+    Prelude.. Core.hasStatus 400
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidS3ConfigurationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidS3ConfigurationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidS3Configuration"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the Amazon Simple Notification Service (Amazon SNS)
+-- destination is invalid. See the error message for details.
+_InvalidSNSDestinationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidSNSDestinationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidSNSDestination"
+    Prelude.. Core.hasStatus 400
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+_InvalidSnsTopicException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidSnsTopicException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidSnsTopic"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the template that you specified could not be rendered.
+-- This issue may occur when a template refers to a partial that does not
+-- exist.
+_InvalidTemplateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidTemplateException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidTemplate"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the custom domain to be used for open and click tracking
+-- redirects is invalid. This error appears most often in the following
+-- situations:
+--
+-- -   When the tracking domain you specified is not verified in Amazon
+--     SES.
+--
+-- -   When the tracking domain you specified is not a valid domain or
+--     subdomain.
+_InvalidTrackingOptionsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidTrackingOptionsException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidTrackingOptions"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that a resource could not be created because of service
+-- limits. For a list of Amazon SES limits, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/limits.html Amazon SES Developer Guide>.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceeded"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the message could not be sent because Amazon SES could
+-- not read the MX record required to use the specified MAIL FROM domain.
+-- For information about editing the custom MAIL FROM domain settings for
+-- an identity, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from-edit.html Amazon SES Developer Guide>.
+_MailFromDomainNotVerifiedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MailFromDomainNotVerifiedException =
+  Core._MatchServiceError
+    defaultService
+    "MailFromDomainNotVerifiedException"
+    Prelude.. Core.hasStatus 400
+
+-- | 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 :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MessageRejected =
+  Core._MatchServiceError
+    defaultService
+    "MessageRejected"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that one or more of the replacement values for the specified
+-- template was not specified. Ensure that the TemplateData object contains
+-- references to all of the replacement tags in the specified template.
+_MissingRenderingAttributeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_MissingRenderingAttributeException =
+  Core._MatchServiceError
+    defaultService
+    "MissingRenderingAttribute"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the account has not been granted production access.
+_ProductionAccessNotGrantedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ProductionAccessNotGrantedException =
+  Core._MatchServiceError
+    defaultService
+    "ProductionAccessNotGranted"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the provided receipt rule does not exist.
+_RuleDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_RuleDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "RuleDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the provided receipt rule set does not exist.
+_RuleSetDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_RuleSetDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "RuleSetDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the Template object you specified does not exist in your
+-- Amazon SES account.
+_TemplateDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TemplateDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "TemplateDoesNotExist"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the configuration set you specified already contains a
+-- TrackingOptions object.
+_TrackingOptionsAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TrackingOptionsAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "TrackingOptionsAlreadyExistsException"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates that the TrackingOptions object you specified does not exist.
+_TrackingOptionsDoesNotExistException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TrackingOptionsDoesNotExistException =
+  Core._MatchServiceError
+    defaultService
+    "TrackingOptionsDoesNotExistException"
+    Prelude.. Core.hasStatus 400
diff --git a/gen/Amazonka/SES/Types/AddHeaderAction.hs b/gen/Amazonka/SES/Types/AddHeaderAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/AddHeaderAction.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.AddHeaderAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.AddHeaderAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-add-header.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newAddHeaderAction' smart constructor.
+data AddHeaderAction = AddHeaderAction'
+  { -- | 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.
+    headerName :: Prelude.Text,
+    -- | Must be less than 2048 characters, and must not contain newline
+    -- characters (\"\\r\" or \"\\n\").
+    headerValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddHeaderAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'headerName', 'addHeaderAction_headerName' - 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.
+--
+-- 'headerValue', 'addHeaderAction_headerValue' - Must be less than 2048 characters, and must not contain newline
+-- characters (\"\\r\" or \"\\n\").
+newAddHeaderAction ::
+  -- | 'headerName'
+  Prelude.Text ->
+  -- | 'headerValue'
+  Prelude.Text ->
+  AddHeaderAction
+newAddHeaderAction pHeaderName_ pHeaderValue_ =
+  AddHeaderAction'
+    { headerName = pHeaderName_,
+      headerValue = 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.
+addHeaderAction_headerName :: Lens.Lens' AddHeaderAction Prelude.Text
+addHeaderAction_headerName = Lens.lens (\AddHeaderAction' {headerName} -> headerName) (\s@AddHeaderAction' {} a -> s {headerName = a} :: AddHeaderAction)
+
+-- | Must be less than 2048 characters, and must not contain newline
+-- characters (\"\\r\" or \"\\n\").
+addHeaderAction_headerValue :: Lens.Lens' AddHeaderAction Prelude.Text
+addHeaderAction_headerValue = Lens.lens (\AddHeaderAction' {headerValue} -> headerValue) (\s@AddHeaderAction' {} a -> s {headerValue = a} :: AddHeaderAction)
+
+instance Data.FromXML AddHeaderAction where
+  parseXML x =
+    AddHeaderAction'
+      Prelude.<$> (x Data..@ "HeaderName")
+      Prelude.<*> (x Data..@ "HeaderValue")
+
+instance Prelude.Hashable AddHeaderAction where
+  hashWithSalt _salt AddHeaderAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` headerName
+      `Prelude.hashWithSalt` headerValue
+
+instance Prelude.NFData AddHeaderAction where
+  rnf AddHeaderAction' {..} =
+    Prelude.rnf headerName
+      `Prelude.seq` Prelude.rnf headerValue
+
+instance Data.ToQuery AddHeaderAction where
+  toQuery AddHeaderAction' {..} =
+    Prelude.mconcat
+      [ "HeaderName" Data.=: headerName,
+        "HeaderValue" Data.=: headerValue
+      ]
diff --git a/gen/Amazonka/SES/Types/BehaviorOnMXFailure.hs b/gen/Amazonka/SES/Types/BehaviorOnMXFailure.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BehaviorOnMXFailure.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BehaviorOnMXFailure
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BehaviorOnMXFailure
+  ( BehaviorOnMXFailure
+      ( ..,
+        BehaviorOnMXFailure_RejectMessage,
+        BehaviorOnMXFailure_UseDefaultValue
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BehaviorOnMXFailure = BehaviorOnMXFailure'
+  { fromBehaviorOnMXFailure ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BehaviorOnMXFailure_RejectMessage :: BehaviorOnMXFailure
+pattern BehaviorOnMXFailure_RejectMessage = BehaviorOnMXFailure' "RejectMessage"
+
+pattern BehaviorOnMXFailure_UseDefaultValue :: BehaviorOnMXFailure
+pattern BehaviorOnMXFailure_UseDefaultValue = BehaviorOnMXFailure' "UseDefaultValue"
+
+{-# COMPLETE
+  BehaviorOnMXFailure_RejectMessage,
+  BehaviorOnMXFailure_UseDefaultValue,
+  BehaviorOnMXFailure'
+  #-}
diff --git a/gen/Amazonka/SES/Types/Body.hs b/gen/Amazonka/SES/Types/Body.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/Body.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.Body
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.Body where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.Content
+
+-- | 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:/ 'newBody' smart constructor.
+data Body = Body'
+  { -- | 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.
+    html :: Prelude.Maybe Content,
+    -- | 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).
+    text :: Prelude.Maybe Content
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Body' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'html', 'body_html' - 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.
+--
+-- 'text', 'body_text' - 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).
+newBody ::
+  Body
+newBody =
+  Body'
+    { html = Prelude.Nothing,
+      text = Prelude.Nothing
+    }
+
+-- | 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.
+body_html :: Lens.Lens' Body (Prelude.Maybe Content)
+body_html = Lens.lens (\Body' {html} -> html) (\s@Body' {} a -> s {html = a} :: Body)
+
+-- | 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).
+body_text :: Lens.Lens' Body (Prelude.Maybe Content)
+body_text = Lens.lens (\Body' {text} -> text) (\s@Body' {} a -> s {text = a} :: Body)
+
+instance Prelude.Hashable Body where
+  hashWithSalt _salt Body' {..} =
+    _salt
+      `Prelude.hashWithSalt` html
+      `Prelude.hashWithSalt` text
+
+instance Prelude.NFData Body where
+  rnf Body' {..} =
+    Prelude.rnf html `Prelude.seq` Prelude.rnf text
+
+instance Data.ToQuery Body where
+  toQuery Body' {..} =
+    Prelude.mconcat
+      ["Html" Data.=: html, "Text" Data.=: text]
diff --git a/gen/Amazonka/SES/Types/BounceAction.hs b/gen/Amazonka/SES/Types/BounceAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BounceAction.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BounceAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BounceAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-bounce.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newBounceAction' smart constructor.
+data BounceAction = BounceAction'
+  { -- | The SMTP enhanced status code, as defined by
+    -- <https://tools.ietf.org/html/rfc3463 RFC 3463>.
+    statusCode :: Prelude.Maybe Prelude.Text,
+    -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Maybe Prelude.Text,
+    -- | The SMTP reply code, as defined by
+    -- <https://tools.ietf.org/html/rfc5321 RFC 5321>.
+    smtpReplyCode :: Prelude.Text,
+    -- | Human-readable text to include in the bounce message.
+    message :: Prelude.Text,
+    -- | The email address of the sender of the bounced email. This is the
+    -- address from which the bounce message will be sent.
+    sender :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BounceAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'statusCode', 'bounceAction_statusCode' - The SMTP enhanced status code, as defined by
+-- <https://tools.ietf.org/html/rfc3463 RFC 3463>.
+--
+-- 'topicArn', 'bounceAction_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+--
+-- 'smtpReplyCode', 'bounceAction_smtpReplyCode' - The SMTP reply code, as defined by
+-- <https://tools.ietf.org/html/rfc5321 RFC 5321>.
+--
+-- 'message', 'bounceAction_message' - Human-readable text to include in the bounce message.
+--
+-- 'sender', 'bounceAction_sender' - The email address of the sender of the bounced email. This is the
+-- address from which the bounce message will be sent.
+newBounceAction ::
+  -- | 'smtpReplyCode'
+  Prelude.Text ->
+  -- | 'message'
+  Prelude.Text ->
+  -- | 'sender'
+  Prelude.Text ->
+  BounceAction
+newBounceAction pSmtpReplyCode_ pMessage_ pSender_ =
+  BounceAction'
+    { statusCode = Prelude.Nothing,
+      topicArn = Prelude.Nothing,
+      smtpReplyCode = pSmtpReplyCode_,
+      message = pMessage_,
+      sender = pSender_
+    }
+
+-- | The SMTP enhanced status code, as defined by
+-- <https://tools.ietf.org/html/rfc3463 RFC 3463>.
+bounceAction_statusCode :: Lens.Lens' BounceAction (Prelude.Maybe Prelude.Text)
+bounceAction_statusCode = Lens.lens (\BounceAction' {statusCode} -> statusCode) (\s@BounceAction' {} a -> s {statusCode = a} :: BounceAction)
+
+-- | 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+bounceAction_topicArn :: Lens.Lens' BounceAction (Prelude.Maybe Prelude.Text)
+bounceAction_topicArn = Lens.lens (\BounceAction' {topicArn} -> topicArn) (\s@BounceAction' {} a -> s {topicArn = a} :: BounceAction)
+
+-- | The SMTP reply code, as defined by
+-- <https://tools.ietf.org/html/rfc5321 RFC 5321>.
+bounceAction_smtpReplyCode :: Lens.Lens' BounceAction Prelude.Text
+bounceAction_smtpReplyCode = Lens.lens (\BounceAction' {smtpReplyCode} -> smtpReplyCode) (\s@BounceAction' {} a -> s {smtpReplyCode = a} :: BounceAction)
+
+-- | Human-readable text to include in the bounce message.
+bounceAction_message :: Lens.Lens' BounceAction Prelude.Text
+bounceAction_message = Lens.lens (\BounceAction' {message} -> message) (\s@BounceAction' {} a -> s {message = a} :: BounceAction)
+
+-- | The email address of the sender of the bounced email. This is the
+-- address from which the bounce message will be sent.
+bounceAction_sender :: Lens.Lens' BounceAction Prelude.Text
+bounceAction_sender = Lens.lens (\BounceAction' {sender} -> sender) (\s@BounceAction' {} a -> s {sender = a} :: BounceAction)
+
+instance Data.FromXML BounceAction where
+  parseXML x =
+    BounceAction'
+      Prelude.<$> (x Data..@? "StatusCode")
+      Prelude.<*> (x Data..@? "TopicArn")
+      Prelude.<*> (x Data..@ "SmtpReplyCode")
+      Prelude.<*> (x Data..@ "Message")
+      Prelude.<*> (x Data..@ "Sender")
+
+instance Prelude.Hashable BounceAction where
+  hashWithSalt _salt BounceAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` statusCode
+      `Prelude.hashWithSalt` topicArn
+      `Prelude.hashWithSalt` smtpReplyCode
+      `Prelude.hashWithSalt` message
+      `Prelude.hashWithSalt` sender
+
+instance Prelude.NFData BounceAction where
+  rnf BounceAction' {..} =
+    Prelude.rnf statusCode
+      `Prelude.seq` Prelude.rnf topicArn
+      `Prelude.seq` Prelude.rnf smtpReplyCode
+      `Prelude.seq` Prelude.rnf message
+      `Prelude.seq` Prelude.rnf sender
+
+instance Data.ToQuery BounceAction where
+  toQuery BounceAction' {..} =
+    Prelude.mconcat
+      [ "StatusCode" Data.=: statusCode,
+        "TopicArn" Data.=: topicArn,
+        "SmtpReplyCode" Data.=: smtpReplyCode,
+        "Message" Data.=: message,
+        "Sender" Data.=: sender
+      ]
diff --git a/gen/Amazonka/SES/Types/BounceType.hs b/gen/Amazonka/SES/Types/BounceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BounceType.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BounceType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BounceType
+  ( BounceType
+      ( ..,
+        BounceType_ContentRejected,
+        BounceType_DoesNotExist,
+        BounceType_ExceededQuota,
+        BounceType_MessageTooLarge,
+        BounceType_TemporaryFailure,
+        BounceType_Undefined
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BounceType = BounceType'
+  { fromBounceType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BounceType_ContentRejected :: BounceType
+pattern BounceType_ContentRejected = BounceType' "ContentRejected"
+
+pattern BounceType_DoesNotExist :: BounceType
+pattern BounceType_DoesNotExist = BounceType' "DoesNotExist"
+
+pattern BounceType_ExceededQuota :: BounceType
+pattern BounceType_ExceededQuota = BounceType' "ExceededQuota"
+
+pattern BounceType_MessageTooLarge :: BounceType
+pattern BounceType_MessageTooLarge = BounceType' "MessageTooLarge"
+
+pattern BounceType_TemporaryFailure :: BounceType
+pattern BounceType_TemporaryFailure = BounceType' "TemporaryFailure"
+
+pattern BounceType_Undefined :: BounceType
+pattern BounceType_Undefined = BounceType' "Undefined"
+
+{-# COMPLETE
+  BounceType_ContentRejected,
+  BounceType_DoesNotExist,
+  BounceType_ExceededQuota,
+  BounceType_MessageTooLarge,
+  BounceType_TemporaryFailure,
+  BounceType_Undefined,
+  BounceType'
+  #-}
diff --git a/gen/Amazonka/SES/Types/BouncedRecipientInfo.hs b/gen/Amazonka/SES/Types/BouncedRecipientInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BouncedRecipientInfo.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BouncedRecipientInfo
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BouncedRecipientInfo where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.BounceType
+import Amazonka.SES.Types.RecipientDsnFields
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newBouncedRecipientInfo' smart constructor.
+data BouncedRecipientInfo = BouncedRecipientInfo'
+  { -- | The reason for the bounce. You must provide either this parameter or
+    -- @RecipientDsnFields@.
+    bounceType :: Prelude.Maybe BounceType,
+    -- | 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
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+    recipientArn :: Prelude.Maybe Prelude.Text,
+    -- | 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@.
+    recipientDsnFields :: Prelude.Maybe RecipientDsnFields,
+    -- | The email address of the recipient of the bounced email.
+    recipient :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BouncedRecipientInfo' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bounceType', 'bouncedRecipientInfo_bounceType' - The reason for the bounce. You must provide either this parameter or
+-- @RecipientDsnFields@.
+--
+-- 'recipientArn', 'bouncedRecipientInfo_recipientArn' - 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+--
+-- 'recipientDsnFields', 'bouncedRecipientInfo_recipientDsnFields' - 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@.
+--
+-- 'recipient', 'bouncedRecipientInfo_recipient' - The email address of the recipient of the bounced email.
+newBouncedRecipientInfo ::
+  -- | 'recipient'
+  Prelude.Text ->
+  BouncedRecipientInfo
+newBouncedRecipientInfo pRecipient_ =
+  BouncedRecipientInfo'
+    { bounceType = Prelude.Nothing,
+      recipientArn = Prelude.Nothing,
+      recipientDsnFields = Prelude.Nothing,
+      recipient = pRecipient_
+    }
+
+-- | The reason for the bounce. You must provide either this parameter or
+-- @RecipientDsnFields@.
+bouncedRecipientInfo_bounceType :: Lens.Lens' BouncedRecipientInfo (Prelude.Maybe BounceType)
+bouncedRecipientInfo_bounceType = Lens.lens (\BouncedRecipientInfo' {bounceType} -> bounceType) (\s@BouncedRecipientInfo' {} a -> s {bounceType = a} :: BouncedRecipientInfo)
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide>.
+bouncedRecipientInfo_recipientArn :: Lens.Lens' BouncedRecipientInfo (Prelude.Maybe Prelude.Text)
+bouncedRecipientInfo_recipientArn = Lens.lens (\BouncedRecipientInfo' {recipientArn} -> recipientArn) (\s@BouncedRecipientInfo' {} a -> s {recipientArn = a} :: BouncedRecipientInfo)
+
+-- | 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@.
+bouncedRecipientInfo_recipientDsnFields :: Lens.Lens' BouncedRecipientInfo (Prelude.Maybe RecipientDsnFields)
+bouncedRecipientInfo_recipientDsnFields = Lens.lens (\BouncedRecipientInfo' {recipientDsnFields} -> recipientDsnFields) (\s@BouncedRecipientInfo' {} a -> s {recipientDsnFields = a} :: BouncedRecipientInfo)
+
+-- | The email address of the recipient of the bounced email.
+bouncedRecipientInfo_recipient :: Lens.Lens' BouncedRecipientInfo Prelude.Text
+bouncedRecipientInfo_recipient = Lens.lens (\BouncedRecipientInfo' {recipient} -> recipient) (\s@BouncedRecipientInfo' {} a -> s {recipient = a} :: BouncedRecipientInfo)
+
+instance Prelude.Hashable BouncedRecipientInfo where
+  hashWithSalt _salt BouncedRecipientInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` bounceType
+      `Prelude.hashWithSalt` recipientArn
+      `Prelude.hashWithSalt` recipientDsnFields
+      `Prelude.hashWithSalt` recipient
+
+instance Prelude.NFData BouncedRecipientInfo where
+  rnf BouncedRecipientInfo' {..} =
+    Prelude.rnf bounceType
+      `Prelude.seq` Prelude.rnf recipientArn
+      `Prelude.seq` Prelude.rnf recipientDsnFields
+      `Prelude.seq` Prelude.rnf recipient
+
+instance Data.ToQuery BouncedRecipientInfo where
+  toQuery BouncedRecipientInfo' {..} =
+    Prelude.mconcat
+      [ "BounceType" Data.=: bounceType,
+        "RecipientArn" Data.=: recipientArn,
+        "RecipientDsnFields" Data.=: recipientDsnFields,
+        "Recipient" Data.=: recipient
+      ]
diff --git a/gen/Amazonka/SES/Types/BulkEmailDestination.hs b/gen/Amazonka/SES/Types/BulkEmailDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BulkEmailDestination.hs
@@ -0,0 +1,118 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BulkEmailDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BulkEmailDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.Destination
+import Amazonka.SES.Types.MessageTag
+
+-- | An array that contains one or more Destinations, as well as the tags and
+-- replacement data associated with each of those Destinations.
+--
+-- /See:/ 'newBulkEmailDestination' smart constructor.
+data BulkEmailDestination = BulkEmailDestination'
+  { -- | A list of tags, in the form of name\/value pairs, to apply to an email
+    -- that you send using @SendBulkTemplatedEmail@. Tags correspond to
+    -- characteristics of the email that you define, so that you can publish
+    -- email sending events.
+    replacementTags :: Prelude.Maybe [MessageTag],
+    -- | A list of replacement values to apply to the template. This parameter is
+    -- a JSON object, typically consisting of key-value pairs in which the keys
+    -- correspond to replacement tags in the email template.
+    replacementTemplateData :: Prelude.Maybe Prelude.Text,
+    destination :: Destination
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BulkEmailDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'replacementTags', 'bulkEmailDestination_replacementTags' - A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendBulkTemplatedEmail@. Tags correspond to
+-- characteristics of the email that you define, so that you can publish
+-- email sending events.
+--
+-- 'replacementTemplateData', 'bulkEmailDestination_replacementTemplateData' - A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+--
+-- 'destination', 'bulkEmailDestination_destination' - Undocumented member.
+newBulkEmailDestination ::
+  -- | 'destination'
+  Destination ->
+  BulkEmailDestination
+newBulkEmailDestination pDestination_ =
+  BulkEmailDestination'
+    { replacementTags =
+        Prelude.Nothing,
+      replacementTemplateData = Prelude.Nothing,
+      destination = pDestination_
+    }
+
+-- | A list of tags, in the form of name\/value pairs, to apply to an email
+-- that you send using @SendBulkTemplatedEmail@. Tags correspond to
+-- characteristics of the email that you define, so that you can publish
+-- email sending events.
+bulkEmailDestination_replacementTags :: Lens.Lens' BulkEmailDestination (Prelude.Maybe [MessageTag])
+bulkEmailDestination_replacementTags = Lens.lens (\BulkEmailDestination' {replacementTags} -> replacementTags) (\s@BulkEmailDestination' {} a -> s {replacementTags = a} :: BulkEmailDestination) Prelude.. Lens.mapping Lens.coerced
+
+-- | A list of replacement values to apply to the template. This parameter is
+-- a JSON object, typically consisting of key-value pairs in which the keys
+-- correspond to replacement tags in the email template.
+bulkEmailDestination_replacementTemplateData :: Lens.Lens' BulkEmailDestination (Prelude.Maybe Prelude.Text)
+bulkEmailDestination_replacementTemplateData = Lens.lens (\BulkEmailDestination' {replacementTemplateData} -> replacementTemplateData) (\s@BulkEmailDestination' {} a -> s {replacementTemplateData = a} :: BulkEmailDestination)
+
+-- | Undocumented member.
+bulkEmailDestination_destination :: Lens.Lens' BulkEmailDestination Destination
+bulkEmailDestination_destination = Lens.lens (\BulkEmailDestination' {destination} -> destination) (\s@BulkEmailDestination' {} a -> s {destination = a} :: BulkEmailDestination)
+
+instance Prelude.Hashable BulkEmailDestination where
+  hashWithSalt _salt BulkEmailDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` replacementTags
+      `Prelude.hashWithSalt` replacementTemplateData
+      `Prelude.hashWithSalt` destination
+
+instance Prelude.NFData BulkEmailDestination where
+  rnf BulkEmailDestination' {..} =
+    Prelude.rnf replacementTags
+      `Prelude.seq` Prelude.rnf replacementTemplateData
+      `Prelude.seq` Prelude.rnf destination
+
+instance Data.ToQuery BulkEmailDestination where
+  toQuery BulkEmailDestination' {..} =
+    Prelude.mconcat
+      [ "ReplacementTags"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> replacementTags
+            ),
+        "ReplacementTemplateData"
+          Data.=: replacementTemplateData,
+        "Destination" Data.=: destination
+      ]
diff --git a/gen/Amazonka/SES/Types/BulkEmailDestinationStatus.hs b/gen/Amazonka/SES/Types/BulkEmailDestinationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BulkEmailDestinationStatus.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BulkEmailDestinationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BulkEmailDestinationStatus where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.BulkEmailStatus
+
+-- | An object that contains the response from the @SendBulkTemplatedEmail@
+-- operation.
+--
+-- /See:/ 'newBulkEmailDestinationStatus' smart constructor.
+data BulkEmailDestinationStatus = BulkEmailDestinationStatus'
+  { -- | A description of an error that prevented a message being sent using the
+    -- @SendBulkTemplatedEmail@ operation.
+    error :: Prelude.Maybe Prelude.Text,
+    -- | The unique message identifier returned from the @SendBulkTemplatedEmail@
+    -- operation.
+    messageId :: Prelude.Maybe Prelude.Text,
+    -- | The status of a message sent using the @SendBulkTemplatedEmail@
+    -- operation.
+    --
+    -- Possible values for this parameter include:
+    --
+    -- -   @Success@: Amazon SES accepted the message, and will attempt to
+    --     deliver it to the recipients.
+    --
+    -- -   @MessageRejected@: The message was rejected because it contained a
+    --     virus.
+    --
+    -- -   @MailFromDomainNotVerified@: The sender\'s email address or domain
+    --     was not verified.
+    --
+    -- -   @ConfigurationSetDoesNotExist@: The configuration set you specified
+    --     does not exist.
+    --
+    -- -   @TemplateDoesNotExist@: The template you specified does not exist.
+    --
+    -- -   @AccountSuspended@: Your account has been shut down because of
+    --     issues related to your email sending practices.
+    --
+    -- -   @AccountThrottled@: The number of emails you can send has been
+    --     reduced because your account has exceeded its allocated sending
+    --     limit.
+    --
+    -- -   @AccountDailyQuotaExceeded@: You have reached or exceeded the
+    --     maximum number of emails you can send from your account in a 24-hour
+    --     period.
+    --
+    -- -   @InvalidSendingPoolName@: The configuration set you specified refers
+    --     to an IP pool that does not exist.
+    --
+    -- -   @AccountSendingPaused@: Email sending for the Amazon SES account was
+    --     disabled using the UpdateAccountSendingEnabled operation.
+    --
+    -- -   @ConfigurationSetSendingPaused@: Email sending for this
+    --     configuration set was disabled using the
+    --     UpdateConfigurationSetSendingEnabled operation.
+    --
+    -- -   @InvalidParameterValue@: One or more of the parameters you specified
+    --     when calling this operation was invalid. See the error message for
+    --     additional information.
+    --
+    -- -   @TransientFailure@: Amazon SES was unable to process your request
+    --     because of a temporary issue.
+    --
+    -- -   @Failed@: Amazon SES was unable to process your request. See the
+    --     error message for additional information.
+    status :: Prelude.Maybe BulkEmailStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BulkEmailDestinationStatus' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'error', 'bulkEmailDestinationStatus_error' - A description of an error that prevented a message being sent using the
+-- @SendBulkTemplatedEmail@ operation.
+--
+-- 'messageId', 'bulkEmailDestinationStatus_messageId' - The unique message identifier returned from the @SendBulkTemplatedEmail@
+-- operation.
+--
+-- 'status', 'bulkEmailDestinationStatus_status' - The status of a message sent using the @SendBulkTemplatedEmail@
+-- operation.
+--
+-- Possible values for this parameter include:
+--
+-- -   @Success@: Amazon SES accepted the message, and will attempt to
+--     deliver it to the recipients.
+--
+-- -   @MessageRejected@: The message was rejected because it contained a
+--     virus.
+--
+-- -   @MailFromDomainNotVerified@: The sender\'s email address or domain
+--     was not verified.
+--
+-- -   @ConfigurationSetDoesNotExist@: The configuration set you specified
+--     does not exist.
+--
+-- -   @TemplateDoesNotExist@: The template you specified does not exist.
+--
+-- -   @AccountSuspended@: Your account has been shut down because of
+--     issues related to your email sending practices.
+--
+-- -   @AccountThrottled@: The number of emails you can send has been
+--     reduced because your account has exceeded its allocated sending
+--     limit.
+--
+-- -   @AccountDailyQuotaExceeded@: You have reached or exceeded the
+--     maximum number of emails you can send from your account in a 24-hour
+--     period.
+--
+-- -   @InvalidSendingPoolName@: The configuration set you specified refers
+--     to an IP pool that does not exist.
+--
+-- -   @AccountSendingPaused@: Email sending for the Amazon SES account was
+--     disabled using the UpdateAccountSendingEnabled operation.
+--
+-- -   @ConfigurationSetSendingPaused@: Email sending for this
+--     configuration set was disabled using the
+--     UpdateConfigurationSetSendingEnabled operation.
+--
+-- -   @InvalidParameterValue@: One or more of the parameters you specified
+--     when calling this operation was invalid. See the error message for
+--     additional information.
+--
+-- -   @TransientFailure@: Amazon SES was unable to process your request
+--     because of a temporary issue.
+--
+-- -   @Failed@: Amazon SES was unable to process your request. See the
+--     error message for additional information.
+newBulkEmailDestinationStatus ::
+  BulkEmailDestinationStatus
+newBulkEmailDestinationStatus =
+  BulkEmailDestinationStatus'
+    { error =
+        Prelude.Nothing,
+      messageId = Prelude.Nothing,
+      status = Prelude.Nothing
+    }
+
+-- | A description of an error that prevented a message being sent using the
+-- @SendBulkTemplatedEmail@ operation.
+bulkEmailDestinationStatus_error :: Lens.Lens' BulkEmailDestinationStatus (Prelude.Maybe Prelude.Text)
+bulkEmailDestinationStatus_error = Lens.lens (\BulkEmailDestinationStatus' {error} -> error) (\s@BulkEmailDestinationStatus' {} a -> s {error = a} :: BulkEmailDestinationStatus)
+
+-- | The unique message identifier returned from the @SendBulkTemplatedEmail@
+-- operation.
+bulkEmailDestinationStatus_messageId :: Lens.Lens' BulkEmailDestinationStatus (Prelude.Maybe Prelude.Text)
+bulkEmailDestinationStatus_messageId = Lens.lens (\BulkEmailDestinationStatus' {messageId} -> messageId) (\s@BulkEmailDestinationStatus' {} a -> s {messageId = a} :: BulkEmailDestinationStatus)
+
+-- | The status of a message sent using the @SendBulkTemplatedEmail@
+-- operation.
+--
+-- Possible values for this parameter include:
+--
+-- -   @Success@: Amazon SES accepted the message, and will attempt to
+--     deliver it to the recipients.
+--
+-- -   @MessageRejected@: The message was rejected because it contained a
+--     virus.
+--
+-- -   @MailFromDomainNotVerified@: The sender\'s email address or domain
+--     was not verified.
+--
+-- -   @ConfigurationSetDoesNotExist@: The configuration set you specified
+--     does not exist.
+--
+-- -   @TemplateDoesNotExist@: The template you specified does not exist.
+--
+-- -   @AccountSuspended@: Your account has been shut down because of
+--     issues related to your email sending practices.
+--
+-- -   @AccountThrottled@: The number of emails you can send has been
+--     reduced because your account has exceeded its allocated sending
+--     limit.
+--
+-- -   @AccountDailyQuotaExceeded@: You have reached or exceeded the
+--     maximum number of emails you can send from your account in a 24-hour
+--     period.
+--
+-- -   @InvalidSendingPoolName@: The configuration set you specified refers
+--     to an IP pool that does not exist.
+--
+-- -   @AccountSendingPaused@: Email sending for the Amazon SES account was
+--     disabled using the UpdateAccountSendingEnabled operation.
+--
+-- -   @ConfigurationSetSendingPaused@: Email sending for this
+--     configuration set was disabled using the
+--     UpdateConfigurationSetSendingEnabled operation.
+--
+-- -   @InvalidParameterValue@: One or more of the parameters you specified
+--     when calling this operation was invalid. See the error message for
+--     additional information.
+--
+-- -   @TransientFailure@: Amazon SES was unable to process your request
+--     because of a temporary issue.
+--
+-- -   @Failed@: Amazon SES was unable to process your request. See the
+--     error message for additional information.
+bulkEmailDestinationStatus_status :: Lens.Lens' BulkEmailDestinationStatus (Prelude.Maybe BulkEmailStatus)
+bulkEmailDestinationStatus_status = Lens.lens (\BulkEmailDestinationStatus' {status} -> status) (\s@BulkEmailDestinationStatus' {} a -> s {status = a} :: BulkEmailDestinationStatus)
+
+instance Data.FromXML BulkEmailDestinationStatus where
+  parseXML x =
+    BulkEmailDestinationStatus'
+      Prelude.<$> (x Data..@? "Error")
+      Prelude.<*> (x Data..@? "MessageId")
+      Prelude.<*> (x Data..@? "Status")
+
+instance Prelude.Hashable BulkEmailDestinationStatus where
+  hashWithSalt _salt BulkEmailDestinationStatus' {..} =
+    _salt
+      `Prelude.hashWithSalt` error
+      `Prelude.hashWithSalt` messageId
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData BulkEmailDestinationStatus where
+  rnf BulkEmailDestinationStatus' {..} =
+    Prelude.rnf error
+      `Prelude.seq` Prelude.rnf messageId
+      `Prelude.seq` Prelude.rnf status
diff --git a/gen/Amazonka/SES/Types/BulkEmailStatus.hs b/gen/Amazonka/SES/Types/BulkEmailStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/BulkEmailStatus.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.BulkEmailStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.BulkEmailStatus
+  ( BulkEmailStatus
+      ( ..,
+        BulkEmailStatus_AccountDailyQuotaExceeded,
+        BulkEmailStatus_AccountSendingPaused,
+        BulkEmailStatus_AccountSuspended,
+        BulkEmailStatus_AccountThrottled,
+        BulkEmailStatus_ConfigurationSetDoesNotExist,
+        BulkEmailStatus_ConfigurationSetSendingPaused,
+        BulkEmailStatus_Failed,
+        BulkEmailStatus_InvalidParameterValue,
+        BulkEmailStatus_InvalidSendingPoolName,
+        BulkEmailStatus_MailFromDomainNotVerified,
+        BulkEmailStatus_MessageRejected,
+        BulkEmailStatus_Success,
+        BulkEmailStatus_TemplateDoesNotExist,
+        BulkEmailStatus_TransientFailure
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BulkEmailStatus = BulkEmailStatus'
+  { fromBulkEmailStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BulkEmailStatus_AccountDailyQuotaExceeded :: BulkEmailStatus
+pattern BulkEmailStatus_AccountDailyQuotaExceeded = BulkEmailStatus' "AccountDailyQuotaExceeded"
+
+pattern BulkEmailStatus_AccountSendingPaused :: BulkEmailStatus
+pattern BulkEmailStatus_AccountSendingPaused = BulkEmailStatus' "AccountSendingPaused"
+
+pattern BulkEmailStatus_AccountSuspended :: BulkEmailStatus
+pattern BulkEmailStatus_AccountSuspended = BulkEmailStatus' "AccountSuspended"
+
+pattern BulkEmailStatus_AccountThrottled :: BulkEmailStatus
+pattern BulkEmailStatus_AccountThrottled = BulkEmailStatus' "AccountThrottled"
+
+pattern BulkEmailStatus_ConfigurationSetDoesNotExist :: BulkEmailStatus
+pattern BulkEmailStatus_ConfigurationSetDoesNotExist = BulkEmailStatus' "ConfigurationSetDoesNotExist"
+
+pattern BulkEmailStatus_ConfigurationSetSendingPaused :: BulkEmailStatus
+pattern BulkEmailStatus_ConfigurationSetSendingPaused = BulkEmailStatus' "ConfigurationSetSendingPaused"
+
+pattern BulkEmailStatus_Failed :: BulkEmailStatus
+pattern BulkEmailStatus_Failed = BulkEmailStatus' "Failed"
+
+pattern BulkEmailStatus_InvalidParameterValue :: BulkEmailStatus
+pattern BulkEmailStatus_InvalidParameterValue = BulkEmailStatus' "InvalidParameterValue"
+
+pattern BulkEmailStatus_InvalidSendingPoolName :: BulkEmailStatus
+pattern BulkEmailStatus_InvalidSendingPoolName = BulkEmailStatus' "InvalidSendingPoolName"
+
+pattern BulkEmailStatus_MailFromDomainNotVerified :: BulkEmailStatus
+pattern BulkEmailStatus_MailFromDomainNotVerified = BulkEmailStatus' "MailFromDomainNotVerified"
+
+pattern BulkEmailStatus_MessageRejected :: BulkEmailStatus
+pattern BulkEmailStatus_MessageRejected = BulkEmailStatus' "MessageRejected"
+
+pattern BulkEmailStatus_Success :: BulkEmailStatus
+pattern BulkEmailStatus_Success = BulkEmailStatus' "Success"
+
+pattern BulkEmailStatus_TemplateDoesNotExist :: BulkEmailStatus
+pattern BulkEmailStatus_TemplateDoesNotExist = BulkEmailStatus' "TemplateDoesNotExist"
+
+pattern BulkEmailStatus_TransientFailure :: BulkEmailStatus
+pattern BulkEmailStatus_TransientFailure = BulkEmailStatus' "TransientFailure"
+
+{-# COMPLETE
+  BulkEmailStatus_AccountDailyQuotaExceeded,
+  BulkEmailStatus_AccountSendingPaused,
+  BulkEmailStatus_AccountSuspended,
+  BulkEmailStatus_AccountThrottled,
+  BulkEmailStatus_ConfigurationSetDoesNotExist,
+  BulkEmailStatus_ConfigurationSetSendingPaused,
+  BulkEmailStatus_Failed,
+  BulkEmailStatus_InvalidParameterValue,
+  BulkEmailStatus_InvalidSendingPoolName,
+  BulkEmailStatus_MailFromDomainNotVerified,
+  BulkEmailStatus_MessageRejected,
+  BulkEmailStatus_Success,
+  BulkEmailStatus_TemplateDoesNotExist,
+  BulkEmailStatus_TransientFailure,
+  BulkEmailStatus'
+  #-}
diff --git a/gen/Amazonka/SES/Types/CloudWatchDestination.hs b/gen/Amazonka/SES/Types/CloudWatchDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/CloudWatchDestination.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.CloudWatchDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.CloudWatchDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.CloudWatchDimensionConfiguration
+
+-- | Contains information associated with an Amazon CloudWatch event
+-- destination to which email sending events are published.
+--
+-- Event destinations, such as Amazon CloudWatch, are associated with
+-- configuration sets, which enable you to publish email sending events.
+-- For information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCloudWatchDestination' smart constructor.
+data CloudWatchDestination = CloudWatchDestination'
+  { -- | A list of dimensions upon which to categorize your emails when you
+    -- publish email sending events to Amazon CloudWatch.
+    dimensionConfigurations :: [CloudWatchDimensionConfiguration]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dimensionConfigurations', 'cloudWatchDestination_dimensionConfigurations' - A list of dimensions upon which to categorize your emails when you
+-- publish email sending events to Amazon CloudWatch.
+newCloudWatchDestination ::
+  CloudWatchDestination
+newCloudWatchDestination =
+  CloudWatchDestination'
+    { dimensionConfigurations =
+        Prelude.mempty
+    }
+
+-- | A list of dimensions upon which to categorize your emails when you
+-- publish email sending events to Amazon CloudWatch.
+cloudWatchDestination_dimensionConfigurations :: Lens.Lens' CloudWatchDestination [CloudWatchDimensionConfiguration]
+cloudWatchDestination_dimensionConfigurations = Lens.lens (\CloudWatchDestination' {dimensionConfigurations} -> dimensionConfigurations) (\s@CloudWatchDestination' {} a -> s {dimensionConfigurations = a} :: CloudWatchDestination) Prelude.. Lens.coerced
+
+instance Data.FromXML CloudWatchDestination where
+  parseXML x =
+    CloudWatchDestination'
+      Prelude.<$> ( x
+                      Data..@? "DimensionConfigurations"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Data.parseXMLList "member"
+                  )
+
+instance Prelude.Hashable CloudWatchDestination where
+  hashWithSalt _salt CloudWatchDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` dimensionConfigurations
+
+instance Prelude.NFData CloudWatchDestination where
+  rnf CloudWatchDestination' {..} =
+    Prelude.rnf dimensionConfigurations
+
+instance Data.ToQuery CloudWatchDestination where
+  toQuery CloudWatchDestination' {..} =
+    Prelude.mconcat
+      [ "DimensionConfigurations"
+          Data.=: Data.toQueryList "member" dimensionConfigurations
+      ]
diff --git a/gen/Amazonka/SES/Types/CloudWatchDimensionConfiguration.hs b/gen/Amazonka/SES/Types/CloudWatchDimensionConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/CloudWatchDimensionConfiguration.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.CloudWatchDimensionConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.CloudWatchDimensionConfiguration where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.DimensionValueSource
+
+-- | Contains the dimension configuration to use when you publish email
+-- sending events to Amazon CloudWatch.
+--
+-- For information about publishing email sending events to Amazon
+-- CloudWatch, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newCloudWatchDimensionConfiguration' smart constructor.
+data CloudWatchDimensionConfiguration = CloudWatchDimensionConfiguration'
+  { -- | The name of an Amazon CloudWatch dimension associated with an email
+    -- sending metric. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Contain less than 256 characters.
+    dimensionName :: Prelude.Text,
+    -- | The place where Amazon SES finds the value of a dimension to publish to
+    -- Amazon CloudWatch. If you want Amazon SES to use the message tags that
+    -- you specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the
+    -- @SendEmail@\/@SendRawEmail@ API, choose @messageTag@. If you want Amazon
+    -- SES to use your own email headers, choose @emailHeader@.
+    dimensionValueSource :: DimensionValueSource,
+    -- | The default value of the dimension that is published to Amazon
+    -- CloudWatch if you do not provide the value of the dimension when you
+    -- send an email. The default value must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Contain less than 256 characters.
+    defaultDimensionValue :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CloudWatchDimensionConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dimensionName', 'cloudWatchDimensionConfiguration_dimensionName' - The name of an Amazon CloudWatch dimension associated with an email
+-- sending metric. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+--
+-- 'dimensionValueSource', 'cloudWatchDimensionConfiguration_dimensionValueSource' - The place where Amazon SES finds the value of a dimension to publish to
+-- Amazon CloudWatch. If you want Amazon SES to use the message tags that
+-- you specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the
+-- @SendEmail@\/@SendRawEmail@ API, choose @messageTag@. If you want Amazon
+-- SES to use your own email headers, choose @emailHeader@.
+--
+-- 'defaultDimensionValue', 'cloudWatchDimensionConfiguration_defaultDimensionValue' - The default value of the dimension that is published to Amazon
+-- CloudWatch if you do not provide the value of the dimension when you
+-- send an email. The default value must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+newCloudWatchDimensionConfiguration ::
+  -- | 'dimensionName'
+  Prelude.Text ->
+  -- | 'dimensionValueSource'
+  DimensionValueSource ->
+  -- | 'defaultDimensionValue'
+  Prelude.Text ->
+  CloudWatchDimensionConfiguration
+newCloudWatchDimensionConfiguration
+  pDimensionName_
+  pDimensionValueSource_
+  pDefaultDimensionValue_ =
+    CloudWatchDimensionConfiguration'
+      { dimensionName =
+          pDimensionName_,
+        dimensionValueSource =
+          pDimensionValueSource_,
+        defaultDimensionValue =
+          pDefaultDimensionValue_
+      }
+
+-- | The name of an Amazon CloudWatch dimension associated with an email
+-- sending metric. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+cloudWatchDimensionConfiguration_dimensionName :: Lens.Lens' CloudWatchDimensionConfiguration Prelude.Text
+cloudWatchDimensionConfiguration_dimensionName = Lens.lens (\CloudWatchDimensionConfiguration' {dimensionName} -> dimensionName) (\s@CloudWatchDimensionConfiguration' {} a -> s {dimensionName = a} :: CloudWatchDimensionConfiguration)
+
+-- | The place where Amazon SES finds the value of a dimension to publish to
+-- Amazon CloudWatch. If you want Amazon SES to use the message tags that
+-- you specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the
+-- @SendEmail@\/@SendRawEmail@ API, choose @messageTag@. If you want Amazon
+-- SES to use your own email headers, choose @emailHeader@.
+cloudWatchDimensionConfiguration_dimensionValueSource :: Lens.Lens' CloudWatchDimensionConfiguration DimensionValueSource
+cloudWatchDimensionConfiguration_dimensionValueSource = Lens.lens (\CloudWatchDimensionConfiguration' {dimensionValueSource} -> dimensionValueSource) (\s@CloudWatchDimensionConfiguration' {} a -> s {dimensionValueSource = a} :: CloudWatchDimensionConfiguration)
+
+-- | The default value of the dimension that is published to Amazon
+-- CloudWatch if you do not provide the value of the dimension when you
+-- send an email. The default value must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+cloudWatchDimensionConfiguration_defaultDimensionValue :: Lens.Lens' CloudWatchDimensionConfiguration Prelude.Text
+cloudWatchDimensionConfiguration_defaultDimensionValue = Lens.lens (\CloudWatchDimensionConfiguration' {defaultDimensionValue} -> defaultDimensionValue) (\s@CloudWatchDimensionConfiguration' {} a -> s {defaultDimensionValue = a} :: CloudWatchDimensionConfiguration)
+
+instance
+  Data.FromXML
+    CloudWatchDimensionConfiguration
+  where
+  parseXML x =
+    CloudWatchDimensionConfiguration'
+      Prelude.<$> (x Data..@ "DimensionName")
+      Prelude.<*> (x Data..@ "DimensionValueSource")
+      Prelude.<*> (x Data..@ "DefaultDimensionValue")
+
+instance
+  Prelude.Hashable
+    CloudWatchDimensionConfiguration
+  where
+  hashWithSalt
+    _salt
+    CloudWatchDimensionConfiguration' {..} =
+      _salt
+        `Prelude.hashWithSalt` dimensionName
+        `Prelude.hashWithSalt` dimensionValueSource
+        `Prelude.hashWithSalt` defaultDimensionValue
+
+instance
+  Prelude.NFData
+    CloudWatchDimensionConfiguration
+  where
+  rnf CloudWatchDimensionConfiguration' {..} =
+    Prelude.rnf dimensionName
+      `Prelude.seq` Prelude.rnf dimensionValueSource
+      `Prelude.seq` Prelude.rnf defaultDimensionValue
+
+instance
+  Data.ToQuery
+    CloudWatchDimensionConfiguration
+  where
+  toQuery CloudWatchDimensionConfiguration' {..} =
+    Prelude.mconcat
+      [ "DimensionName" Data.=: dimensionName,
+        "DimensionValueSource" Data.=: dimensionValueSource,
+        "DefaultDimensionValue"
+          Data.=: defaultDimensionValue
+      ]
diff --git a/gen/Amazonka/SES/Types/ConfigurationSet.hs b/gen/Amazonka/SES/Types/ConfigurationSet.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ConfigurationSet.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ConfigurationSet
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ConfigurationSet where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The name of the configuration set.
+--
+-- Configuration sets let you create groups of rules that you can apply to
+-- the emails you send using Amazon SES. For more information about using
+-- configuration sets, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets.html Using Amazon SES Configuration Sets>
+-- in the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/ Amazon SES Developer Guide>.
+--
+-- /See:/ 'newConfigurationSet' smart constructor.
+data ConfigurationSet = ConfigurationSet'
+  { -- | The name of the configuration set. The name must meet the following
+    -- requirements:
+    --
+    -- -   Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or
+    --     dashes (-).
+    --
+    -- -   Contain 64 characters or fewer.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ConfigurationSet' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'configurationSet_name' - The name of the configuration set. The name must meet the following
+-- requirements:
+--
+-- -   Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or
+--     dashes (-).
+--
+-- -   Contain 64 characters or fewer.
+newConfigurationSet ::
+  -- | 'name'
+  Prelude.Text ->
+  ConfigurationSet
+newConfigurationSet pName_ =
+  ConfigurationSet' {name = pName_}
+
+-- | The name of the configuration set. The name must meet the following
+-- requirements:
+--
+-- -   Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or
+--     dashes (-).
+--
+-- -   Contain 64 characters or fewer.
+configurationSet_name :: Lens.Lens' ConfigurationSet Prelude.Text
+configurationSet_name = Lens.lens (\ConfigurationSet' {name} -> name) (\s@ConfigurationSet' {} a -> s {name = a} :: ConfigurationSet)
+
+instance Data.FromXML ConfigurationSet where
+  parseXML x =
+    ConfigurationSet' Prelude.<$> (x Data..@ "Name")
+
+instance Prelude.Hashable ConfigurationSet where
+  hashWithSalt _salt ConfigurationSet' {..} =
+    _salt `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ConfigurationSet where
+  rnf ConfigurationSet' {..} = Prelude.rnf name
+
+instance Data.ToQuery ConfigurationSet where
+  toQuery ConfigurationSet' {..} =
+    Prelude.mconcat ["Name" Data.=: name]
diff --git a/gen/Amazonka/SES/Types/ConfigurationSetAttribute.hs b/gen/Amazonka/SES/Types/ConfigurationSetAttribute.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ConfigurationSetAttribute.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ConfigurationSetAttribute
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ConfigurationSetAttribute
+  ( ConfigurationSetAttribute
+      ( ..,
+        ConfigurationSetAttribute_DeliveryOptions,
+        ConfigurationSetAttribute_EventDestinations,
+        ConfigurationSetAttribute_ReputationOptions,
+        ConfigurationSetAttribute_TrackingOptions
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ConfigurationSetAttribute = ConfigurationSetAttribute'
+  { fromConfigurationSetAttribute ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ConfigurationSetAttribute_DeliveryOptions :: ConfigurationSetAttribute
+pattern ConfigurationSetAttribute_DeliveryOptions = ConfigurationSetAttribute' "deliveryOptions"
+
+pattern ConfigurationSetAttribute_EventDestinations :: ConfigurationSetAttribute
+pattern ConfigurationSetAttribute_EventDestinations = ConfigurationSetAttribute' "eventDestinations"
+
+pattern ConfigurationSetAttribute_ReputationOptions :: ConfigurationSetAttribute
+pattern ConfigurationSetAttribute_ReputationOptions = ConfigurationSetAttribute' "reputationOptions"
+
+pattern ConfigurationSetAttribute_TrackingOptions :: ConfigurationSetAttribute
+pattern ConfigurationSetAttribute_TrackingOptions = ConfigurationSetAttribute' "trackingOptions"
+
+{-# COMPLETE
+  ConfigurationSetAttribute_DeliveryOptions,
+  ConfigurationSetAttribute_EventDestinations,
+  ConfigurationSetAttribute_ReputationOptions,
+  ConfigurationSetAttribute_TrackingOptions,
+  ConfigurationSetAttribute'
+  #-}
diff --git a/gen/Amazonka/SES/Types/Content.hs b/gen/Amazonka/SES/Types/Content.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/Content.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.Content
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.Content where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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:/ 'newContent' smart constructor.
+data Content = Content'
+  { -- | The character set of the content.
+    charset :: Prelude.Maybe Prelude.Text,
+    -- | The textual data of the content.
+    data' :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Content' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'charset', 'content_charset' - The character set of the content.
+--
+-- 'data'', 'content_data' - The textual data of the content.
+newContent ::
+  -- | 'data''
+  Prelude.Text ->
+  Content
+newContent pData_ =
+  Content' {charset = Prelude.Nothing, data' = pData_}
+
+-- | The character set of the content.
+content_charset :: Lens.Lens' Content (Prelude.Maybe Prelude.Text)
+content_charset = Lens.lens (\Content' {charset} -> charset) (\s@Content' {} a -> s {charset = a} :: Content)
+
+-- | The textual data of the content.
+content_data :: Lens.Lens' Content Prelude.Text
+content_data = Lens.lens (\Content' {data'} -> data') (\s@Content' {} a -> s {data' = a} :: Content)
+
+instance Prelude.Hashable Content where
+  hashWithSalt _salt Content' {..} =
+    _salt
+      `Prelude.hashWithSalt` charset
+      `Prelude.hashWithSalt` data'
+
+instance Prelude.NFData Content where
+  rnf Content' {..} =
+    Prelude.rnf charset `Prelude.seq` Prelude.rnf data'
+
+instance Data.ToQuery Content where
+  toQuery Content' {..} =
+    Prelude.mconcat
+      ["Charset" Data.=: charset, "Data" Data.=: data']
diff --git a/gen/Amazonka/SES/Types/CustomMailFromStatus.hs b/gen/Amazonka/SES/Types/CustomMailFromStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/CustomMailFromStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.CustomMailFromStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.CustomMailFromStatus
+  ( CustomMailFromStatus
+      ( ..,
+        CustomMailFromStatus_Failed,
+        CustomMailFromStatus_Pending,
+        CustomMailFromStatus_Success,
+        CustomMailFromStatus_TemporaryFailure
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CustomMailFromStatus = CustomMailFromStatus'
+  { fromCustomMailFromStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern CustomMailFromStatus_Failed :: CustomMailFromStatus
+pattern CustomMailFromStatus_Failed = CustomMailFromStatus' "Failed"
+
+pattern CustomMailFromStatus_Pending :: CustomMailFromStatus
+pattern CustomMailFromStatus_Pending = CustomMailFromStatus' "Pending"
+
+pattern CustomMailFromStatus_Success :: CustomMailFromStatus
+pattern CustomMailFromStatus_Success = CustomMailFromStatus' "Success"
+
+pattern CustomMailFromStatus_TemporaryFailure :: CustomMailFromStatus
+pattern CustomMailFromStatus_TemporaryFailure = CustomMailFromStatus' "TemporaryFailure"
+
+{-# COMPLETE
+  CustomMailFromStatus_Failed,
+  CustomMailFromStatus_Pending,
+  CustomMailFromStatus_Success,
+  CustomMailFromStatus_TemporaryFailure,
+  CustomMailFromStatus'
+  #-}
diff --git a/gen/Amazonka/SES/Types/CustomVerificationEmailTemplate.hs b/gen/Amazonka/SES/Types/CustomVerificationEmailTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/CustomVerificationEmailTemplate.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.CustomVerificationEmailTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.CustomVerificationEmailTemplate where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about a custom verification email template.
+--
+-- /See:/ 'newCustomVerificationEmailTemplate' smart constructor.
+data CustomVerificationEmailTemplate = CustomVerificationEmailTemplate'
+  { -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is not successfully verified.
+    failureRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The email address that the custom verification email is sent from.
+    fromEmailAddress :: Prelude.Maybe Prelude.Text,
+    -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is successfully verified.
+    successRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The name of the custom verification email template.
+    templateName :: Prelude.Maybe Prelude.Text,
+    -- | The subject line of the custom verification email.
+    templateSubject :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CustomVerificationEmailTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failureRedirectionURL', 'customVerificationEmailTemplate_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+--
+-- 'fromEmailAddress', 'customVerificationEmailTemplate_fromEmailAddress' - The email address that the custom verification email is sent from.
+--
+-- 'successRedirectionURL', 'customVerificationEmailTemplate_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+--
+-- 'templateName', 'customVerificationEmailTemplate_templateName' - The name of the custom verification email template.
+--
+-- 'templateSubject', 'customVerificationEmailTemplate_templateSubject' - The subject line of the custom verification email.
+newCustomVerificationEmailTemplate ::
+  CustomVerificationEmailTemplate
+newCustomVerificationEmailTemplate =
+  CustomVerificationEmailTemplate'
+    { failureRedirectionURL =
+        Prelude.Nothing,
+      fromEmailAddress = Prelude.Nothing,
+      successRedirectionURL = Prelude.Nothing,
+      templateName = Prelude.Nothing,
+      templateSubject = Prelude.Nothing
+    }
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+customVerificationEmailTemplate_failureRedirectionURL :: Lens.Lens' CustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+customVerificationEmailTemplate_failureRedirectionURL = Lens.lens (\CustomVerificationEmailTemplate' {failureRedirectionURL} -> failureRedirectionURL) (\s@CustomVerificationEmailTemplate' {} a -> s {failureRedirectionURL = a} :: CustomVerificationEmailTemplate)
+
+-- | The email address that the custom verification email is sent from.
+customVerificationEmailTemplate_fromEmailAddress :: Lens.Lens' CustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+customVerificationEmailTemplate_fromEmailAddress = Lens.lens (\CustomVerificationEmailTemplate' {fromEmailAddress} -> fromEmailAddress) (\s@CustomVerificationEmailTemplate' {} a -> s {fromEmailAddress = a} :: CustomVerificationEmailTemplate)
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+customVerificationEmailTemplate_successRedirectionURL :: Lens.Lens' CustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+customVerificationEmailTemplate_successRedirectionURL = Lens.lens (\CustomVerificationEmailTemplate' {successRedirectionURL} -> successRedirectionURL) (\s@CustomVerificationEmailTemplate' {} a -> s {successRedirectionURL = a} :: CustomVerificationEmailTemplate)
+
+-- | The name of the custom verification email template.
+customVerificationEmailTemplate_templateName :: Lens.Lens' CustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+customVerificationEmailTemplate_templateName = Lens.lens (\CustomVerificationEmailTemplate' {templateName} -> templateName) (\s@CustomVerificationEmailTemplate' {} a -> s {templateName = a} :: CustomVerificationEmailTemplate)
+
+-- | The subject line of the custom verification email.
+customVerificationEmailTemplate_templateSubject :: Lens.Lens' CustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+customVerificationEmailTemplate_templateSubject = Lens.lens (\CustomVerificationEmailTemplate' {templateSubject} -> templateSubject) (\s@CustomVerificationEmailTemplate' {} a -> s {templateSubject = a} :: CustomVerificationEmailTemplate)
+
+instance Data.FromXML CustomVerificationEmailTemplate where
+  parseXML x =
+    CustomVerificationEmailTemplate'
+      Prelude.<$> (x Data..@? "FailureRedirectionURL")
+      Prelude.<*> (x Data..@? "FromEmailAddress")
+      Prelude.<*> (x Data..@? "SuccessRedirectionURL")
+      Prelude.<*> (x Data..@? "TemplateName")
+      Prelude.<*> (x Data..@? "TemplateSubject")
+
+instance
+  Prelude.Hashable
+    CustomVerificationEmailTemplate
+  where
+  hashWithSalt
+    _salt
+    CustomVerificationEmailTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` failureRedirectionURL
+        `Prelude.hashWithSalt` fromEmailAddress
+        `Prelude.hashWithSalt` successRedirectionURL
+        `Prelude.hashWithSalt` templateName
+        `Prelude.hashWithSalt` templateSubject
+
+instance
+  Prelude.NFData
+    CustomVerificationEmailTemplate
+  where
+  rnf CustomVerificationEmailTemplate' {..} =
+    Prelude.rnf failureRedirectionURL
+      `Prelude.seq` Prelude.rnf fromEmailAddress
+      `Prelude.seq` Prelude.rnf successRedirectionURL
+      `Prelude.seq` Prelude.rnf templateName
+      `Prelude.seq` Prelude.rnf templateSubject
diff --git a/gen/Amazonka/SES/Types/DeliveryOptions.hs b/gen/Amazonka/SES/Types/DeliveryOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/DeliveryOptions.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.DeliveryOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.DeliveryOptions where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.TlsPolicy
+
+-- | Specifies whether messages that use the configuration set are required
+-- to use Transport Layer Security (TLS).
+--
+-- /See:/ 'newDeliveryOptions' smart constructor.
+data DeliveryOptions = DeliveryOptions'
+  { -- | Specifies whether messages that use the configuration set are required
+    -- to use Transport Layer Security (TLS). If the value is @Require@,
+    -- messages are only delivered if a TLS connection can be established. If
+    -- the value is @Optional@, messages can be delivered in plain text if a
+    -- TLS connection can\'t be established.
+    tlsPolicy :: Prelude.Maybe TlsPolicy
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeliveryOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'tlsPolicy', 'deliveryOptions_tlsPolicy' - Specifies whether messages that use the configuration set are required
+-- to use Transport Layer Security (TLS). If the value is @Require@,
+-- messages are only delivered if a TLS connection can be established. If
+-- the value is @Optional@, messages can be delivered in plain text if a
+-- TLS connection can\'t be established.
+newDeliveryOptions ::
+  DeliveryOptions
+newDeliveryOptions =
+  DeliveryOptions' {tlsPolicy = Prelude.Nothing}
+
+-- | Specifies whether messages that use the configuration set are required
+-- to use Transport Layer Security (TLS). If the value is @Require@,
+-- messages are only delivered if a TLS connection can be established. If
+-- the value is @Optional@, messages can be delivered in plain text if a
+-- TLS connection can\'t be established.
+deliveryOptions_tlsPolicy :: Lens.Lens' DeliveryOptions (Prelude.Maybe TlsPolicy)
+deliveryOptions_tlsPolicy = Lens.lens (\DeliveryOptions' {tlsPolicy} -> tlsPolicy) (\s@DeliveryOptions' {} a -> s {tlsPolicy = a} :: DeliveryOptions)
+
+instance Data.FromXML DeliveryOptions where
+  parseXML x =
+    DeliveryOptions'
+      Prelude.<$> (x Data..@? "TlsPolicy")
+
+instance Prelude.Hashable DeliveryOptions where
+  hashWithSalt _salt DeliveryOptions' {..} =
+    _salt `Prelude.hashWithSalt` tlsPolicy
+
+instance Prelude.NFData DeliveryOptions where
+  rnf DeliveryOptions' {..} = Prelude.rnf tlsPolicy
+
+instance Data.ToQuery DeliveryOptions where
+  toQuery DeliveryOptions' {..} =
+    Prelude.mconcat ["TlsPolicy" Data.=: tlsPolicy]
diff --git a/gen/Amazonka/SES/Types/Destination.hs b/gen/Amazonka/SES/Types/Destination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/Destination.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.Destination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.Destination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents the destination of the message, consisting of To:, CC:, and
+-- BCC: fields.
+--
+-- Amazon SES does not support the SMTPUTF8 extension, as described in
+-- <https://tools.ietf.org/html/rfc6531 RFC6531>. For this reason, the
+-- /local part/ of a destination email address (the part of the email
+-- address that precedes the \@ sign) may only contain
+-- <https://en.wikipedia.org/wiki/Email_address#Local-part 7-bit ASCII characters>.
+-- If the /domain part/ of an address (the part after the \@ sign) contains
+-- non-ASCII characters, they must be encoded using Punycode, as described
+-- in <https://tools.ietf.org/html/rfc3492.html RFC3492>.
+--
+-- /See:/ 'newDestination' smart constructor.
+data Destination = Destination'
+  { -- | The recipients to place on the BCC: line of the message.
+    bccAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The recipients to place on the CC: line of the message.
+    ccAddresses :: Prelude.Maybe [Prelude.Text],
+    -- | The recipients to place on the To: line of the message.
+    toAddresses :: Prelude.Maybe [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Destination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bccAddresses', 'destination_bccAddresses' - The recipients to place on the BCC: line of the message.
+--
+-- 'ccAddresses', 'destination_ccAddresses' - The recipients to place on the CC: line of the message.
+--
+-- 'toAddresses', 'destination_toAddresses' - The recipients to place on the To: line of the message.
+newDestination ::
+  Destination
+newDestination =
+  Destination'
+    { bccAddresses = Prelude.Nothing,
+      ccAddresses = Prelude.Nothing,
+      toAddresses = Prelude.Nothing
+    }
+
+-- | The recipients to place on the BCC: line of the message.
+destination_bccAddresses :: Lens.Lens' Destination (Prelude.Maybe [Prelude.Text])
+destination_bccAddresses = Lens.lens (\Destination' {bccAddresses} -> bccAddresses) (\s@Destination' {} a -> s {bccAddresses = a} :: Destination) Prelude.. Lens.mapping Lens.coerced
+
+-- | The recipients to place on the CC: line of the message.
+destination_ccAddresses :: Lens.Lens' Destination (Prelude.Maybe [Prelude.Text])
+destination_ccAddresses = Lens.lens (\Destination' {ccAddresses} -> ccAddresses) (\s@Destination' {} a -> s {ccAddresses = a} :: Destination) Prelude.. Lens.mapping Lens.coerced
+
+-- | The recipients to place on the To: line of the message.
+destination_toAddresses :: Lens.Lens' Destination (Prelude.Maybe [Prelude.Text])
+destination_toAddresses = Lens.lens (\Destination' {toAddresses} -> toAddresses) (\s@Destination' {} a -> s {toAddresses = a} :: Destination) Prelude.. Lens.mapping Lens.coerced
+
+instance Prelude.Hashable Destination where
+  hashWithSalt _salt Destination' {..} =
+    _salt
+      `Prelude.hashWithSalt` bccAddresses
+      `Prelude.hashWithSalt` ccAddresses
+      `Prelude.hashWithSalt` toAddresses
+
+instance Prelude.NFData Destination where
+  rnf Destination' {..} =
+    Prelude.rnf bccAddresses
+      `Prelude.seq` Prelude.rnf ccAddresses
+      `Prelude.seq` Prelude.rnf toAddresses
+
+instance Data.ToQuery Destination where
+  toQuery Destination' {..} =
+    Prelude.mconcat
+      [ "BccAddresses"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> bccAddresses),
+        "CcAddresses"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> ccAddresses),
+        "ToAddresses"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> toAddresses)
+      ]
diff --git a/gen/Amazonka/SES/Types/DimensionValueSource.hs b/gen/Amazonka/SES/Types/DimensionValueSource.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/DimensionValueSource.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.DimensionValueSource
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.DimensionValueSource
+  ( DimensionValueSource
+      ( ..,
+        DimensionValueSource_EmailHeader,
+        DimensionValueSource_LinkTag,
+        DimensionValueSource_MessageTag
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DimensionValueSource = DimensionValueSource'
+  { fromDimensionValueSource ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DimensionValueSource_EmailHeader :: DimensionValueSource
+pattern DimensionValueSource_EmailHeader = DimensionValueSource' "emailHeader"
+
+pattern DimensionValueSource_LinkTag :: DimensionValueSource
+pattern DimensionValueSource_LinkTag = DimensionValueSource' "linkTag"
+
+pattern DimensionValueSource_MessageTag :: DimensionValueSource
+pattern DimensionValueSource_MessageTag = DimensionValueSource' "messageTag"
+
+{-# COMPLETE
+  DimensionValueSource_EmailHeader,
+  DimensionValueSource_LinkTag,
+  DimensionValueSource_MessageTag,
+  DimensionValueSource'
+  #-}
diff --git a/gen/Amazonka/SES/Types/DsnAction.hs b/gen/Amazonka/SES/Types/DsnAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/DsnAction.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.DsnAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.DsnAction
+  ( DsnAction
+      ( ..,
+        DsnAction_Delayed,
+        DsnAction_Delivered,
+        DsnAction_Expanded,
+        DsnAction_Failed,
+        DsnAction_Relayed
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DsnAction = DsnAction'
+  { fromDsnAction ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern DsnAction_Delayed :: DsnAction
+pattern DsnAction_Delayed = DsnAction' "delayed"
+
+pattern DsnAction_Delivered :: DsnAction
+pattern DsnAction_Delivered = DsnAction' "delivered"
+
+pattern DsnAction_Expanded :: DsnAction
+pattern DsnAction_Expanded = DsnAction' "expanded"
+
+pattern DsnAction_Failed :: DsnAction
+pattern DsnAction_Failed = DsnAction' "failed"
+
+pattern DsnAction_Relayed :: DsnAction
+pattern DsnAction_Relayed = DsnAction' "relayed"
+
+{-# COMPLETE
+  DsnAction_Delayed,
+  DsnAction_Delivered,
+  DsnAction_Expanded,
+  DsnAction_Failed,
+  DsnAction_Relayed,
+  DsnAction'
+  #-}
diff --git a/gen/Amazonka/SES/Types/EventDestination.hs b/gen/Amazonka/SES/Types/EventDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/EventDestination.hs
@@ -0,0 +1,198 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.EventDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.EventDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.CloudWatchDestination
+import Amazonka.SES.Types.EventType
+import Amazonka.SES.Types.KinesisFirehoseDestination
+import Amazonka.SES.Types.SNSDestination
+
+-- | Contains information about the event destination that the specified
+-- email sending events will be published to.
+--
+-- When you create or update an event destination, you must provide one,
+-- and only one, destination. The destination can be Amazon CloudWatch,
+-- Amazon Kinesis Firehose or Amazon Simple Notification Service (Amazon
+-- SNS).
+--
+-- Event destinations are associated with configuration sets, which enable
+-- you to publish email sending events to Amazon CloudWatch, Amazon Kinesis
+-- Firehose, or Amazon Simple Notification Service (Amazon SNS). For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newEventDestination' smart constructor.
+data EventDestination = EventDestination'
+  { -- | An object that contains the names, default values, and sources of the
+    -- dimensions associated with an Amazon CloudWatch event destination.
+    cloudWatchDestination :: Prelude.Maybe CloudWatchDestination,
+    -- | Sets whether Amazon SES publishes events to this destination when you
+    -- send an email with the associated configuration set. Set to @true@ to
+    -- enable publishing to this destination; set to @false@ to prevent
+    -- publishing to this destination. The default value is @false@.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | An object that contains the delivery stream ARN and the IAM role ARN
+    -- associated with an Amazon Kinesis Firehose event destination.
+    kinesisFirehoseDestination :: Prelude.Maybe KinesisFirehoseDestination,
+    -- | An object that contains the topic ARN associated with an Amazon Simple
+    -- Notification Service (Amazon SNS) event destination.
+    sNSDestination :: Prelude.Maybe SNSDestination,
+    -- | The name of the event destination. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Contain less than 64 characters.
+    name :: Prelude.Text,
+    -- | The type of email sending events to publish to the event destination.
+    matchingEventTypes :: [EventType]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'EventDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cloudWatchDestination', 'eventDestination_cloudWatchDestination' - An object that contains the names, default values, and sources of the
+-- dimensions associated with an Amazon CloudWatch event destination.
+--
+-- 'enabled', 'eventDestination_enabled' - Sets whether Amazon SES publishes events to this destination when you
+-- send an email with the associated configuration set. Set to @true@ to
+-- enable publishing to this destination; set to @false@ to prevent
+-- publishing to this destination. The default value is @false@.
+--
+-- 'kinesisFirehoseDestination', 'eventDestination_kinesisFirehoseDestination' - An object that contains the delivery stream ARN and the IAM role ARN
+-- associated with an Amazon Kinesis Firehose event destination.
+--
+-- 'sNSDestination', 'eventDestination_sNSDestination' - An object that contains the topic ARN associated with an Amazon Simple
+-- Notification Service (Amazon SNS) event destination.
+--
+-- 'name', 'eventDestination_name' - The name of the event destination. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 64 characters.
+--
+-- 'matchingEventTypes', 'eventDestination_matchingEventTypes' - The type of email sending events to publish to the event destination.
+newEventDestination ::
+  -- | 'name'
+  Prelude.Text ->
+  EventDestination
+newEventDestination pName_ =
+  EventDestination'
+    { cloudWatchDestination =
+        Prelude.Nothing,
+      enabled = Prelude.Nothing,
+      kinesisFirehoseDestination = Prelude.Nothing,
+      sNSDestination = Prelude.Nothing,
+      name = pName_,
+      matchingEventTypes = Prelude.mempty
+    }
+
+-- | An object that contains the names, default values, and sources of the
+-- dimensions associated with an Amazon CloudWatch event destination.
+eventDestination_cloudWatchDestination :: Lens.Lens' EventDestination (Prelude.Maybe CloudWatchDestination)
+eventDestination_cloudWatchDestination = Lens.lens (\EventDestination' {cloudWatchDestination} -> cloudWatchDestination) (\s@EventDestination' {} a -> s {cloudWatchDestination = a} :: EventDestination)
+
+-- | Sets whether Amazon SES publishes events to this destination when you
+-- send an email with the associated configuration set. Set to @true@ to
+-- enable publishing to this destination; set to @false@ to prevent
+-- publishing to this destination. The default value is @false@.
+eventDestination_enabled :: Lens.Lens' EventDestination (Prelude.Maybe Prelude.Bool)
+eventDestination_enabled = Lens.lens (\EventDestination' {enabled} -> enabled) (\s@EventDestination' {} a -> s {enabled = a} :: EventDestination)
+
+-- | An object that contains the delivery stream ARN and the IAM role ARN
+-- associated with an Amazon Kinesis Firehose event destination.
+eventDestination_kinesisFirehoseDestination :: Lens.Lens' EventDestination (Prelude.Maybe KinesisFirehoseDestination)
+eventDestination_kinesisFirehoseDestination = Lens.lens (\EventDestination' {kinesisFirehoseDestination} -> kinesisFirehoseDestination) (\s@EventDestination' {} a -> s {kinesisFirehoseDestination = a} :: EventDestination)
+
+-- | An object that contains the topic ARN associated with an Amazon Simple
+-- Notification Service (Amazon SNS) event destination.
+eventDestination_sNSDestination :: Lens.Lens' EventDestination (Prelude.Maybe SNSDestination)
+eventDestination_sNSDestination = Lens.lens (\EventDestination' {sNSDestination} -> sNSDestination) (\s@EventDestination' {} a -> s {sNSDestination = a} :: EventDestination)
+
+-- | The name of the event destination. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 64 characters.
+eventDestination_name :: Lens.Lens' EventDestination Prelude.Text
+eventDestination_name = Lens.lens (\EventDestination' {name} -> name) (\s@EventDestination' {} a -> s {name = a} :: EventDestination)
+
+-- | The type of email sending events to publish to the event destination.
+eventDestination_matchingEventTypes :: Lens.Lens' EventDestination [EventType]
+eventDestination_matchingEventTypes = Lens.lens (\EventDestination' {matchingEventTypes} -> matchingEventTypes) (\s@EventDestination' {} a -> s {matchingEventTypes = a} :: EventDestination) Prelude.. Lens.coerced
+
+instance Data.FromXML EventDestination where
+  parseXML x =
+    EventDestination'
+      Prelude.<$> (x Data..@? "CloudWatchDestination")
+      Prelude.<*> (x Data..@? "Enabled")
+      Prelude.<*> (x Data..@? "KinesisFirehoseDestination")
+      Prelude.<*> (x Data..@? "SNSDestination")
+      Prelude.<*> (x Data..@ "Name")
+      Prelude.<*> ( x
+                      Data..@? "MatchingEventTypes"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Data.parseXMLList "member"
+                  )
+
+instance Prelude.Hashable EventDestination where
+  hashWithSalt _salt EventDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` cloudWatchDestination
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` kinesisFirehoseDestination
+      `Prelude.hashWithSalt` sNSDestination
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` matchingEventTypes
+
+instance Prelude.NFData EventDestination where
+  rnf EventDestination' {..} =
+    Prelude.rnf cloudWatchDestination
+      `Prelude.seq` Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf kinesisFirehoseDestination
+      `Prelude.seq` Prelude.rnf sNSDestination
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf matchingEventTypes
+
+instance Data.ToQuery EventDestination where
+  toQuery EventDestination' {..} =
+    Prelude.mconcat
+      [ "CloudWatchDestination"
+          Data.=: cloudWatchDestination,
+        "Enabled" Data.=: enabled,
+        "KinesisFirehoseDestination"
+          Data.=: kinesisFirehoseDestination,
+        "SNSDestination" Data.=: sNSDestination,
+        "Name" Data.=: name,
+        "MatchingEventTypes"
+          Data.=: Data.toQueryList "member" matchingEventTypes
+      ]
diff --git a/gen/Amazonka/SES/Types/EventType.hs b/gen/Amazonka/SES/Types/EventType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/EventType.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.EventType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.EventType
+  ( EventType
+      ( ..,
+        EventType_Bounce,
+        EventType_Click,
+        EventType_Complaint,
+        EventType_Delivery,
+        EventType_Open,
+        EventType_Reject,
+        EventType_RenderingFailure,
+        EventType_Send
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype EventType = EventType'
+  { fromEventType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern EventType_Bounce :: EventType
+pattern EventType_Bounce = EventType' "bounce"
+
+pattern EventType_Click :: EventType
+pattern EventType_Click = EventType' "click"
+
+pattern EventType_Complaint :: EventType
+pattern EventType_Complaint = EventType' "complaint"
+
+pattern EventType_Delivery :: EventType
+pattern EventType_Delivery = EventType' "delivery"
+
+pattern EventType_Open :: EventType
+pattern EventType_Open = EventType' "open"
+
+pattern EventType_Reject :: EventType
+pattern EventType_Reject = EventType' "reject"
+
+pattern EventType_RenderingFailure :: EventType
+pattern EventType_RenderingFailure = EventType' "renderingFailure"
+
+pattern EventType_Send :: EventType
+pattern EventType_Send = EventType' "send"
+
+{-# COMPLETE
+  EventType_Bounce,
+  EventType_Click,
+  EventType_Complaint,
+  EventType_Delivery,
+  EventType_Open,
+  EventType_Reject,
+  EventType_RenderingFailure,
+  EventType_Send,
+  EventType'
+  #-}
diff --git a/gen/Amazonka/SES/Types/ExtensionField.hs b/gen/Amazonka/SES/Types/ExtensionField.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ExtensionField.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ExtensionField
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ExtensionField where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newExtensionField' smart constructor.
+data ExtensionField = ExtensionField'
+  { -- | 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.
+    name :: Prelude.Text,
+    -- | The value of the header to add. Must be less than 2048 characters, and
+    -- must not contain newline characters (\"\\r\" or \"\\n\").
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ExtensionField' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'extensionField_name' - 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.
+--
+-- 'value', 'extensionField_value' - The value of the header to add. Must be less than 2048 characters, and
+-- must not contain newline characters (\"\\r\" or \"\\n\").
+newExtensionField ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  ExtensionField
+newExtensionField pName_ pValue_ =
+  ExtensionField' {name = pName_, value = 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.
+extensionField_name :: Lens.Lens' ExtensionField Prelude.Text
+extensionField_name = Lens.lens (\ExtensionField' {name} -> name) (\s@ExtensionField' {} a -> s {name = a} :: ExtensionField)
+
+-- | The value of the header to add. Must be less than 2048 characters, and
+-- must not contain newline characters (\"\\r\" or \"\\n\").
+extensionField_value :: Lens.Lens' ExtensionField Prelude.Text
+extensionField_value = Lens.lens (\ExtensionField' {value} -> value) (\s@ExtensionField' {} a -> s {value = a} :: ExtensionField)
+
+instance Prelude.Hashable ExtensionField where
+  hashWithSalt _salt ExtensionField' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData ExtensionField where
+  rnf ExtensionField' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToQuery ExtensionField where
+  toQuery ExtensionField' {..} =
+    Prelude.mconcat
+      ["Name" Data.=: name, "Value" Data.=: value]
diff --git a/gen/Amazonka/SES/Types/IdentityDkimAttributes.hs b/gen/Amazonka/SES/Types/IdentityDkimAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/IdentityDkimAttributes.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.IdentityDkimAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.IdentityDkimAttributes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.VerificationStatus
+
+-- | Represents the DKIM attributes of a verified email address or a domain.
+--
+-- /See:/ 'newIdentityDkimAttributes' smart constructor.
+data IdentityDkimAttributes = IdentityDkimAttributes'
+  { -- | A set of character strings that represent the domain\'s identity. Using
+    -- these tokens, you need to create DNS CNAME records that point to DKIM
+    -- public keys that are hosted by Amazon SES. Amazon Web Services
+    -- eventually detects that you\'ve updated your DNS records. This detection
+    -- process might take up to 72 hours. After successful detection, Amazon
+    -- SES is 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, see
+    -- the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+    dkimTokens :: Prelude.Maybe [Prelude.Text],
+    -- | Is true if DKIM signing is enabled for email sent from the identity.
+    -- It\'s false otherwise. The default value is true.
+    dkimEnabled :: Prelude.Bool,
+    -- | 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.)
+    dkimVerificationStatus :: VerificationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityDkimAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dkimTokens', 'identityDkimAttributes_dkimTokens' - A set of character strings that represent the domain\'s identity. Using
+-- these tokens, you need to create DNS CNAME records that point to DKIM
+-- public keys that are hosted by Amazon SES. Amazon Web Services
+-- eventually detects that you\'ve updated your DNS records. This detection
+-- process might take up to 72 hours. After successful detection, Amazon
+-- SES is 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, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+--
+-- 'dkimEnabled', 'identityDkimAttributes_dkimEnabled' - Is true if DKIM signing is enabled for email sent from the identity.
+-- It\'s false otherwise. The default value is true.
+--
+-- 'dkimVerificationStatus', 'identityDkimAttributes_dkimVerificationStatus' - 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.)
+newIdentityDkimAttributes ::
+  -- | 'dkimEnabled'
+  Prelude.Bool ->
+  -- | 'dkimVerificationStatus'
+  VerificationStatus ->
+  IdentityDkimAttributes
+newIdentityDkimAttributes
+  pDkimEnabled_
+  pDkimVerificationStatus_ =
+    IdentityDkimAttributes'
+      { dkimTokens =
+          Prelude.Nothing,
+        dkimEnabled = pDkimEnabled_,
+        dkimVerificationStatus = pDkimVerificationStatus_
+      }
+
+-- | A set of character strings that represent the domain\'s identity. Using
+-- these tokens, you need to create DNS CNAME records that point to DKIM
+-- public keys that are hosted by Amazon SES. Amazon Web Services
+-- eventually detects that you\'ve updated your DNS records. This detection
+-- process might take up to 72 hours. After successful detection, Amazon
+-- SES is 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, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+identityDkimAttributes_dkimTokens :: Lens.Lens' IdentityDkimAttributes (Prelude.Maybe [Prelude.Text])
+identityDkimAttributes_dkimTokens = Lens.lens (\IdentityDkimAttributes' {dkimTokens} -> dkimTokens) (\s@IdentityDkimAttributes' {} a -> s {dkimTokens = a} :: IdentityDkimAttributes) Prelude.. Lens.mapping Lens.coerced
+
+-- | Is true if DKIM signing is enabled for email sent from the identity.
+-- It\'s false otherwise. The default value is true.
+identityDkimAttributes_dkimEnabled :: Lens.Lens' IdentityDkimAttributes Prelude.Bool
+identityDkimAttributes_dkimEnabled = Lens.lens (\IdentityDkimAttributes' {dkimEnabled} -> dkimEnabled) (\s@IdentityDkimAttributes' {} a -> s {dkimEnabled = a} :: IdentityDkimAttributes)
+
+-- | 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.)
+identityDkimAttributes_dkimVerificationStatus :: Lens.Lens' IdentityDkimAttributes VerificationStatus
+identityDkimAttributes_dkimVerificationStatus = Lens.lens (\IdentityDkimAttributes' {dkimVerificationStatus} -> dkimVerificationStatus) (\s@IdentityDkimAttributes' {} a -> s {dkimVerificationStatus = a} :: IdentityDkimAttributes)
+
+instance Data.FromXML IdentityDkimAttributes where
+  parseXML x =
+    IdentityDkimAttributes'
+      Prelude.<$> ( x
+                      Data..@? "DkimTokens"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@ "DkimEnabled")
+      Prelude.<*> (x Data..@ "DkimVerificationStatus")
+
+instance Prelude.Hashable IdentityDkimAttributes where
+  hashWithSalt _salt IdentityDkimAttributes' {..} =
+    _salt
+      `Prelude.hashWithSalt` dkimTokens
+      `Prelude.hashWithSalt` dkimEnabled
+      `Prelude.hashWithSalt` dkimVerificationStatus
+
+instance Prelude.NFData IdentityDkimAttributes where
+  rnf IdentityDkimAttributes' {..} =
+    Prelude.rnf dkimTokens
+      `Prelude.seq` Prelude.rnf dkimEnabled
+      `Prelude.seq` Prelude.rnf dkimVerificationStatus
diff --git a/gen/Amazonka/SES/Types/IdentityMailFromDomainAttributes.hs b/gen/Amazonka/SES/Types/IdentityMailFromDomainAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/IdentityMailFromDomainAttributes.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.IdentityMailFromDomainAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.IdentityMailFromDomainAttributes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.BehaviorOnMXFailure
+import Amazonka.SES.Types.CustomMailFromStatus
+
+-- | Represents the custom MAIL FROM domain attributes of a verified identity
+-- (email address or domain).
+--
+-- /See:/ 'newIdentityMailFromDomainAttributes' smart constructor.
+data IdentityMailFromDomainAttributes = IdentityMailFromDomainAttributes'
+  { -- | The custom MAIL FROM domain that the identity is configured to use.
+    mailFromDomain :: Prelude.Text,
+    -- | The state that indicates whether Amazon SES has successfully read the MX
+    -- record required for custom MAIL FROM domain setup. If the state is
+    -- @Success@, Amazon SES uses the specified custom MAIL FROM domain when
+    -- the verified identity sends an email. All other states indicate that
+    -- Amazon SES takes the action described by @BehaviorOnMXFailure@.
+    mailFromDomainStatus :: CustomMailFromStatus,
+    -- | The action that Amazon SES takes if it cannot successfully read the
+    -- required MX record when you send an email. A value of @UseDefaultValue@
+    -- indicates that if Amazon SES cannot read the required MX record, it uses
+    -- amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value
+    -- of @RejectMessage@ indicates that if Amazon SES cannot read the required
+    -- MX record, Amazon SES returns a @MailFromDomainNotVerified@ error and
+    -- does not send the email.
+    --
+    -- The custom MAIL FROM setup states that result in this behavior are
+    -- @Pending@, @Failed@, and @TemporaryFailure@.
+    behaviorOnMXFailure :: BehaviorOnMXFailure
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityMailFromDomainAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'mailFromDomain', 'identityMailFromDomainAttributes_mailFromDomain' - The custom MAIL FROM domain that the identity is configured to use.
+--
+-- 'mailFromDomainStatus', 'identityMailFromDomainAttributes_mailFromDomainStatus' - The state that indicates whether Amazon SES has successfully read the MX
+-- record required for custom MAIL FROM domain setup. If the state is
+-- @Success@, Amazon SES uses the specified custom MAIL FROM domain when
+-- the verified identity sends an email. All other states indicate that
+-- Amazon SES takes the action described by @BehaviorOnMXFailure@.
+--
+-- 'behaviorOnMXFailure', 'identityMailFromDomainAttributes_behaviorOnMXFailure' - The action that Amazon SES takes if it cannot successfully read the
+-- required MX record when you send an email. A value of @UseDefaultValue@
+-- indicates that if Amazon SES cannot read the required MX record, it uses
+-- amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value
+-- of @RejectMessage@ indicates that if Amazon SES cannot read the required
+-- MX record, Amazon SES returns a @MailFromDomainNotVerified@ error and
+-- does not send the email.
+--
+-- The custom MAIL FROM setup states that result in this behavior are
+-- @Pending@, @Failed@, and @TemporaryFailure@.
+newIdentityMailFromDomainAttributes ::
+  -- | 'mailFromDomain'
+  Prelude.Text ->
+  -- | 'mailFromDomainStatus'
+  CustomMailFromStatus ->
+  -- | 'behaviorOnMXFailure'
+  BehaviorOnMXFailure ->
+  IdentityMailFromDomainAttributes
+newIdentityMailFromDomainAttributes
+  pMailFromDomain_
+  pMailFromDomainStatus_
+  pBehaviorOnMXFailure_ =
+    IdentityMailFromDomainAttributes'
+      { mailFromDomain =
+          pMailFromDomain_,
+        mailFromDomainStatus =
+          pMailFromDomainStatus_,
+        behaviorOnMXFailure =
+          pBehaviorOnMXFailure_
+      }
+
+-- | The custom MAIL FROM domain that the identity is configured to use.
+identityMailFromDomainAttributes_mailFromDomain :: Lens.Lens' IdentityMailFromDomainAttributes Prelude.Text
+identityMailFromDomainAttributes_mailFromDomain = Lens.lens (\IdentityMailFromDomainAttributes' {mailFromDomain} -> mailFromDomain) (\s@IdentityMailFromDomainAttributes' {} a -> s {mailFromDomain = a} :: IdentityMailFromDomainAttributes)
+
+-- | The state that indicates whether Amazon SES has successfully read the MX
+-- record required for custom MAIL FROM domain setup. If the state is
+-- @Success@, Amazon SES uses the specified custom MAIL FROM domain when
+-- the verified identity sends an email. All other states indicate that
+-- Amazon SES takes the action described by @BehaviorOnMXFailure@.
+identityMailFromDomainAttributes_mailFromDomainStatus :: Lens.Lens' IdentityMailFromDomainAttributes CustomMailFromStatus
+identityMailFromDomainAttributes_mailFromDomainStatus = Lens.lens (\IdentityMailFromDomainAttributes' {mailFromDomainStatus} -> mailFromDomainStatus) (\s@IdentityMailFromDomainAttributes' {} a -> s {mailFromDomainStatus = a} :: IdentityMailFromDomainAttributes)
+
+-- | The action that Amazon SES takes if it cannot successfully read the
+-- required MX record when you send an email. A value of @UseDefaultValue@
+-- indicates that if Amazon SES cannot read the required MX record, it uses
+-- amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value
+-- of @RejectMessage@ indicates that if Amazon SES cannot read the required
+-- MX record, Amazon SES returns a @MailFromDomainNotVerified@ error and
+-- does not send the email.
+--
+-- The custom MAIL FROM setup states that result in this behavior are
+-- @Pending@, @Failed@, and @TemporaryFailure@.
+identityMailFromDomainAttributes_behaviorOnMXFailure :: Lens.Lens' IdentityMailFromDomainAttributes BehaviorOnMXFailure
+identityMailFromDomainAttributes_behaviorOnMXFailure = Lens.lens (\IdentityMailFromDomainAttributes' {behaviorOnMXFailure} -> behaviorOnMXFailure) (\s@IdentityMailFromDomainAttributes' {} a -> s {behaviorOnMXFailure = a} :: IdentityMailFromDomainAttributes)
+
+instance
+  Data.FromXML
+    IdentityMailFromDomainAttributes
+  where
+  parseXML x =
+    IdentityMailFromDomainAttributes'
+      Prelude.<$> (x Data..@ "MailFromDomain")
+      Prelude.<*> (x Data..@ "MailFromDomainStatus")
+      Prelude.<*> (x Data..@ "BehaviorOnMXFailure")
+
+instance
+  Prelude.Hashable
+    IdentityMailFromDomainAttributes
+  where
+  hashWithSalt
+    _salt
+    IdentityMailFromDomainAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` mailFromDomain
+        `Prelude.hashWithSalt` mailFromDomainStatus
+        `Prelude.hashWithSalt` behaviorOnMXFailure
+
+instance
+  Prelude.NFData
+    IdentityMailFromDomainAttributes
+  where
+  rnf IdentityMailFromDomainAttributes' {..} =
+    Prelude.rnf mailFromDomain
+      `Prelude.seq` Prelude.rnf mailFromDomainStatus
+      `Prelude.seq` Prelude.rnf behaviorOnMXFailure
diff --git a/gen/Amazonka/SES/Types/IdentityNotificationAttributes.hs b/gen/Amazonka/SES/Types/IdentityNotificationAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/IdentityNotificationAttributes.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.IdentityNotificationAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.IdentityNotificationAttributes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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:/ 'newIdentityNotificationAttributes' smart constructor.
+data IdentityNotificationAttributes = IdentityNotificationAttributes'
+  { -- | Describes whether Amazon SES includes the original email headers in
+    -- Amazon SNS notifications of type @Bounce@. A value of @true@ specifies
+    -- that Amazon SES will include headers in bounce notifications, and a
+    -- value of @false@ specifies that Amazon SES will not include headers in
+    -- bounce notifications.
+    headersInBounceNotificationsEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Describes whether Amazon SES includes the original email headers in
+    -- Amazon SNS notifications of type @Complaint@. A value of @true@
+    -- specifies that Amazon SES will include headers in complaint
+    -- notifications, and a value of @false@ specifies that Amazon SES will not
+    -- include headers in complaint notifications.
+    headersInComplaintNotificationsEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Describes whether Amazon SES includes the original email headers in
+    -- Amazon SNS notifications of type @Delivery@. A value of @true@ specifies
+    -- that Amazon SES will include headers in delivery notifications, and a
+    -- value of @false@ specifies that Amazon SES will not include headers in
+    -- delivery notifications.
+    headersInDeliveryNotificationsEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+    -- will publish bounce notifications.
+    bounceTopic :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+    -- will publish complaint notifications.
+    complaintTopic :: Prelude.Text,
+    -- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+    -- will publish delivery notifications.
+    deliveryTopic :: Prelude.Text,
+    -- | 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.
+    forwardingEnabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityNotificationAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'headersInBounceNotificationsEnabled', 'identityNotificationAttributes_headersInBounceNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Bounce@. A value of @true@ specifies
+-- that Amazon SES will include headers in bounce notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- bounce notifications.
+--
+-- 'headersInComplaintNotificationsEnabled', 'identityNotificationAttributes_headersInComplaintNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Complaint@. A value of @true@
+-- specifies that Amazon SES will include headers in complaint
+-- notifications, and a value of @false@ specifies that Amazon SES will not
+-- include headers in complaint notifications.
+--
+-- 'headersInDeliveryNotificationsEnabled', 'identityNotificationAttributes_headersInDeliveryNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Delivery@. A value of @true@ specifies
+-- that Amazon SES will include headers in delivery notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- delivery notifications.
+--
+-- 'bounceTopic', 'identityNotificationAttributes_bounceTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish bounce notifications.
+--
+-- 'complaintTopic', 'identityNotificationAttributes_complaintTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish complaint notifications.
+--
+-- 'deliveryTopic', 'identityNotificationAttributes_deliveryTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish delivery notifications.
+--
+-- 'forwardingEnabled', 'identityNotificationAttributes_forwardingEnabled' - 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.
+newIdentityNotificationAttributes ::
+  -- | 'bounceTopic'
+  Prelude.Text ->
+  -- | 'complaintTopic'
+  Prelude.Text ->
+  -- | 'deliveryTopic'
+  Prelude.Text ->
+  -- | 'forwardingEnabled'
+  Prelude.Bool ->
+  IdentityNotificationAttributes
+newIdentityNotificationAttributes
+  pBounceTopic_
+  pComplaintTopic_
+  pDeliveryTopic_
+  pForwardingEnabled_ =
+    IdentityNotificationAttributes'
+      { headersInBounceNotificationsEnabled =
+          Prelude.Nothing,
+        headersInComplaintNotificationsEnabled =
+          Prelude.Nothing,
+        headersInDeliveryNotificationsEnabled =
+          Prelude.Nothing,
+        bounceTopic = pBounceTopic_,
+        complaintTopic = pComplaintTopic_,
+        deliveryTopic = pDeliveryTopic_,
+        forwardingEnabled = pForwardingEnabled_
+      }
+
+-- | Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Bounce@. A value of @true@ specifies
+-- that Amazon SES will include headers in bounce notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- bounce notifications.
+identityNotificationAttributes_headersInBounceNotificationsEnabled :: Lens.Lens' IdentityNotificationAttributes (Prelude.Maybe Prelude.Bool)
+identityNotificationAttributes_headersInBounceNotificationsEnabled = Lens.lens (\IdentityNotificationAttributes' {headersInBounceNotificationsEnabled} -> headersInBounceNotificationsEnabled) (\s@IdentityNotificationAttributes' {} a -> s {headersInBounceNotificationsEnabled = a} :: IdentityNotificationAttributes)
+
+-- | Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Complaint@. A value of @true@
+-- specifies that Amazon SES will include headers in complaint
+-- notifications, and a value of @false@ specifies that Amazon SES will not
+-- include headers in complaint notifications.
+identityNotificationAttributes_headersInComplaintNotificationsEnabled :: Lens.Lens' IdentityNotificationAttributes (Prelude.Maybe Prelude.Bool)
+identityNotificationAttributes_headersInComplaintNotificationsEnabled = Lens.lens (\IdentityNotificationAttributes' {headersInComplaintNotificationsEnabled} -> headersInComplaintNotificationsEnabled) (\s@IdentityNotificationAttributes' {} a -> s {headersInComplaintNotificationsEnabled = a} :: IdentityNotificationAttributes)
+
+-- | Describes whether Amazon SES includes the original email headers in
+-- Amazon SNS notifications of type @Delivery@. A value of @true@ specifies
+-- that Amazon SES will include headers in delivery notifications, and a
+-- value of @false@ specifies that Amazon SES will not include headers in
+-- delivery notifications.
+identityNotificationAttributes_headersInDeliveryNotificationsEnabled :: Lens.Lens' IdentityNotificationAttributes (Prelude.Maybe Prelude.Bool)
+identityNotificationAttributes_headersInDeliveryNotificationsEnabled = Lens.lens (\IdentityNotificationAttributes' {headersInDeliveryNotificationsEnabled} -> headersInDeliveryNotificationsEnabled) (\s@IdentityNotificationAttributes' {} a -> s {headersInDeliveryNotificationsEnabled = a} :: IdentityNotificationAttributes)
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish bounce notifications.
+identityNotificationAttributes_bounceTopic :: Lens.Lens' IdentityNotificationAttributes Prelude.Text
+identityNotificationAttributes_bounceTopic = Lens.lens (\IdentityNotificationAttributes' {bounceTopic} -> bounceTopic) (\s@IdentityNotificationAttributes' {} a -> s {bounceTopic = a} :: IdentityNotificationAttributes)
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish complaint notifications.
+identityNotificationAttributes_complaintTopic :: Lens.Lens' IdentityNotificationAttributes Prelude.Text
+identityNotificationAttributes_complaintTopic = Lens.lens (\IdentityNotificationAttributes' {complaintTopic} -> complaintTopic) (\s@IdentityNotificationAttributes' {} a -> s {complaintTopic = a} :: IdentityNotificationAttributes)
+
+-- | The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES
+-- will publish delivery notifications.
+identityNotificationAttributes_deliveryTopic :: Lens.Lens' IdentityNotificationAttributes Prelude.Text
+identityNotificationAttributes_deliveryTopic = Lens.lens (\IdentityNotificationAttributes' {deliveryTopic} -> deliveryTopic) (\s@IdentityNotificationAttributes' {} a -> s {deliveryTopic = a} :: IdentityNotificationAttributes)
+
+-- | 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.
+identityNotificationAttributes_forwardingEnabled :: Lens.Lens' IdentityNotificationAttributes Prelude.Bool
+identityNotificationAttributes_forwardingEnabled = Lens.lens (\IdentityNotificationAttributes' {forwardingEnabled} -> forwardingEnabled) (\s@IdentityNotificationAttributes' {} a -> s {forwardingEnabled = a} :: IdentityNotificationAttributes)
+
+instance Data.FromXML IdentityNotificationAttributes where
+  parseXML x =
+    IdentityNotificationAttributes'
+      Prelude.<$> (x Data..@? "HeadersInBounceNotificationsEnabled")
+      Prelude.<*> (x Data..@? "HeadersInComplaintNotificationsEnabled")
+      Prelude.<*> (x Data..@? "HeadersInDeliveryNotificationsEnabled")
+      Prelude.<*> (x Data..@ "BounceTopic")
+      Prelude.<*> (x Data..@ "ComplaintTopic")
+      Prelude.<*> (x Data..@ "DeliveryTopic")
+      Prelude.<*> (x Data..@ "ForwardingEnabled")
+
+instance
+  Prelude.Hashable
+    IdentityNotificationAttributes
+  where
+  hashWithSalt
+    _salt
+    IdentityNotificationAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` headersInBounceNotificationsEnabled
+        `Prelude.hashWithSalt` headersInComplaintNotificationsEnabled
+        `Prelude.hashWithSalt` headersInDeliveryNotificationsEnabled
+        `Prelude.hashWithSalt` bounceTopic
+        `Prelude.hashWithSalt` complaintTopic
+        `Prelude.hashWithSalt` deliveryTopic
+        `Prelude.hashWithSalt` forwardingEnabled
+
+instance
+  Prelude.NFData
+    IdentityNotificationAttributes
+  where
+  rnf IdentityNotificationAttributes' {..} =
+    Prelude.rnf headersInBounceNotificationsEnabled
+      `Prelude.seq` Prelude.rnf headersInComplaintNotificationsEnabled
+      `Prelude.seq` Prelude.rnf headersInDeliveryNotificationsEnabled
+      `Prelude.seq` Prelude.rnf bounceTopic
+      `Prelude.seq` Prelude.rnf complaintTopic
+      `Prelude.seq` Prelude.rnf deliveryTopic
+      `Prelude.seq` Prelude.rnf forwardingEnabled
diff --git a/gen/Amazonka/SES/Types/IdentityType.hs b/gen/Amazonka/SES/Types/IdentityType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/IdentityType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.IdentityType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.IdentityType
+  ( IdentityType
+      ( ..,
+        IdentityType_Domain,
+        IdentityType_EmailAddress
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype IdentityType = IdentityType'
+  { fromIdentityType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern IdentityType_Domain :: IdentityType
+pattern IdentityType_Domain = IdentityType' "Domain"
+
+pattern IdentityType_EmailAddress :: IdentityType
+pattern IdentityType_EmailAddress = IdentityType' "EmailAddress"
+
+{-# COMPLETE
+  IdentityType_Domain,
+  IdentityType_EmailAddress,
+  IdentityType'
+  #-}
diff --git a/gen/Amazonka/SES/Types/IdentityVerificationAttributes.hs b/gen/Amazonka/SES/Types/IdentityVerificationAttributes.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/IdentityVerificationAttributes.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.IdentityVerificationAttributes
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.IdentityVerificationAttributes where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.VerificationStatus
+
+-- | Represents the verification attributes of a single identity.
+--
+-- /See:/ 'newIdentityVerificationAttributes' smart constructor.
+data IdentityVerificationAttributes = IdentityVerificationAttributes'
+  { -- | The verification token for a domain identity. Null for email address
+    -- identities.
+    verificationToken :: Prelude.Maybe Prelude.Text,
+    -- | The verification status of the identity: \"Pending\", \"Success\",
+    -- \"Failed\", or \"TemporaryFailure\".
+    verificationStatus :: VerificationStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityVerificationAttributes' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'verificationToken', 'identityVerificationAttributes_verificationToken' - The verification token for a domain identity. Null for email address
+-- identities.
+--
+-- 'verificationStatus', 'identityVerificationAttributes_verificationStatus' - The verification status of the identity: \"Pending\", \"Success\",
+-- \"Failed\", or \"TemporaryFailure\".
+newIdentityVerificationAttributes ::
+  -- | 'verificationStatus'
+  VerificationStatus ->
+  IdentityVerificationAttributes
+newIdentityVerificationAttributes
+  pVerificationStatus_ =
+    IdentityVerificationAttributes'
+      { verificationToken =
+          Prelude.Nothing,
+        verificationStatus = pVerificationStatus_
+      }
+
+-- | The verification token for a domain identity. Null for email address
+-- identities.
+identityVerificationAttributes_verificationToken :: Lens.Lens' IdentityVerificationAttributes (Prelude.Maybe Prelude.Text)
+identityVerificationAttributes_verificationToken = Lens.lens (\IdentityVerificationAttributes' {verificationToken} -> verificationToken) (\s@IdentityVerificationAttributes' {} a -> s {verificationToken = a} :: IdentityVerificationAttributes)
+
+-- | The verification status of the identity: \"Pending\", \"Success\",
+-- \"Failed\", or \"TemporaryFailure\".
+identityVerificationAttributes_verificationStatus :: Lens.Lens' IdentityVerificationAttributes VerificationStatus
+identityVerificationAttributes_verificationStatus = Lens.lens (\IdentityVerificationAttributes' {verificationStatus} -> verificationStatus) (\s@IdentityVerificationAttributes' {} a -> s {verificationStatus = a} :: IdentityVerificationAttributes)
+
+instance Data.FromXML IdentityVerificationAttributes where
+  parseXML x =
+    IdentityVerificationAttributes'
+      Prelude.<$> (x Data..@? "VerificationToken")
+      Prelude.<*> (x Data..@ "VerificationStatus")
+
+instance
+  Prelude.Hashable
+    IdentityVerificationAttributes
+  where
+  hashWithSalt
+    _salt
+    IdentityVerificationAttributes' {..} =
+      _salt
+        `Prelude.hashWithSalt` verificationToken
+        `Prelude.hashWithSalt` verificationStatus
+
+instance
+  Prelude.NFData
+    IdentityVerificationAttributes
+  where
+  rnf IdentityVerificationAttributes' {..} =
+    Prelude.rnf verificationToken
+      `Prelude.seq` Prelude.rnf verificationStatus
diff --git a/gen/Amazonka/SES/Types/InvocationType.hs b/gen/Amazonka/SES/Types/InvocationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/InvocationType.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.InvocationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.InvocationType
+  ( InvocationType
+      ( ..,
+        InvocationType_Event,
+        InvocationType_RequestResponse
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype InvocationType = InvocationType'
+  { fromInvocationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern InvocationType_Event :: InvocationType
+pattern InvocationType_Event = InvocationType' "Event"
+
+pattern InvocationType_RequestResponse :: InvocationType
+pattern InvocationType_RequestResponse = InvocationType' "RequestResponse"
+
+{-# COMPLETE
+  InvocationType_Event,
+  InvocationType_RequestResponse,
+  InvocationType'
+  #-}
diff --git a/gen/Amazonka/SES/Types/KinesisFirehoseDestination.hs b/gen/Amazonka/SES/Types/KinesisFirehoseDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/KinesisFirehoseDestination.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.KinesisFirehoseDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.KinesisFirehoseDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the delivery stream ARN and the IAM role ARN associated with an
+-- Amazon Kinesis Firehose event destination.
+--
+-- Event destinations, such as Amazon Kinesis Firehose, are associated with
+-- configuration sets, which enable you to publish email sending events.
+-- For information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newKinesisFirehoseDestination' smart constructor.
+data KinesisFirehoseDestination = KinesisFirehoseDestination'
+  { -- | The ARN of the IAM role under which Amazon SES publishes email sending
+    -- events to the Amazon Kinesis Firehose stream.
+    iAMRoleARN :: Prelude.Text,
+    -- | The ARN of the Amazon Kinesis Firehose stream that email sending events
+    -- should be published to.
+    deliveryStreamARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'KinesisFirehoseDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'iAMRoleARN', 'kinesisFirehoseDestination_iAMRoleARN' - The ARN of the IAM role under which Amazon SES publishes email sending
+-- events to the Amazon Kinesis Firehose stream.
+--
+-- 'deliveryStreamARN', 'kinesisFirehoseDestination_deliveryStreamARN' - The ARN of the Amazon Kinesis Firehose stream that email sending events
+-- should be published to.
+newKinesisFirehoseDestination ::
+  -- | 'iAMRoleARN'
+  Prelude.Text ->
+  -- | 'deliveryStreamARN'
+  Prelude.Text ->
+  KinesisFirehoseDestination
+newKinesisFirehoseDestination
+  pIAMRoleARN_
+  pDeliveryStreamARN_ =
+    KinesisFirehoseDestination'
+      { iAMRoleARN =
+          pIAMRoleARN_,
+        deliveryStreamARN = pDeliveryStreamARN_
+      }
+
+-- | The ARN of the IAM role under which Amazon SES publishes email sending
+-- events to the Amazon Kinesis Firehose stream.
+kinesisFirehoseDestination_iAMRoleARN :: Lens.Lens' KinesisFirehoseDestination Prelude.Text
+kinesisFirehoseDestination_iAMRoleARN = Lens.lens (\KinesisFirehoseDestination' {iAMRoleARN} -> iAMRoleARN) (\s@KinesisFirehoseDestination' {} a -> s {iAMRoleARN = a} :: KinesisFirehoseDestination)
+
+-- | The ARN of the Amazon Kinesis Firehose stream that email sending events
+-- should be published to.
+kinesisFirehoseDestination_deliveryStreamARN :: Lens.Lens' KinesisFirehoseDestination Prelude.Text
+kinesisFirehoseDestination_deliveryStreamARN = Lens.lens (\KinesisFirehoseDestination' {deliveryStreamARN} -> deliveryStreamARN) (\s@KinesisFirehoseDestination' {} a -> s {deliveryStreamARN = a} :: KinesisFirehoseDestination)
+
+instance Data.FromXML KinesisFirehoseDestination where
+  parseXML x =
+    KinesisFirehoseDestination'
+      Prelude.<$> (x Data..@ "IAMRoleARN")
+      Prelude.<*> (x Data..@ "DeliveryStreamARN")
+
+instance Prelude.Hashable KinesisFirehoseDestination where
+  hashWithSalt _salt KinesisFirehoseDestination' {..} =
+    _salt
+      `Prelude.hashWithSalt` iAMRoleARN
+      `Prelude.hashWithSalt` deliveryStreamARN
+
+instance Prelude.NFData KinesisFirehoseDestination where
+  rnf KinesisFirehoseDestination' {..} =
+    Prelude.rnf iAMRoleARN
+      `Prelude.seq` Prelude.rnf deliveryStreamARN
+
+instance Data.ToQuery KinesisFirehoseDestination where
+  toQuery KinesisFirehoseDestination' {..} =
+    Prelude.mconcat
+      [ "IAMRoleARN" Data.=: iAMRoleARN,
+        "DeliveryStreamARN" Data.=: deliveryStreamARN
+      ]
diff --git a/gen/Amazonka/SES/Types/LambdaAction.hs b/gen/Amazonka/SES/Types/LambdaAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/LambdaAction.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.LambdaAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.LambdaAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.InvocationType
+
+-- | 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
+-- <https://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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-lambda.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newLambdaAction' smart constructor.
+data LambdaAction = LambdaAction'
+  { -- | 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
+    -- <https://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.
+    invocationType :: Prelude.Maybe InvocationType,
+    -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Maybe Prelude.Text,
+    -- | 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
+    -- <https://docs.aws.amazon.com/lambda/latest/dg/welcome.html AWS Lambda Developer Guide>.
+    functionArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'LambdaAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'invocationType', 'lambdaAction_invocationType' - 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
+-- <https://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.
+--
+-- 'topicArn', 'lambdaAction_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+--
+-- 'functionArn', 'lambdaAction_functionArn' - 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
+-- <https://docs.aws.amazon.com/lambda/latest/dg/welcome.html AWS Lambda Developer Guide>.
+newLambdaAction ::
+  -- | 'functionArn'
+  Prelude.Text ->
+  LambdaAction
+newLambdaAction pFunctionArn_ =
+  LambdaAction'
+    { invocationType = Prelude.Nothing,
+      topicArn = Prelude.Nothing,
+      functionArn = 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
+-- <https://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.
+lambdaAction_invocationType :: Lens.Lens' LambdaAction (Prelude.Maybe InvocationType)
+lambdaAction_invocationType = Lens.lens (\LambdaAction' {invocationType} -> invocationType) (\s@LambdaAction' {} a -> s {invocationType = a} :: LambdaAction)
+
+-- | 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+lambdaAction_topicArn :: Lens.Lens' LambdaAction (Prelude.Maybe Prelude.Text)
+lambdaAction_topicArn = Lens.lens (\LambdaAction' {topicArn} -> topicArn) (\s@LambdaAction' {} a -> s {topicArn = a} :: LambdaAction)
+
+-- | 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
+-- <https://docs.aws.amazon.com/lambda/latest/dg/welcome.html AWS Lambda Developer Guide>.
+lambdaAction_functionArn :: Lens.Lens' LambdaAction Prelude.Text
+lambdaAction_functionArn = Lens.lens (\LambdaAction' {functionArn} -> functionArn) (\s@LambdaAction' {} a -> s {functionArn = a} :: LambdaAction)
+
+instance Data.FromXML LambdaAction where
+  parseXML x =
+    LambdaAction'
+      Prelude.<$> (x Data..@? "InvocationType")
+      Prelude.<*> (x Data..@? "TopicArn")
+      Prelude.<*> (x Data..@ "FunctionArn")
+
+instance Prelude.Hashable LambdaAction where
+  hashWithSalt _salt LambdaAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` invocationType
+      `Prelude.hashWithSalt` topicArn
+      `Prelude.hashWithSalt` functionArn
+
+instance Prelude.NFData LambdaAction where
+  rnf LambdaAction' {..} =
+    Prelude.rnf invocationType
+      `Prelude.seq` Prelude.rnf topicArn
+      `Prelude.seq` Prelude.rnf functionArn
+
+instance Data.ToQuery LambdaAction where
+  toQuery LambdaAction' {..} =
+    Prelude.mconcat
+      [ "InvocationType" Data.=: invocationType,
+        "TopicArn" Data.=: topicArn,
+        "FunctionArn" Data.=: functionArn
+      ]
diff --git a/gen/Amazonka/SES/Types/Message.hs b/gen/Amazonka/SES/Types/Message.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/Message.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.Message
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.Message where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.Body
+import Amazonka.SES.Types.Content
+
+-- | Represents the message to be sent, composed of a subject and a body.
+--
+-- /See:/ 'newMessage' smart constructor.
+data Message = Message'
+  { -- | The subject of the message: A short summary of the content, which will
+    -- appear in the recipient\'s inbox.
+    subject :: Content,
+    -- | The message body.
+    body :: Body
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Message' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'subject', 'message_subject' - The subject of the message: A short summary of the content, which will
+-- appear in the recipient\'s inbox.
+--
+-- 'body', 'message_body' - The message body.
+newMessage ::
+  -- | 'subject'
+  Content ->
+  -- | 'body'
+  Body ->
+  Message
+newMessage pSubject_ pBody_ =
+  Message' {subject = pSubject_, body = pBody_}
+
+-- | The subject of the message: A short summary of the content, which will
+-- appear in the recipient\'s inbox.
+message_subject :: Lens.Lens' Message Content
+message_subject = Lens.lens (\Message' {subject} -> subject) (\s@Message' {} a -> s {subject = a} :: Message)
+
+-- | The message body.
+message_body :: Lens.Lens' Message Body
+message_body = Lens.lens (\Message' {body} -> body) (\s@Message' {} a -> s {body = a} :: Message)
+
+instance Prelude.Hashable Message where
+  hashWithSalt _salt Message' {..} =
+    _salt
+      `Prelude.hashWithSalt` subject
+      `Prelude.hashWithSalt` body
+
+instance Prelude.NFData Message where
+  rnf Message' {..} =
+    Prelude.rnf subject `Prelude.seq` Prelude.rnf body
+
+instance Data.ToQuery Message where
+  toQuery Message' {..} =
+    Prelude.mconcat
+      ["Subject" Data.=: subject, "Body" Data.=: body]
diff --git a/gen/Amazonka/SES/Types/MessageDsn.hs b/gen/Amazonka/SES/Types/MessageDsn.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/MessageDsn.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.MessageDsn
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.MessageDsn where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.ExtensionField
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newMessageDsn' smart constructor.
+data MessageDsn = MessageDsn'
+  { -- | 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.
+    arrivalDate :: Prelude.Maybe Data.ISO8601,
+    -- | Additional X-headers to include in the DSN.
+    extensionFields :: Prelude.Maybe [ExtensionField],
+    -- | 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@.
+    reportingMta :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MessageDsn' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'arrivalDate', 'messageDsn_arrivalDate' - 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.
+--
+-- 'extensionFields', 'messageDsn_extensionFields' - Additional X-headers to include in the DSN.
+--
+-- 'reportingMta', 'messageDsn_reportingMta' - 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@.
+newMessageDsn ::
+  -- | 'reportingMta'
+  Prelude.Text ->
+  MessageDsn
+newMessageDsn pReportingMta_ =
+  MessageDsn'
+    { arrivalDate = Prelude.Nothing,
+      extensionFields = Prelude.Nothing,
+      reportingMta = 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.
+messageDsn_arrivalDate :: Lens.Lens' MessageDsn (Prelude.Maybe Prelude.UTCTime)
+messageDsn_arrivalDate = Lens.lens (\MessageDsn' {arrivalDate} -> arrivalDate) (\s@MessageDsn' {} a -> s {arrivalDate = a} :: MessageDsn) Prelude.. Lens.mapping Data._Time
+
+-- | Additional X-headers to include in the DSN.
+messageDsn_extensionFields :: Lens.Lens' MessageDsn (Prelude.Maybe [ExtensionField])
+messageDsn_extensionFields = Lens.lens (\MessageDsn' {extensionFields} -> extensionFields) (\s@MessageDsn' {} a -> s {extensionFields = a} :: MessageDsn) Prelude.. Lens.mapping Lens.coerced
+
+-- | 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@.
+messageDsn_reportingMta :: Lens.Lens' MessageDsn Prelude.Text
+messageDsn_reportingMta = Lens.lens (\MessageDsn' {reportingMta} -> reportingMta) (\s@MessageDsn' {} a -> s {reportingMta = a} :: MessageDsn)
+
+instance Prelude.Hashable MessageDsn where
+  hashWithSalt _salt MessageDsn' {..} =
+    _salt
+      `Prelude.hashWithSalt` arrivalDate
+      `Prelude.hashWithSalt` extensionFields
+      `Prelude.hashWithSalt` reportingMta
+
+instance Prelude.NFData MessageDsn where
+  rnf MessageDsn' {..} =
+    Prelude.rnf arrivalDate
+      `Prelude.seq` Prelude.rnf extensionFields
+      `Prelude.seq` Prelude.rnf reportingMta
+
+instance Data.ToQuery MessageDsn where
+  toQuery MessageDsn' {..} =
+    Prelude.mconcat
+      [ "ArrivalDate" Data.=: arrivalDate,
+        "ExtensionFields"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> extensionFields
+            ),
+        "ReportingMta" Data.=: reportingMta
+      ]
diff --git a/gen/Amazonka/SES/Types/MessageTag.hs b/gen/Amazonka/SES/Types/MessageTag.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/MessageTag.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.MessageTag
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.MessageTag where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the name and value of a tag that you can provide to @SendEmail@
+-- or @SendRawEmail@ to apply to an email.
+--
+-- Message tags, which you use with configuration sets, enable you to
+-- publish email sending events. For information about using configuration
+-- sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newMessageTag' smart constructor.
+data MessageTag = MessageTag'
+  { -- | The name of the tag. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Contain less than 256 characters.
+    name :: Prelude.Text,
+    -- | The value of the tag. The value must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Contain less than 256 characters.
+    value :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'MessageTag' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'messageTag_name' - The name of the tag. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+--
+-- 'value', 'messageTag_value' - The value of the tag. The value must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+newMessageTag ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'value'
+  Prelude.Text ->
+  MessageTag
+newMessageTag pName_ pValue_ =
+  MessageTag' {name = pName_, value = pValue_}
+
+-- | The name of the tag. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+messageTag_name :: Lens.Lens' MessageTag Prelude.Text
+messageTag_name = Lens.lens (\MessageTag' {name} -> name) (\s@MessageTag' {} a -> s {name = a} :: MessageTag)
+
+-- | The value of the tag. The value must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Contain less than 256 characters.
+messageTag_value :: Lens.Lens' MessageTag Prelude.Text
+messageTag_value = Lens.lens (\MessageTag' {value} -> value) (\s@MessageTag' {} a -> s {value = a} :: MessageTag)
+
+instance Prelude.Hashable MessageTag where
+  hashWithSalt _salt MessageTag' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData MessageTag where
+  rnf MessageTag' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf value
+
+instance Data.ToQuery MessageTag where
+  toQuery MessageTag' {..} =
+    Prelude.mconcat
+      ["Name" Data.=: name, "Value" Data.=: value]
diff --git a/gen/Amazonka/SES/Types/NotificationType.hs b/gen/Amazonka/SES/Types/NotificationType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/NotificationType.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.NotificationType
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.NotificationType
+  ( NotificationType
+      ( ..,
+        NotificationType_Bounce,
+        NotificationType_Complaint,
+        NotificationType_Delivery
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype NotificationType = NotificationType'
+  { fromNotificationType ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern NotificationType_Bounce :: NotificationType
+pattern NotificationType_Bounce = NotificationType' "Bounce"
+
+pattern NotificationType_Complaint :: NotificationType
+pattern NotificationType_Complaint = NotificationType' "Complaint"
+
+pattern NotificationType_Delivery :: NotificationType
+pattern NotificationType_Delivery = NotificationType' "Delivery"
+
+{-# COMPLETE
+  NotificationType_Bounce,
+  NotificationType_Complaint,
+  NotificationType_Delivery,
+  NotificationType'
+  #-}
diff --git a/gen/Amazonka/SES/Types/RawMessage.hs b/gen/Amazonka/SES/Types/RawMessage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/RawMessage.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.RawMessage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.RawMessage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents the raw data of the message.
+--
+-- /See:/ 'newRawMessage' smart constructor.
+data RawMessage = RawMessage'
+  { -- | The raw data of the message. This data needs to base64-encoded if you
+    -- are accessing Amazon SES directly through the HTTPS interface. If you
+    -- are accessing Amazon SES using an AWS SDK, the SDK takes care of the
+    -- base 64-encoding for you. In all cases, the client must ensure that the
+    -- message format complies with Internet email standards regarding email
+    -- header fields, MIME types, and MIME encoding.
+    --
+    -- 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
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.
+    data' :: Data.Base64
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RawMessage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'data'', 'rawMessage_data' - The raw data of the message. This data needs to base64-encoded if you
+-- are accessing Amazon SES directly through the HTTPS interface. If you
+-- are accessing Amazon SES using an AWS SDK, the SDK takes care of the
+-- base 64-encoding for you. In all cases, the client must ensure that the
+-- message format complies with Internet email standards regarding email
+-- header fields, MIME types, and MIME encoding.
+--
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.--
+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.
+-- -- 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.
+newRawMessage ::
+  -- | 'data''
+  Prelude.ByteString ->
+  RawMessage
+newRawMessage pData_ =
+  RawMessage' {data' = Data._Base64 Lens.# pData_}
+
+-- | The raw data of the message. This data needs to base64-encoded if you
+-- are accessing Amazon SES directly through the HTTPS interface. If you
+-- are accessing Amazon SES using an AWS SDK, the SDK takes care of the
+-- base 64-encoding for you. In all cases, the client must ensure that the
+-- message format complies with Internet email standards regarding email
+-- header fields, MIME types, and MIME encoding.
+--
+-- 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide>.--
+-- -- /Note:/ This 'Lens' automatically encodes and decodes Base64 data.
+-- -- 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.
+rawMessage_data :: Lens.Lens' RawMessage Prelude.ByteString
+rawMessage_data = Lens.lens (\RawMessage' {data'} -> data') (\s@RawMessage' {} a -> s {data' = a} :: RawMessage) Prelude.. Data._Base64
+
+instance Prelude.Hashable RawMessage where
+  hashWithSalt _salt RawMessage' {..} =
+    _salt `Prelude.hashWithSalt` data'
+
+instance Prelude.NFData RawMessage where
+  rnf RawMessage' {..} = Prelude.rnf data'
+
+instance Data.ToQuery RawMessage where
+  toQuery RawMessage' {..} =
+    Prelude.mconcat ["Data" Data.=: data']
diff --git a/gen/Amazonka/SES/Types/ReceiptAction.hs b/gen/Amazonka/SES/Types/ReceiptAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptAction.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.AddHeaderAction
+import Amazonka.SES.Types.BounceAction
+import Amazonka.SES.Types.LambdaAction
+import Amazonka.SES.Types.S3Action
+import Amazonka.SES.Types.SNSAction
+import Amazonka.SES.Types.StopAction
+import Amazonka.SES.Types.WorkmailAction
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReceiptAction' smart constructor.
+data ReceiptAction = ReceiptAction'
+  { -- | Adds a header to the received email.
+    addHeaderAction :: Prelude.Maybe AddHeaderAction,
+    -- | Rejects the received email by returning a bounce response to the sender
+    -- and, optionally, publishes a notification to Amazon Simple Notification
+    -- Service (Amazon SNS).
+    bounceAction :: Prelude.Maybe BounceAction,
+    -- | Calls an AWS Lambda function, and optionally, publishes a notification
+    -- to Amazon SNS.
+    lambdaAction :: Prelude.Maybe LambdaAction,
+    -- | Saves the received message to an Amazon Simple Storage Service (Amazon
+    -- S3) bucket and, optionally, publishes a notification to Amazon SNS.
+    s3Action :: Prelude.Maybe S3Action,
+    -- | Publishes the email content within a notification to Amazon SNS.
+    sNSAction :: Prelude.Maybe SNSAction,
+    -- | Terminates the evaluation of the receipt rule set and optionally
+    -- publishes a notification to Amazon SNS.
+    stopAction :: Prelude.Maybe StopAction,
+    -- | Calls Amazon WorkMail and, optionally, publishes a notification to
+    -- Amazon Amazon SNS.
+    workmailAction :: Prelude.Maybe WorkmailAction
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReceiptAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'addHeaderAction', 'receiptAction_addHeaderAction' - Adds a header to the received email.
+--
+-- 'bounceAction', 'receiptAction_bounceAction' - Rejects the received email by returning a bounce response to the sender
+-- and, optionally, publishes a notification to Amazon Simple Notification
+-- Service (Amazon SNS).
+--
+-- 'lambdaAction', 'receiptAction_lambdaAction' - Calls an AWS Lambda function, and optionally, publishes a notification
+-- to Amazon SNS.
+--
+-- 's3Action', 'receiptAction_s3Action' - Saves the received message to an Amazon Simple Storage Service (Amazon
+-- S3) bucket and, optionally, publishes a notification to Amazon SNS.
+--
+-- 'sNSAction', 'receiptAction_sNSAction' - Publishes the email content within a notification to Amazon SNS.
+--
+-- 'stopAction', 'receiptAction_stopAction' - Terminates the evaluation of the receipt rule set and optionally
+-- publishes a notification to Amazon SNS.
+--
+-- 'workmailAction', 'receiptAction_workmailAction' - Calls Amazon WorkMail and, optionally, publishes a notification to
+-- Amazon Amazon SNS.
+newReceiptAction ::
+  ReceiptAction
+newReceiptAction =
+  ReceiptAction'
+    { addHeaderAction = Prelude.Nothing,
+      bounceAction = Prelude.Nothing,
+      lambdaAction = Prelude.Nothing,
+      s3Action = Prelude.Nothing,
+      sNSAction = Prelude.Nothing,
+      stopAction = Prelude.Nothing,
+      workmailAction = Prelude.Nothing
+    }
+
+-- | Adds a header to the received email.
+receiptAction_addHeaderAction :: Lens.Lens' ReceiptAction (Prelude.Maybe AddHeaderAction)
+receiptAction_addHeaderAction = Lens.lens (\ReceiptAction' {addHeaderAction} -> addHeaderAction) (\s@ReceiptAction' {} a -> s {addHeaderAction = a} :: ReceiptAction)
+
+-- | Rejects the received email by returning a bounce response to the sender
+-- and, optionally, publishes a notification to Amazon Simple Notification
+-- Service (Amazon SNS).
+receiptAction_bounceAction :: Lens.Lens' ReceiptAction (Prelude.Maybe BounceAction)
+receiptAction_bounceAction = Lens.lens (\ReceiptAction' {bounceAction} -> bounceAction) (\s@ReceiptAction' {} a -> s {bounceAction = a} :: ReceiptAction)
+
+-- | Calls an AWS Lambda function, and optionally, publishes a notification
+-- to Amazon SNS.
+receiptAction_lambdaAction :: Lens.Lens' ReceiptAction (Prelude.Maybe LambdaAction)
+receiptAction_lambdaAction = Lens.lens (\ReceiptAction' {lambdaAction} -> lambdaAction) (\s@ReceiptAction' {} a -> s {lambdaAction = a} :: ReceiptAction)
+
+-- | Saves the received message to an Amazon Simple Storage Service (Amazon
+-- S3) bucket and, optionally, publishes a notification to Amazon SNS.
+receiptAction_s3Action :: Lens.Lens' ReceiptAction (Prelude.Maybe S3Action)
+receiptAction_s3Action = Lens.lens (\ReceiptAction' {s3Action} -> s3Action) (\s@ReceiptAction' {} a -> s {s3Action = a} :: ReceiptAction)
+
+-- | Publishes the email content within a notification to Amazon SNS.
+receiptAction_sNSAction :: Lens.Lens' ReceiptAction (Prelude.Maybe SNSAction)
+receiptAction_sNSAction = Lens.lens (\ReceiptAction' {sNSAction} -> sNSAction) (\s@ReceiptAction' {} a -> s {sNSAction = a} :: ReceiptAction)
+
+-- | Terminates the evaluation of the receipt rule set and optionally
+-- publishes a notification to Amazon SNS.
+receiptAction_stopAction :: Lens.Lens' ReceiptAction (Prelude.Maybe StopAction)
+receiptAction_stopAction = Lens.lens (\ReceiptAction' {stopAction} -> stopAction) (\s@ReceiptAction' {} a -> s {stopAction = a} :: ReceiptAction)
+
+-- | Calls Amazon WorkMail and, optionally, publishes a notification to
+-- Amazon Amazon SNS.
+receiptAction_workmailAction :: Lens.Lens' ReceiptAction (Prelude.Maybe WorkmailAction)
+receiptAction_workmailAction = Lens.lens (\ReceiptAction' {workmailAction} -> workmailAction) (\s@ReceiptAction' {} a -> s {workmailAction = a} :: ReceiptAction)
+
+instance Data.FromXML ReceiptAction where
+  parseXML x =
+    ReceiptAction'
+      Prelude.<$> (x Data..@? "AddHeaderAction")
+      Prelude.<*> (x Data..@? "BounceAction")
+      Prelude.<*> (x Data..@? "LambdaAction")
+      Prelude.<*> (x Data..@? "S3Action")
+      Prelude.<*> (x Data..@? "SNSAction")
+      Prelude.<*> (x Data..@? "StopAction")
+      Prelude.<*> (x Data..@? "WorkmailAction")
+
+instance Prelude.Hashable ReceiptAction where
+  hashWithSalt _salt ReceiptAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` addHeaderAction
+      `Prelude.hashWithSalt` bounceAction
+      `Prelude.hashWithSalt` lambdaAction
+      `Prelude.hashWithSalt` s3Action
+      `Prelude.hashWithSalt` sNSAction
+      `Prelude.hashWithSalt` stopAction
+      `Prelude.hashWithSalt` workmailAction
+
+instance Prelude.NFData ReceiptAction where
+  rnf ReceiptAction' {..} =
+    Prelude.rnf addHeaderAction
+      `Prelude.seq` Prelude.rnf bounceAction
+      `Prelude.seq` Prelude.rnf lambdaAction
+      `Prelude.seq` Prelude.rnf s3Action
+      `Prelude.seq` Prelude.rnf sNSAction
+      `Prelude.seq` Prelude.rnf stopAction
+      `Prelude.seq` Prelude.rnf workmailAction
+
+instance Data.ToQuery ReceiptAction where
+  toQuery ReceiptAction' {..} =
+    Prelude.mconcat
+      [ "AddHeaderAction" Data.=: addHeaderAction,
+        "BounceAction" Data.=: bounceAction,
+        "LambdaAction" Data.=: lambdaAction,
+        "S3Action" Data.=: s3Action,
+        "SNSAction" Data.=: sNSAction,
+        "StopAction" Data.=: stopAction,
+        "WorkmailAction" Data.=: workmailAction
+      ]
diff --git a/gen/Amazonka/SES/Types/ReceiptFilter.hs b/gen/Amazonka/SES/Types/ReceiptFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptFilter.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.ReceiptIpFilter
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReceiptFilter' smart constructor.
+data ReceiptFilter = ReceiptFilter'
+  { -- | The name of the IP address filter. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Start and end with a letter or number.
+    --
+    -- -   Contain less than 64 characters.
+    name :: Prelude.Text,
+    -- | A structure that provides the IP addresses to block or allow, and
+    -- whether to block or allow incoming mail from them.
+    ipFilter :: ReceiptIpFilter
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReceiptFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'name', 'receiptFilter_name' - The name of the IP address filter. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+--
+-- 'ipFilter', 'receiptFilter_ipFilter' - A structure that provides the IP addresses to block or allow, and
+-- whether to block or allow incoming mail from them.
+newReceiptFilter ::
+  -- | 'name'
+  Prelude.Text ->
+  -- | 'ipFilter'
+  ReceiptIpFilter ->
+  ReceiptFilter
+newReceiptFilter pName_ pIpFilter_ =
+  ReceiptFilter'
+    { name = pName_,
+      ipFilter = pIpFilter_
+    }
+
+-- | The name of the IP address filter. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+receiptFilter_name :: Lens.Lens' ReceiptFilter Prelude.Text
+receiptFilter_name = Lens.lens (\ReceiptFilter' {name} -> name) (\s@ReceiptFilter' {} a -> s {name = a} :: ReceiptFilter)
+
+-- | A structure that provides the IP addresses to block or allow, and
+-- whether to block or allow incoming mail from them.
+receiptFilter_ipFilter :: Lens.Lens' ReceiptFilter ReceiptIpFilter
+receiptFilter_ipFilter = Lens.lens (\ReceiptFilter' {ipFilter} -> ipFilter) (\s@ReceiptFilter' {} a -> s {ipFilter = a} :: ReceiptFilter)
+
+instance Data.FromXML ReceiptFilter where
+  parseXML x =
+    ReceiptFilter'
+      Prelude.<$> (x Data..@ "Name")
+      Prelude.<*> (x Data..@ "IpFilter")
+
+instance Prelude.Hashable ReceiptFilter where
+  hashWithSalt _salt ReceiptFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` ipFilter
+
+instance Prelude.NFData ReceiptFilter where
+  rnf ReceiptFilter' {..} =
+    Prelude.rnf name `Prelude.seq` Prelude.rnf ipFilter
+
+instance Data.ToQuery ReceiptFilter where
+  toQuery ReceiptFilter' {..} =
+    Prelude.mconcat
+      ["Name" Data.=: name, "IpFilter" Data.=: ipFilter]
diff --git a/gen/Amazonka/SES/Types/ReceiptFilterPolicy.hs b/gen/Amazonka/SES/Types/ReceiptFilterPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptFilterPolicy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptFilterPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptFilterPolicy
+  ( ReceiptFilterPolicy
+      ( ..,
+        ReceiptFilterPolicy_Allow,
+        ReceiptFilterPolicy_Block
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ReceiptFilterPolicy = ReceiptFilterPolicy'
+  { fromReceiptFilterPolicy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern ReceiptFilterPolicy_Allow :: ReceiptFilterPolicy
+pattern ReceiptFilterPolicy_Allow = ReceiptFilterPolicy' "Allow"
+
+pattern ReceiptFilterPolicy_Block :: ReceiptFilterPolicy
+pattern ReceiptFilterPolicy_Block = ReceiptFilterPolicy' "Block"
+
+{-# COMPLETE
+  ReceiptFilterPolicy_Allow,
+  ReceiptFilterPolicy_Block,
+  ReceiptFilterPolicy'
+  #-}
diff --git a/gen/Amazonka/SES/Types/ReceiptIpFilter.hs b/gen/Amazonka/SES/Types/ReceiptIpFilter.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptIpFilter.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptIpFilter
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptIpFilter where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.ReceiptFilterPolicy
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-ip-filters.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReceiptIpFilter' smart constructor.
+data ReceiptIpFilter = ReceiptIpFilter'
+  { -- | Indicates whether to block or allow incoming mail from the specified IP
+    -- addresses.
+    policy :: ReceiptFilterPolicy,
+    -- | 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>.
+    cidr :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReceiptIpFilter' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'policy', 'receiptIpFilter_policy' - Indicates whether to block or allow incoming mail from the specified IP
+-- addresses.
+--
+-- 'cidr', 'receiptIpFilter_cidr' - 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>.
+newReceiptIpFilter ::
+  -- | 'policy'
+  ReceiptFilterPolicy ->
+  -- | 'cidr'
+  Prelude.Text ->
+  ReceiptIpFilter
+newReceiptIpFilter pPolicy_ pCidr_ =
+  ReceiptIpFilter' {policy = pPolicy_, cidr = pCidr_}
+
+-- | Indicates whether to block or allow incoming mail from the specified IP
+-- addresses.
+receiptIpFilter_policy :: Lens.Lens' ReceiptIpFilter ReceiptFilterPolicy
+receiptIpFilter_policy = Lens.lens (\ReceiptIpFilter' {policy} -> policy) (\s@ReceiptIpFilter' {} a -> s {policy = a} :: ReceiptIpFilter)
+
+-- | 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>.
+receiptIpFilter_cidr :: Lens.Lens' ReceiptIpFilter Prelude.Text
+receiptIpFilter_cidr = Lens.lens (\ReceiptIpFilter' {cidr} -> cidr) (\s@ReceiptIpFilter' {} a -> s {cidr = a} :: ReceiptIpFilter)
+
+instance Data.FromXML ReceiptIpFilter where
+  parseXML x =
+    ReceiptIpFilter'
+      Prelude.<$> (x Data..@ "Policy")
+      Prelude.<*> (x Data..@ "Cidr")
+
+instance Prelude.Hashable ReceiptIpFilter where
+  hashWithSalt _salt ReceiptIpFilter' {..} =
+    _salt
+      `Prelude.hashWithSalt` policy
+      `Prelude.hashWithSalt` cidr
+
+instance Prelude.NFData ReceiptIpFilter where
+  rnf ReceiptIpFilter' {..} =
+    Prelude.rnf policy `Prelude.seq` Prelude.rnf cidr
+
+instance Data.ToQuery ReceiptIpFilter where
+  toQuery ReceiptIpFilter' {..} =
+    Prelude.mconcat
+      ["Policy" Data.=: policy, "Cidr" Data.=: cidr]
diff --git a/gen/Amazonka/SES/Types/ReceiptRule.hs b/gen/Amazonka/SES/Types/ReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptRule.hs
@@ -0,0 +1,210 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptRule where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.ReceiptAction
+import Amazonka.SES.Types.TlsPolicy
+
+-- | 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 that it
+-- applies to. 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReceiptRule' smart constructor.
+data ReceiptRule = ReceiptRule'
+  { -- | 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.
+    actions :: Prelude.Maybe [ReceiptAction],
+    -- | If @true@, the receipt rule is active. The default value is @false@.
+    enabled :: Prelude.Maybe Prelude.Bool,
+    -- | The recipient domains and email addresses that the receipt rule applies
+    -- to. If this field is not specified, this rule will match all recipients
+    -- under all verified domains.
+    recipients :: Prelude.Maybe [Prelude.Text],
+    -- | If @true@, then messages that this receipt rule applies to are scanned
+    -- for spam and viruses. The default value is @false@.
+    scanEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | 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@.
+    tlsPolicy :: Prelude.Maybe TlsPolicy,
+    -- | The name of the receipt rule. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Start and end with a letter or number.
+    --
+    -- -   Contain less than 64 characters.
+    name :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReceiptRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'actions', 'receiptRule_actions' - 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.
+--
+-- 'enabled', 'receiptRule_enabled' - If @true@, the receipt rule is active. The default value is @false@.
+--
+-- 'recipients', 'receiptRule_recipients' - The recipient domains and email addresses that the receipt rule applies
+-- to. If this field is not specified, this rule will match all recipients
+-- under all verified domains.
+--
+-- 'scanEnabled', 'receiptRule_scanEnabled' - If @true@, then messages that this receipt rule applies to are scanned
+-- for spam and viruses. The default value is @false@.
+--
+-- 'tlsPolicy', 'receiptRule_tlsPolicy' - 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@.
+--
+-- 'name', 'receiptRule_name' - The name of the receipt rule. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+newReceiptRule ::
+  -- | 'name'
+  Prelude.Text ->
+  ReceiptRule
+newReceiptRule pName_ =
+  ReceiptRule'
+    { actions = Prelude.Nothing,
+      enabled = Prelude.Nothing,
+      recipients = Prelude.Nothing,
+      scanEnabled = Prelude.Nothing,
+      tlsPolicy = Prelude.Nothing,
+      name = pName_
+    }
+
+-- | 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.
+receiptRule_actions :: Lens.Lens' ReceiptRule (Prelude.Maybe [ReceiptAction])
+receiptRule_actions = Lens.lens (\ReceiptRule' {actions} -> actions) (\s@ReceiptRule' {} a -> s {actions = a} :: ReceiptRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | If @true@, the receipt rule is active. The default value is @false@.
+receiptRule_enabled :: Lens.Lens' ReceiptRule (Prelude.Maybe Prelude.Bool)
+receiptRule_enabled = Lens.lens (\ReceiptRule' {enabled} -> enabled) (\s@ReceiptRule' {} a -> s {enabled = a} :: ReceiptRule)
+
+-- | The recipient domains and email addresses that the receipt rule applies
+-- to. If this field is not specified, this rule will match all recipients
+-- under all verified domains.
+receiptRule_recipients :: Lens.Lens' ReceiptRule (Prelude.Maybe [Prelude.Text])
+receiptRule_recipients = Lens.lens (\ReceiptRule' {recipients} -> recipients) (\s@ReceiptRule' {} a -> s {recipients = a} :: ReceiptRule) Prelude.. Lens.mapping Lens.coerced
+
+-- | If @true@, then messages that this receipt rule applies to are scanned
+-- for spam and viruses. The default value is @false@.
+receiptRule_scanEnabled :: Lens.Lens' ReceiptRule (Prelude.Maybe Prelude.Bool)
+receiptRule_scanEnabled = Lens.lens (\ReceiptRule' {scanEnabled} -> scanEnabled) (\s@ReceiptRule' {} a -> s {scanEnabled = a} :: ReceiptRule)
+
+-- | 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@.
+receiptRule_tlsPolicy :: Lens.Lens' ReceiptRule (Prelude.Maybe TlsPolicy)
+receiptRule_tlsPolicy = Lens.lens (\ReceiptRule' {tlsPolicy} -> tlsPolicy) (\s@ReceiptRule' {} a -> s {tlsPolicy = a} :: ReceiptRule)
+
+-- | The name of the receipt rule. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+receiptRule_name :: Lens.Lens' ReceiptRule Prelude.Text
+receiptRule_name = Lens.lens (\ReceiptRule' {name} -> name) (\s@ReceiptRule' {} a -> s {name = a} :: ReceiptRule)
+
+instance Data.FromXML ReceiptRule where
+  parseXML x =
+    ReceiptRule'
+      Prelude.<$> ( x
+                      Data..@? "Actions"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@? "Enabled")
+      Prelude.<*> ( x
+                      Data..@? "Recipients"
+                      Core..!@ Prelude.mempty
+                      Prelude.>>= Core.may (Data.parseXMLList "member")
+                  )
+      Prelude.<*> (x Data..@? "ScanEnabled")
+      Prelude.<*> (x Data..@? "TlsPolicy")
+      Prelude.<*> (x Data..@ "Name")
+
+instance Prelude.Hashable ReceiptRule where
+  hashWithSalt _salt ReceiptRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` actions
+      `Prelude.hashWithSalt` enabled
+      `Prelude.hashWithSalt` recipients
+      `Prelude.hashWithSalt` scanEnabled
+      `Prelude.hashWithSalt` tlsPolicy
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ReceiptRule where
+  rnf ReceiptRule' {..} =
+    Prelude.rnf actions
+      `Prelude.seq` Prelude.rnf enabled
+      `Prelude.seq` Prelude.rnf recipients
+      `Prelude.seq` Prelude.rnf scanEnabled
+      `Prelude.seq` Prelude.rnf tlsPolicy
+      `Prelude.seq` Prelude.rnf name
+
+instance Data.ToQuery ReceiptRule where
+  toQuery ReceiptRule' {..} =
+    Prelude.mconcat
+      [ "Actions"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> actions),
+        "Enabled" Data.=: enabled,
+        "Recipients"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> recipients),
+        "ScanEnabled" Data.=: scanEnabled,
+        "TlsPolicy" Data.=: tlsPolicy,
+        "Name" Data.=: name
+      ]
diff --git a/gen/Amazonka/SES/Types/ReceiptRuleSetMetadata.hs b/gen/Amazonka/SES/Types/ReceiptRuleSetMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReceiptRuleSetMetadata.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReceiptRuleSetMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReceiptRuleSetMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-receipt-rule-set.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newReceiptRuleSetMetadata' smart constructor.
+data ReceiptRuleSetMetadata = ReceiptRuleSetMetadata'
+  { -- | The date and time the receipt rule set was created.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The name of the receipt rule set. The name must:
+    --
+    -- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+    --     underscores (_), or dashes (-).
+    --
+    -- -   Start and end with a letter or number.
+    --
+    -- -   Contain less than 64 characters.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReceiptRuleSetMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'receiptRuleSetMetadata_createdTimestamp' - The date and time the receipt rule set was created.
+--
+-- 'name', 'receiptRuleSetMetadata_name' - The name of the receipt rule set. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+newReceiptRuleSetMetadata ::
+  ReceiptRuleSetMetadata
+newReceiptRuleSetMetadata =
+  ReceiptRuleSetMetadata'
+    { createdTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The date and time the receipt rule set was created.
+receiptRuleSetMetadata_createdTimestamp :: Lens.Lens' ReceiptRuleSetMetadata (Prelude.Maybe Prelude.UTCTime)
+receiptRuleSetMetadata_createdTimestamp = Lens.lens (\ReceiptRuleSetMetadata' {createdTimestamp} -> createdTimestamp) (\s@ReceiptRuleSetMetadata' {} a -> s {createdTimestamp = a} :: ReceiptRuleSetMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the receipt rule set. The name must:
+--
+-- -   This value can only contain ASCII letters (a-z, A-Z), numbers (0-9),
+--     underscores (_), or dashes (-).
+--
+-- -   Start and end with a letter or number.
+--
+-- -   Contain less than 64 characters.
+receiptRuleSetMetadata_name :: Lens.Lens' ReceiptRuleSetMetadata (Prelude.Maybe Prelude.Text)
+receiptRuleSetMetadata_name = Lens.lens (\ReceiptRuleSetMetadata' {name} -> name) (\s@ReceiptRuleSetMetadata' {} a -> s {name = a} :: ReceiptRuleSetMetadata)
+
+instance Data.FromXML ReceiptRuleSetMetadata where
+  parseXML x =
+    ReceiptRuleSetMetadata'
+      Prelude.<$> (x Data..@? "CreatedTimestamp")
+      Prelude.<*> (x Data..@? "Name")
+
+instance Prelude.Hashable ReceiptRuleSetMetadata where
+  hashWithSalt _salt ReceiptRuleSetMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ReceiptRuleSetMetadata where
+  rnf ReceiptRuleSetMetadata' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/SES/Types/RecipientDsnFields.hs b/gen/Amazonka/SES/Types/RecipientDsnFields.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/RecipientDsnFields.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.RecipientDsnFields
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.RecipientDsnFields where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.DsnAction
+import Amazonka.SES.Types.ExtensionField
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newRecipientDsnFields' smart constructor.
+data RecipientDsnFields = RecipientDsnFields'
+  { -- | 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.
+    diagnosticCode :: Prelude.Maybe Prelude.Text,
+    -- | Additional X-headers to include in the DSN.
+    extensionFields :: Prelude.Maybe [ExtensionField],
+    -- | The email address that the message was ultimately delivered to. 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>.
+    finalRecipient :: Prelude.Maybe Prelude.Text,
+    -- | The time the final delivery attempt was made, in
+    -- <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time format.
+    lastAttemptDate :: Prelude.Maybe Data.ISO8601,
+    -- | 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.
+    remoteMta :: Prelude.Maybe Prelude.Text,
+    -- | 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>.
+    action :: DsnAction,
+    -- | The status code that indicates what went wrong. This is required by
+    -- <https://tools.ietf.org/html/rfc3464 RFC 3464>.
+    status :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecipientDsnFields' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'diagnosticCode', 'recipientDsnFields_diagnosticCode' - 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.
+--
+-- 'extensionFields', 'recipientDsnFields_extensionFields' - Additional X-headers to include in the DSN.
+--
+-- 'finalRecipient', 'recipientDsnFields_finalRecipient' - The email address that the message was ultimately delivered to. 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>.
+--
+-- 'lastAttemptDate', 'recipientDsnFields_lastAttemptDate' - The time the final delivery attempt was made, in
+-- <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time format.
+--
+-- 'remoteMta', 'recipientDsnFields_remoteMta' - 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.
+--
+-- 'action', 'recipientDsnFields_action' - 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>.
+--
+-- 'status', 'recipientDsnFields_status' - The status code that indicates what went wrong. This is required by
+-- <https://tools.ietf.org/html/rfc3464 RFC 3464>.
+newRecipientDsnFields ::
+  -- | 'action'
+  DsnAction ->
+  -- | 'status'
+  Prelude.Text ->
+  RecipientDsnFields
+newRecipientDsnFields pAction_ pStatus_ =
+  RecipientDsnFields'
+    { diagnosticCode =
+        Prelude.Nothing,
+      extensionFields = Prelude.Nothing,
+      finalRecipient = Prelude.Nothing,
+      lastAttemptDate = Prelude.Nothing,
+      remoteMta = Prelude.Nothing,
+      action = pAction_,
+      status = 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.
+recipientDsnFields_diagnosticCode :: Lens.Lens' RecipientDsnFields (Prelude.Maybe Prelude.Text)
+recipientDsnFields_diagnosticCode = Lens.lens (\RecipientDsnFields' {diagnosticCode} -> diagnosticCode) (\s@RecipientDsnFields' {} a -> s {diagnosticCode = a} :: RecipientDsnFields)
+
+-- | Additional X-headers to include in the DSN.
+recipientDsnFields_extensionFields :: Lens.Lens' RecipientDsnFields (Prelude.Maybe [ExtensionField])
+recipientDsnFields_extensionFields = Lens.lens (\RecipientDsnFields' {extensionFields} -> extensionFields) (\s@RecipientDsnFields' {} a -> s {extensionFields = a} :: RecipientDsnFields) Prelude.. Lens.mapping Lens.coerced
+
+-- | The email address that the message was ultimately delivered to. 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>.
+recipientDsnFields_finalRecipient :: Lens.Lens' RecipientDsnFields (Prelude.Maybe Prelude.Text)
+recipientDsnFields_finalRecipient = Lens.lens (\RecipientDsnFields' {finalRecipient} -> finalRecipient) (\s@RecipientDsnFields' {} a -> s {finalRecipient = a} :: RecipientDsnFields)
+
+-- | The time the final delivery attempt was made, in
+-- <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time format.
+recipientDsnFields_lastAttemptDate :: Lens.Lens' RecipientDsnFields (Prelude.Maybe Prelude.UTCTime)
+recipientDsnFields_lastAttemptDate = Lens.lens (\RecipientDsnFields' {lastAttemptDate} -> lastAttemptDate) (\s@RecipientDsnFields' {} a -> s {lastAttemptDate = a} :: RecipientDsnFields) Prelude.. Lens.mapping Data._Time
+
+-- | 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.
+recipientDsnFields_remoteMta :: Lens.Lens' RecipientDsnFields (Prelude.Maybe Prelude.Text)
+recipientDsnFields_remoteMta = Lens.lens (\RecipientDsnFields' {remoteMta} -> remoteMta) (\s@RecipientDsnFields' {} a -> s {remoteMta = a} :: RecipientDsnFields)
+
+-- | 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>.
+recipientDsnFields_action :: Lens.Lens' RecipientDsnFields DsnAction
+recipientDsnFields_action = Lens.lens (\RecipientDsnFields' {action} -> action) (\s@RecipientDsnFields' {} a -> s {action = a} :: RecipientDsnFields)
+
+-- | The status code that indicates what went wrong. This is required by
+-- <https://tools.ietf.org/html/rfc3464 RFC 3464>.
+recipientDsnFields_status :: Lens.Lens' RecipientDsnFields Prelude.Text
+recipientDsnFields_status = Lens.lens (\RecipientDsnFields' {status} -> status) (\s@RecipientDsnFields' {} a -> s {status = a} :: RecipientDsnFields)
+
+instance Prelude.Hashable RecipientDsnFields where
+  hashWithSalt _salt RecipientDsnFields' {..} =
+    _salt
+      `Prelude.hashWithSalt` diagnosticCode
+      `Prelude.hashWithSalt` extensionFields
+      `Prelude.hashWithSalt` finalRecipient
+      `Prelude.hashWithSalt` lastAttemptDate
+      `Prelude.hashWithSalt` remoteMta
+      `Prelude.hashWithSalt` action
+      `Prelude.hashWithSalt` status
+
+instance Prelude.NFData RecipientDsnFields where
+  rnf RecipientDsnFields' {..} =
+    Prelude.rnf diagnosticCode
+      `Prelude.seq` Prelude.rnf extensionFields
+      `Prelude.seq` Prelude.rnf finalRecipient
+      `Prelude.seq` Prelude.rnf lastAttemptDate
+      `Prelude.seq` Prelude.rnf remoteMta
+      `Prelude.seq` Prelude.rnf action
+      `Prelude.seq` Prelude.rnf status
+
+instance Data.ToQuery RecipientDsnFields where
+  toQuery RecipientDsnFields' {..} =
+    Prelude.mconcat
+      [ "DiagnosticCode" Data.=: diagnosticCode,
+        "ExtensionFields"
+          Data.=: Data.toQuery
+            ( Data.toQueryList "member"
+                Prelude.<$> extensionFields
+            ),
+        "FinalRecipient" Data.=: finalRecipient,
+        "LastAttemptDate" Data.=: lastAttemptDate,
+        "RemoteMta" Data.=: remoteMta,
+        "Action" Data.=: action,
+        "Status" Data.=: status
+      ]
diff --git a/gen/Amazonka/SES/Types/ReputationOptions.hs b/gen/Amazonka/SES/Types/ReputationOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/ReputationOptions.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.ReputationOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.ReputationOptions where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about the reputation settings for a configuration
+-- set.
+--
+-- /See:/ 'newReputationOptions' smart constructor.
+data ReputationOptions = ReputationOptions'
+  { -- | The date and time at which the reputation metrics for the configuration
+    -- set were last reset. Resetting these metrics is known as a /fresh
+    -- start/.
+    --
+    -- When you disable email sending for a configuration set using
+    -- UpdateConfigurationSetSendingEnabled and later re-enable it, the
+    -- reputation metrics for the configuration set (but not for the entire
+    -- Amazon SES account) are reset.
+    --
+    -- If email sending for the configuration set has never been disabled and
+    -- later re-enabled, the value of this attribute is @null@.
+    lastFreshStart :: Prelude.Maybe Data.ISO8601,
+    -- | Describes whether or not Amazon SES publishes reputation metrics for the
+    -- configuration set, such as bounce and complaint rates, to Amazon
+    -- CloudWatch.
+    --
+    -- If the value is @true@, reputation metrics are published. If the value
+    -- is @false@, reputation metrics are not published. The default value is
+    -- @false@.
+    reputationMetricsEnabled :: Prelude.Maybe Prelude.Bool,
+    -- | Describes whether email sending is enabled or disabled for the
+    -- configuration set. If the value is @true@, then Amazon SES will send
+    -- emails that use the configuration set. If the value is @false@, Amazon
+    -- SES will not send emails that use the configuration set. The default
+    -- value is @true@. You can change this setting using
+    -- UpdateConfigurationSetSendingEnabled.
+    sendingEnabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ReputationOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lastFreshStart', 'reputationOptions_lastFreshStart' - The date and time at which the reputation metrics for the configuration
+-- set were last reset. Resetting these metrics is known as a /fresh
+-- start/.
+--
+-- When you disable email sending for a configuration set using
+-- UpdateConfigurationSetSendingEnabled and later re-enable it, the
+-- reputation metrics for the configuration set (but not for the entire
+-- Amazon SES account) are reset.
+--
+-- If email sending for the configuration set has never been disabled and
+-- later re-enabled, the value of this attribute is @null@.
+--
+-- 'reputationMetricsEnabled', 'reputationOptions_reputationMetricsEnabled' - Describes whether or not Amazon SES publishes reputation metrics for the
+-- configuration set, such as bounce and complaint rates, to Amazon
+-- CloudWatch.
+--
+-- If the value is @true@, reputation metrics are published. If the value
+-- is @false@, reputation metrics are not published. The default value is
+-- @false@.
+--
+-- 'sendingEnabled', 'reputationOptions_sendingEnabled' - Describes whether email sending is enabled or disabled for the
+-- configuration set. If the value is @true@, then Amazon SES will send
+-- emails that use the configuration set. If the value is @false@, Amazon
+-- SES will not send emails that use the configuration set. The default
+-- value is @true@. You can change this setting using
+-- UpdateConfigurationSetSendingEnabled.
+newReputationOptions ::
+  ReputationOptions
+newReputationOptions =
+  ReputationOptions'
+    { lastFreshStart =
+        Prelude.Nothing,
+      reputationMetricsEnabled = Prelude.Nothing,
+      sendingEnabled = Prelude.Nothing
+    }
+
+-- | The date and time at which the reputation metrics for the configuration
+-- set were last reset. Resetting these metrics is known as a /fresh
+-- start/.
+--
+-- When you disable email sending for a configuration set using
+-- UpdateConfigurationSetSendingEnabled and later re-enable it, the
+-- reputation metrics for the configuration set (but not for the entire
+-- Amazon SES account) are reset.
+--
+-- If email sending for the configuration set has never been disabled and
+-- later re-enabled, the value of this attribute is @null@.
+reputationOptions_lastFreshStart :: Lens.Lens' ReputationOptions (Prelude.Maybe Prelude.UTCTime)
+reputationOptions_lastFreshStart = Lens.lens (\ReputationOptions' {lastFreshStart} -> lastFreshStart) (\s@ReputationOptions' {} a -> s {lastFreshStart = a} :: ReputationOptions) Prelude.. Lens.mapping Data._Time
+
+-- | Describes whether or not Amazon SES publishes reputation metrics for the
+-- configuration set, such as bounce and complaint rates, to Amazon
+-- CloudWatch.
+--
+-- If the value is @true@, reputation metrics are published. If the value
+-- is @false@, reputation metrics are not published. The default value is
+-- @false@.
+reputationOptions_reputationMetricsEnabled :: Lens.Lens' ReputationOptions (Prelude.Maybe Prelude.Bool)
+reputationOptions_reputationMetricsEnabled = Lens.lens (\ReputationOptions' {reputationMetricsEnabled} -> reputationMetricsEnabled) (\s@ReputationOptions' {} a -> s {reputationMetricsEnabled = a} :: ReputationOptions)
+
+-- | Describes whether email sending is enabled or disabled for the
+-- configuration set. If the value is @true@, then Amazon SES will send
+-- emails that use the configuration set. If the value is @false@, Amazon
+-- SES will not send emails that use the configuration set. The default
+-- value is @true@. You can change this setting using
+-- UpdateConfigurationSetSendingEnabled.
+reputationOptions_sendingEnabled :: Lens.Lens' ReputationOptions (Prelude.Maybe Prelude.Bool)
+reputationOptions_sendingEnabled = Lens.lens (\ReputationOptions' {sendingEnabled} -> sendingEnabled) (\s@ReputationOptions' {} a -> s {sendingEnabled = a} :: ReputationOptions)
+
+instance Data.FromXML ReputationOptions where
+  parseXML x =
+    ReputationOptions'
+      Prelude.<$> (x Data..@? "LastFreshStart")
+      Prelude.<*> (x Data..@? "ReputationMetricsEnabled")
+      Prelude.<*> (x Data..@? "SendingEnabled")
+
+instance Prelude.Hashable ReputationOptions where
+  hashWithSalt _salt ReputationOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastFreshStart
+      `Prelude.hashWithSalt` reputationMetricsEnabled
+      `Prelude.hashWithSalt` sendingEnabled
+
+instance Prelude.NFData ReputationOptions where
+  rnf ReputationOptions' {..} =
+    Prelude.rnf lastFreshStart
+      `Prelude.seq` Prelude.rnf reputationMetricsEnabled
+      `Prelude.seq` Prelude.rnf sendingEnabled
diff --git a/gen/Amazonka/SES/Types/S3Action.hs b/gen/Amazonka/SES/Types/S3Action.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/S3Action.hs
@@ -0,0 +1,257 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.S3Action
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.S3Action where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-s3.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newS3Action' smart constructor.
+data S3Action = S3Action'
+  { -- | 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
+    --     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+    --
+    -- For more information about key policies, see the
+    -- <https://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
+    -- <http://aws.amazon.com/sdk-for-java/ AWS SDK for Java> and
+    -- <http://aws.amazon.com/sdk-for-ruby/ AWS SDK for Ruby> only. For more
+    -- information about client-side encryption using AWS KMS master keys, see
+    -- the
+    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html Amazon S3 Developer Guide>.
+    kmsKeyArn :: Prelude.Maybe Prelude.Text,
+    -- | 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.
+    objectKeyPrefix :: Prelude.Maybe Prelude.Text,
+    -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Amazon S3 bucket that incoming email will be saved to.
+    bucketName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'S3Action' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'kmsKeyArn', 's3Action_kmsKeyArn' - 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
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- For more information about key policies, see the
+-- <https://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
+-- <http://aws.amazon.com/sdk-for-java/ AWS SDK for Java> and
+-- <http://aws.amazon.com/sdk-for-ruby/ AWS SDK for Ruby> only. For more
+-- information about client-side encryption using AWS KMS master keys, see
+-- the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html Amazon S3 Developer Guide>.
+--
+-- 'objectKeyPrefix', 's3Action_objectKeyPrefix' - 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.
+--
+-- 'topicArn', 's3Action_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+--
+-- 'bucketName', 's3Action_bucketName' - The name of the Amazon S3 bucket that incoming email will be saved to.
+newS3Action ::
+  -- | 'bucketName'
+  Prelude.Text ->
+  S3Action
+newS3Action pBucketName_ =
+  S3Action'
+    { kmsKeyArn = Prelude.Nothing,
+      objectKeyPrefix = Prelude.Nothing,
+      topicArn = Prelude.Nothing,
+      bucketName = 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
+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-permissions.html Amazon SES Developer Guide>.
+--
+-- For more information about key policies, see the
+-- <https://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
+-- <http://aws.amazon.com/sdk-for-java/ AWS SDK for Java> and
+-- <http://aws.amazon.com/sdk-for-ruby/ AWS SDK for Ruby> only. For more
+-- information about client-side encryption using AWS KMS master keys, see
+-- the
+-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html Amazon S3 Developer Guide>.
+s3Action_kmsKeyArn :: Lens.Lens' S3Action (Prelude.Maybe Prelude.Text)
+s3Action_kmsKeyArn = Lens.lens (\S3Action' {kmsKeyArn} -> kmsKeyArn) (\s@S3Action' {} a -> s {kmsKeyArn = a} :: S3Action)
+
+-- | 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.
+s3Action_objectKeyPrefix :: Lens.Lens' S3Action (Prelude.Maybe Prelude.Text)
+s3Action_objectKeyPrefix = Lens.lens (\S3Action' {objectKeyPrefix} -> objectKeyPrefix) (\s@S3Action' {} a -> s {objectKeyPrefix = a} :: S3Action)
+
+-- | 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+s3Action_topicArn :: Lens.Lens' S3Action (Prelude.Maybe Prelude.Text)
+s3Action_topicArn = Lens.lens (\S3Action' {topicArn} -> topicArn) (\s@S3Action' {} a -> s {topicArn = a} :: S3Action)
+
+-- | The name of the Amazon S3 bucket that incoming email will be saved to.
+s3Action_bucketName :: Lens.Lens' S3Action Prelude.Text
+s3Action_bucketName = Lens.lens (\S3Action' {bucketName} -> bucketName) (\s@S3Action' {} a -> s {bucketName = a} :: S3Action)
+
+instance Data.FromXML S3Action where
+  parseXML x =
+    S3Action'
+      Prelude.<$> (x Data..@? "KmsKeyArn")
+      Prelude.<*> (x Data..@? "ObjectKeyPrefix")
+      Prelude.<*> (x Data..@? "TopicArn")
+      Prelude.<*> (x Data..@ "BucketName")
+
+instance Prelude.Hashable S3Action where
+  hashWithSalt _salt S3Action' {..} =
+    _salt
+      `Prelude.hashWithSalt` kmsKeyArn
+      `Prelude.hashWithSalt` objectKeyPrefix
+      `Prelude.hashWithSalt` topicArn
+      `Prelude.hashWithSalt` bucketName
+
+instance Prelude.NFData S3Action where
+  rnf S3Action' {..} =
+    Prelude.rnf kmsKeyArn
+      `Prelude.seq` Prelude.rnf objectKeyPrefix
+      `Prelude.seq` Prelude.rnf topicArn
+      `Prelude.seq` Prelude.rnf bucketName
+
+instance Data.ToQuery S3Action where
+  toQuery S3Action' {..} =
+    Prelude.mconcat
+      [ "KmsKeyArn" Data.=: kmsKeyArn,
+        "ObjectKeyPrefix" Data.=: objectKeyPrefix,
+        "TopicArn" Data.=: topicArn,
+        "BucketName" Data.=: bucketName
+      ]
diff --git a/gen/Amazonka/SES/Types/SNSAction.hs b/gen/Amazonka/SES/Types/SNSAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/SNSAction.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.SNSAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.SNSAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.SNSActionEncoding
+
+-- | 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
+-- <https://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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-sns.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSNSAction' smart constructor.
+data SNSAction = SNSAction'
+  { -- | The encoding to use for the email within the Amazon SNS notification.
+    -- UTF-8 is easier to use, but may not preserve all special characters when
+    -- a message was encoded with a different encoding format. Base64 preserves
+    -- all special characters. The default value is UTF-8.
+    encoding :: Prelude.Maybe SNSActionEncoding,
+    -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SNSAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'encoding', 'sNSAction_encoding' - The encoding to use for the email within the Amazon SNS notification.
+-- UTF-8 is easier to use, but may not preserve all special characters when
+-- a message was encoded with a different encoding format. Base64 preserves
+-- all special characters. The default value is UTF-8.
+--
+-- 'topicArn', 'sNSAction_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+newSNSAction ::
+  -- | 'topicArn'
+  Prelude.Text ->
+  SNSAction
+newSNSAction pTopicArn_ =
+  SNSAction'
+    { encoding = Prelude.Nothing,
+      topicArn = pTopicArn_
+    }
+
+-- | The encoding to use for the email within the Amazon SNS notification.
+-- UTF-8 is easier to use, but may not preserve all special characters when
+-- a message was encoded with a different encoding format. Base64 preserves
+-- all special characters. The default value is UTF-8.
+sNSAction_encoding :: Lens.Lens' SNSAction (Prelude.Maybe SNSActionEncoding)
+sNSAction_encoding = Lens.lens (\SNSAction' {encoding} -> encoding) (\s@SNSAction' {} a -> s {encoding = a} :: SNSAction)
+
+-- | 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+sNSAction_topicArn :: Lens.Lens' SNSAction Prelude.Text
+sNSAction_topicArn = Lens.lens (\SNSAction' {topicArn} -> topicArn) (\s@SNSAction' {} a -> s {topicArn = a} :: SNSAction)
+
+instance Data.FromXML SNSAction where
+  parseXML x =
+    SNSAction'
+      Prelude.<$> (x Data..@? "Encoding")
+      Prelude.<*> (x Data..@ "TopicArn")
+
+instance Prelude.Hashable SNSAction where
+  hashWithSalt _salt SNSAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` encoding
+      `Prelude.hashWithSalt` topicArn
+
+instance Prelude.NFData SNSAction where
+  rnf SNSAction' {..} =
+    Prelude.rnf encoding
+      `Prelude.seq` Prelude.rnf topicArn
+
+instance Data.ToQuery SNSAction where
+  toQuery SNSAction' {..} =
+    Prelude.mconcat
+      [ "Encoding" Data.=: encoding,
+        "TopicArn" Data.=: topicArn
+      ]
diff --git a/gen/Amazonka/SES/Types/SNSActionEncoding.hs b/gen/Amazonka/SES/Types/SNSActionEncoding.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/SNSActionEncoding.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.SNSActionEncoding
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.SNSActionEncoding
+  ( SNSActionEncoding
+      ( ..,
+        SNSActionEncoding_Base64,
+        SNSActionEncoding_UTF_8
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SNSActionEncoding = SNSActionEncoding'
+  { fromSNSActionEncoding ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern SNSActionEncoding_Base64 :: SNSActionEncoding
+pattern SNSActionEncoding_Base64 = SNSActionEncoding' "Base64"
+
+pattern SNSActionEncoding_UTF_8 :: SNSActionEncoding
+pattern SNSActionEncoding_UTF_8 = SNSActionEncoding' "UTF-8"
+
+{-# COMPLETE
+  SNSActionEncoding_Base64,
+  SNSActionEncoding_UTF_8,
+  SNSActionEncoding'
+  #-}
diff --git a/gen/Amazonka/SES/Types/SNSDestination.hs b/gen/Amazonka/SES/Types/SNSDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/SNSDestination.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.SNSDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.SNSDestination where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains the topic ARN associated with an Amazon Simple Notification
+-- Service (Amazon SNS) event destination.
+--
+-- Event destinations, such as Amazon SNS, are associated with
+-- configuration sets, which enable you to publish email sending events.
+-- For information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newSNSDestination' smart constructor.
+data SNSDestination = SNSDestination'
+  { -- | The ARN of the Amazon SNS topic that email sending events will be
+    -- published to. 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicARN :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SNSDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'topicARN', 'sNSDestination_topicARN' - The ARN of the Amazon SNS topic that email sending events will be
+-- published to. 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+newSNSDestination ::
+  -- | 'topicARN'
+  Prelude.Text ->
+  SNSDestination
+newSNSDestination pTopicARN_ =
+  SNSDestination' {topicARN = pTopicARN_}
+
+-- | The ARN of the Amazon SNS topic that email sending events will be
+-- published to. 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+sNSDestination_topicARN :: Lens.Lens' SNSDestination Prelude.Text
+sNSDestination_topicARN = Lens.lens (\SNSDestination' {topicARN} -> topicARN) (\s@SNSDestination' {} a -> s {topicARN = a} :: SNSDestination)
+
+instance Data.FromXML SNSDestination where
+  parseXML x =
+    SNSDestination' Prelude.<$> (x Data..@ "TopicARN")
+
+instance Prelude.Hashable SNSDestination where
+  hashWithSalt _salt SNSDestination' {..} =
+    _salt `Prelude.hashWithSalt` topicARN
+
+instance Prelude.NFData SNSDestination where
+  rnf SNSDestination' {..} = Prelude.rnf topicARN
+
+instance Data.ToQuery SNSDestination where
+  toQuery SNSDestination' {..} =
+    Prelude.mconcat ["TopicARN" Data.=: topicARN]
diff --git a/gen/Amazonka/SES/Types/SendDataPoint.hs b/gen/Amazonka/SES/Types/SendDataPoint.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/SendDataPoint.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.SendDataPoint
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.SendDataPoint where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Represents sending statistics data. Each @SendDataPoint@ contains
+-- statistics for a 15-minute period of sending activity.
+--
+-- /See:/ 'newSendDataPoint' smart constructor.
+data SendDataPoint = SendDataPoint'
+  { -- | Number of emails that have bounced.
+    bounces :: Prelude.Maybe Prelude.Integer,
+    -- | Number of unwanted emails that were rejected by recipients.
+    complaints :: Prelude.Maybe Prelude.Integer,
+    -- | Number of emails that have been sent.
+    deliveryAttempts :: Prelude.Maybe Prelude.Integer,
+    -- | Number of emails rejected by Amazon SES.
+    rejects :: Prelude.Maybe Prelude.Integer,
+    -- | Time of the data point.
+    timestamp :: Prelude.Maybe Data.ISO8601
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SendDataPoint' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bounces', 'sendDataPoint_bounces' - Number of emails that have bounced.
+--
+-- 'complaints', 'sendDataPoint_complaints' - Number of unwanted emails that were rejected by recipients.
+--
+-- 'deliveryAttempts', 'sendDataPoint_deliveryAttempts' - Number of emails that have been sent.
+--
+-- 'rejects', 'sendDataPoint_rejects' - Number of emails rejected by Amazon SES.
+--
+-- 'timestamp', 'sendDataPoint_timestamp' - Time of the data point.
+newSendDataPoint ::
+  SendDataPoint
+newSendDataPoint =
+  SendDataPoint'
+    { bounces = Prelude.Nothing,
+      complaints = Prelude.Nothing,
+      deliveryAttempts = Prelude.Nothing,
+      rejects = Prelude.Nothing,
+      timestamp = Prelude.Nothing
+    }
+
+-- | Number of emails that have bounced.
+sendDataPoint_bounces :: Lens.Lens' SendDataPoint (Prelude.Maybe Prelude.Integer)
+sendDataPoint_bounces = Lens.lens (\SendDataPoint' {bounces} -> bounces) (\s@SendDataPoint' {} a -> s {bounces = a} :: SendDataPoint)
+
+-- | Number of unwanted emails that were rejected by recipients.
+sendDataPoint_complaints :: Lens.Lens' SendDataPoint (Prelude.Maybe Prelude.Integer)
+sendDataPoint_complaints = Lens.lens (\SendDataPoint' {complaints} -> complaints) (\s@SendDataPoint' {} a -> s {complaints = a} :: SendDataPoint)
+
+-- | Number of emails that have been sent.
+sendDataPoint_deliveryAttempts :: Lens.Lens' SendDataPoint (Prelude.Maybe Prelude.Integer)
+sendDataPoint_deliveryAttempts = Lens.lens (\SendDataPoint' {deliveryAttempts} -> deliveryAttempts) (\s@SendDataPoint' {} a -> s {deliveryAttempts = a} :: SendDataPoint)
+
+-- | Number of emails rejected by Amazon SES.
+sendDataPoint_rejects :: Lens.Lens' SendDataPoint (Prelude.Maybe Prelude.Integer)
+sendDataPoint_rejects = Lens.lens (\SendDataPoint' {rejects} -> rejects) (\s@SendDataPoint' {} a -> s {rejects = a} :: SendDataPoint)
+
+-- | Time of the data point.
+sendDataPoint_timestamp :: Lens.Lens' SendDataPoint (Prelude.Maybe Prelude.UTCTime)
+sendDataPoint_timestamp = Lens.lens (\SendDataPoint' {timestamp} -> timestamp) (\s@SendDataPoint' {} a -> s {timestamp = a} :: SendDataPoint) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromXML SendDataPoint where
+  parseXML x =
+    SendDataPoint'
+      Prelude.<$> (x Data..@? "Bounces")
+      Prelude.<*> (x Data..@? "Complaints")
+      Prelude.<*> (x Data..@? "DeliveryAttempts")
+      Prelude.<*> (x Data..@? "Rejects")
+      Prelude.<*> (x Data..@? "Timestamp")
+
+instance Prelude.Hashable SendDataPoint where
+  hashWithSalt _salt SendDataPoint' {..} =
+    _salt
+      `Prelude.hashWithSalt` bounces
+      `Prelude.hashWithSalt` complaints
+      `Prelude.hashWithSalt` deliveryAttempts
+      `Prelude.hashWithSalt` rejects
+      `Prelude.hashWithSalt` timestamp
+
+instance Prelude.NFData SendDataPoint where
+  rnf SendDataPoint' {..} =
+    Prelude.rnf bounces
+      `Prelude.seq` Prelude.rnf complaints
+      `Prelude.seq` Prelude.rnf deliveryAttempts
+      `Prelude.seq` Prelude.rnf rejects
+      `Prelude.seq` Prelude.rnf timestamp
diff --git a/gen/Amazonka/SES/Types/StopAction.hs b/gen/Amazonka/SES/Types/StopAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/StopAction.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.StopAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.StopAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Types.StopScope
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-stop.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newStopAction' smart constructor.
+data StopAction = StopAction'
+  { -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Maybe Prelude.Text,
+    -- | The scope of the StopAction. The only acceptable value is @RuleSet@.
+    scope :: StopScope
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StopAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'topicArn', 'stopAction_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+--
+-- 'scope', 'stopAction_scope' - The scope of the StopAction. The only acceptable value is @RuleSet@.
+newStopAction ::
+  -- | 'scope'
+  StopScope ->
+  StopAction
+newStopAction pScope_ =
+  StopAction'
+    { topicArn = Prelude.Nothing,
+      scope = 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+stopAction_topicArn :: Lens.Lens' StopAction (Prelude.Maybe Prelude.Text)
+stopAction_topicArn = Lens.lens (\StopAction' {topicArn} -> topicArn) (\s@StopAction' {} a -> s {topicArn = a} :: StopAction)
+
+-- | The scope of the StopAction. The only acceptable value is @RuleSet@.
+stopAction_scope :: Lens.Lens' StopAction StopScope
+stopAction_scope = Lens.lens (\StopAction' {scope} -> scope) (\s@StopAction' {} a -> s {scope = a} :: StopAction)
+
+instance Data.FromXML StopAction where
+  parseXML x =
+    StopAction'
+      Prelude.<$> (x Data..@? "TopicArn")
+      Prelude.<*> (x Data..@ "Scope")
+
+instance Prelude.Hashable StopAction where
+  hashWithSalt _salt StopAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` topicArn
+      `Prelude.hashWithSalt` scope
+
+instance Prelude.NFData StopAction where
+  rnf StopAction' {..} =
+    Prelude.rnf topicArn
+      `Prelude.seq` Prelude.rnf scope
+
+instance Data.ToQuery StopAction where
+  toQuery StopAction' {..} =
+    Prelude.mconcat
+      ["TopicArn" Data.=: topicArn, "Scope" Data.=: scope]
diff --git a/gen/Amazonka/SES/Types/StopScope.hs b/gen/Amazonka/SES/Types/StopScope.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/StopScope.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.StopScope
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.StopScope
+  ( StopScope
+      ( ..,
+        StopScope_RuleSet
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StopScope = StopScope'
+  { fromStopScope ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StopScope_RuleSet :: StopScope
+pattern StopScope_RuleSet = StopScope' "RuleSet"
+
+{-# COMPLETE
+  StopScope_RuleSet,
+  StopScope'
+  #-}
diff --git a/gen/Amazonka/SES/Types/Template.hs b/gen/Amazonka/SES/Types/Template.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/Template.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.Template
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.Template where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The content of the email, composed of a subject line, an HTML part, and
+-- a text-only part.
+--
+-- /See:/ 'newTemplate' smart constructor.
+data Template = Template'
+  { -- | The HTML body of the email.
+    htmlPart :: Prelude.Maybe Prelude.Text,
+    -- | The subject line of the email.
+    subjectPart :: Prelude.Maybe Prelude.Text,
+    -- | The email body that will be visible to recipients whose email clients do
+    -- not display HTML.
+    textPart :: Prelude.Maybe Prelude.Text,
+    -- | The name of the template. You will refer to this name when you send
+    -- email using the @SendTemplatedEmail@ or @SendBulkTemplatedEmail@
+    -- operations.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Template' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'htmlPart', 'template_htmlPart' - The HTML body of the email.
+--
+-- 'subjectPart', 'template_subjectPart' - The subject line of the email.
+--
+-- 'textPart', 'template_textPart' - The email body that will be visible to recipients whose email clients do
+-- not display HTML.
+--
+-- 'templateName', 'template_templateName' - The name of the template. You will refer to this name when you send
+-- email using the @SendTemplatedEmail@ or @SendBulkTemplatedEmail@
+-- operations.
+newTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  Template
+newTemplate pTemplateName_ =
+  Template'
+    { htmlPart = Prelude.Nothing,
+      subjectPart = Prelude.Nothing,
+      textPart = Prelude.Nothing,
+      templateName = pTemplateName_
+    }
+
+-- | The HTML body of the email.
+template_htmlPart :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_htmlPart = Lens.lens (\Template' {htmlPart} -> htmlPart) (\s@Template' {} a -> s {htmlPart = a} :: Template)
+
+-- | The subject line of the email.
+template_subjectPart :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_subjectPart = Lens.lens (\Template' {subjectPart} -> subjectPart) (\s@Template' {} a -> s {subjectPart = a} :: Template)
+
+-- | The email body that will be visible to recipients whose email clients do
+-- not display HTML.
+template_textPart :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)
+template_textPart = Lens.lens (\Template' {textPart} -> textPart) (\s@Template' {} a -> s {textPart = a} :: Template)
+
+-- | The name of the template. You will refer to this name when you send
+-- email using the @SendTemplatedEmail@ or @SendBulkTemplatedEmail@
+-- operations.
+template_templateName :: Lens.Lens' Template Prelude.Text
+template_templateName = Lens.lens (\Template' {templateName} -> templateName) (\s@Template' {} a -> s {templateName = a} :: Template)
+
+instance Data.FromXML Template where
+  parseXML x =
+    Template'
+      Prelude.<$> (x Data..@? "HtmlPart")
+      Prelude.<*> (x Data..@? "SubjectPart")
+      Prelude.<*> (x Data..@? "TextPart")
+      Prelude.<*> (x Data..@ "TemplateName")
+
+instance Prelude.Hashable Template where
+  hashWithSalt _salt Template' {..} =
+    _salt
+      `Prelude.hashWithSalt` htmlPart
+      `Prelude.hashWithSalt` subjectPart
+      `Prelude.hashWithSalt` textPart
+      `Prelude.hashWithSalt` templateName
+
+instance Prelude.NFData Template where
+  rnf Template' {..} =
+    Prelude.rnf htmlPart
+      `Prelude.seq` Prelude.rnf subjectPart
+      `Prelude.seq` Prelude.rnf textPart
+      `Prelude.seq` Prelude.rnf templateName
+
+instance Data.ToQuery Template where
+  toQuery Template' {..} =
+    Prelude.mconcat
+      [ "HtmlPart" Data.=: htmlPart,
+        "SubjectPart" Data.=: subjectPart,
+        "TextPart" Data.=: textPart,
+        "TemplateName" Data.=: templateName
+      ]
diff --git a/gen/Amazonka/SES/Types/TemplateMetadata.hs b/gen/Amazonka/SES/Types/TemplateMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/TemplateMetadata.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.TemplateMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.TemplateMetadata where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Contains information about an email template.
+--
+-- /See:/ 'newTemplateMetadata' smart constructor.
+data TemplateMetadata = TemplateMetadata'
+  { -- | The time and date the template was created.
+    createdTimestamp :: Prelude.Maybe Data.ISO8601,
+    -- | The name of the template.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TemplateMetadata' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'createdTimestamp', 'templateMetadata_createdTimestamp' - The time and date the template was created.
+--
+-- 'name', 'templateMetadata_name' - The name of the template.
+newTemplateMetadata ::
+  TemplateMetadata
+newTemplateMetadata =
+  TemplateMetadata'
+    { createdTimestamp =
+        Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The time and date the template was created.
+templateMetadata_createdTimestamp :: Lens.Lens' TemplateMetadata (Prelude.Maybe Prelude.UTCTime)
+templateMetadata_createdTimestamp = Lens.lens (\TemplateMetadata' {createdTimestamp} -> createdTimestamp) (\s@TemplateMetadata' {} a -> s {createdTimestamp = a} :: TemplateMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the template.
+templateMetadata_name :: Lens.Lens' TemplateMetadata (Prelude.Maybe Prelude.Text)
+templateMetadata_name = Lens.lens (\TemplateMetadata' {name} -> name) (\s@TemplateMetadata' {} a -> s {name = a} :: TemplateMetadata)
+
+instance Data.FromXML TemplateMetadata where
+  parseXML x =
+    TemplateMetadata'
+      Prelude.<$> (x Data..@? "CreatedTimestamp")
+      Prelude.<*> (x Data..@? "Name")
+
+instance Prelude.Hashable TemplateMetadata where
+  hashWithSalt _salt TemplateMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData TemplateMetadata where
+  rnf TemplateMetadata' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/SES/Types/TlsPolicy.hs b/gen/Amazonka/SES/Types/TlsPolicy.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/TlsPolicy.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.TlsPolicy
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.TlsPolicy
+  ( TlsPolicy
+      ( ..,
+        TlsPolicy_Optional,
+        TlsPolicy_Require
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype TlsPolicy = TlsPolicy'
+  { fromTlsPolicy ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern TlsPolicy_Optional :: TlsPolicy
+pattern TlsPolicy_Optional = TlsPolicy' "Optional"
+
+pattern TlsPolicy_Require :: TlsPolicy
+pattern TlsPolicy_Require = TlsPolicy' "Require"
+
+{-# COMPLETE
+  TlsPolicy_Optional,
+  TlsPolicy_Require,
+  TlsPolicy'
+  #-}
diff --git a/gen/Amazonka/SES/Types/TrackingOptions.hs b/gen/Amazonka/SES/Types/TrackingOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/TrackingOptions.hs
@@ -0,0 +1,82 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.TrackingOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.TrackingOptions where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A domain that is used to redirect email recipients to an Amazon
+-- SES-operated domain. This domain captures open and click events
+-- generated by Amazon SES emails.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Configuring Custom Domains to Handle Open and Click Tracking>
+-- in the /Amazon SES Developer Guide/.
+--
+-- /See:/ 'newTrackingOptions' smart constructor.
+data TrackingOptions = TrackingOptions'
+  { -- | The custom subdomain that will be used to redirect email recipients to
+    -- the Amazon SES event tracking domain.
+    customRedirectDomain :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'TrackingOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'customRedirectDomain', 'trackingOptions_customRedirectDomain' - The custom subdomain that will be used to redirect email recipients to
+-- the Amazon SES event tracking domain.
+newTrackingOptions ::
+  TrackingOptions
+newTrackingOptions =
+  TrackingOptions'
+    { customRedirectDomain =
+        Prelude.Nothing
+    }
+
+-- | The custom subdomain that will be used to redirect email recipients to
+-- the Amazon SES event tracking domain.
+trackingOptions_customRedirectDomain :: Lens.Lens' TrackingOptions (Prelude.Maybe Prelude.Text)
+trackingOptions_customRedirectDomain = Lens.lens (\TrackingOptions' {customRedirectDomain} -> customRedirectDomain) (\s@TrackingOptions' {} a -> s {customRedirectDomain = a} :: TrackingOptions)
+
+instance Data.FromXML TrackingOptions where
+  parseXML x =
+    TrackingOptions'
+      Prelude.<$> (x Data..@? "CustomRedirectDomain")
+
+instance Prelude.Hashable TrackingOptions where
+  hashWithSalt _salt TrackingOptions' {..} =
+    _salt `Prelude.hashWithSalt` customRedirectDomain
+
+instance Prelude.NFData TrackingOptions where
+  rnf TrackingOptions' {..} =
+    Prelude.rnf customRedirectDomain
+
+instance Data.ToQuery TrackingOptions where
+  toQuery TrackingOptions' {..} =
+    Prelude.mconcat
+      ["CustomRedirectDomain" Data.=: customRedirectDomain]
diff --git a/gen/Amazonka/SES/Types/VerificationStatus.hs b/gen/Amazonka/SES/Types/VerificationStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/VerificationStatus.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.VerificationStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.VerificationStatus
+  ( VerificationStatus
+      ( ..,
+        VerificationStatus_Failed,
+        VerificationStatus_NotStarted,
+        VerificationStatus_Pending,
+        VerificationStatus_Success,
+        VerificationStatus_TemporaryFailure
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype VerificationStatus = VerificationStatus'
+  { fromVerificationStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern VerificationStatus_Failed :: VerificationStatus
+pattern VerificationStatus_Failed = VerificationStatus' "Failed"
+
+pattern VerificationStatus_NotStarted :: VerificationStatus
+pattern VerificationStatus_NotStarted = VerificationStatus' "NotStarted"
+
+pattern VerificationStatus_Pending :: VerificationStatus
+pattern VerificationStatus_Pending = VerificationStatus' "Pending"
+
+pattern VerificationStatus_Success :: VerificationStatus
+pattern VerificationStatus_Success = VerificationStatus' "Success"
+
+pattern VerificationStatus_TemporaryFailure :: VerificationStatus
+pattern VerificationStatus_TemporaryFailure = VerificationStatus' "TemporaryFailure"
+
+{-# COMPLETE
+  VerificationStatus_Failed,
+  VerificationStatus_NotStarted,
+  VerificationStatus_Pending,
+  VerificationStatus_Success,
+  VerificationStatus_TemporaryFailure,
+  VerificationStatus'
+  #-}
diff --git a/gen/Amazonka/SES/Types/WorkmailAction.hs b/gen/Amazonka/SES/Types/WorkmailAction.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Types/WorkmailAction.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Types.WorkmailAction
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Types.WorkmailAction where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | 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
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-action-workmail.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newWorkmailAction' smart constructor.
+data WorkmailAction = WorkmailAction'
+  { -- | 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
+    -- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+    topicArn :: Prelude.Maybe Prelude.Text,
+    -- | 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
+    -- <https://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html Amazon WorkMail Administrator Guide>.
+    organizationArn :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'WorkmailAction' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'topicArn', 'workmailAction_topicArn' - 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+--
+-- 'organizationArn', 'workmailAction_organizationArn' - 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
+-- <https://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html Amazon WorkMail Administrator Guide>.
+newWorkmailAction ::
+  -- | 'organizationArn'
+  Prelude.Text ->
+  WorkmailAction
+newWorkmailAction pOrganizationArn_ =
+  WorkmailAction'
+    { topicArn = Prelude.Nothing,
+      organizationArn = 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
+-- <https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html Amazon SNS Developer Guide>.
+workmailAction_topicArn :: Lens.Lens' WorkmailAction (Prelude.Maybe Prelude.Text)
+workmailAction_topicArn = Lens.lens (\WorkmailAction' {topicArn} -> topicArn) (\s@WorkmailAction' {} a -> s {topicArn = a} :: WorkmailAction)
+
+-- | 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
+-- <https://docs.aws.amazon.com/workmail/latest/adminguide/organizations_overview.html Amazon WorkMail Administrator Guide>.
+workmailAction_organizationArn :: Lens.Lens' WorkmailAction Prelude.Text
+workmailAction_organizationArn = Lens.lens (\WorkmailAction' {organizationArn} -> organizationArn) (\s@WorkmailAction' {} a -> s {organizationArn = a} :: WorkmailAction)
+
+instance Data.FromXML WorkmailAction where
+  parseXML x =
+    WorkmailAction'
+      Prelude.<$> (x Data..@? "TopicArn")
+      Prelude.<*> (x Data..@ "OrganizationArn")
+
+instance Prelude.Hashable WorkmailAction where
+  hashWithSalt _salt WorkmailAction' {..} =
+    _salt
+      `Prelude.hashWithSalt` topicArn
+      `Prelude.hashWithSalt` organizationArn
+
+instance Prelude.NFData WorkmailAction where
+  rnf WorkmailAction' {..} =
+    Prelude.rnf topicArn
+      `Prelude.seq` Prelude.rnf organizationArn
+
+instance Data.ToQuery WorkmailAction where
+  toQuery WorkmailAction' {..} =
+    Prelude.mconcat
+      [ "TopicArn" Data.=: topicArn,
+        "OrganizationArn" Data.=: organizationArn
+      ]
diff --git a/gen/Amazonka/SES/UpdateAccountSendingEnabled.hs b/gen/Amazonka/SES/UpdateAccountSendingEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateAccountSendingEnabled.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateAccountSendingEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables or disables email sending across your entire Amazon SES account
+-- in the current AWS Region. You can use this operation in conjunction
+-- with Amazon CloudWatch alarms to temporarily pause email sending across
+-- your Amazon SES account in a given AWS Region when reputation metrics
+-- (such as your bounce or complaint rates) reach certain thresholds.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateAccountSendingEnabled
+  ( -- * Creating a Request
+    UpdateAccountSendingEnabled (..),
+    newUpdateAccountSendingEnabled,
+
+    -- * Request Lenses
+    updateAccountSendingEnabled_enabled,
+
+    -- * Destructuring the Response
+    UpdateAccountSendingEnabledResponse (..),
+    newUpdateAccountSendingEnabledResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to enable or disable the email sending capabilities
+-- for your entire Amazon SES account.
+--
+-- /See:/ 'newUpdateAccountSendingEnabled' smart constructor.
+data UpdateAccountSendingEnabled = UpdateAccountSendingEnabled'
+  { -- | Describes whether email sending is enabled or disabled for your Amazon
+    -- SES account in the current AWS Region.
+    enabled :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSendingEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'enabled', 'updateAccountSendingEnabled_enabled' - Describes whether email sending is enabled or disabled for your Amazon
+-- SES account in the current AWS Region.
+newUpdateAccountSendingEnabled ::
+  UpdateAccountSendingEnabled
+newUpdateAccountSendingEnabled =
+  UpdateAccountSendingEnabled'
+    { enabled =
+        Prelude.Nothing
+    }
+
+-- | Describes whether email sending is enabled or disabled for your Amazon
+-- SES account in the current AWS Region.
+updateAccountSendingEnabled_enabled :: Lens.Lens' UpdateAccountSendingEnabled (Prelude.Maybe Prelude.Bool)
+updateAccountSendingEnabled_enabled = Lens.lens (\UpdateAccountSendingEnabled' {enabled} -> enabled) (\s@UpdateAccountSendingEnabled' {} a -> s {enabled = a} :: UpdateAccountSendingEnabled)
+
+instance Core.AWSRequest UpdateAccountSendingEnabled where
+  type
+    AWSResponse UpdateAccountSendingEnabled =
+      UpdateAccountSendingEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdateAccountSendingEnabledResponse'
+
+instance Prelude.Hashable UpdateAccountSendingEnabled where
+  hashWithSalt _salt UpdateAccountSendingEnabled' {..} =
+    _salt `Prelude.hashWithSalt` enabled
+
+instance Prelude.NFData UpdateAccountSendingEnabled where
+  rnf UpdateAccountSendingEnabled' {..} =
+    Prelude.rnf enabled
+
+instance Data.ToHeaders UpdateAccountSendingEnabled where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath UpdateAccountSendingEnabled where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateAccountSendingEnabled where
+  toQuery UpdateAccountSendingEnabled' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "UpdateAccountSendingEnabled" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Enabled" Data.=: enabled
+      ]
+
+-- | /See:/ 'newUpdateAccountSendingEnabledResponse' smart constructor.
+data UpdateAccountSendingEnabledResponse = UpdateAccountSendingEnabledResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateAccountSendingEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateAccountSendingEnabledResponse ::
+  UpdateAccountSendingEnabledResponse
+newUpdateAccountSendingEnabledResponse =
+  UpdateAccountSendingEnabledResponse'
+
+instance
+  Prelude.NFData
+    UpdateAccountSendingEnabledResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/UpdateConfigurationSetEventDestination.hs b/gen/Amazonka/SES/UpdateConfigurationSetEventDestination.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateConfigurationSetEventDestination.hs
@@ -0,0 +1,222 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateConfigurationSetEventDestination
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the event destination of a configuration set. Event destinations
+-- are associated with configuration sets, which enable you to publish
+-- email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or
+-- Amazon Simple Notification Service (Amazon SNS). For information about
+-- using configuration sets, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Monitoring Your Amazon SES Sending Activity>
+-- in the /Amazon SES Developer Guide./
+--
+-- When you create or update an event destination, you must provide one,
+-- and only one, destination. The destination can be Amazon CloudWatch,
+-- Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon
+-- SNS).
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateConfigurationSetEventDestination
+  ( -- * Creating a Request
+    UpdateConfigurationSetEventDestination (..),
+    newUpdateConfigurationSetEventDestination,
+
+    -- * Request Lenses
+    updateConfigurationSetEventDestination_configurationSetName,
+    updateConfigurationSetEventDestination_eventDestination,
+
+    -- * Destructuring the Response
+    UpdateConfigurationSetEventDestinationResponse (..),
+    newUpdateConfigurationSetEventDestinationResponse,
+
+    -- * Response Lenses
+    updateConfigurationSetEventDestinationResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to update the event destination of a configuration
+-- set. Configuration sets enable you to publish email sending events. For
+-- information about using configuration sets, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newUpdateConfigurationSetEventDestination' smart constructor.
+data UpdateConfigurationSetEventDestination = UpdateConfigurationSetEventDestination'
+  { -- | The name of the configuration set that contains the event destination
+    -- that you want to update.
+    configurationSetName :: Prelude.Text,
+    -- | The event destination object that you want to apply to the specified
+    -- configuration set.
+    eventDestination :: EventDestination
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetEventDestination' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'updateConfigurationSetEventDestination_configurationSetName' - The name of the configuration set that contains the event destination
+-- that you want to update.
+--
+-- 'eventDestination', 'updateConfigurationSetEventDestination_eventDestination' - The event destination object that you want to apply to the specified
+-- configuration set.
+newUpdateConfigurationSetEventDestination ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'eventDestination'
+  EventDestination ->
+  UpdateConfigurationSetEventDestination
+newUpdateConfigurationSetEventDestination
+  pConfigurationSetName_
+  pEventDestination_ =
+    UpdateConfigurationSetEventDestination'
+      { configurationSetName =
+          pConfigurationSetName_,
+        eventDestination =
+          pEventDestination_
+      }
+
+-- | The name of the configuration set that contains the event destination
+-- that you want to update.
+updateConfigurationSetEventDestination_configurationSetName :: Lens.Lens' UpdateConfigurationSetEventDestination Prelude.Text
+updateConfigurationSetEventDestination_configurationSetName = Lens.lens (\UpdateConfigurationSetEventDestination' {configurationSetName} -> configurationSetName) (\s@UpdateConfigurationSetEventDestination' {} a -> s {configurationSetName = a} :: UpdateConfigurationSetEventDestination)
+
+-- | The event destination object that you want to apply to the specified
+-- configuration set.
+updateConfigurationSetEventDestination_eventDestination :: Lens.Lens' UpdateConfigurationSetEventDestination EventDestination
+updateConfigurationSetEventDestination_eventDestination = Lens.lens (\UpdateConfigurationSetEventDestination' {eventDestination} -> eventDestination) (\s@UpdateConfigurationSetEventDestination' {} a -> s {eventDestination = a} :: UpdateConfigurationSetEventDestination)
+
+instance
+  Core.AWSRequest
+    UpdateConfigurationSetEventDestination
+  where
+  type
+    AWSResponse
+      UpdateConfigurationSetEventDestination =
+      UpdateConfigurationSetEventDestinationResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "UpdateConfigurationSetEventDestinationResult"
+      ( \s h x ->
+          UpdateConfigurationSetEventDestinationResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateConfigurationSetEventDestination
+  where
+  hashWithSalt
+    _salt
+    UpdateConfigurationSetEventDestination' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` eventDestination
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetEventDestination
+  where
+  rnf UpdateConfigurationSetEventDestination' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf eventDestination
+
+instance
+  Data.ToHeaders
+    UpdateConfigurationSetEventDestination
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    UpdateConfigurationSetEventDestination
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateConfigurationSetEventDestination
+  where
+  toQuery UpdateConfigurationSetEventDestination' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "UpdateConfigurationSetEventDestination" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "EventDestination" Data.=: eventDestination
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newUpdateConfigurationSetEventDestinationResponse' smart constructor.
+data UpdateConfigurationSetEventDestinationResponse = UpdateConfigurationSetEventDestinationResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetEventDestinationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateConfigurationSetEventDestinationResponse_httpStatus' - The response's http status code.
+newUpdateConfigurationSetEventDestinationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateConfigurationSetEventDestinationResponse
+newUpdateConfigurationSetEventDestinationResponse
+  pHttpStatus_ =
+    UpdateConfigurationSetEventDestinationResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+updateConfigurationSetEventDestinationResponse_httpStatus :: Lens.Lens' UpdateConfigurationSetEventDestinationResponse Prelude.Int
+updateConfigurationSetEventDestinationResponse_httpStatus = Lens.lens (\UpdateConfigurationSetEventDestinationResponse' {httpStatus} -> httpStatus) (\s@UpdateConfigurationSetEventDestinationResponse' {} a -> s {httpStatus = a} :: UpdateConfigurationSetEventDestinationResponse)
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetEventDestinationResponse
+  where
+  rnf
+    UpdateConfigurationSetEventDestinationResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/UpdateConfigurationSetReputationMetricsEnabled.hs b/gen/Amazonka/SES/UpdateConfigurationSetReputationMetricsEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateConfigurationSetReputationMetricsEnabled.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateConfigurationSetReputationMetricsEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables or disables the publishing of reputation metrics for emails sent
+-- using a specific configuration set in a given AWS Region. Reputation
+-- metrics include bounce and complaint rates. These metrics are published
+-- to Amazon CloudWatch. By using CloudWatch, you can create alarms when
+-- bounce or complaint rates exceed certain thresholds.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateConfigurationSetReputationMetricsEnabled
+  ( -- * Creating a Request
+    UpdateConfigurationSetReputationMetricsEnabled (..),
+    newUpdateConfigurationSetReputationMetricsEnabled,
+
+    -- * Request Lenses
+    updateConfigurationSetReputationMetricsEnabled_configurationSetName,
+    updateConfigurationSetReputationMetricsEnabled_enabled,
+
+    -- * Destructuring the Response
+    UpdateConfigurationSetReputationMetricsEnabledResponse (..),
+    newUpdateConfigurationSetReputationMetricsEnabledResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to modify the reputation metric publishing settings
+-- for a configuration set.
+--
+-- /See:/ 'newUpdateConfigurationSetReputationMetricsEnabled' smart constructor.
+data UpdateConfigurationSetReputationMetricsEnabled = UpdateConfigurationSetReputationMetricsEnabled'
+  { -- | The name of the configuration set that you want to update.
+    configurationSetName :: Prelude.Text,
+    -- | Describes whether or not Amazon SES will publish reputation metrics for
+    -- the configuration set, such as bounce and complaint rates, to Amazon
+    -- CloudWatch.
+    enabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetReputationMetricsEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'updateConfigurationSetReputationMetricsEnabled_configurationSetName' - The name of the configuration set that you want to update.
+--
+-- 'enabled', 'updateConfigurationSetReputationMetricsEnabled_enabled' - Describes whether or not Amazon SES will publish reputation metrics for
+-- the configuration set, such as bounce and complaint rates, to Amazon
+-- CloudWatch.
+newUpdateConfigurationSetReputationMetricsEnabled ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'enabled'
+  Prelude.Bool ->
+  UpdateConfigurationSetReputationMetricsEnabled
+newUpdateConfigurationSetReputationMetricsEnabled
+  pConfigurationSetName_
+  pEnabled_ =
+    UpdateConfigurationSetReputationMetricsEnabled'
+      { configurationSetName =
+          pConfigurationSetName_,
+        enabled = pEnabled_
+      }
+
+-- | The name of the configuration set that you want to update.
+updateConfigurationSetReputationMetricsEnabled_configurationSetName :: Lens.Lens' UpdateConfigurationSetReputationMetricsEnabled Prelude.Text
+updateConfigurationSetReputationMetricsEnabled_configurationSetName = Lens.lens (\UpdateConfigurationSetReputationMetricsEnabled' {configurationSetName} -> configurationSetName) (\s@UpdateConfigurationSetReputationMetricsEnabled' {} a -> s {configurationSetName = a} :: UpdateConfigurationSetReputationMetricsEnabled)
+
+-- | Describes whether or not Amazon SES will publish reputation metrics for
+-- the configuration set, such as bounce and complaint rates, to Amazon
+-- CloudWatch.
+updateConfigurationSetReputationMetricsEnabled_enabled :: Lens.Lens' UpdateConfigurationSetReputationMetricsEnabled Prelude.Bool
+updateConfigurationSetReputationMetricsEnabled_enabled = Lens.lens (\UpdateConfigurationSetReputationMetricsEnabled' {enabled} -> enabled) (\s@UpdateConfigurationSetReputationMetricsEnabled' {} a -> s {enabled = a} :: UpdateConfigurationSetReputationMetricsEnabled)
+
+instance
+  Core.AWSRequest
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  type
+    AWSResponse
+      UpdateConfigurationSetReputationMetricsEnabled =
+      UpdateConfigurationSetReputationMetricsEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdateConfigurationSetReputationMetricsEnabledResponse'
+
+instance
+  Prelude.Hashable
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  hashWithSalt
+    _salt
+    UpdateConfigurationSetReputationMetricsEnabled' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` enabled
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  rnf
+    UpdateConfigurationSetReputationMetricsEnabled' {..} =
+      Prelude.rnf configurationSetName
+        `Prelude.seq` Prelude.rnf enabled
+
+instance
+  Data.ToHeaders
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateConfigurationSetReputationMetricsEnabled
+  where
+  toQuery
+    UpdateConfigurationSetReputationMetricsEnabled' {..} =
+      Prelude.mconcat
+        [ "Action"
+            Data.=: ( "UpdateConfigurationSetReputationMetricsEnabled" ::
+                        Prelude.ByteString
+                    ),
+          "Version"
+            Data.=: ("2010-12-01" :: Prelude.ByteString),
+          "ConfigurationSetName" Data.=: configurationSetName,
+          "Enabled" Data.=: enabled
+        ]
+
+-- | /See:/ 'newUpdateConfigurationSetReputationMetricsEnabledResponse' smart constructor.
+data UpdateConfigurationSetReputationMetricsEnabledResponse = UpdateConfigurationSetReputationMetricsEnabledResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetReputationMetricsEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateConfigurationSetReputationMetricsEnabledResponse ::
+  UpdateConfigurationSetReputationMetricsEnabledResponse
+newUpdateConfigurationSetReputationMetricsEnabledResponse =
+  UpdateConfigurationSetReputationMetricsEnabledResponse'
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetReputationMetricsEnabledResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/UpdateConfigurationSetSendingEnabled.hs b/gen/Amazonka/SES/UpdateConfigurationSetSendingEnabled.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateConfigurationSetSendingEnabled.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateConfigurationSetSendingEnabled
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Enables or disables email sending for messages sent using a specific
+-- configuration set in a given AWS Region. You can use this operation in
+-- conjunction with Amazon CloudWatch alarms to temporarily pause email
+-- sending for a configuration set when the reputation metrics for that
+-- configuration set (such as your bounce on complaint rate) exceed certain
+-- thresholds.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateConfigurationSetSendingEnabled
+  ( -- * Creating a Request
+    UpdateConfigurationSetSendingEnabled (..),
+    newUpdateConfigurationSetSendingEnabled,
+
+    -- * Request Lenses
+    updateConfigurationSetSendingEnabled_configurationSetName,
+    updateConfigurationSetSendingEnabled_enabled,
+
+    -- * Destructuring the Response
+    UpdateConfigurationSetSendingEnabledResponse (..),
+    newUpdateConfigurationSetSendingEnabledResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to enable or disable the email sending capabilities
+-- for a specific configuration set.
+--
+-- /See:/ 'newUpdateConfigurationSetSendingEnabled' smart constructor.
+data UpdateConfigurationSetSendingEnabled = UpdateConfigurationSetSendingEnabled'
+  { -- | The name of the configuration set that you want to update.
+    configurationSetName :: Prelude.Text,
+    -- | Describes whether email sending is enabled or disabled for the
+    -- configuration set.
+    enabled :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetSendingEnabled' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'updateConfigurationSetSendingEnabled_configurationSetName' - The name of the configuration set that you want to update.
+--
+-- 'enabled', 'updateConfigurationSetSendingEnabled_enabled' - Describes whether email sending is enabled or disabled for the
+-- configuration set.
+newUpdateConfigurationSetSendingEnabled ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'enabled'
+  Prelude.Bool ->
+  UpdateConfigurationSetSendingEnabled
+newUpdateConfigurationSetSendingEnabled
+  pConfigurationSetName_
+  pEnabled_ =
+    UpdateConfigurationSetSendingEnabled'
+      { configurationSetName =
+          pConfigurationSetName_,
+        enabled = pEnabled_
+      }
+
+-- | The name of the configuration set that you want to update.
+updateConfigurationSetSendingEnabled_configurationSetName :: Lens.Lens' UpdateConfigurationSetSendingEnabled Prelude.Text
+updateConfigurationSetSendingEnabled_configurationSetName = Lens.lens (\UpdateConfigurationSetSendingEnabled' {configurationSetName} -> configurationSetName) (\s@UpdateConfigurationSetSendingEnabled' {} a -> s {configurationSetName = a} :: UpdateConfigurationSetSendingEnabled)
+
+-- | Describes whether email sending is enabled or disabled for the
+-- configuration set.
+updateConfigurationSetSendingEnabled_enabled :: Lens.Lens' UpdateConfigurationSetSendingEnabled Prelude.Bool
+updateConfigurationSetSendingEnabled_enabled = Lens.lens (\UpdateConfigurationSetSendingEnabled' {enabled} -> enabled) (\s@UpdateConfigurationSetSendingEnabled' {} a -> s {enabled = a} :: UpdateConfigurationSetSendingEnabled)
+
+instance
+  Core.AWSRequest
+    UpdateConfigurationSetSendingEnabled
+  where
+  type
+    AWSResponse UpdateConfigurationSetSendingEnabled =
+      UpdateConfigurationSetSendingEnabledResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdateConfigurationSetSendingEnabledResponse'
+
+instance
+  Prelude.Hashable
+    UpdateConfigurationSetSendingEnabled
+  where
+  hashWithSalt
+    _salt
+    UpdateConfigurationSetSendingEnabled' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` enabled
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetSendingEnabled
+  where
+  rnf UpdateConfigurationSetSendingEnabled' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf enabled
+
+instance
+  Data.ToHeaders
+    UpdateConfigurationSetSendingEnabled
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    UpdateConfigurationSetSendingEnabled
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateConfigurationSetSendingEnabled
+  where
+  toQuery UpdateConfigurationSetSendingEnabled' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "UpdateConfigurationSetSendingEnabled" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "Enabled" Data.=: enabled
+      ]
+
+-- | /See:/ 'newUpdateConfigurationSetSendingEnabledResponse' smart constructor.
+data UpdateConfigurationSetSendingEnabledResponse = UpdateConfigurationSetSendingEnabledResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetSendingEnabledResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateConfigurationSetSendingEnabledResponse ::
+  UpdateConfigurationSetSendingEnabledResponse
+newUpdateConfigurationSetSendingEnabledResponse =
+  UpdateConfigurationSetSendingEnabledResponse'
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetSendingEnabledResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/UpdateConfigurationSetTrackingOptions.hs b/gen/Amazonka/SES/UpdateConfigurationSetTrackingOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateConfigurationSetTrackingOptions.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateConfigurationSetTrackingOptions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Modifies an association between a configuration set and a custom domain
+-- for open and click event tracking.
+--
+-- By default, images and links used for tracking open and click events are
+-- hosted on domains operated by Amazon SES. You can configure a subdomain
+-- of your own to handle these events. For information about using custom
+-- domains, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Amazon SES Developer Guide>.
+module Amazonka.SES.UpdateConfigurationSetTrackingOptions
+  ( -- * Creating a Request
+    UpdateConfigurationSetTrackingOptions (..),
+    newUpdateConfigurationSetTrackingOptions,
+
+    -- * Request Lenses
+    updateConfigurationSetTrackingOptions_configurationSetName,
+    updateConfigurationSetTrackingOptions_trackingOptions,
+
+    -- * Destructuring the Response
+    UpdateConfigurationSetTrackingOptionsResponse (..),
+    newUpdateConfigurationSetTrackingOptionsResponse,
+
+    -- * Response Lenses
+    updateConfigurationSetTrackingOptionsResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to update the tracking options for a configuration
+-- set.
+--
+-- /See:/ 'newUpdateConfigurationSetTrackingOptions' smart constructor.
+data UpdateConfigurationSetTrackingOptions = UpdateConfigurationSetTrackingOptions'
+  { -- | The name of the configuration set for which you want to update the
+    -- custom tracking domain.
+    configurationSetName :: Prelude.Text,
+    trackingOptions :: TrackingOptions
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetTrackingOptions' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'configurationSetName', 'updateConfigurationSetTrackingOptions_configurationSetName' - The name of the configuration set for which you want to update the
+-- custom tracking domain.
+--
+-- 'trackingOptions', 'updateConfigurationSetTrackingOptions_trackingOptions' - Undocumented member.
+newUpdateConfigurationSetTrackingOptions ::
+  -- | 'configurationSetName'
+  Prelude.Text ->
+  -- | 'trackingOptions'
+  TrackingOptions ->
+  UpdateConfigurationSetTrackingOptions
+newUpdateConfigurationSetTrackingOptions
+  pConfigurationSetName_
+  pTrackingOptions_ =
+    UpdateConfigurationSetTrackingOptions'
+      { configurationSetName =
+          pConfigurationSetName_,
+        trackingOptions = pTrackingOptions_
+      }
+
+-- | The name of the configuration set for which you want to update the
+-- custom tracking domain.
+updateConfigurationSetTrackingOptions_configurationSetName :: Lens.Lens' UpdateConfigurationSetTrackingOptions Prelude.Text
+updateConfigurationSetTrackingOptions_configurationSetName = Lens.lens (\UpdateConfigurationSetTrackingOptions' {configurationSetName} -> configurationSetName) (\s@UpdateConfigurationSetTrackingOptions' {} a -> s {configurationSetName = a} :: UpdateConfigurationSetTrackingOptions)
+
+-- | Undocumented member.
+updateConfigurationSetTrackingOptions_trackingOptions :: Lens.Lens' UpdateConfigurationSetTrackingOptions TrackingOptions
+updateConfigurationSetTrackingOptions_trackingOptions = Lens.lens (\UpdateConfigurationSetTrackingOptions' {trackingOptions} -> trackingOptions) (\s@UpdateConfigurationSetTrackingOptions' {} a -> s {trackingOptions = a} :: UpdateConfigurationSetTrackingOptions)
+
+instance
+  Core.AWSRequest
+    UpdateConfigurationSetTrackingOptions
+  where
+  type
+    AWSResponse
+      UpdateConfigurationSetTrackingOptions =
+      UpdateConfigurationSetTrackingOptionsResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "UpdateConfigurationSetTrackingOptionsResult"
+      ( \s h x ->
+          UpdateConfigurationSetTrackingOptionsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    UpdateConfigurationSetTrackingOptions
+  where
+  hashWithSalt
+    _salt
+    UpdateConfigurationSetTrackingOptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` configurationSetName
+        `Prelude.hashWithSalt` trackingOptions
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetTrackingOptions
+  where
+  rnf UpdateConfigurationSetTrackingOptions' {..} =
+    Prelude.rnf configurationSetName
+      `Prelude.seq` Prelude.rnf trackingOptions
+
+instance
+  Data.ToHeaders
+    UpdateConfigurationSetTrackingOptions
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    UpdateConfigurationSetTrackingOptions
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateConfigurationSetTrackingOptions
+  where
+  toQuery UpdateConfigurationSetTrackingOptions' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "UpdateConfigurationSetTrackingOptions" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "ConfigurationSetName" Data.=: configurationSetName,
+        "TrackingOptions" Data.=: trackingOptions
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newUpdateConfigurationSetTrackingOptionsResponse' smart constructor.
+data UpdateConfigurationSetTrackingOptionsResponse = UpdateConfigurationSetTrackingOptionsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateConfigurationSetTrackingOptionsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateConfigurationSetTrackingOptionsResponse_httpStatus' - The response's http status code.
+newUpdateConfigurationSetTrackingOptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateConfigurationSetTrackingOptionsResponse
+newUpdateConfigurationSetTrackingOptionsResponse
+  pHttpStatus_ =
+    UpdateConfigurationSetTrackingOptionsResponse'
+      { httpStatus =
+          pHttpStatus_
+      }
+
+-- | The response's http status code.
+updateConfigurationSetTrackingOptionsResponse_httpStatus :: Lens.Lens' UpdateConfigurationSetTrackingOptionsResponse Prelude.Int
+updateConfigurationSetTrackingOptionsResponse_httpStatus = Lens.lens (\UpdateConfigurationSetTrackingOptionsResponse' {httpStatus} -> httpStatus) (\s@UpdateConfigurationSetTrackingOptionsResponse' {} a -> s {httpStatus = a} :: UpdateConfigurationSetTrackingOptionsResponse)
+
+instance
+  Prelude.NFData
+    UpdateConfigurationSetTrackingOptionsResponse
+  where
+  rnf
+    UpdateConfigurationSetTrackingOptionsResponse' {..} =
+      Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/UpdateCustomVerificationEmailTemplate.hs b/gen/Amazonka/SES/UpdateCustomVerificationEmailTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateCustomVerificationEmailTemplate.hs
@@ -0,0 +1,252 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateCustomVerificationEmailTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an existing custom verification email template.
+--
+-- For more information about custom verification email templates, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates>
+-- in the /Amazon SES Developer Guide/.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateCustomVerificationEmailTemplate
+  ( -- * Creating a Request
+    UpdateCustomVerificationEmailTemplate (..),
+    newUpdateCustomVerificationEmailTemplate,
+
+    -- * Request Lenses
+    updateCustomVerificationEmailTemplate_failureRedirectionURL,
+    updateCustomVerificationEmailTemplate_fromEmailAddress,
+    updateCustomVerificationEmailTemplate_successRedirectionURL,
+    updateCustomVerificationEmailTemplate_templateContent,
+    updateCustomVerificationEmailTemplate_templateSubject,
+    updateCustomVerificationEmailTemplate_templateName,
+
+    -- * Destructuring the Response
+    UpdateCustomVerificationEmailTemplateResponse (..),
+    newUpdateCustomVerificationEmailTemplateResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to update an existing custom verification email
+-- template.
+--
+-- /See:/ 'newUpdateCustomVerificationEmailTemplate' smart constructor.
+data UpdateCustomVerificationEmailTemplate = UpdateCustomVerificationEmailTemplate'
+  { -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is not successfully verified.
+    failureRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The email address that the custom verification email is sent from.
+    fromEmailAddress :: Prelude.Maybe Prelude.Text,
+    -- | The URL that the recipient of the verification email is sent to if his
+    -- or her address is successfully verified.
+    successRedirectionURL :: Prelude.Maybe Prelude.Text,
+    -- | The content of the custom verification email. The total size of the
+    -- email must be less than 10 MB. The message body may contain HTML, with
+    -- some limitations. For more information, see
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+    -- in the /Amazon SES Developer Guide/.
+    templateContent :: Prelude.Maybe Prelude.Text,
+    -- | The subject line of the custom verification email.
+    templateSubject :: Prelude.Maybe Prelude.Text,
+    -- | The name of the custom verification email template that you want to
+    -- update.
+    templateName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomVerificationEmailTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'failureRedirectionURL', 'updateCustomVerificationEmailTemplate_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+--
+-- 'fromEmailAddress', 'updateCustomVerificationEmailTemplate_fromEmailAddress' - The email address that the custom verification email is sent from.
+--
+-- 'successRedirectionURL', 'updateCustomVerificationEmailTemplate_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+--
+-- 'templateContent', 'updateCustomVerificationEmailTemplate_templateContent' - The content of the custom verification email. The total size of the
+-- email must be less than 10 MB. The message body may contain HTML, with
+-- some limitations. For more information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+-- in the /Amazon SES Developer Guide/.
+--
+-- 'templateSubject', 'updateCustomVerificationEmailTemplate_templateSubject' - The subject line of the custom verification email.
+--
+-- 'templateName', 'updateCustomVerificationEmailTemplate_templateName' - The name of the custom verification email template that you want to
+-- update.
+newUpdateCustomVerificationEmailTemplate ::
+  -- | 'templateName'
+  Prelude.Text ->
+  UpdateCustomVerificationEmailTemplate
+newUpdateCustomVerificationEmailTemplate
+  pTemplateName_ =
+    UpdateCustomVerificationEmailTemplate'
+      { failureRedirectionURL =
+          Prelude.Nothing,
+        fromEmailAddress = Prelude.Nothing,
+        successRedirectionURL =
+          Prelude.Nothing,
+        templateContent = Prelude.Nothing,
+        templateSubject = Prelude.Nothing,
+        templateName = pTemplateName_
+      }
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is not successfully verified.
+updateCustomVerificationEmailTemplate_failureRedirectionURL :: Lens.Lens' UpdateCustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+updateCustomVerificationEmailTemplate_failureRedirectionURL = Lens.lens (\UpdateCustomVerificationEmailTemplate' {failureRedirectionURL} -> failureRedirectionURL) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {failureRedirectionURL = a} :: UpdateCustomVerificationEmailTemplate)
+
+-- | The email address that the custom verification email is sent from.
+updateCustomVerificationEmailTemplate_fromEmailAddress :: Lens.Lens' UpdateCustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+updateCustomVerificationEmailTemplate_fromEmailAddress = Lens.lens (\UpdateCustomVerificationEmailTemplate' {fromEmailAddress} -> fromEmailAddress) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {fromEmailAddress = a} :: UpdateCustomVerificationEmailTemplate)
+
+-- | The URL that the recipient of the verification email is sent to if his
+-- or her address is successfully verified.
+updateCustomVerificationEmailTemplate_successRedirectionURL :: Lens.Lens' UpdateCustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+updateCustomVerificationEmailTemplate_successRedirectionURL = Lens.lens (\UpdateCustomVerificationEmailTemplate' {successRedirectionURL} -> successRedirectionURL) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {successRedirectionURL = a} :: UpdateCustomVerificationEmailTemplate)
+
+-- | The content of the custom verification email. The total size of the
+-- email must be less than 10 MB. The message body may contain HTML, with
+-- some limitations. For more information, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions>
+-- in the /Amazon SES Developer Guide/.
+updateCustomVerificationEmailTemplate_templateContent :: Lens.Lens' UpdateCustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+updateCustomVerificationEmailTemplate_templateContent = Lens.lens (\UpdateCustomVerificationEmailTemplate' {templateContent} -> templateContent) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {templateContent = a} :: UpdateCustomVerificationEmailTemplate)
+
+-- | The subject line of the custom verification email.
+updateCustomVerificationEmailTemplate_templateSubject :: Lens.Lens' UpdateCustomVerificationEmailTemplate (Prelude.Maybe Prelude.Text)
+updateCustomVerificationEmailTemplate_templateSubject = Lens.lens (\UpdateCustomVerificationEmailTemplate' {templateSubject} -> templateSubject) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {templateSubject = a} :: UpdateCustomVerificationEmailTemplate)
+
+-- | The name of the custom verification email template that you want to
+-- update.
+updateCustomVerificationEmailTemplate_templateName :: Lens.Lens' UpdateCustomVerificationEmailTemplate Prelude.Text
+updateCustomVerificationEmailTemplate_templateName = Lens.lens (\UpdateCustomVerificationEmailTemplate' {templateName} -> templateName) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {templateName = a} :: UpdateCustomVerificationEmailTemplate)
+
+instance
+  Core.AWSRequest
+    UpdateCustomVerificationEmailTemplate
+  where
+  type
+    AWSResponse
+      UpdateCustomVerificationEmailTemplate =
+      UpdateCustomVerificationEmailTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull
+      UpdateCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.Hashable
+    UpdateCustomVerificationEmailTemplate
+  where
+  hashWithSalt
+    _salt
+    UpdateCustomVerificationEmailTemplate' {..} =
+      _salt
+        `Prelude.hashWithSalt` failureRedirectionURL
+        `Prelude.hashWithSalt` fromEmailAddress
+        `Prelude.hashWithSalt` successRedirectionURL
+        `Prelude.hashWithSalt` templateContent
+        `Prelude.hashWithSalt` templateSubject
+        `Prelude.hashWithSalt` templateName
+
+instance
+  Prelude.NFData
+    UpdateCustomVerificationEmailTemplate
+  where
+  rnf UpdateCustomVerificationEmailTemplate' {..} =
+    Prelude.rnf failureRedirectionURL
+      `Prelude.seq` Prelude.rnf fromEmailAddress
+      `Prelude.seq` Prelude.rnf successRedirectionURL
+      `Prelude.seq` Prelude.rnf templateContent
+      `Prelude.seq` Prelude.rnf templateSubject
+      `Prelude.seq` Prelude.rnf templateName
+
+instance
+  Data.ToHeaders
+    UpdateCustomVerificationEmailTemplate
+  where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance
+  Data.ToPath
+    UpdateCustomVerificationEmailTemplate
+  where
+  toPath = Prelude.const "/"
+
+instance
+  Data.ToQuery
+    UpdateCustomVerificationEmailTemplate
+  where
+  toQuery UpdateCustomVerificationEmailTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ( "UpdateCustomVerificationEmailTemplate" ::
+                      Prelude.ByteString
+                  ),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "FailureRedirectionURL"
+          Data.=: failureRedirectionURL,
+        "FromEmailAddress" Data.=: fromEmailAddress,
+        "SuccessRedirectionURL"
+          Data.=: successRedirectionURL,
+        "TemplateContent" Data.=: templateContent,
+        "TemplateSubject" Data.=: templateSubject,
+        "TemplateName" Data.=: templateName
+      ]
+
+-- | /See:/ 'newUpdateCustomVerificationEmailTemplateResponse' smart constructor.
+data UpdateCustomVerificationEmailTemplateResponse = UpdateCustomVerificationEmailTemplateResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateCustomVerificationEmailTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newUpdateCustomVerificationEmailTemplateResponse ::
+  UpdateCustomVerificationEmailTemplateResponse
+newUpdateCustomVerificationEmailTemplateResponse =
+  UpdateCustomVerificationEmailTemplateResponse'
+
+instance
+  Prelude.NFData
+    UpdateCustomVerificationEmailTemplateResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/UpdateReceiptRule.hs b/gen/Amazonka/SES/UpdateReceiptRule.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateReceiptRule.hs
@@ -0,0 +1,175 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateReceiptRule
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates a receipt rule.
+--
+-- For information about managing receipt rules, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-managing-receipt-rules.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateReceiptRule
+  ( -- * Creating a Request
+    UpdateReceiptRule (..),
+    newUpdateReceiptRule,
+
+    -- * Request Lenses
+    updateReceiptRule_ruleSetName,
+    updateReceiptRule_rule,
+
+    -- * Destructuring the Response
+    UpdateReceiptRuleResponse (..),
+    newUpdateReceiptRuleResponse,
+
+    -- * Response Lenses
+    updateReceiptRuleResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to update a receipt rule. You use receipt rules to
+-- receive email with Amazon SES. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newUpdateReceiptRule' smart constructor.
+data UpdateReceiptRule = UpdateReceiptRule'
+  { -- | The name of the receipt rule set that the receipt rule belongs to.
+    ruleSetName :: Prelude.Text,
+    -- | A data structure that contains the updated receipt rule information.
+    rule :: ReceiptRule
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateReceiptRule' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'ruleSetName', 'updateReceiptRule_ruleSetName' - The name of the receipt rule set that the receipt rule belongs to.
+--
+-- 'rule', 'updateReceiptRule_rule' - A data structure that contains the updated receipt rule information.
+newUpdateReceiptRule ::
+  -- | 'ruleSetName'
+  Prelude.Text ->
+  -- | 'rule'
+  ReceiptRule ->
+  UpdateReceiptRule
+newUpdateReceiptRule pRuleSetName_ pRule_ =
+  UpdateReceiptRule'
+    { ruleSetName = pRuleSetName_,
+      rule = pRule_
+    }
+
+-- | The name of the receipt rule set that the receipt rule belongs to.
+updateReceiptRule_ruleSetName :: Lens.Lens' UpdateReceiptRule Prelude.Text
+updateReceiptRule_ruleSetName = Lens.lens (\UpdateReceiptRule' {ruleSetName} -> ruleSetName) (\s@UpdateReceiptRule' {} a -> s {ruleSetName = a} :: UpdateReceiptRule)
+
+-- | A data structure that contains the updated receipt rule information.
+updateReceiptRule_rule :: Lens.Lens' UpdateReceiptRule ReceiptRule
+updateReceiptRule_rule = Lens.lens (\UpdateReceiptRule' {rule} -> rule) (\s@UpdateReceiptRule' {} a -> s {rule = a} :: UpdateReceiptRule)
+
+instance Core.AWSRequest UpdateReceiptRule where
+  type
+    AWSResponse UpdateReceiptRule =
+      UpdateReceiptRuleResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "UpdateReceiptRuleResult"
+      ( \s h x ->
+          UpdateReceiptRuleResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateReceiptRule where
+  hashWithSalt _salt UpdateReceiptRule' {..} =
+    _salt
+      `Prelude.hashWithSalt` ruleSetName
+      `Prelude.hashWithSalt` rule
+
+instance Prelude.NFData UpdateReceiptRule where
+  rnf UpdateReceiptRule' {..} =
+    Prelude.rnf ruleSetName
+      `Prelude.seq` Prelude.rnf rule
+
+instance Data.ToHeaders UpdateReceiptRule where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath UpdateReceiptRule where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateReceiptRule where
+  toQuery UpdateReceiptRule' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("UpdateReceiptRule" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "RuleSetName" Data.=: ruleSetName,
+        "Rule" Data.=: rule
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newUpdateReceiptRuleResponse' smart constructor.
+data UpdateReceiptRuleResponse = UpdateReceiptRuleResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateReceiptRuleResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateReceiptRuleResponse_httpStatus' - The response's http status code.
+newUpdateReceiptRuleResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateReceiptRuleResponse
+newUpdateReceiptRuleResponse pHttpStatus_ =
+  UpdateReceiptRuleResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+updateReceiptRuleResponse_httpStatus :: Lens.Lens' UpdateReceiptRuleResponse Prelude.Int
+updateReceiptRuleResponse_httpStatus = Lens.lens (\UpdateReceiptRuleResponse' {httpStatus} -> httpStatus) (\s@UpdateReceiptRuleResponse' {} a -> s {httpStatus = a} :: UpdateReceiptRuleResponse)
+
+instance Prelude.NFData UpdateReceiptRuleResponse where
+  rnf UpdateReceiptRuleResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/UpdateTemplate.hs b/gen/Amazonka/SES/UpdateTemplate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/UpdateTemplate.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.UpdateTemplate
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates an email template. Email templates enable you to send
+-- personalized email to one or more destinations in a single API
+-- operation. For more information, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.UpdateTemplate
+  ( -- * Creating a Request
+    UpdateTemplate (..),
+    newUpdateTemplate,
+
+    -- * Request Lenses
+    updateTemplate_template,
+
+    -- * Destructuring the Response
+    UpdateTemplateResponse (..),
+    newUpdateTemplateResponse,
+
+    -- * Response Lenses
+    updateTemplateResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | /See:/ 'newUpdateTemplate' smart constructor.
+data UpdateTemplate = UpdateTemplate'
+  { template :: Template
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplate' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'template', 'updateTemplate_template' - Undocumented member.
+newUpdateTemplate ::
+  -- | 'template'
+  Template ->
+  UpdateTemplate
+newUpdateTemplate pTemplate_ =
+  UpdateTemplate' {template = pTemplate_}
+
+-- | Undocumented member.
+updateTemplate_template :: Lens.Lens' UpdateTemplate Template
+updateTemplate_template = Lens.lens (\UpdateTemplate' {template} -> template) (\s@UpdateTemplate' {} a -> s {template = a} :: UpdateTemplate)
+
+instance Core.AWSRequest UpdateTemplate where
+  type
+    AWSResponse UpdateTemplate =
+      UpdateTemplateResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "UpdateTemplateResult"
+      ( \s h x ->
+          UpdateTemplateResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateTemplate where
+  hashWithSalt _salt UpdateTemplate' {..} =
+    _salt `Prelude.hashWithSalt` template
+
+instance Prelude.NFData UpdateTemplate where
+  rnf UpdateTemplate' {..} = Prelude.rnf template
+
+instance Data.ToHeaders UpdateTemplate where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath UpdateTemplate where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery UpdateTemplate where
+  toQuery UpdateTemplate' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("UpdateTemplate" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Template" Data.=: template
+      ]
+
+-- | /See:/ 'newUpdateTemplateResponse' smart constructor.
+data UpdateTemplateResponse = UpdateTemplateResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateTemplateResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'updateTemplateResponse_httpStatus' - The response's http status code.
+newUpdateTemplateResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateTemplateResponse
+newUpdateTemplateResponse pHttpStatus_ =
+  UpdateTemplateResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+updateTemplateResponse_httpStatus :: Lens.Lens' UpdateTemplateResponse Prelude.Int
+updateTemplateResponse_httpStatus = Lens.lens (\UpdateTemplateResponse' {httpStatus} -> httpStatus) (\s@UpdateTemplateResponse' {} a -> s {httpStatus = a} :: UpdateTemplateResponse)
+
+instance Prelude.NFData UpdateTemplateResponse where
+  rnf UpdateTemplateResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/VerifyDomainDkim.hs b/gen/Amazonka/SES/VerifyDomainDkim.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/VerifyDomainDkim.hs
@@ -0,0 +1,242 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.VerifyDomainDkim
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns a set of DKIM tokens for a domain identity.
+--
+-- When you execute the @VerifyDomainDkim@ operation, the domain that you
+-- specify is added to the list of identities that are associated with your
+-- account. This is true even if you haven\'t already associated the domain
+-- with your account by using the @VerifyDomainIdentity@ operation.
+-- However, you can\'t send email from the domain until you either
+-- successfully
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html verify it>
+-- or you successfully
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html set up DKIM for it>.
+--
+-- You use the tokens that are generated by this operation to create CNAME
+-- records. When Amazon SES detects that you\'ve added these records to the
+-- DNS configuration for a domain, you can start sending email from that
+-- domain. You can start sending email even if you haven\'t added the TXT
+-- record provided by the VerifyDomainIdentity operation to the DNS
+-- configuration for your domain. All email that you send from the domain
+-- is authenticated using DKIM.
+--
+-- To create the CNAME records for DKIM authentication, use the following
+-- values:
+--
+-- -   __Name__: /token/._domainkey./example.com/
+--
+-- -   __Type__: CNAME
+--
+-- -   __Value__: /token/.dkim.amazonses.com
+--
+-- In the preceding example, replace /token/ with one of the tokens that
+-- are generated when you execute this operation. Replace /example.com/
+-- with your domain. Repeat this process for each token that\'s generated
+-- by this operation.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.VerifyDomainDkim
+  ( -- * Creating a Request
+    VerifyDomainDkim (..),
+    newVerifyDomainDkim,
+
+    -- * Request Lenses
+    verifyDomainDkim_domain,
+
+    -- * Destructuring the Response
+    VerifyDomainDkimResponse (..),
+    newVerifyDomainDkimResponse,
+
+    -- * Response Lenses
+    verifyDomainDkimResponse_httpStatus,
+    verifyDomainDkimResponse_dkimTokens,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to generate the CNAME records needed to set up Easy
+-- DKIM with Amazon SES. For more information about setting up Easy DKIM,
+-- see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newVerifyDomainDkim' smart constructor.
+data VerifyDomainDkim = VerifyDomainDkim'
+  { -- | The name of the domain to be verified for Easy DKIM signing.
+    domain :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyDomainDkim' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'verifyDomainDkim_domain' - The name of the domain to be verified for Easy DKIM signing.
+newVerifyDomainDkim ::
+  -- | 'domain'
+  Prelude.Text ->
+  VerifyDomainDkim
+newVerifyDomainDkim pDomain_ =
+  VerifyDomainDkim' {domain = pDomain_}
+
+-- | The name of the domain to be verified for Easy DKIM signing.
+verifyDomainDkim_domain :: Lens.Lens' VerifyDomainDkim Prelude.Text
+verifyDomainDkim_domain = Lens.lens (\VerifyDomainDkim' {domain} -> domain) (\s@VerifyDomainDkim' {} a -> s {domain = a} :: VerifyDomainDkim)
+
+instance Core.AWSRequest VerifyDomainDkim where
+  type
+    AWSResponse VerifyDomainDkim =
+      VerifyDomainDkimResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "VerifyDomainDkimResult"
+      ( \s h x ->
+          VerifyDomainDkimResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> ( x
+                            Data..@? "DkimTokens"
+                            Core..!@ Prelude.mempty
+                            Prelude.>>= Data.parseXMLList "member"
+                        )
+      )
+
+instance Prelude.Hashable VerifyDomainDkim where
+  hashWithSalt _salt VerifyDomainDkim' {..} =
+    _salt `Prelude.hashWithSalt` domain
+
+instance Prelude.NFData VerifyDomainDkim where
+  rnf VerifyDomainDkim' {..} = Prelude.rnf domain
+
+instance Data.ToHeaders VerifyDomainDkim where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath VerifyDomainDkim where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery VerifyDomainDkim where
+  toQuery VerifyDomainDkim' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("VerifyDomainDkim" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Domain" Data.=: domain
+      ]
+
+-- | Returns CNAME records that you must publish to the DNS server of your
+-- domain to set up Easy DKIM with Amazon SES.
+--
+-- /See:/ 'newVerifyDomainDkimResponse' smart constructor.
+data VerifyDomainDkimResponse = VerifyDomainDkimResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A set of character strings that represent the domain\'s identity. If the
+    -- identity is an email address, the tokens represent the domain of that
+    -- address.
+    --
+    -- Using these tokens, you need to create DNS CNAME records that point to
+    -- DKIM public keys that are hosted by Amazon SES. Amazon Web Services
+    -- eventually detects that you\'ve updated your DNS records. This detection
+    -- process might take up to 72 hours. After successful detection, Amazon
+    -- SES is 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, see
+    -- the
+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+    dkimTokens :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyDomainDkimResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'verifyDomainDkimResponse_httpStatus' - The response's http status code.
+--
+-- 'dkimTokens', 'verifyDomainDkimResponse_dkimTokens' - A set of character strings that represent the domain\'s identity. If the
+-- identity is an email address, the tokens represent the domain of that
+-- address.
+--
+-- Using these tokens, you need to create DNS CNAME records that point to
+-- DKIM public keys that are hosted by Amazon SES. Amazon Web Services
+-- eventually detects that you\'ve updated your DNS records. This detection
+-- process might take up to 72 hours. After successful detection, Amazon
+-- SES is 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, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+newVerifyDomainDkimResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  VerifyDomainDkimResponse
+newVerifyDomainDkimResponse pHttpStatus_ =
+  VerifyDomainDkimResponse'
+    { httpStatus =
+        pHttpStatus_,
+      dkimTokens = Prelude.mempty
+    }
+
+-- | The response's http status code.
+verifyDomainDkimResponse_httpStatus :: Lens.Lens' VerifyDomainDkimResponse Prelude.Int
+verifyDomainDkimResponse_httpStatus = Lens.lens (\VerifyDomainDkimResponse' {httpStatus} -> httpStatus) (\s@VerifyDomainDkimResponse' {} a -> s {httpStatus = a} :: VerifyDomainDkimResponse)
+
+-- | A set of character strings that represent the domain\'s identity. If the
+-- identity is an email address, the tokens represent the domain of that
+-- address.
+--
+-- Using these tokens, you need to create DNS CNAME records that point to
+-- DKIM public keys that are hosted by Amazon SES. Amazon Web Services
+-- eventually detects that you\'ve updated your DNS records. This detection
+-- process might take up to 72 hours. After successful detection, Amazon
+-- SES is 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, see
+-- the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide>.
+verifyDomainDkimResponse_dkimTokens :: Lens.Lens' VerifyDomainDkimResponse [Prelude.Text]
+verifyDomainDkimResponse_dkimTokens = Lens.lens (\VerifyDomainDkimResponse' {dkimTokens} -> dkimTokens) (\s@VerifyDomainDkimResponse' {} a -> s {dkimTokens = a} :: VerifyDomainDkimResponse) Prelude.. Lens.coerced
+
+instance Prelude.NFData VerifyDomainDkimResponse where
+  rnf VerifyDomainDkimResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf dkimTokens
diff --git a/gen/Amazonka/SES/VerifyDomainIdentity.hs b/gen/Amazonka/SES/VerifyDomainIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/VerifyDomainIdentity.hs
@@ -0,0 +1,200 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.VerifyDomainIdentity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a domain to the list of identities for your Amazon SES account in
+-- the current AWS Region and attempts to verify it. For more information
+-- about verifying domains, see
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains>
+-- in the /Amazon SES Developer Guide./
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.VerifyDomainIdentity
+  ( -- * Creating a Request
+    VerifyDomainIdentity (..),
+    newVerifyDomainIdentity,
+
+    -- * Request Lenses
+    verifyDomainIdentity_domain,
+
+    -- * Destructuring the Response
+    VerifyDomainIdentityResponse (..),
+    newVerifyDomainIdentityResponse,
+
+    -- * Response Lenses
+    verifyDomainIdentityResponse_httpStatus,
+    verifyDomainIdentityResponse_verificationToken,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to begin Amazon SES domain verification and to
+-- generate the TXT records that you must publish to the DNS server of your
+-- domain to complete the verification. For information about domain
+-- verification, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newVerifyDomainIdentity' smart constructor.
+data VerifyDomainIdentity = VerifyDomainIdentity'
+  { -- | The domain to be verified.
+    domain :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyDomainIdentity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'domain', 'verifyDomainIdentity_domain' - The domain to be verified.
+newVerifyDomainIdentity ::
+  -- | 'domain'
+  Prelude.Text ->
+  VerifyDomainIdentity
+newVerifyDomainIdentity pDomain_ =
+  VerifyDomainIdentity' {domain = pDomain_}
+
+-- | The domain to be verified.
+verifyDomainIdentity_domain :: Lens.Lens' VerifyDomainIdentity Prelude.Text
+verifyDomainIdentity_domain = Lens.lens (\VerifyDomainIdentity' {domain} -> domain) (\s@VerifyDomainIdentity' {} a -> s {domain = a} :: VerifyDomainIdentity)
+
+instance Core.AWSRequest VerifyDomainIdentity where
+  type
+    AWSResponse VerifyDomainIdentity =
+      VerifyDomainIdentityResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "VerifyDomainIdentityResult"
+      ( \s h x ->
+          VerifyDomainIdentityResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+            Prelude.<*> (x Data..@ "VerificationToken")
+      )
+
+instance Prelude.Hashable VerifyDomainIdentity where
+  hashWithSalt _salt VerifyDomainIdentity' {..} =
+    _salt `Prelude.hashWithSalt` domain
+
+instance Prelude.NFData VerifyDomainIdentity where
+  rnf VerifyDomainIdentity' {..} = Prelude.rnf domain
+
+instance Data.ToHeaders VerifyDomainIdentity where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath VerifyDomainIdentity where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery VerifyDomainIdentity where
+  toQuery VerifyDomainIdentity' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("VerifyDomainIdentity" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "Domain" Data.=: domain
+      ]
+
+-- | Returns a TXT record that you must publish to the DNS server of your
+-- domain to complete domain verification with Amazon SES.
+--
+-- /See:/ 'newVerifyDomainIdentityResponse' smart constructor.
+data VerifyDomainIdentityResponse = VerifyDomainIdentityResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int,
+    -- | A TXT record that you must place in the DNS settings of the domain to
+    -- complete domain verification with Amazon SES.
+    --
+    -- As Amazon SES searches for the TXT record, the domain\'s verification
+    -- status is \"Pending\". When Amazon SES detects the record, the domain\'s
+    -- verification status changes to \"Success\". If Amazon SES is unable to
+    -- detect the record within 72 hours, the domain\'s verification status
+    -- changes to \"Failed.\" In that case, if you still want to verify the
+    -- domain, you must restart the verification process from the beginning.
+    verificationToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyDomainIdentityResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'verifyDomainIdentityResponse_httpStatus' - The response's http status code.
+--
+-- 'verificationToken', 'verifyDomainIdentityResponse_verificationToken' - A TXT record that you must place in the DNS settings of the domain to
+-- complete domain verification with Amazon SES.
+--
+-- As Amazon SES searches for the TXT record, the domain\'s verification
+-- status is \"Pending\". When Amazon SES detects the record, the domain\'s
+-- verification status changes to \"Success\". If Amazon SES is unable to
+-- detect the record within 72 hours, the domain\'s verification status
+-- changes to \"Failed.\" In that case, if you still want to verify the
+-- domain, you must restart the verification process from the beginning.
+newVerifyDomainIdentityResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  -- | 'verificationToken'
+  Prelude.Text ->
+  VerifyDomainIdentityResponse
+newVerifyDomainIdentityResponse
+  pHttpStatus_
+  pVerificationToken_ =
+    VerifyDomainIdentityResponse'
+      { httpStatus =
+          pHttpStatus_,
+        verificationToken = pVerificationToken_
+      }
+
+-- | The response's http status code.
+verifyDomainIdentityResponse_httpStatus :: Lens.Lens' VerifyDomainIdentityResponse Prelude.Int
+verifyDomainIdentityResponse_httpStatus = Lens.lens (\VerifyDomainIdentityResponse' {httpStatus} -> httpStatus) (\s@VerifyDomainIdentityResponse' {} a -> s {httpStatus = a} :: VerifyDomainIdentityResponse)
+
+-- | A TXT record that you must place in the DNS settings of the domain to
+-- complete domain verification with Amazon SES.
+--
+-- As Amazon SES searches for the TXT record, the domain\'s verification
+-- status is \"Pending\". When Amazon SES detects the record, the domain\'s
+-- verification status changes to \"Success\". If Amazon SES is unable to
+-- detect the record within 72 hours, the domain\'s verification status
+-- changes to \"Failed.\" In that case, if you still want to verify the
+-- domain, you must restart the verification process from the beginning.
+verifyDomainIdentityResponse_verificationToken :: Lens.Lens' VerifyDomainIdentityResponse Prelude.Text
+verifyDomainIdentityResponse_verificationToken = Lens.lens (\VerifyDomainIdentityResponse' {verificationToken} -> verificationToken) (\s@VerifyDomainIdentityResponse' {} a -> s {verificationToken = a} :: VerifyDomainIdentityResponse)
+
+instance Prelude.NFData VerifyDomainIdentityResponse where
+  rnf VerifyDomainIdentityResponse' {..} =
+    Prelude.rnf httpStatus
+      `Prelude.seq` Prelude.rnf verificationToken
diff --git a/gen/Amazonka/SES/VerifyEmailAddress.hs b/gen/Amazonka/SES/VerifyEmailAddress.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/VerifyEmailAddress.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.VerifyEmailAddress
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deprecated. Use the @VerifyEmailIdentity@ operation to verify a new
+-- email address.
+module Amazonka.SES.VerifyEmailAddress
+  ( -- * Creating a Request
+    VerifyEmailAddress (..),
+    newVerifyEmailAddress,
+
+    -- * Request Lenses
+    verifyEmailAddress_emailAddress,
+
+    -- * Destructuring the Response
+    VerifyEmailAddressResponse (..),
+    newVerifyEmailAddressResponse,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to begin email address verification with Amazon
+-- SES. For information about email address verification, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newVerifyEmailAddress' smart constructor.
+data VerifyEmailAddress = VerifyEmailAddress'
+  { -- | The email address to be verified.
+    emailAddress :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyEmailAddress' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailAddress', 'verifyEmailAddress_emailAddress' - The email address to be verified.
+newVerifyEmailAddress ::
+  -- | 'emailAddress'
+  Prelude.Text ->
+  VerifyEmailAddress
+newVerifyEmailAddress pEmailAddress_ =
+  VerifyEmailAddress' {emailAddress = pEmailAddress_}
+
+-- | The email address to be verified.
+verifyEmailAddress_emailAddress :: Lens.Lens' VerifyEmailAddress Prelude.Text
+verifyEmailAddress_emailAddress = Lens.lens (\VerifyEmailAddress' {emailAddress} -> emailAddress) (\s@VerifyEmailAddress' {} a -> s {emailAddress = a} :: VerifyEmailAddress)
+
+instance Core.AWSRequest VerifyEmailAddress where
+  type
+    AWSResponse VerifyEmailAddress =
+      VerifyEmailAddressResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveNull VerifyEmailAddressResponse'
+
+instance Prelude.Hashable VerifyEmailAddress where
+  hashWithSalt _salt VerifyEmailAddress' {..} =
+    _salt `Prelude.hashWithSalt` emailAddress
+
+instance Prelude.NFData VerifyEmailAddress where
+  rnf VerifyEmailAddress' {..} =
+    Prelude.rnf emailAddress
+
+instance Data.ToHeaders VerifyEmailAddress where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath VerifyEmailAddress where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery VerifyEmailAddress where
+  toQuery VerifyEmailAddress' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("VerifyEmailAddress" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "EmailAddress" Data.=: emailAddress
+      ]
+
+-- | /See:/ 'newVerifyEmailAddressResponse' smart constructor.
+data VerifyEmailAddressResponse = VerifyEmailAddressResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyEmailAddressResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newVerifyEmailAddressResponse ::
+  VerifyEmailAddressResponse
+newVerifyEmailAddressResponse =
+  VerifyEmailAddressResponse'
+
+instance Prelude.NFData VerifyEmailAddressResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/SES/VerifyEmailIdentity.hs b/gen/Amazonka/SES/VerifyEmailIdentity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/VerifyEmailIdentity.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.VerifyEmailIdentity
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds an email address to the list of identities for your Amazon SES
+-- account in the current AWS region and attempts to verify it. As a result
+-- of executing this operation, a verification email is sent to the
+-- specified address.
+--
+-- You can execute this operation no more than once per second.
+module Amazonka.SES.VerifyEmailIdentity
+  ( -- * Creating a Request
+    VerifyEmailIdentity (..),
+    newVerifyEmailIdentity,
+
+    -- * Request Lenses
+    verifyEmailIdentity_emailAddress,
+
+    -- * Destructuring the Response
+    VerifyEmailIdentityResponse (..),
+    newVerifyEmailIdentityResponse,
+
+    -- * Response Lenses
+    verifyEmailIdentityResponse_httpStatus,
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.SES.Types
+
+-- | Represents a request to begin email address verification with Amazon
+-- SES. For information about email address verification, see the
+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html Amazon SES Developer Guide>.
+--
+-- /See:/ 'newVerifyEmailIdentity' smart constructor.
+data VerifyEmailIdentity = VerifyEmailIdentity'
+  { -- | The email address to be verified.
+    emailAddress :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyEmailIdentity' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'emailAddress', 'verifyEmailIdentity_emailAddress' - The email address to be verified.
+newVerifyEmailIdentity ::
+  -- | 'emailAddress'
+  Prelude.Text ->
+  VerifyEmailIdentity
+newVerifyEmailIdentity pEmailAddress_ =
+  VerifyEmailIdentity' {emailAddress = pEmailAddress_}
+
+-- | The email address to be verified.
+verifyEmailIdentity_emailAddress :: Lens.Lens' VerifyEmailIdentity Prelude.Text
+verifyEmailIdentity_emailAddress = Lens.lens (\VerifyEmailIdentity' {emailAddress} -> emailAddress) (\s@VerifyEmailIdentity' {} a -> s {emailAddress = a} :: VerifyEmailIdentity)
+
+instance Core.AWSRequest VerifyEmailIdentity where
+  type
+    AWSResponse VerifyEmailIdentity =
+      VerifyEmailIdentityResponse
+  request overrides =
+    Request.postQuery (overrides defaultService)
+  response =
+    Response.receiveXMLWrapper
+      "VerifyEmailIdentityResult"
+      ( \s h x ->
+          VerifyEmailIdentityResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable VerifyEmailIdentity where
+  hashWithSalt _salt VerifyEmailIdentity' {..} =
+    _salt `Prelude.hashWithSalt` emailAddress
+
+instance Prelude.NFData VerifyEmailIdentity where
+  rnf VerifyEmailIdentity' {..} =
+    Prelude.rnf emailAddress
+
+instance Data.ToHeaders VerifyEmailIdentity where
+  toHeaders = Prelude.const Prelude.mempty
+
+instance Data.ToPath VerifyEmailIdentity where
+  toPath = Prelude.const "/"
+
+instance Data.ToQuery VerifyEmailIdentity where
+  toQuery VerifyEmailIdentity' {..} =
+    Prelude.mconcat
+      [ "Action"
+          Data.=: ("VerifyEmailIdentity" :: Prelude.ByteString),
+        "Version"
+          Data.=: ("2010-12-01" :: Prelude.ByteString),
+        "EmailAddress" Data.=: emailAddress
+      ]
+
+-- | An empty element returned on a successful request.
+--
+-- /See:/ 'newVerifyEmailIdentityResponse' smart constructor.
+data VerifyEmailIdentityResponse = VerifyEmailIdentityResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'VerifyEmailIdentityResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'verifyEmailIdentityResponse_httpStatus' - The response's http status code.
+newVerifyEmailIdentityResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  VerifyEmailIdentityResponse
+newVerifyEmailIdentityResponse pHttpStatus_ =
+  VerifyEmailIdentityResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+verifyEmailIdentityResponse_httpStatus :: Lens.Lens' VerifyEmailIdentityResponse Prelude.Int
+verifyEmailIdentityResponse_httpStatus = Lens.lens (\VerifyEmailIdentityResponse' {httpStatus} -> httpStatus) (\s@VerifyEmailIdentityResponse' {} a -> s {httpStatus = a} :: VerifyEmailIdentityResponse)
+
+instance Prelude.NFData VerifyEmailIdentityResponse where
+  rnf VerifyEmailIdentityResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/SES/Waiters.hs b/gen/Amazonka/SES/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/SES/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.SES.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.SES.Waiters where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import Amazonka.SES.Lens
+import Amazonka.SES.Types
diff --git a/gen/Network/AWS/SES.hs b/gen/Network/AWS/SES.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES.hs
+++ /dev/null
@@ -1,775 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SES
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- __Amazon Simple Email Service__
---
--- This is the API Reference for <https://aws.amazon.com/ses/ Amazon Simple Email Service> (Amazon SES). This documentation is intended to be used in conjunction with the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES
-    (
-    -- * Service Configuration
-      ses
-
-    -- * Errors
-    -- $errors
-
-    -- ** InvalidConfigurationSetException
-    , _InvalidConfigurationSetException
-
-    -- ** InvalidSNSDestinationException
-    , _InvalidSNSDestinationException
-
-    -- ** TemplateDoesNotExistException
-    , _TemplateDoesNotExistException
-
-    -- ** ConfigurationSetSendingPausedException
-    , _ConfigurationSetSendingPausedException
-
-    -- ** CannotDeleteException
-    , _CannotDeleteException
-
-    -- ** ProductionAccessNotGrantedException
-    , _ProductionAccessNotGrantedException
-
-    -- ** RuleDoesNotExistException
-    , _RuleDoesNotExistException
-
-    -- ** MessageRejected
-    , _MessageRejected
-
-    -- ** InvalidRenderingParameterException
-    , _InvalidRenderingParameterException
-
-    -- ** MissingRenderingAttributeException
-    , _MissingRenderingAttributeException
-
-    -- ** FromEmailAddressNotVerifiedException
-    , _FromEmailAddressNotVerifiedException
-
-    -- ** RuleSetDoesNotExistException
-    , _RuleSetDoesNotExistException
-
-    -- ** MailFromDomainNotVerifiedException
-    , _MailFromDomainNotVerifiedException
-
-    -- ** InvalidFirehoseDestinationException
-    , _InvalidFirehoseDestinationException
-
-    -- ** ConfigurationSetAlreadyExistsException
-    , _ConfigurationSetAlreadyExistsException
-
-    -- ** CustomVerificationEmailInvalidContentException
-    , _CustomVerificationEmailInvalidContentException
-
-    -- ** InvalidTrackingOptionsException
-    , _InvalidTrackingOptionsException
-
-    -- ** AccountSendingPausedException
-    , _AccountSendingPausedException
-
-    -- ** EventDestinationDoesNotExistException
-    , _EventDestinationDoesNotExistException
-
-    -- ** CustomVerificationEmailTemplateAlreadyExistsException
-    , _CustomVerificationEmailTemplateAlreadyExistsException
-
-    -- ** CustomVerificationEmailTemplateDoesNotExistException
-    , _CustomVerificationEmailTemplateDoesNotExistException
-
-    -- ** InvalidCloudWatchDestinationException
-    , _InvalidCloudWatchDestinationException
-
-    -- ** InvalidLambdaFunctionException
-    , _InvalidLambdaFunctionException
-
-    -- ** TrackingOptionsDoesNotExistException
-    , _TrackingOptionsDoesNotExistException
-
-    -- ** InvalidTemplateException
-    , _InvalidTemplateException
-
-    -- ** ConfigurationSetDoesNotExistException
-    , _ConfigurationSetDoesNotExistException
-
-    -- ** InvalidPolicyException
-    , _InvalidPolicyException
-
-    -- ** InvalidS3ConfigurationException
-    , _InvalidS3ConfigurationException
-
-    -- ** TrackingOptionsAlreadyExistsException
-    , _TrackingOptionsAlreadyExistsException
-
-    -- ** InvalidSNSTopicException
-    , _InvalidSNSTopicException
-
-    -- ** EventDestinationAlreadyExistsException
-    , _EventDestinationAlreadyExistsException
-
-    -- ** AlreadyExistsException
-    , _AlreadyExistsException
-
-    -- ** LimitExceededException
-    , _LimitExceededException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** CreateTemplate
-    , module Network.AWS.SES.CreateTemplate
-
-    -- ** DeleteConfigurationSetTrackingOptions
-    , module Network.AWS.SES.DeleteConfigurationSetTrackingOptions
-
-    -- ** UpdateConfigurationSetTrackingOptions
-    , module Network.AWS.SES.UpdateConfigurationSetTrackingOptions
-
-    -- ** CreateReceiptRuleSet
-    , module Network.AWS.SES.CreateReceiptRuleSet
-
-    -- ** SetIdentityHeadersInNotificationsEnabled
-    , module Network.AWS.SES.SetIdentityHeadersInNotificationsEnabled
-
-    -- ** GetSendQuota
-    , module Network.AWS.SES.GetSendQuota
-
-    -- ** DescribeConfigurationSet
-    , module Network.AWS.SES.DescribeConfigurationSet
-
-    -- ** PutIdentityPolicy
-    , module Network.AWS.SES.PutIdentityPolicy
-
-    -- ** DeleteCustomVerificationEmailTemplate
-    , module Network.AWS.SES.DeleteCustomVerificationEmailTemplate
-
-    -- ** DeleteIdentityPolicy
-    , module Network.AWS.SES.DeleteIdentityPolicy
-
-    -- ** UpdateCustomVerificationEmailTemplate
-    , module Network.AWS.SES.UpdateCustomVerificationEmailTemplate
-
-    -- ** SendCustomVerificationEmail
-    , module Network.AWS.SES.SendCustomVerificationEmail
-
-    -- ** GetIdentityNotificationAttributes
-    , module Network.AWS.SES.GetIdentityNotificationAttributes
-
-    -- ** UpdateConfigurationSetReputationMetricsEnabled
-    , module Network.AWS.SES.UpdateConfigurationSetReputationMetricsEnabled
-
-    -- ** ListIdentityPolicies
-    , module Network.AWS.SES.ListIdentityPolicies
-
-    -- ** SetIdentityDkimEnabled
-    , module Network.AWS.SES.SetIdentityDkimEnabled
-
-    -- ** ListReceiptFilters
-    , module Network.AWS.SES.ListReceiptFilters
-
-    -- ** DescribeReceiptRuleSet
-    , module Network.AWS.SES.DescribeReceiptRuleSet
-
-    -- ** GetIdentityMailFromDomainAttributes
-    , module Network.AWS.SES.GetIdentityMailFromDomainAttributes
-
-    -- ** CreateReceiptFilter
-    , module Network.AWS.SES.CreateReceiptFilter
-
-    -- ** UpdateConfigurationSetEventDestination
-    , module Network.AWS.SES.UpdateConfigurationSetEventDestination
-
-    -- ** DeleteConfigurationSetEventDestination
-    , module Network.AWS.SES.DeleteConfigurationSetEventDestination
-
-    -- ** SetIdentityMailFromDomain
-    , module Network.AWS.SES.SetIdentityMailFromDomain
-
-    -- ** SetIdentityFeedbackForwardingEnabled
-    , module Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-
-    -- ** ListConfigurationSets
-    , module Network.AWS.SES.ListConfigurationSets
-
-    -- ** DeleteConfigurationSet
-    , module Network.AWS.SES.DeleteConfigurationSet
-
-    -- ** GetIdentityVerificationAttributes
-    , module Network.AWS.SES.GetIdentityVerificationAttributes
-
-    -- ** GetIdentityPolicies
-    , module Network.AWS.SES.GetIdentityPolicies
-
-    -- ** ListTemplates
-    , module Network.AWS.SES.ListTemplates
-
-    -- ** VerifyDomainIdentity
-    , module Network.AWS.SES.VerifyDomainIdentity
-
-    -- ** UpdateTemplate
-    , module Network.AWS.SES.UpdateTemplate
-
-    -- ** DeleteTemplate
-    , module Network.AWS.SES.DeleteTemplate
-
-    -- ** 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
-
-    -- ** SendTemplatedEmail
-    , module Network.AWS.SES.SendTemplatedEmail
-
-    -- ** VerifyDomainDkim
-    , module Network.AWS.SES.VerifyDomainDkim
-
-    -- ** TestRenderTemplate
-    , module Network.AWS.SES.TestRenderTemplate
-
-    -- ** SendBulkTemplatedEmail
-    , module Network.AWS.SES.SendBulkTemplatedEmail
-
-    -- ** SendRawEmail
-    , module Network.AWS.SES.SendRawEmail
-
-    -- ** GetSendStatistics
-    , module Network.AWS.SES.GetSendStatistics
-
-    -- ** ListCustomVerificationEmailTemplates (Paginated)
-    , module Network.AWS.SES.ListCustomVerificationEmailTemplates
-
-    -- ** DeleteIdentity
-    , module Network.AWS.SES.DeleteIdentity
-
-    -- ** DescribeReceiptRule
-    , module Network.AWS.SES.DescribeReceiptRule
-
-    -- ** ListIdentities (Paginated)
-    , module Network.AWS.SES.ListIdentities
-
-    -- ** UpdateConfigurationSetSendingEnabled
-    , module Network.AWS.SES.UpdateConfigurationSetSendingEnabled
-
-    -- ** CreateCustomVerificationEmailTemplate
-    , module Network.AWS.SES.CreateCustomVerificationEmailTemplate
-
-    -- ** VerifyEmailIdentity
-    , module Network.AWS.SES.VerifyEmailIdentity
-
-    -- ** VerifyEmailAddress
-    , module Network.AWS.SES.VerifyEmailAddress
-
-    -- ** DeleteVerifiedEmailAddress
-    , module Network.AWS.SES.DeleteVerifiedEmailAddress
-
-    -- ** DeleteReceiptFilter
-    , module Network.AWS.SES.DeleteReceiptFilter
-
-    -- ** ListVerifiedEmailAddresses
-    , module Network.AWS.SES.ListVerifiedEmailAddresses
-
-    -- ** GetCustomVerificationEmailTemplate
-    , module Network.AWS.SES.GetCustomVerificationEmailTemplate
-
-    -- ** SetIdentityNotificationTopic
-    , module Network.AWS.SES.SetIdentityNotificationTopic
-
-    -- ** SendEmail
-    , module Network.AWS.SES.SendEmail
-
-    -- ** DeleteReceiptRule
-    , module Network.AWS.SES.DeleteReceiptRule
-
-    -- ** UpdateReceiptRule
-    , module Network.AWS.SES.UpdateReceiptRule
-
-    -- ** CloneReceiptRuleSet
-    , module Network.AWS.SES.CloneReceiptRuleSet
-
-    -- ** CreateConfigurationSetEventDestination
-    , module Network.AWS.SES.CreateConfigurationSetEventDestination
-
-    -- ** GetAccountSendingEnabled
-    , module Network.AWS.SES.GetAccountSendingEnabled
-
-    -- ** CreateReceiptRule
-    , module Network.AWS.SES.CreateReceiptRule
-
-    -- ** GetTemplate
-    , module Network.AWS.SES.GetTemplate
-
-    -- ** SetActiveReceiptRuleSet
-    , module Network.AWS.SES.SetActiveReceiptRuleSet
-
-    -- ** CreateConfigurationSet
-    , module Network.AWS.SES.CreateConfigurationSet
-
-    -- ** UpdateAccountSendingEnabled
-    , module Network.AWS.SES.UpdateAccountSendingEnabled
-
-    -- ** CreateConfigurationSetTrackingOptions
-    , module Network.AWS.SES.CreateConfigurationSetTrackingOptions
-
-    -- ** DescribeActiveReceiptRuleSet
-    , module Network.AWS.SES.DescribeActiveReceiptRuleSet
-
-    -- * Types
-
-    -- ** BehaviorOnMXFailure
-    , BehaviorOnMXFailure (..)
-
-    -- ** BounceType
-    , BounceType (..)
-
-    -- ** BulkEmailStatus
-    , BulkEmailStatus (..)
-
-    -- ** ConfigurationSetAttribute
-    , ConfigurationSetAttribute (..)
-
-    -- ** CustomMailFromStatus
-    , CustomMailFromStatus (..)
-
-    -- ** DimensionValueSource
-    , DimensionValueSource (..)
-
-    -- ** DsnAction
-    , DsnAction (..)
-
-    -- ** EventType
-    , EventType (..)
-
-    -- ** IdentityType
-    , IdentityType (..)
-
-    -- ** InvocationType
-    , InvocationType (..)
-
-    -- ** NotificationType
-    , NotificationType (..)
-
-    -- ** ReceiptFilterPolicy
-    , ReceiptFilterPolicy (..)
-
-    -- ** SNSActionEncoding
-    , SNSActionEncoding (..)
-
-    -- ** 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
-
-    -- ** BulkEmailDestination
-    , BulkEmailDestination
-    , bulkEmailDestination
-    , bedReplacementTemplateData
-    , bedReplacementTags
-    , bedDestination
-
-    -- ** BulkEmailDestinationStatus
-    , BulkEmailDestinationStatus
-    , bulkEmailDestinationStatus
-    , bedsStatus
-    , bedsError
-    , bedsMessageId
-
-    -- ** CloudWatchDestination
-    , CloudWatchDestination
-    , cloudWatchDestination
-    , cwdDimensionConfigurations
-
-    -- ** CloudWatchDimensionConfiguration
-    , CloudWatchDimensionConfiguration
-    , cloudWatchDimensionConfiguration
-    , cwdcDimensionName
-    , cwdcDimensionValueSource
-    , cwdcDefaultDimensionValue
-
-    -- ** ConfigurationSet
-    , ConfigurationSet
-    , configurationSet
-    , csName
-
-    -- ** Content
-    , Content
-    , content
-    , cCharset
-    , cData
-
-    -- ** CustomVerificationEmailTemplate
-    , CustomVerificationEmailTemplate
-    , customVerificationEmailTemplate
-    , cvetFromEmailAddress
-    , cvetTemplateName
-    , cvetFailureRedirectionURL
-    , cvetTemplateSubject
-    , cvetSuccessRedirectionURL
-
-    -- ** Destination
-    , Destination
-    , destination
-    , dBCCAddresses
-    , dCCAddresses
-    , dToAddresses
-
-    -- ** EventDestination
-    , EventDestination
-    , eventDestination
-    , edEnabled
-    , edKinesisFirehoseDestination
-    , edCloudWatchDestination
-    , edSNSDestination
-    , edName
-    , edMatchingEventTypes
-
-    -- ** ExtensionField
-    , ExtensionField
-    , extensionField
-    , efName
-    , efValue
-
-    -- ** IdentityDkimAttributes
-    , IdentityDkimAttributes
-    , identityDkimAttributes
-    , idaDkimTokens
-    , idaDkimEnabled
-    , idaDkimVerificationStatus
-
-    -- ** IdentityMailFromDomainAttributes
-    , IdentityMailFromDomainAttributes
-    , identityMailFromDomainAttributes
-    , imfdaMailFromDomain
-    , imfdaMailFromDomainStatus
-    , imfdaBehaviorOnMXFailure
-
-    -- ** IdentityNotificationAttributes
-    , IdentityNotificationAttributes
-    , identityNotificationAttributes
-    , inaHeadersInDeliveryNotificationsEnabled
-    , inaHeadersInComplaintNotificationsEnabled
-    , inaHeadersInBounceNotificationsEnabled
-    , inaBounceTopic
-    , inaComplaintTopic
-    , inaDeliveryTopic
-    , inaForwardingEnabled
-
-    -- ** IdentityVerificationAttributes
-    , IdentityVerificationAttributes
-    , identityVerificationAttributes
-    , ivaVerificationToken
-    , ivaVerificationStatus
-
-    -- ** KinesisFirehoseDestination
-    , KinesisFirehoseDestination
-    , kinesisFirehoseDestination
-    , kfdIAMRoleARN
-    , kfdDeliveryStreamARN
-
-    -- ** LambdaAction
-    , LambdaAction
-    , lambdaAction
-    , laInvocationType
-    , laTopicARN
-    , laFunctionARN
-
-    -- ** Message
-    , Message
-    , message
-    , mSubject
-    , mBody
-
-    -- ** MessageDsn
-    , MessageDsn
-    , messageDsn
-    , mdArrivalDate
-    , mdExtensionFields
-    , mdReportingMta
-
-    -- ** MessageTag
-    , MessageTag
-    , messageTag
-    , mtName
-    , mtValue
-
-    -- ** 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
-
-    -- ** ReputationOptions
-    , ReputationOptions
-    , reputationOptions
-    , roLastFreshStart
-    , roReputationMetricsEnabled
-    , roSendingEnabled
-
-    -- ** S3Action
-    , S3Action
-    , s3Action
-    , s3KMSKeyARN
-    , s3TopicARN
-    , s3ObjectKeyPrefix
-    , s3BucketName
-
-    -- ** SNSAction
-    , SNSAction
-    , snsAction
-    , saEncoding
-    , saTopicARN
-
-    -- ** SNSDestination
-    , SNSDestination
-    , snsDestination
-    , sdTopicARN
-
-    -- ** SendDataPoint
-    , SendDataPoint
-    , sendDataPoint
-    , sdpRejects
-    , sdpComplaints
-    , sdpDeliveryAttempts
-    , sdpBounces
-    , sdpTimestamp
-
-    -- ** StopAction
-    , StopAction
-    , stopAction
-    , sTopicARN
-    , sScope
-
-    -- ** Template
-    , Template
-    , template
-    , tTextPart
-    , tSubjectPart
-    , tHTMLPart
-    , tTemplateName
-
-    -- ** TemplateMetadata
-    , TemplateMetadata
-    , templateMetadata
-    , tmName
-    , tmCreatedTimestamp
-
-    -- ** TrackingOptions
-    , TrackingOptions
-    , trackingOptions
-    , toCustomRedirectDomain
-
-    -- ** WorkmailAction
-    , WorkmailAction
-    , workmailAction
-    , waTopicARN
-    , waOrganizationARN
-    ) where
-
-import Network.AWS.SES.CloneReceiptRuleSet
-import Network.AWS.SES.CreateConfigurationSet
-import Network.AWS.SES.CreateConfigurationSetEventDestination
-import Network.AWS.SES.CreateConfigurationSetTrackingOptions
-import Network.AWS.SES.CreateCustomVerificationEmailTemplate
-import Network.AWS.SES.CreateReceiptFilter
-import Network.AWS.SES.CreateReceiptRule
-import Network.AWS.SES.CreateReceiptRuleSet
-import Network.AWS.SES.CreateTemplate
-import Network.AWS.SES.DeleteConfigurationSet
-import Network.AWS.SES.DeleteConfigurationSetEventDestination
-import Network.AWS.SES.DeleteConfigurationSetTrackingOptions
-import Network.AWS.SES.DeleteCustomVerificationEmailTemplate
-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.DeleteTemplate
-import Network.AWS.SES.DeleteVerifiedEmailAddress
-import Network.AWS.SES.DescribeActiveReceiptRuleSet
-import Network.AWS.SES.DescribeConfigurationSet
-import Network.AWS.SES.DescribeReceiptRule
-import Network.AWS.SES.DescribeReceiptRuleSet
-import Network.AWS.SES.GetAccountSendingEnabled
-import Network.AWS.SES.GetCustomVerificationEmailTemplate
-import Network.AWS.SES.GetIdentityDkimAttributes
-import Network.AWS.SES.GetIdentityMailFromDomainAttributes
-import Network.AWS.SES.GetIdentityNotificationAttributes
-import Network.AWS.SES.GetIdentityPolicies
-import Network.AWS.SES.GetIdentityVerificationAttributes
-import Network.AWS.SES.GetSendQuota
-import Network.AWS.SES.GetSendStatistics
-import Network.AWS.SES.GetTemplate
-import Network.AWS.SES.ListConfigurationSets
-import Network.AWS.SES.ListCustomVerificationEmailTemplates
-import Network.AWS.SES.ListIdentities
-import Network.AWS.SES.ListIdentityPolicies
-import Network.AWS.SES.ListReceiptFilters
-import Network.AWS.SES.ListReceiptRuleSets
-import Network.AWS.SES.ListTemplates
-import Network.AWS.SES.ListVerifiedEmailAddresses
-import Network.AWS.SES.PutIdentityPolicy
-import Network.AWS.SES.ReorderReceiptRuleSet
-import Network.AWS.SES.SendBounce
-import Network.AWS.SES.SendBulkTemplatedEmail
-import Network.AWS.SES.SendCustomVerificationEmail
-import Network.AWS.SES.SendEmail
-import Network.AWS.SES.SendRawEmail
-import Network.AWS.SES.SendTemplatedEmail
-import Network.AWS.SES.SetActiveReceiptRuleSet
-import Network.AWS.SES.SetIdentityDkimEnabled
-import Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-import Network.AWS.SES.SetIdentityHeadersInNotificationsEnabled
-import Network.AWS.SES.SetIdentityMailFromDomain
-import Network.AWS.SES.SetIdentityNotificationTopic
-import Network.AWS.SES.SetReceiptRulePosition
-import Network.AWS.SES.TestRenderTemplate
-import Network.AWS.SES.Types
-import Network.AWS.SES.UpdateAccountSendingEnabled
-import Network.AWS.SES.UpdateConfigurationSetEventDestination
-import Network.AWS.SES.UpdateConfigurationSetReputationMetricsEnabled
-import Network.AWS.SES.UpdateConfigurationSetSendingEnabled
-import Network.AWS.SES.UpdateConfigurationSetTrackingOptions
-import Network.AWS.SES.UpdateCustomVerificationEmailTemplate
-import Network.AWS.SES.UpdateReceiptRule
-import Network.AWS.SES.UpdateTemplate
-import Network.AWS.SES.VerifyDomainDkim
-import Network.AWS.SES.VerifyDomainIdentity
-import Network.AWS.SES.VerifyEmailAddress
-import Network.AWS.SES.VerifyEmailIdentity
-import Network.AWS.SES.Waiters
-
-{- $errors
-Error matchers are designed for use with the functions provided by
-<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
-This allows catching (and rethrowing) service specific errors returned
-by 'SES'.
--}
-
-{- $operations
-Some AWS operations return results that are incomplete and require subsequent
-requests in order to obtain the entire result set. The process of sending
-subsequent requests to continue where a previous request left off is called
-pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
-1000 objects at a time, and you must send subsequent requests with the
-appropriate Marker in order to retrieve the next page of results.
-
-Operations that have an 'AWSPager' instance can transparently perform subsequent
-requests, correctly setting Markers and other request facets to iterate through
-the entire result set of a truncated API operation. Operations which support
-this have an additional note in the documentation.
-
-Many operations have the ability to filter results on the server side. See the
-individual operation parameters for details.
--}
-
-{- $waiters
-Waiters poll by repeatedly sending a request until some remote success condition
-configured by the 'Wait' specification is fulfilled. The 'Wait' specification
-determines how many attempts should be made, in addition to delay and retry strategies.
--}
diff --git a/gen/Network/AWS/SES/CloneReceiptRuleSet.hs b/gen/Network/AWS/SES/CloneReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CloneReceiptRuleSet.hs
+++ /dev/null
@@ -1,141 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a receipt rule set by cloning an existing one. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the rule set to create. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Start and end with a letter or number.     * Contain less than 64 characters.
---
--- * 'cOriginalRuleSetName' - The name of the rule set to clone.
-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:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), 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 Hashable CloneReceiptRuleSet where
-
-instance NFData CloneReceiptRuleSet where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData CloneReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/CreateConfigurationSet.hs b/gen/Network/AWS/SES/CreateConfigurationSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateConfigurationSet.hs
+++ /dev/null
@@ -1,130 +0,0 @@
-{-# 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.CreateConfigurationSet
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a configuration set.
---
---
--- Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.CreateConfigurationSet
-    (
-    -- * Creating a Request
-      createConfigurationSet
-    , CreateConfigurationSet
-    -- * Request Lenses
-    , ccsConfigurationSet
-
-    -- * Destructuring the Response
-    , createConfigurationSetResponse
-    , CreateConfigurationSetResponse
-    -- * Response Lenses
-    , ccsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'createConfigurationSet' smart constructor.
-newtype CreateConfigurationSet = CreateConfigurationSet'
-  { _ccsConfigurationSet :: ConfigurationSet
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsConfigurationSet' - A data structure that contains the name of the configuration set.
-createConfigurationSet
-    :: ConfigurationSet -- ^ 'ccsConfigurationSet'
-    -> CreateConfigurationSet
-createConfigurationSet pConfigurationSet_ =
-  CreateConfigurationSet' {_ccsConfigurationSet = pConfigurationSet_}
-
-
--- | A data structure that contains the name of the configuration set.
-ccsConfigurationSet :: Lens' CreateConfigurationSet ConfigurationSet
-ccsConfigurationSet = lens _ccsConfigurationSet (\ s a -> s{_ccsConfigurationSet = a})
-
-instance AWSRequest CreateConfigurationSet where
-        type Rs CreateConfigurationSet =
-             CreateConfigurationSetResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "CreateConfigurationSetResult"
-              (\ s h x ->
-                 CreateConfigurationSetResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable CreateConfigurationSet where
-
-instance NFData CreateConfigurationSet where
-
-instance ToHeaders CreateConfigurationSet where
-        toHeaders = const mempty
-
-instance ToPath CreateConfigurationSet where
-        toPath = const "/"
-
-instance ToQuery CreateConfigurationSet where
-        toQuery CreateConfigurationSet'{..}
-          = mconcat
-              ["Action" =:
-                 ("CreateConfigurationSet" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSet" =: _ccsConfigurationSet]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'createConfigurationSetResponse' smart constructor.
-newtype CreateConfigurationSetResponse = CreateConfigurationSetResponse'
-  { _ccsrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsrsResponseStatus' - -- | The response status code.
-createConfigurationSetResponse
-    :: Int -- ^ 'ccsrsResponseStatus'
-    -> CreateConfigurationSetResponse
-createConfigurationSetResponse pResponseStatus_ =
-  CreateConfigurationSetResponse' {_ccsrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ccsrsResponseStatus :: Lens' CreateConfigurationSetResponse Int
-ccsrsResponseStatus = lens _ccsrsResponseStatus (\ s a -> s{_ccsrsResponseStatus = a})
-
-instance NFData CreateConfigurationSetResponse where
diff --git a/gen/Network/AWS/SES/CreateConfigurationSetEventDestination.hs b/gen/Network/AWS/SES/CreateConfigurationSetEventDestination.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateConfigurationSetEventDestination.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{-# 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.CreateConfigurationSetEventDestination
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a configuration set event destination.
---
---
--- An event destination is the AWS service to which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.CreateConfigurationSetEventDestination
-    (
-    -- * Creating a Request
-      createConfigurationSetEventDestination
-    , CreateConfigurationSetEventDestination
-    -- * Request Lenses
-    , ccsedConfigurationSetName
-    , ccsedEventDestination
-
-    -- * Destructuring the Response
-    , createConfigurationSetEventDestinationResponse
-    , CreateConfigurationSetEventDestinationResponse
-    -- * Response Lenses
-    , ccsedrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a configuration set event destination. A configuration set event destination, which can be either Amazon CloudWatch or Amazon Kinesis Firehose, describes an AWS service in which Amazon SES publishes the email sending events associated with a configuration set. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'createConfigurationSetEventDestination' smart constructor.
-data CreateConfigurationSetEventDestination = CreateConfigurationSetEventDestination'
-  { _ccsedConfigurationSetName :: !Text
-  , _ccsedEventDestination     :: !EventDestination
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSetEventDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsedConfigurationSetName' - The name of the configuration set that the event destination should be associated with.
---
--- * 'ccsedEventDestination' - An object that describes the AWS service that email sending event information will be published to.
-createConfigurationSetEventDestination
-    :: Text -- ^ 'ccsedConfigurationSetName'
-    -> EventDestination -- ^ 'ccsedEventDestination'
-    -> CreateConfigurationSetEventDestination
-createConfigurationSetEventDestination pConfigurationSetName_ pEventDestination_ =
-  CreateConfigurationSetEventDestination'
-    { _ccsedConfigurationSetName = pConfigurationSetName_
-    , _ccsedEventDestination = pEventDestination_
-    }
-
-
--- | The name of the configuration set that the event destination should be associated with.
-ccsedConfigurationSetName :: Lens' CreateConfigurationSetEventDestination Text
-ccsedConfigurationSetName = lens _ccsedConfigurationSetName (\ s a -> s{_ccsedConfigurationSetName = a})
-
--- | An object that describes the AWS service that email sending event information will be published to.
-ccsedEventDestination :: Lens' CreateConfigurationSetEventDestination EventDestination
-ccsedEventDestination = lens _ccsedEventDestination (\ s a -> s{_ccsedEventDestination = a})
-
-instance AWSRequest
-           CreateConfigurationSetEventDestination
-         where
-        type Rs CreateConfigurationSetEventDestination =
-             CreateConfigurationSetEventDestinationResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "CreateConfigurationSetEventDestinationResult"
-              (\ s h x ->
-                 CreateConfigurationSetEventDestinationResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           CreateConfigurationSetEventDestination
-         where
-
-instance NFData
-           CreateConfigurationSetEventDestination
-         where
-
-instance ToHeaders
-           CreateConfigurationSetEventDestination
-         where
-        toHeaders = const mempty
-
-instance ToPath
-           CreateConfigurationSetEventDestination
-         where
-        toPath = const "/"
-
-instance ToQuery
-           CreateConfigurationSetEventDestination
-         where
-        toQuery CreateConfigurationSetEventDestination'{..}
-          = mconcat
-              ["Action" =:
-                 ("CreateConfigurationSetEventDestination" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _ccsedConfigurationSetName,
-               "EventDestination" =: _ccsedEventDestination]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'createConfigurationSetEventDestinationResponse' smart constructor.
-newtype CreateConfigurationSetEventDestinationResponse = CreateConfigurationSetEventDestinationResponse'
-  { _ccsedrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSetEventDestinationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccsedrsResponseStatus' - -- | The response status code.
-createConfigurationSetEventDestinationResponse
-    :: Int -- ^ 'ccsedrsResponseStatus'
-    -> CreateConfigurationSetEventDestinationResponse
-createConfigurationSetEventDestinationResponse pResponseStatus_ =
-  CreateConfigurationSetEventDestinationResponse'
-    {_ccsedrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ccsedrsResponseStatus :: Lens' CreateConfigurationSetEventDestinationResponse Int
-ccsedrsResponseStatus = lens _ccsedrsResponseStatus (\ s a -> s{_ccsedrsResponseStatus = a})
-
-instance NFData
-           CreateConfigurationSetEventDestinationResponse
-         where
diff --git a/gen/Network/AWS/SES/CreateConfigurationSetTrackingOptions.hs b/gen/Network/AWS/SES/CreateConfigurationSetTrackingOptions.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateConfigurationSetTrackingOptions.hs
+++ /dev/null
@@ -1,156 +0,0 @@
-{-# 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.CreateConfigurationSetTrackingOptions
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an association between a configuration set and a custom domain for open and click event tracking.
---
---
--- By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Configuring Custom Domains to Handle Open and Click Tracking> in the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.CreateConfigurationSetTrackingOptions
-    (
-    -- * Creating a Request
-      createConfigurationSetTrackingOptions
-    , CreateConfigurationSetTrackingOptions
-    -- * Request Lenses
-    , ccstoConfigurationSetName
-    , ccstoTrackingOptions
-
-    -- * Destructuring the Response
-    , createConfigurationSetTrackingOptionsResponse
-    , CreateConfigurationSetTrackingOptionsResponse
-    -- * Response Lenses
-    , ccstorsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create an open and click tracking option object in a configuration set.
---
---
---
--- /See:/ 'createConfigurationSetTrackingOptions' smart constructor.
-data CreateConfigurationSetTrackingOptions = CreateConfigurationSetTrackingOptions'
-  { _ccstoConfigurationSetName :: !Text
-  , _ccstoTrackingOptions      :: !TrackingOptions
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSetTrackingOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccstoConfigurationSetName' - The name of the configuration set that the tracking options should be associated with.
---
--- * 'ccstoTrackingOptions' - Undocumented member.
-createConfigurationSetTrackingOptions
-    :: Text -- ^ 'ccstoConfigurationSetName'
-    -> TrackingOptions -- ^ 'ccstoTrackingOptions'
-    -> CreateConfigurationSetTrackingOptions
-createConfigurationSetTrackingOptions pConfigurationSetName_ pTrackingOptions_ =
-  CreateConfigurationSetTrackingOptions'
-    { _ccstoConfigurationSetName = pConfigurationSetName_
-    , _ccstoTrackingOptions = pTrackingOptions_
-    }
-
-
--- | The name of the configuration set that the tracking options should be associated with.
-ccstoConfigurationSetName :: Lens' CreateConfigurationSetTrackingOptions Text
-ccstoConfigurationSetName = lens _ccstoConfigurationSetName (\ s a -> s{_ccstoConfigurationSetName = a})
-
--- | Undocumented member.
-ccstoTrackingOptions :: Lens' CreateConfigurationSetTrackingOptions TrackingOptions
-ccstoTrackingOptions = lens _ccstoTrackingOptions (\ s a -> s{_ccstoTrackingOptions = a})
-
-instance AWSRequest
-           CreateConfigurationSetTrackingOptions
-         where
-        type Rs CreateConfigurationSetTrackingOptions =
-             CreateConfigurationSetTrackingOptionsResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "CreateConfigurationSetTrackingOptionsResult"
-              (\ s h x ->
-                 CreateConfigurationSetTrackingOptionsResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           CreateConfigurationSetTrackingOptions
-         where
-
-instance NFData CreateConfigurationSetTrackingOptions
-         where
-
-instance ToHeaders
-           CreateConfigurationSetTrackingOptions
-         where
-        toHeaders = const mempty
-
-instance ToPath CreateConfigurationSetTrackingOptions
-         where
-        toPath = const "/"
-
-instance ToQuery
-           CreateConfigurationSetTrackingOptions
-         where
-        toQuery CreateConfigurationSetTrackingOptions'{..}
-          = mconcat
-              ["Action" =:
-                 ("CreateConfigurationSetTrackingOptions" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _ccstoConfigurationSetName,
-               "TrackingOptions" =: _ccstoTrackingOptions]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'createConfigurationSetTrackingOptionsResponse' smart constructor.
-newtype CreateConfigurationSetTrackingOptionsResponse = CreateConfigurationSetTrackingOptionsResponse'
-  { _ccstorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateConfigurationSetTrackingOptionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccstorsResponseStatus' - -- | The response status code.
-createConfigurationSetTrackingOptionsResponse
-    :: Int -- ^ 'ccstorsResponseStatus'
-    -> CreateConfigurationSetTrackingOptionsResponse
-createConfigurationSetTrackingOptionsResponse pResponseStatus_ =
-  CreateConfigurationSetTrackingOptionsResponse'
-    {_ccstorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ccstorsResponseStatus :: Lens' CreateConfigurationSetTrackingOptionsResponse Int
-ccstorsResponseStatus = lens _ccstorsResponseStatus (\ s a -> s{_ccstorsResponseStatus = a})
-
-instance NFData
-           CreateConfigurationSetTrackingOptionsResponse
-         where
diff --git a/gen/Network/AWS/SES/CreateCustomVerificationEmailTemplate.hs b/gen/Network/AWS/SES/CreateCustomVerificationEmailTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateCustomVerificationEmailTemplate.hs
+++ /dev/null
@@ -1,186 +0,0 @@
-{-# 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.CreateCustomVerificationEmailTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a new custom verification email template.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.CreateCustomVerificationEmailTemplate
-    (
-    -- * Creating a Request
-      createCustomVerificationEmailTemplate
-    , CreateCustomVerificationEmailTemplate
-    -- * Request Lenses
-    , ccvetTemplateName
-    , ccvetFromEmailAddress
-    , ccvetTemplateSubject
-    , ccvetTemplateContent
-    , ccvetSuccessRedirectionURL
-    , ccvetFailureRedirectionURL
-
-    -- * Destructuring the Response
-    , createCustomVerificationEmailTemplateResponse
-    , CreateCustomVerificationEmailTemplateResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a custom verification email template.
---
---
---
--- /See:/ 'createCustomVerificationEmailTemplate' smart constructor.
-data CreateCustomVerificationEmailTemplate = CreateCustomVerificationEmailTemplate'
-  { _ccvetTemplateName          :: !Text
-  , _ccvetFromEmailAddress      :: !Text
-  , _ccvetTemplateSubject       :: !Text
-  , _ccvetTemplateContent       :: !Text
-  , _ccvetSuccessRedirectionURL :: !Text
-  , _ccvetFailureRedirectionURL :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateCustomVerificationEmailTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccvetTemplateName' - The name of the custom verification email template.
---
--- * 'ccvetFromEmailAddress' - The email address that the custom verification email is sent from.
---
--- * 'ccvetTemplateSubject' - The subject line of the custom verification email.
---
--- * 'ccvetTemplateContent' - The content of the custom verification email. The total size of the email must be less than 10 MB. The message body may contain HTML, with some limitations. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions> in the /Amazon SES Developer Guide/ .
---
--- * 'ccvetSuccessRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
---
--- * 'ccvetFailureRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
-createCustomVerificationEmailTemplate
-    :: Text -- ^ 'ccvetTemplateName'
-    -> Text -- ^ 'ccvetFromEmailAddress'
-    -> Text -- ^ 'ccvetTemplateSubject'
-    -> Text -- ^ 'ccvetTemplateContent'
-    -> Text -- ^ 'ccvetSuccessRedirectionURL'
-    -> Text -- ^ 'ccvetFailureRedirectionURL'
-    -> CreateCustomVerificationEmailTemplate
-createCustomVerificationEmailTemplate pTemplateName_ pFromEmailAddress_ pTemplateSubject_ pTemplateContent_ pSuccessRedirectionURL_ pFailureRedirectionURL_ =
-  CreateCustomVerificationEmailTemplate'
-    { _ccvetTemplateName = pTemplateName_
-    , _ccvetFromEmailAddress = pFromEmailAddress_
-    , _ccvetTemplateSubject = pTemplateSubject_
-    , _ccvetTemplateContent = pTemplateContent_
-    , _ccvetSuccessRedirectionURL = pSuccessRedirectionURL_
-    , _ccvetFailureRedirectionURL = pFailureRedirectionURL_
-    }
-
-
--- | The name of the custom verification email template.
-ccvetTemplateName :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetTemplateName = lens _ccvetTemplateName (\ s a -> s{_ccvetTemplateName = a})
-
--- | The email address that the custom verification email is sent from.
-ccvetFromEmailAddress :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetFromEmailAddress = lens _ccvetFromEmailAddress (\ s a -> s{_ccvetFromEmailAddress = a})
-
--- | The subject line of the custom verification email.
-ccvetTemplateSubject :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetTemplateSubject = lens _ccvetTemplateSubject (\ s a -> s{_ccvetTemplateSubject = a})
-
--- | The content of the custom verification email. The total size of the email must be less than 10 MB. The message body may contain HTML, with some limitations. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions> in the /Amazon SES Developer Guide/ .
-ccvetTemplateContent :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetTemplateContent = lens _ccvetTemplateContent (\ s a -> s{_ccvetTemplateContent = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
-ccvetSuccessRedirectionURL :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetSuccessRedirectionURL = lens _ccvetSuccessRedirectionURL (\ s a -> s{_ccvetSuccessRedirectionURL = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
-ccvetFailureRedirectionURL :: Lens' CreateCustomVerificationEmailTemplate Text
-ccvetFailureRedirectionURL = lens _ccvetFailureRedirectionURL (\ s a -> s{_ccvetFailureRedirectionURL = a})
-
-instance AWSRequest
-           CreateCustomVerificationEmailTemplate
-         where
-        type Rs CreateCustomVerificationEmailTemplate =
-             CreateCustomVerificationEmailTemplateResponse
-        request = postQuery ses
-        response
-          = receiveNull
-              CreateCustomVerificationEmailTemplateResponse'
-
-instance Hashable
-           CreateCustomVerificationEmailTemplate
-         where
-
-instance NFData CreateCustomVerificationEmailTemplate
-         where
-
-instance ToHeaders
-           CreateCustomVerificationEmailTemplate
-         where
-        toHeaders = const mempty
-
-instance ToPath CreateCustomVerificationEmailTemplate
-         where
-        toPath = const "/"
-
-instance ToQuery
-           CreateCustomVerificationEmailTemplate
-         where
-        toQuery CreateCustomVerificationEmailTemplate'{..}
-          = mconcat
-              ["Action" =:
-                 ("CreateCustomVerificationEmailTemplate" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _ccvetTemplateName,
-               "FromEmailAddress" =: _ccvetFromEmailAddress,
-               "TemplateSubject" =: _ccvetTemplateSubject,
-               "TemplateContent" =: _ccvetTemplateContent,
-               "SuccessRedirectionURL" =:
-                 _ccvetSuccessRedirectionURL,
-               "FailureRedirectionURL" =:
-                 _ccvetFailureRedirectionURL]
-
--- | /See:/ 'createCustomVerificationEmailTemplateResponse' smart constructor.
-data CreateCustomVerificationEmailTemplateResponse =
-  CreateCustomVerificationEmailTemplateResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateCustomVerificationEmailTemplateResponse' with the minimum fields required to make a request.
---
-createCustomVerificationEmailTemplateResponse
-    :: CreateCustomVerificationEmailTemplateResponse
-createCustomVerificationEmailTemplateResponse =
-  CreateCustomVerificationEmailTemplateResponse'
-
-
-instance NFData
-           CreateCustomVerificationEmailTemplateResponse
-         where
diff --git a/gen/Network/AWS/SES/CreateReceiptFilter.hs b/gen/Network/AWS/SES/CreateReceiptFilter.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateReceiptFilter.hs
+++ /dev/null
@@ -1,127 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a new IP address filter. You use IP address filters when you receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - 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.
-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 Hashable CreateReceiptFilter where
-
-instance NFData CreateReceiptFilter where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData CreateReceiptFilterResponse where
diff --git a/gen/Network/AWS/SES/CreateReceiptRule.hs b/gen/Network/AWS/SES/CreateReceiptRule.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateReceiptRule.hs
+++ /dev/null
@@ -1,146 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create a receipt rule. You use receipt rules to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - 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.
---
--- * 'crrRuleSetName' - The name of the rule set that the receipt rule will be added to.
---
--- * 'crrRule' - A data structure that contains the specified rule's name, actions, recipients, domains, enabled status, scan status, and TLS policy.
-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 that the receipt rule will be added to.
-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 Hashable CreateReceiptRule where
-
-instance NFData CreateReceiptRule where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData CreateReceiptRuleResponse where
diff --git a/gen/Network/AWS/SES/CreateReceiptRuleSet.hs b/gen/Network/AWS/SES/CreateReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateReceiptRuleSet.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create an empty receipt rule set. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the rule set to create. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Start and end with a letter or number.     * Contain less than 64 characters.
-createReceiptRuleSet
-    :: Text -- ^ 'crrsRuleSetName'
-    -> CreateReceiptRuleSet
-createReceiptRuleSet pRuleSetName_ =
-  CreateReceiptRuleSet' {_crrsRuleSetName = pRuleSetName_}
-
-
--- | The name of the rule set to create. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), 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 Hashable CreateReceiptRuleSet where
-
-instance NFData CreateReceiptRuleSet where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData CreateReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/CreateTemplate.hs b/gen/Network/AWS/SES/CreateTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/CreateTemplate.hs
+++ /dev/null
@@ -1,120 +0,0 @@
-{-# 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.CreateTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.CreateTemplate
-    (
-    -- * Creating a Request
-      createTemplate
-    , CreateTemplate
-    -- * Request Lenses
-    , ctTemplate
-
-    -- * Destructuring the Response
-    , createTemplateResponse
-    , CreateTemplateResponse
-    -- * Response Lenses
-    , ctrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to create an email template. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'createTemplate' smart constructor.
-newtype CreateTemplate = CreateTemplate'
-  { _ctTemplate :: Template
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctTemplate' - The content of the email, composed of a subject line, an HTML part, and a text-only part.
-createTemplate
-    :: Template -- ^ 'ctTemplate'
-    -> CreateTemplate
-createTemplate pTemplate_ = CreateTemplate' {_ctTemplate = pTemplate_}
-
-
--- | The content of the email, composed of a subject line, an HTML part, and a text-only part.
-ctTemplate :: Lens' CreateTemplate Template
-ctTemplate = lens _ctTemplate (\ s a -> s{_ctTemplate = a})
-
-instance AWSRequest CreateTemplate where
-        type Rs CreateTemplate = CreateTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "CreateTemplateResult"
-              (\ s h x ->
-                 CreateTemplateResponse' <$> (pure (fromEnum s)))
-
-instance Hashable CreateTemplate where
-
-instance NFData CreateTemplate where
-
-instance ToHeaders CreateTemplate where
-        toHeaders = const mempty
-
-instance ToPath CreateTemplate where
-        toPath = const "/"
-
-instance ToQuery CreateTemplate where
-        toQuery CreateTemplate'{..}
-          = mconcat
-              ["Action" =: ("CreateTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Template" =: _ctTemplate]
-
--- | /See:/ 'createTemplateResponse' smart constructor.
-newtype CreateTemplateResponse = CreateTemplateResponse'
-  { _ctrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ctrsResponseStatus' - -- | The response status code.
-createTemplateResponse
-    :: Int -- ^ 'ctrsResponseStatus'
-    -> CreateTemplateResponse
-createTemplateResponse pResponseStatus_ =
-  CreateTemplateResponse' {_ctrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ctrsResponseStatus :: Lens' CreateTemplateResponse Int
-ctrsResponseStatus = lens _ctrsResponseStatus (\ s a -> s{_ctrsResponseStatus = a})
-
-instance NFData CreateTemplateResponse where
diff --git a/gen/Network/AWS/SES/DeleteConfigurationSet.hs b/gen/Network/AWS/SES/DeleteConfigurationSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteConfigurationSet.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# 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.DeleteConfigurationSet
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteConfigurationSet
-    (
-    -- * Creating a Request
-      deleteConfigurationSet
-    , DeleteConfigurationSet
-    -- * Request Lenses
-    , dConfigurationSetName
-
-    -- * Destructuring the Response
-    , deleteConfigurationSetResponse
-    , DeleteConfigurationSetResponse
-    -- * Response Lenses
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'deleteConfigurationSet' smart constructor.
-newtype DeleteConfigurationSet = DeleteConfigurationSet'
-  { _dConfigurationSetName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dConfigurationSetName' - The name of the configuration set to delete.
-deleteConfigurationSet
-    :: Text -- ^ 'dConfigurationSetName'
-    -> DeleteConfigurationSet
-deleteConfigurationSet pConfigurationSetName_ =
-  DeleteConfigurationSet' {_dConfigurationSetName = pConfigurationSetName_}
-
-
--- | The name of the configuration set to delete.
-dConfigurationSetName :: Lens' DeleteConfigurationSet Text
-dConfigurationSetName = lens _dConfigurationSetName (\ s a -> s{_dConfigurationSetName = a})
-
-instance AWSRequest DeleteConfigurationSet where
-        type Rs DeleteConfigurationSet =
-             DeleteConfigurationSetResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "DeleteConfigurationSetResult"
-              (\ s h x ->
-                 DeleteConfigurationSetResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteConfigurationSet where
-
-instance NFData DeleteConfigurationSet where
-
-instance ToHeaders DeleteConfigurationSet where
-        toHeaders = const mempty
-
-instance ToPath DeleteConfigurationSet where
-        toPath = const "/"
-
-instance ToQuery DeleteConfigurationSet where
-        toQuery DeleteConfigurationSet'{..}
-          = mconcat
-              ["Action" =:
-                 ("DeleteConfigurationSet" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _dConfigurationSetName]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteConfigurationSetResponse' smart constructor.
-newtype DeleteConfigurationSetResponse = DeleteConfigurationSetResponse'
-  { _drsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteConfigurationSetResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteConfigurationSetResponse
-deleteConfigurationSetResponse pResponseStatus_ =
-  DeleteConfigurationSetResponse' {_drsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteConfigurationSetResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteConfigurationSetResponse where
diff --git a/gen/Network/AWS/SES/DeleteConfigurationSetEventDestination.hs b/gen/Network/AWS/SES/DeleteConfigurationSetEventDestination.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteConfigurationSetEventDestination.hs
+++ /dev/null
@@ -1,158 +0,0 @@
-{-# 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.DeleteConfigurationSetEventDestination
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a configuration set event destination. Configuration set event destinations are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteConfigurationSetEventDestination
-    (
-    -- * Creating a Request
-      deleteConfigurationSetEventDestination
-    , DeleteConfigurationSetEventDestination
-    -- * Request Lenses
-    , dcsedConfigurationSetName
-    , dcsedEventDestinationName
-
-    -- * Destructuring the Response
-    , deleteConfigurationSetEventDestinationResponse
-    , DeleteConfigurationSetEventDestinationResponse
-    -- * Response Lenses
-    , dcsedrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete a configuration set event destination. Configuration set event destinations are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'deleteConfigurationSetEventDestination' smart constructor.
-data DeleteConfigurationSetEventDestination = DeleteConfigurationSetEventDestination'
-  { _dcsedConfigurationSetName :: !Text
-  , _dcsedEventDestinationName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSetEventDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcsedConfigurationSetName' - The name of the configuration set from which to delete the event destination.
---
--- * 'dcsedEventDestinationName' - The name of the event destination to delete.
-deleteConfigurationSetEventDestination
-    :: Text -- ^ 'dcsedConfigurationSetName'
-    -> Text -- ^ 'dcsedEventDestinationName'
-    -> DeleteConfigurationSetEventDestination
-deleteConfigurationSetEventDestination pConfigurationSetName_ pEventDestinationName_ =
-  DeleteConfigurationSetEventDestination'
-    { _dcsedConfigurationSetName = pConfigurationSetName_
-    , _dcsedEventDestinationName = pEventDestinationName_
-    }
-
-
--- | The name of the configuration set from which to delete the event destination.
-dcsedConfigurationSetName :: Lens' DeleteConfigurationSetEventDestination Text
-dcsedConfigurationSetName = lens _dcsedConfigurationSetName (\ s a -> s{_dcsedConfigurationSetName = a})
-
--- | The name of the event destination to delete.
-dcsedEventDestinationName :: Lens' DeleteConfigurationSetEventDestination Text
-dcsedEventDestinationName = lens _dcsedEventDestinationName (\ s a -> s{_dcsedEventDestinationName = a})
-
-instance AWSRequest
-           DeleteConfigurationSetEventDestination
-         where
-        type Rs DeleteConfigurationSetEventDestination =
-             DeleteConfigurationSetEventDestinationResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "DeleteConfigurationSetEventDestinationResult"
-              (\ s h x ->
-                 DeleteConfigurationSetEventDestinationResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           DeleteConfigurationSetEventDestination
-         where
-
-instance NFData
-           DeleteConfigurationSetEventDestination
-         where
-
-instance ToHeaders
-           DeleteConfigurationSetEventDestination
-         where
-        toHeaders = const mempty
-
-instance ToPath
-           DeleteConfigurationSetEventDestination
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteConfigurationSetEventDestination
-         where
-        toQuery DeleteConfigurationSetEventDestination'{..}
-          = mconcat
-              ["Action" =:
-                 ("DeleteConfigurationSetEventDestination" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _dcsedConfigurationSetName,
-               "EventDestinationName" =: _dcsedEventDestinationName]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteConfigurationSetEventDestinationResponse' smart constructor.
-newtype DeleteConfigurationSetEventDestinationResponse = DeleteConfigurationSetEventDestinationResponse'
-  { _dcsedrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSetEventDestinationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcsedrsResponseStatus' - -- | The response status code.
-deleteConfigurationSetEventDestinationResponse
-    :: Int -- ^ 'dcsedrsResponseStatus'
-    -> DeleteConfigurationSetEventDestinationResponse
-deleteConfigurationSetEventDestinationResponse pResponseStatus_ =
-  DeleteConfigurationSetEventDestinationResponse'
-    {_dcsedrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dcsedrsResponseStatus :: Lens' DeleteConfigurationSetEventDestinationResponse Int
-dcsedrsResponseStatus = lens _dcsedrsResponseStatus (\ s a -> s{_dcsedrsResponseStatus = a})
-
-instance NFData
-           DeleteConfigurationSetEventDestinationResponse
-         where
diff --git a/gen/Network/AWS/SES/DeleteConfigurationSetTrackingOptions.hs b/gen/Network/AWS/SES/DeleteConfigurationSetTrackingOptions.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteConfigurationSetTrackingOptions.hs
+++ /dev/null
@@ -1,144 +0,0 @@
-{-# 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.DeleteConfigurationSetTrackingOptions
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an association between a configuration set and a custom domain for open and click event tracking.
---
---
--- By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Configuring Custom Domains to Handle Open and Click Tracking> in the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.DeleteConfigurationSetTrackingOptions
-    (
-    -- * Creating a Request
-      deleteConfigurationSetTrackingOptions
-    , DeleteConfigurationSetTrackingOptions
-    -- * Request Lenses
-    , dcstoConfigurationSetName
-
-    -- * Destructuring the Response
-    , deleteConfigurationSetTrackingOptionsResponse
-    , DeleteConfigurationSetTrackingOptionsResponse
-    -- * Response Lenses
-    , dcstorsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete open and click tracking options in a configuration set.
---
---
---
--- /See:/ 'deleteConfigurationSetTrackingOptions' smart constructor.
-newtype DeleteConfigurationSetTrackingOptions = DeleteConfigurationSetTrackingOptions'
-  { _dcstoConfigurationSetName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSetTrackingOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcstoConfigurationSetName' - The name of the configuration set from which you want to delete the tracking options.
-deleteConfigurationSetTrackingOptions
-    :: Text -- ^ 'dcstoConfigurationSetName'
-    -> DeleteConfigurationSetTrackingOptions
-deleteConfigurationSetTrackingOptions pConfigurationSetName_ =
-  DeleteConfigurationSetTrackingOptions'
-    {_dcstoConfigurationSetName = pConfigurationSetName_}
-
-
--- | The name of the configuration set from which you want to delete the tracking options.
-dcstoConfigurationSetName :: Lens' DeleteConfigurationSetTrackingOptions Text
-dcstoConfigurationSetName = lens _dcstoConfigurationSetName (\ s a -> s{_dcstoConfigurationSetName = a})
-
-instance AWSRequest
-           DeleteConfigurationSetTrackingOptions
-         where
-        type Rs DeleteConfigurationSetTrackingOptions =
-             DeleteConfigurationSetTrackingOptionsResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "DeleteConfigurationSetTrackingOptionsResult"
-              (\ s h x ->
-                 DeleteConfigurationSetTrackingOptionsResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           DeleteConfigurationSetTrackingOptions
-         where
-
-instance NFData DeleteConfigurationSetTrackingOptions
-         where
-
-instance ToHeaders
-           DeleteConfigurationSetTrackingOptions
-         where
-        toHeaders = const mempty
-
-instance ToPath DeleteConfigurationSetTrackingOptions
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteConfigurationSetTrackingOptions
-         where
-        toQuery DeleteConfigurationSetTrackingOptions'{..}
-          = mconcat
-              ["Action" =:
-                 ("DeleteConfigurationSetTrackingOptions" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _dcstoConfigurationSetName]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteConfigurationSetTrackingOptionsResponse' smart constructor.
-newtype DeleteConfigurationSetTrackingOptionsResponse = DeleteConfigurationSetTrackingOptionsResponse'
-  { _dcstorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteConfigurationSetTrackingOptionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcstorsResponseStatus' - -- | The response status code.
-deleteConfigurationSetTrackingOptionsResponse
-    :: Int -- ^ 'dcstorsResponseStatus'
-    -> DeleteConfigurationSetTrackingOptionsResponse
-deleteConfigurationSetTrackingOptionsResponse pResponseStatus_ =
-  DeleteConfigurationSetTrackingOptionsResponse'
-    {_dcstorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dcstorsResponseStatus :: Lens' DeleteConfigurationSetTrackingOptionsResponse Int
-dcstorsResponseStatus = lens _dcstorsResponseStatus (\ s a -> s{_dcstorsResponseStatus = a})
-
-instance NFData
-           DeleteConfigurationSetTrackingOptionsResponse
-         where
diff --git a/gen/Network/AWS/SES/DeleteCustomVerificationEmailTemplate.hs b/gen/Network/AWS/SES/DeleteCustomVerificationEmailTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteCustomVerificationEmailTemplate.hs
+++ /dev/null
@@ -1,127 +0,0 @@
-{-# 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.DeleteCustomVerificationEmailTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an existing custom verification email template.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteCustomVerificationEmailTemplate
-    (
-    -- * Creating a Request
-      deleteCustomVerificationEmailTemplate
-    , DeleteCustomVerificationEmailTemplate
-    -- * Request Lenses
-    , dcvetTemplateName
-
-    -- * Destructuring the Response
-    , deleteCustomVerificationEmailTemplateResponse
-    , DeleteCustomVerificationEmailTemplateResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete an existing custom verification email template.
---
---
---
--- /See:/ 'deleteCustomVerificationEmailTemplate' smart constructor.
-newtype DeleteCustomVerificationEmailTemplate = DeleteCustomVerificationEmailTemplate'
-  { _dcvetTemplateName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteCustomVerificationEmailTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcvetTemplateName' - The name of the custom verification email template that you want to delete.
-deleteCustomVerificationEmailTemplate
-    :: Text -- ^ 'dcvetTemplateName'
-    -> DeleteCustomVerificationEmailTemplate
-deleteCustomVerificationEmailTemplate pTemplateName_ =
-  DeleteCustomVerificationEmailTemplate' {_dcvetTemplateName = pTemplateName_}
-
-
--- | The name of the custom verification email template that you want to delete.
-dcvetTemplateName :: Lens' DeleteCustomVerificationEmailTemplate Text
-dcvetTemplateName = lens _dcvetTemplateName (\ s a -> s{_dcvetTemplateName = a})
-
-instance AWSRequest
-           DeleteCustomVerificationEmailTemplate
-         where
-        type Rs DeleteCustomVerificationEmailTemplate =
-             DeleteCustomVerificationEmailTemplateResponse
-        request = postQuery ses
-        response
-          = receiveNull
-              DeleteCustomVerificationEmailTemplateResponse'
-
-instance Hashable
-           DeleteCustomVerificationEmailTemplate
-         where
-
-instance NFData DeleteCustomVerificationEmailTemplate
-         where
-
-instance ToHeaders
-           DeleteCustomVerificationEmailTemplate
-         where
-        toHeaders = const mempty
-
-instance ToPath DeleteCustomVerificationEmailTemplate
-         where
-        toPath = const "/"
-
-instance ToQuery
-           DeleteCustomVerificationEmailTemplate
-         where
-        toQuery DeleteCustomVerificationEmailTemplate'{..}
-          = mconcat
-              ["Action" =:
-                 ("DeleteCustomVerificationEmailTemplate" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _dcvetTemplateName]
-
--- | /See:/ 'deleteCustomVerificationEmailTemplateResponse' smart constructor.
-data DeleteCustomVerificationEmailTemplateResponse =
-  DeleteCustomVerificationEmailTemplateResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteCustomVerificationEmailTemplateResponse' with the minimum fields required to make a request.
---
-deleteCustomVerificationEmailTemplateResponse
-    :: DeleteCustomVerificationEmailTemplateResponse
-deleteCustomVerificationEmailTemplateResponse =
-  DeleteCustomVerificationEmailTemplateResponse'
-
-
-instance NFData
-           DeleteCustomVerificationEmailTemplateResponse
-         where
diff --git a/gen/Network/AWS/SES/DeleteIdentity.hs b/gen/Network/AWS/SES/DeleteIdentity.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteIdentity.hs
+++ /dev/null
@@ -1,124 +0,0 @@
-{-# 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.DeleteIdentity
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified identity (an email address or a domain) from the list of verified identities.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteIdentity
-    (
-    -- * Creating a Request
-      deleteIdentity
-    , DeleteIdentity
-    -- * Request Lenses
-    , diIdentity
-
-    -- * Destructuring the Response
-    , deleteIdentityResponse
-    , DeleteIdentityResponse
-    -- * Response Lenses
-    , dirsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete one of your Amazon SES identities (an email address or domain).
---
---
---
--- /See:/ 'deleteIdentity' smart constructor.
-newtype DeleteIdentity = DeleteIdentity'
-  { _diIdentity :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diIdentity' - The identity to be removed from the list of identities for the AWS Account.
-deleteIdentity
-    :: Text -- ^ 'diIdentity'
-    -> DeleteIdentity
-deleteIdentity pIdentity_ = DeleteIdentity' {_diIdentity = pIdentity_}
-
-
--- | The identity to be removed from the list of identities for the AWS Account.
-diIdentity :: Lens' DeleteIdentity Text
-diIdentity = lens _diIdentity (\ s a -> s{_diIdentity = a})
-
-instance AWSRequest DeleteIdentity where
-        type Rs DeleteIdentity = DeleteIdentityResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "DeleteIdentityResult"
-              (\ s h x ->
-                 DeleteIdentityResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteIdentity where
-
-instance NFData DeleteIdentity where
-
-instance ToHeaders DeleteIdentity where
-        toHeaders = const mempty
-
-instance ToPath DeleteIdentity where
-        toPath = const "/"
-
-instance ToQuery DeleteIdentity where
-        toQuery DeleteIdentity'{..}
-          = mconcat
-              ["Action" =: ("DeleteIdentity" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _diIdentity]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteIdentityResponse' smart constructor.
-newtype DeleteIdentityResponse = DeleteIdentityResponse'
-  { _dirsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteIdentityResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dirsResponseStatus' - -- | The response status code.
-deleteIdentityResponse
-    :: Int -- ^ 'dirsResponseStatus'
-    -> DeleteIdentityResponse
-deleteIdentityResponse pResponseStatus_ =
-  DeleteIdentityResponse' {_dirsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dirsResponseStatus :: Lens' DeleteIdentityResponse Int
-dirsResponseStatus = lens _dirsResponseStatus (\ s a -> s{_dirsResponseStatus = a})
-
-instance NFData DeleteIdentityResponse where
diff --git a/gen/Network/AWS/SES/DeleteIdentityPolicy.hs b/gen/Network/AWS/SES/DeleteIdentityPolicy.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteIdentityPolicy.hs
+++ /dev/null
@@ -1,140 +0,0 @@
-{-# 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.DeleteIdentityPolicy
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified sending authorization policy for the given identity (an email address or a domain). This API returns successfully even if a policy with the specified name does not exist.
---
---
--- Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteIdentityPolicy
-    (
-    -- * Creating a Request
-      deleteIdentityPolicy
-    , DeleteIdentityPolicy
-    -- * Request Lenses
-    , dipIdentity
-    , dipPolicyName
-
-    -- * Destructuring the Response
-    , deleteIdentityPolicyResponse
-    , DeleteIdentityPolicyResponse
-    -- * Response Lenses
-    , diprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete a sending authorization policy for an identity. Sending authorization is an Amazon SES feature that enables you to authorize other senders to use your identities. For information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'deleteIdentityPolicy' smart constructor.
-data DeleteIdentityPolicy = DeleteIdentityPolicy'
-  { _dipIdentity   :: !Text
-  , _dipPolicyName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteIdentityPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dipIdentity' - The identity that is associated with the policy that you want to delete. You can specify the identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
---
--- * 'dipPolicyName' - The name of the policy to be deleted.
-deleteIdentityPolicy
-    :: Text -- ^ 'dipIdentity'
-    -> Text -- ^ 'dipPolicyName'
-    -> DeleteIdentityPolicy
-deleteIdentityPolicy pIdentity_ pPolicyName_ =
-  DeleteIdentityPolicy'
-    {_dipIdentity = pIdentity_, _dipPolicyName = pPolicyName_}
-
-
--- | The identity that is associated with the policy that you want to delete. You can specify the identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
-dipIdentity :: Lens' DeleteIdentityPolicy Text
-dipIdentity = lens _dipIdentity (\ s a -> s{_dipIdentity = a})
-
--- | The name of the policy to be deleted.
-dipPolicyName :: Lens' DeleteIdentityPolicy Text
-dipPolicyName = lens _dipPolicyName (\ s a -> s{_dipPolicyName = a})
-
-instance AWSRequest DeleteIdentityPolicy where
-        type Rs DeleteIdentityPolicy =
-             DeleteIdentityPolicyResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "DeleteIdentityPolicyResult"
-              (\ s h x ->
-                 DeleteIdentityPolicyResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteIdentityPolicy where
-
-instance NFData DeleteIdentityPolicy where
-
-instance ToHeaders DeleteIdentityPolicy where
-        toHeaders = const mempty
-
-instance ToPath DeleteIdentityPolicy where
-        toPath = const "/"
-
-instance ToQuery DeleteIdentityPolicy where
-        toQuery DeleteIdentityPolicy'{..}
-          = mconcat
-              ["Action" =: ("DeleteIdentityPolicy" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _dipIdentity,
-               "PolicyName" =: _dipPolicyName]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteIdentityPolicyResponse' smart constructor.
-newtype DeleteIdentityPolicyResponse = DeleteIdentityPolicyResponse'
-  { _diprsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteIdentityPolicyResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diprsResponseStatus' - -- | The response status code.
-deleteIdentityPolicyResponse
-    :: Int -- ^ 'diprsResponseStatus'
-    -> DeleteIdentityPolicyResponse
-deleteIdentityPolicyResponse pResponseStatus_ =
-  DeleteIdentityPolicyResponse' {_diprsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-diprsResponseStatus :: Lens' DeleteIdentityPolicyResponse Int
-diprsResponseStatus = lens _diprsResponseStatus (\ s a -> s{_diprsResponseStatus = a})
-
-instance NFData DeleteIdentityPolicyResponse where
diff --git a/gen/Network/AWS/SES/DeleteReceiptFilter.hs b/gen/Network/AWS/SES/DeleteReceiptFilter.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteReceiptFilter.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete an IP address filter. You use IP address filters when you receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the IP address filter to delete.
-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 Hashable DeleteReceiptFilter where
-
-instance NFData DeleteReceiptFilter where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData DeleteReceiptFilterResponse where
diff --git a/gen/Network/AWS/SES/DeleteReceiptRule.hs b/gen/Network/AWS/SES/DeleteReceiptRule.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteReceiptRule.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteReceiptRule
-    (
-    -- * Creating a Request
-      deleteReceiptRule
-    , DeleteReceiptRule
-    -- * Request Lenses
-    , delRuleSetName
-    , delRuleName
-
-    -- * Destructuring the Response
-    , deleteReceiptRuleResponse
-    , DeleteReceiptRuleResponse
-    -- * Response Lenses
-    , delrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete a receipt rule. You use receipt rules to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set that contains the receipt rule to delete.
---
--- * 'delRuleName' - The name of the receipt rule to delete.
-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 Hashable DeleteReceiptRule where
-
-instance NFData DeleteReceiptRule where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'deleteReceiptRuleResponse' smart constructor.
-newtype DeleteReceiptRuleResponse = DeleteReceiptRuleResponse'
-  { _delrsResponseStatus :: 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:
---
--- * 'delrsResponseStatus' - -- | The response status code.
-deleteReceiptRuleResponse
-    :: Int -- ^ 'delrsResponseStatus'
-    -> DeleteReceiptRuleResponse
-deleteReceiptRuleResponse pResponseStatus_ =
-  DeleteReceiptRuleResponse' {_delrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-delrsResponseStatus :: Lens' DeleteReceiptRuleResponse Int
-delrsResponseStatus = lens _delrsResponseStatus (\ s a -> s{_delrsResponseStatus = a})
-
-instance NFData DeleteReceiptRuleResponse where
diff --git a/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs b/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteReceiptRuleSet.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified receipt rule set and all of the receipt rules it contains.
---
---
--- 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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete a receipt rule set and all of the receipt rules it contains. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set to delete.
-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 Hashable DeleteReceiptRuleSet where
-
-instance NFData DeleteReceiptRuleSet where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData DeleteReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/DeleteTemplate.hs b/gen/Network/AWS/SES/DeleteTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteTemplate.hs
+++ /dev/null
@@ -1,121 +0,0 @@
-{-# 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.DeleteTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes an email template.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DeleteTemplate
-    (
-    -- * Creating a Request
-      deleteTemplate
-    , DeleteTemplate
-    -- * Request Lenses
-    , dtTemplateName
-
-    -- * Destructuring the Response
-    , deleteTemplateResponse
-    , DeleteTemplateResponse
-    -- * Response Lenses
-    , dtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete an email template. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'deleteTemplate' smart constructor.
-newtype DeleteTemplate = DeleteTemplate'
-  { _dtTemplateName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtTemplateName' - The name of the template to be deleted.
-deleteTemplate
-    :: Text -- ^ 'dtTemplateName'
-    -> DeleteTemplate
-deleteTemplate pTemplateName_ =
-  DeleteTemplate' {_dtTemplateName = pTemplateName_}
-
-
--- | The name of the template to be deleted.
-dtTemplateName :: Lens' DeleteTemplate Text
-dtTemplateName = lens _dtTemplateName (\ s a -> s{_dtTemplateName = a})
-
-instance AWSRequest DeleteTemplate where
-        type Rs DeleteTemplate = DeleteTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "DeleteTemplateResult"
-              (\ s h x ->
-                 DeleteTemplateResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteTemplate where
-
-instance NFData DeleteTemplate where
-
-instance ToHeaders DeleteTemplate where
-        toHeaders = const mempty
-
-instance ToPath DeleteTemplate where
-        toPath = const "/"
-
-instance ToQuery DeleteTemplate where
-        toQuery DeleteTemplate'{..}
-          = mconcat
-              ["Action" =: ("DeleteTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _dtTemplateName]
-
--- | /See:/ 'deleteTemplateResponse' smart constructor.
-newtype DeleteTemplateResponse = DeleteTemplateResponse'
-  { _dtrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtrsResponseStatus' - -- | The response status code.
-deleteTemplateResponse
-    :: Int -- ^ 'dtrsResponseStatus'
-    -> DeleteTemplateResponse
-deleteTemplateResponse pResponseStatus_ =
-  DeleteTemplateResponse' {_dtrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dtrsResponseStatus :: Lens' DeleteTemplateResponse Int
-dtrsResponseStatus = lens _dtrsResponseStatus (\ s a -> s{_dtrsResponseStatus = a})
-
-instance NFData DeleteTemplateResponse where
diff --git a/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs b/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DeleteVerifiedEmailAddress.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# 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.DeleteVerifiedEmailAddress
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deprecated. Use the @DeleteIdentity@ operation to delete email addresses and domains.
---
---
-module Network.AWS.SES.DeleteVerifiedEmailAddress
-    (
-    -- * Creating a Request
-      deleteVerifiedEmailAddress
-    , DeleteVerifiedEmailAddress
-    -- * Request Lenses
-    , dveaEmailAddress
-
-    -- * Destructuring the Response
-    , deleteVerifiedEmailAddressResponse
-    , DeleteVerifiedEmailAddressResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to delete an email address from the list of email addresses you have attempted to verify under your AWS account.
---
---
---
--- /See:/ 'deleteVerifiedEmailAddress' smart constructor.
-newtype DeleteVerifiedEmailAddress = DeleteVerifiedEmailAddress'
-  { _dveaEmailAddress :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteVerifiedEmailAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dveaEmailAddress' - An email address to be removed from the list of verified addresses.
-deleteVerifiedEmailAddress
-    :: Text -- ^ 'dveaEmailAddress'
-    -> DeleteVerifiedEmailAddress
-deleteVerifiedEmailAddress pEmailAddress_ =
-  DeleteVerifiedEmailAddress' {_dveaEmailAddress = pEmailAddress_}
-
-
--- | An email address to be removed from the list of verified addresses.
-dveaEmailAddress :: Lens' DeleteVerifiedEmailAddress Text
-dveaEmailAddress = lens _dveaEmailAddress (\ s a -> s{_dveaEmailAddress = a})
-
-instance AWSRequest DeleteVerifiedEmailAddress where
-        type Rs DeleteVerifiedEmailAddress =
-             DeleteVerifiedEmailAddressResponse
-        request = postQuery ses
-        response
-          = receiveNull DeleteVerifiedEmailAddressResponse'
-
-instance Hashable DeleteVerifiedEmailAddress where
-
-instance NFData DeleteVerifiedEmailAddress where
-
-instance ToHeaders DeleteVerifiedEmailAddress where
-        toHeaders = const mempty
-
-instance ToPath DeleteVerifiedEmailAddress where
-        toPath = const "/"
-
-instance ToQuery DeleteVerifiedEmailAddress where
-        toQuery DeleteVerifiedEmailAddress'{..}
-          = mconcat
-              ["Action" =:
-                 ("DeleteVerifiedEmailAddress" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "EmailAddress" =: _dveaEmailAddress]
-
--- | /See:/ 'deleteVerifiedEmailAddressResponse' smart constructor.
-data DeleteVerifiedEmailAddressResponse =
-  DeleteVerifiedEmailAddressResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteVerifiedEmailAddressResponse' with the minimum fields required to make a request.
---
-deleteVerifiedEmailAddressResponse
-    :: DeleteVerifiedEmailAddressResponse
-deleteVerifiedEmailAddressResponse = DeleteVerifiedEmailAddressResponse'
-
-
-instance NFData DeleteVerifiedEmailAddressResponse
-         where
diff --git a/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs b/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DescribeActiveReceiptRuleSet.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DescribeActiveReceiptRuleSet
-    (
-    -- * Creating a Request
-      describeActiveReceiptRuleSet
-    , DescribeActiveReceiptRuleSet
-
-    -- * Destructuring the Response
-    , describeActiveReceiptRuleSetResponse
-    , DescribeActiveReceiptRuleSetResponse
-    -- * Response Lenses
-    , darrsrsRules
-    , darrsrsMetadata
-    , darrsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the metadata and receipt rules for the receipt rule set that is currently active. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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 Hashable DescribeActiveReceiptRuleSet where
-
-instance NFData DescribeActiveReceiptRuleSet where
-
-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)])
-
--- | Represents the metadata and receipt rules for the receipt rule set that is currently active.
---
---
---
--- /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' - The receipt rules that belong to the active rule set.
---
--- * 'darrsrsMetadata' - 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.
---
--- * 'darrsrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData DescribeActiveReceiptRuleSetResponse
-         where
diff --git a/gen/Network/AWS/SES/DescribeConfigurationSet.hs b/gen/Network/AWS/SES/DescribeConfigurationSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DescribeConfigurationSet.hs
+++ /dev/null
@@ -1,188 +0,0 @@
-{-# 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.DescribeConfigurationSet
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the details of the specified configuration set. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.DescribeConfigurationSet
-    (
-    -- * Creating a Request
-      describeConfigurationSet
-    , DescribeConfigurationSet
-    -- * Request Lenses
-    , dcsConfigurationSetAttributeNames
-    , dcsConfigurationSetName
-
-    -- * Destructuring the Response
-    , describeConfigurationSetResponse
-    , DescribeConfigurationSetResponse
-    -- * Response Lenses
-    , dcsrsTrackingOptions
-    , dcsrsConfigurationSet
-    , dcsrsReputationOptions
-    , dcsrsEventDestinations
-    , dcsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the details of a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'describeConfigurationSet' smart constructor.
-data DescribeConfigurationSet = DescribeConfigurationSet'
-  { _dcsConfigurationSetAttributeNames :: !(Maybe [ConfigurationSetAttribute])
-  , _dcsConfigurationSetName           :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeConfigurationSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcsConfigurationSetAttributeNames' - A list of configuration set attributes to return.
---
--- * 'dcsConfigurationSetName' - The name of the configuration set to describe.
-describeConfigurationSet
-    :: Text -- ^ 'dcsConfigurationSetName'
-    -> DescribeConfigurationSet
-describeConfigurationSet pConfigurationSetName_ =
-  DescribeConfigurationSet'
-    { _dcsConfigurationSetAttributeNames = Nothing
-    , _dcsConfigurationSetName = pConfigurationSetName_
-    }
-
-
--- | A list of configuration set attributes to return.
-dcsConfigurationSetAttributeNames :: Lens' DescribeConfigurationSet [ConfigurationSetAttribute]
-dcsConfigurationSetAttributeNames = lens _dcsConfigurationSetAttributeNames (\ s a -> s{_dcsConfigurationSetAttributeNames = a}) . _Default . _Coerce
-
--- | The name of the configuration set to describe.
-dcsConfigurationSetName :: Lens' DescribeConfigurationSet Text
-dcsConfigurationSetName = lens _dcsConfigurationSetName (\ s a -> s{_dcsConfigurationSetName = a})
-
-instance AWSRequest DescribeConfigurationSet where
-        type Rs DescribeConfigurationSet =
-             DescribeConfigurationSetResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "DescribeConfigurationSetResult"
-              (\ s h x ->
-                 DescribeConfigurationSetResponse' <$>
-                   (x .@? "TrackingOptions") <*>
-                     (x .@? "ConfigurationSet")
-                     <*> (x .@? "ReputationOptions")
-                     <*>
-                     (x .@? "EventDestinations" .!@ mempty >>=
-                        may (parseXMLList "member"))
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeConfigurationSet where
-
-instance NFData DescribeConfigurationSet where
-
-instance ToHeaders DescribeConfigurationSet where
-        toHeaders = const mempty
-
-instance ToPath DescribeConfigurationSet where
-        toPath = const "/"
-
-instance ToQuery DescribeConfigurationSet where
-        toQuery DescribeConfigurationSet'{..}
-          = mconcat
-              ["Action" =:
-                 ("DescribeConfigurationSet" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetAttributeNames" =:
-                 toQuery
-                   (toQueryList "member" <$>
-                      _dcsConfigurationSetAttributeNames),
-               "ConfigurationSetName" =: _dcsConfigurationSetName]
-
--- | Represents the details of a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'describeConfigurationSetResponse' smart constructor.
-data DescribeConfigurationSetResponse = DescribeConfigurationSetResponse'
-  { _dcsrsTrackingOptions   :: !(Maybe TrackingOptions)
-  , _dcsrsConfigurationSet  :: !(Maybe ConfigurationSet)
-  , _dcsrsReputationOptions :: !(Maybe ReputationOptions)
-  , _dcsrsEventDestinations :: !(Maybe [EventDestination])
-  , _dcsrsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeConfigurationSetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcsrsTrackingOptions' - The name of the custom open and click tracking domain associated with the configuration set.
---
--- * 'dcsrsConfigurationSet' - The configuration set object associated with the specified configuration set.
---
--- * 'dcsrsReputationOptions' - An object that represents the reputation settings for the configuration set.
---
--- * 'dcsrsEventDestinations' - A list of event destinations associated with the configuration set.
---
--- * 'dcsrsResponseStatus' - -- | The response status code.
-describeConfigurationSetResponse
-    :: Int -- ^ 'dcsrsResponseStatus'
-    -> DescribeConfigurationSetResponse
-describeConfigurationSetResponse pResponseStatus_ =
-  DescribeConfigurationSetResponse'
-    { _dcsrsTrackingOptions = Nothing
-    , _dcsrsConfigurationSet = Nothing
-    , _dcsrsReputationOptions = Nothing
-    , _dcsrsEventDestinations = Nothing
-    , _dcsrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The name of the custom open and click tracking domain associated with the configuration set.
-dcsrsTrackingOptions :: Lens' DescribeConfigurationSetResponse (Maybe TrackingOptions)
-dcsrsTrackingOptions = lens _dcsrsTrackingOptions (\ s a -> s{_dcsrsTrackingOptions = a})
-
--- | The configuration set object associated with the specified configuration set.
-dcsrsConfigurationSet :: Lens' DescribeConfigurationSetResponse (Maybe ConfigurationSet)
-dcsrsConfigurationSet = lens _dcsrsConfigurationSet (\ s a -> s{_dcsrsConfigurationSet = a})
-
--- | An object that represents the reputation settings for the configuration set.
-dcsrsReputationOptions :: Lens' DescribeConfigurationSetResponse (Maybe ReputationOptions)
-dcsrsReputationOptions = lens _dcsrsReputationOptions (\ s a -> s{_dcsrsReputationOptions = a})
-
--- | A list of event destinations associated with the configuration set.
-dcsrsEventDestinations :: Lens' DescribeConfigurationSetResponse [EventDestination]
-dcsrsEventDestinations = lens _dcsrsEventDestinations (\ s a -> s{_dcsrsEventDestinations = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dcsrsResponseStatus :: Lens' DescribeConfigurationSetResponse Int
-dcsrsResponseStatus = lens _dcsrsResponseStatus (\ s a -> s{_dcsrsResponseStatus = a})
-
-instance NFData DescribeConfigurationSetResponse
-         where
diff --git a/gen/Network/AWS/SES/DescribeReceiptRule.hs b/gen/Network/AWS/SES/DescribeReceiptRule.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DescribeReceiptRule.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the details of a receipt rule. You use receipt rules to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set that the receipt rule belongs to.
---
--- * 'drrRuleName' - The name of the receipt rule.
-describeReceiptRule
-    :: Text -- ^ 'drrRuleSetName'
-    -> Text -- ^ 'drrRuleName'
-    -> DescribeReceiptRule
-describeReceiptRule pRuleSetName_ pRuleName_ =
-  DescribeReceiptRule'
-    {_drrRuleSetName = pRuleSetName_, _drrRuleName = pRuleName_}
-
-
--- | The name of the receipt rule set that the receipt rule belongs to.
-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 Hashable DescribeReceiptRule where
-
-instance NFData DescribeReceiptRule where
-
-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]
-
--- | Represents the details of a receipt rule.
---
---
---
--- /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' - A data structure that contains the specified receipt rule's name, actions, recipients, domains, enabled status, scan status, and Transport Layer Security (TLS) policy.
---
--- * 'drrrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData DescribeReceiptRuleResponse where
diff --git a/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs b/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/DescribeReceiptRuleSet.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the details of a receipt rule set. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set to describe.
-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 Hashable DescribeReceiptRuleSet where
-
-instance NFData DescribeReceiptRuleSet where
-
-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]
-
--- | Represents the details of the specified receipt rule set.
---
---
---
--- /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' - A list of the receipt rules that belong to the specified receipt rule set.
---
--- * 'desrsMetadata' - The metadata for the receipt rule set, which consists of the rule set name and the timestamp of when the rule set was created.
---
--- * 'desrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData DescribeReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/GetAccountSendingEnabled.hs b/gen/Network/AWS/SES/GetAccountSendingEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetAccountSendingEnabled.hs
+++ /dev/null
@@ -1,123 +0,0 @@
-{-# 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.GetAccountSendingEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the email sending status of the Amazon SES account.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetAccountSendingEnabled
-    (
-    -- * Creating a Request
-      getAccountSendingEnabled
-    , GetAccountSendingEnabled
-
-    -- * Destructuring the Response
-    , getAccountSendingEnabledResponse
-    , GetAccountSendingEnabledResponse
-    -- * Response Lenses
-    , gasersEnabled
-    , gasersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'getAccountSendingEnabled' smart constructor.
-data GetAccountSendingEnabled =
-  GetAccountSendingEnabled'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetAccountSendingEnabled' with the minimum fields required to make a request.
---
-getAccountSendingEnabled
-    :: GetAccountSendingEnabled
-getAccountSendingEnabled = GetAccountSendingEnabled'
-
-
-instance AWSRequest GetAccountSendingEnabled where
-        type Rs GetAccountSendingEnabled =
-             GetAccountSendingEnabledResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetAccountSendingEnabledResult"
-              (\ s h x ->
-                 GetAccountSendingEnabledResponse' <$>
-                   (x .@? "Enabled") <*> (pure (fromEnum s)))
-
-instance Hashable GetAccountSendingEnabled where
-
-instance NFData GetAccountSendingEnabled where
-
-instance ToHeaders GetAccountSendingEnabled where
-        toHeaders = const mempty
-
-instance ToPath GetAccountSendingEnabled where
-        toPath = const "/"
-
-instance ToQuery GetAccountSendingEnabled where
-        toQuery
-          = const
-              (mconcat
-                 ["Action" =:
-                    ("GetAccountSendingEnabled" :: ByteString),
-                  "Version" =: ("2010-12-01" :: ByteString)])
-
--- | Represents a request to return the email sending status for your Amazon SES account.
---
---
---
--- /See:/ 'getAccountSendingEnabledResponse' smart constructor.
-data GetAccountSendingEnabledResponse = GetAccountSendingEnabledResponse'
-  { _gasersEnabled        :: !(Maybe Bool)
-  , _gasersResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetAccountSendingEnabledResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gasersEnabled' - Describes whether email sending is enabled or disabled for your Amazon SES account.
---
--- * 'gasersResponseStatus' - -- | The response status code.
-getAccountSendingEnabledResponse
-    :: Int -- ^ 'gasersResponseStatus'
-    -> GetAccountSendingEnabledResponse
-getAccountSendingEnabledResponse pResponseStatus_ =
-  GetAccountSendingEnabledResponse'
-    {_gasersEnabled = Nothing, _gasersResponseStatus = pResponseStatus_}
-
-
--- | Describes whether email sending is enabled or disabled for your Amazon SES account.
-gasersEnabled :: Lens' GetAccountSendingEnabledResponse (Maybe Bool)
-gasersEnabled = lens _gasersEnabled (\ s a -> s{_gasersEnabled = a})
-
--- | -- | The response status code.
-gasersResponseStatus :: Lens' GetAccountSendingEnabledResponse Int
-gasersResponseStatus = lens _gasersResponseStatus (\ s a -> s{_gasersResponseStatus = a})
-
-instance NFData GetAccountSendingEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/GetCustomVerificationEmailTemplate.hs b/gen/Network/AWS/SES/GetCustomVerificationEmailTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetCustomVerificationEmailTemplate.hs
+++ /dev/null
@@ -1,201 +0,0 @@
-{-# 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.GetCustomVerificationEmailTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the custom email verification template for the template name you specify.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetCustomVerificationEmailTemplate
-    (
-    -- * Creating a Request
-      getCustomVerificationEmailTemplate
-    , GetCustomVerificationEmailTemplate
-    -- * Request Lenses
-    , gcvetTemplateName
-
-    -- * Destructuring the Response
-    , getCustomVerificationEmailTemplateResponse
-    , GetCustomVerificationEmailTemplateResponse
-    -- * Response Lenses
-    , gcvetrsFromEmailAddress
-    , gcvetrsTemplateName
-    , gcvetrsFailureRedirectionURL
-    , gcvetrsTemplateSubject
-    , gcvetrsSuccessRedirectionURL
-    , gcvetrsTemplateContent
-    , gcvetrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to retrieve an existing custom verification email template.
---
---
---
--- /See:/ 'getCustomVerificationEmailTemplate' smart constructor.
-newtype GetCustomVerificationEmailTemplate = GetCustomVerificationEmailTemplate'
-  { _gcvetTemplateName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCustomVerificationEmailTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcvetTemplateName' - The name of the custom verification email template that you want to retrieve.
-getCustomVerificationEmailTemplate
-    :: Text -- ^ 'gcvetTemplateName'
-    -> GetCustomVerificationEmailTemplate
-getCustomVerificationEmailTemplate pTemplateName_ =
-  GetCustomVerificationEmailTemplate' {_gcvetTemplateName = pTemplateName_}
-
-
--- | The name of the custom verification email template that you want to retrieve.
-gcvetTemplateName :: Lens' GetCustomVerificationEmailTemplate Text
-gcvetTemplateName = lens _gcvetTemplateName (\ s a -> s{_gcvetTemplateName = a})
-
-instance AWSRequest
-           GetCustomVerificationEmailTemplate
-         where
-        type Rs GetCustomVerificationEmailTemplate =
-             GetCustomVerificationEmailTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "GetCustomVerificationEmailTemplateResult"
-              (\ s h x ->
-                 GetCustomVerificationEmailTemplateResponse' <$>
-                   (x .@? "FromEmailAddress") <*> (x .@? "TemplateName")
-                     <*> (x .@? "FailureRedirectionURL")
-                     <*> (x .@? "TemplateSubject")
-                     <*> (x .@? "SuccessRedirectionURL")
-                     <*> (x .@? "TemplateContent")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetCustomVerificationEmailTemplate
-         where
-
-instance NFData GetCustomVerificationEmailTemplate
-         where
-
-instance ToHeaders GetCustomVerificationEmailTemplate
-         where
-        toHeaders = const mempty
-
-instance ToPath GetCustomVerificationEmailTemplate
-         where
-        toPath = const "/"
-
-instance ToQuery GetCustomVerificationEmailTemplate
-         where
-        toQuery GetCustomVerificationEmailTemplate'{..}
-          = mconcat
-              ["Action" =:
-                 ("GetCustomVerificationEmailTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _gcvetTemplateName]
-
--- | The content of the custom verification email template.
---
---
---
--- /See:/ 'getCustomVerificationEmailTemplateResponse' smart constructor.
-data GetCustomVerificationEmailTemplateResponse = GetCustomVerificationEmailTemplateResponse'
-  { _gcvetrsFromEmailAddress      :: !(Maybe Text)
-  , _gcvetrsTemplateName          :: !(Maybe Text)
-  , _gcvetrsFailureRedirectionURL :: !(Maybe Text)
-  , _gcvetrsTemplateSubject       :: !(Maybe Text)
-  , _gcvetrsSuccessRedirectionURL :: !(Maybe Text)
-  , _gcvetrsTemplateContent       :: !(Maybe Text)
-  , _gcvetrsResponseStatus        :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCustomVerificationEmailTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcvetrsFromEmailAddress' - The email address that the custom verification email is sent from.
---
--- * 'gcvetrsTemplateName' - The name of the custom verification email template.
---
--- * 'gcvetrsFailureRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
---
--- * 'gcvetrsTemplateSubject' - The subject line of the custom verification email.
---
--- * 'gcvetrsSuccessRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
---
--- * 'gcvetrsTemplateContent' - The content of the custom verification email.
---
--- * 'gcvetrsResponseStatus' - -- | The response status code.
-getCustomVerificationEmailTemplateResponse
-    :: Int -- ^ 'gcvetrsResponseStatus'
-    -> GetCustomVerificationEmailTemplateResponse
-getCustomVerificationEmailTemplateResponse pResponseStatus_ =
-  GetCustomVerificationEmailTemplateResponse'
-    { _gcvetrsFromEmailAddress = Nothing
-    , _gcvetrsTemplateName = Nothing
-    , _gcvetrsFailureRedirectionURL = Nothing
-    , _gcvetrsTemplateSubject = Nothing
-    , _gcvetrsSuccessRedirectionURL = Nothing
-    , _gcvetrsTemplateContent = Nothing
-    , _gcvetrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The email address that the custom verification email is sent from.
-gcvetrsFromEmailAddress :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsFromEmailAddress = lens _gcvetrsFromEmailAddress (\ s a -> s{_gcvetrsFromEmailAddress = a})
-
--- | The name of the custom verification email template.
-gcvetrsTemplateName :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsTemplateName = lens _gcvetrsTemplateName (\ s a -> s{_gcvetrsTemplateName = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
-gcvetrsFailureRedirectionURL :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsFailureRedirectionURL = lens _gcvetrsFailureRedirectionURL (\ s a -> s{_gcvetrsFailureRedirectionURL = a})
-
--- | The subject line of the custom verification email.
-gcvetrsTemplateSubject :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsTemplateSubject = lens _gcvetrsTemplateSubject (\ s a -> s{_gcvetrsTemplateSubject = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
-gcvetrsSuccessRedirectionURL :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsSuccessRedirectionURL = lens _gcvetrsSuccessRedirectionURL (\ s a -> s{_gcvetrsSuccessRedirectionURL = a})
-
--- | The content of the custom verification email.
-gcvetrsTemplateContent :: Lens' GetCustomVerificationEmailTemplateResponse (Maybe Text)
-gcvetrsTemplateContent = lens _gcvetrsTemplateContent (\ s a -> s{_gcvetrsTemplateContent = a})
-
--- | -- | The response status code.
-gcvetrsResponseStatus :: Lens' GetCustomVerificationEmailTemplateResponse Int
-gcvetrsResponseStatus = lens _gcvetrsResponseStatus (\ s a -> s{_gcvetrsResponseStatus = a})
-
-instance NFData
-           GetCustomVerificationEmailTemplateResponse
-         where
diff --git a/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs b/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetIdentityDkimAttributes.hs
+++ /dev/null
@@ -1,151 +0,0 @@
-{-# 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.GetIdentityDkimAttributes
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the current status of Easy DKIM signing for an entity. For domain name identities, this operation also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES has successfully verified that these tokens have been published.
---
---
--- This operation takes a list of identities as input and returns the following information for each:
---
---     * Whether Easy DKIM signing is enabled or disabled.
---
---     * A set of DKIM tokens that represent the identity. If the identity is an email address, the tokens represent the domain of that address.
---
---     * Whether Amazon SES has successfully verified the DKIM tokens published in the domain's DNS. This information is only returned for domain name identities, not for email addresses.
---
---
---
--- This operation is throttled at one request per second and can only get DKIM attributes for up to 100 identities at a time.
---
--- 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> .
---
-module Network.AWS.SES.GetIdentityDkimAttributes
-    (
-    -- * Creating a Request
-      getIdentityDkimAttributes
-    , GetIdentityDkimAttributes
-    -- * Request Lenses
-    , gidaIdentities
-
-    -- * Destructuring the Response
-    , getIdentityDkimAttributesResponse
-    , GetIdentityDkimAttributesResponse
-    -- * Response Lenses
-    , gidarsResponseStatus
-    , gidarsDkimAttributes
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request for the status of Amazon SES Easy DKIM signing for an identity. For domain identities, this request also returns the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES successfully verified that these tokens were published. For more information about Easy DKIM, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'getIdentityDkimAttributes' smart constructor.
-newtype GetIdentityDkimAttributes = GetIdentityDkimAttributes'
-  { _gidaIdentities :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityDkimAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gidaIdentities' - A list of one or more verified identities - email addresses, domains, or both.
-getIdentityDkimAttributes
-    :: GetIdentityDkimAttributes
-getIdentityDkimAttributes =
-  GetIdentityDkimAttributes' {_gidaIdentities = mempty}
-
-
--- | A list of one or more verified identities - email addresses, domains, or both.
-gidaIdentities :: Lens' GetIdentityDkimAttributes [Text]
-gidaIdentities = lens _gidaIdentities (\ s a -> s{_gidaIdentities = a}) . _Coerce
-
-instance AWSRequest GetIdentityDkimAttributes where
-        type Rs GetIdentityDkimAttributes =
-             GetIdentityDkimAttributesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetIdentityDkimAttributesResult"
-              (\ s h x ->
-                 GetIdentityDkimAttributesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "DkimAttributes" .!@ mempty >>=
-                        parseXMLMap "entry" "key" "value"))
-
-instance Hashable GetIdentityDkimAttributes where
-
-instance NFData GetIdentityDkimAttributes where
-
-instance ToHeaders GetIdentityDkimAttributes where
-        toHeaders = const mempty
-
-instance ToPath GetIdentityDkimAttributes where
-        toPath = const "/"
-
-instance ToQuery GetIdentityDkimAttributes where
-        toQuery GetIdentityDkimAttributes'{..}
-          = mconcat
-              ["Action" =:
-                 ("GetIdentityDkimAttributes" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identities" =: toQueryList "member" _gidaIdentities]
-
--- | Represents the status of Amazon SES Easy DKIM signing for an identity. For domain identities, this response also contains the DKIM tokens that are required for Easy DKIM signing, and whether Amazon SES successfully verified that these tokens were published.
---
---
---
--- /See:/ 'getIdentityDkimAttributesResponse' smart constructor.
-data GetIdentityDkimAttributesResponse = GetIdentityDkimAttributesResponse'
-  { _gidarsResponseStatus :: !Int
-  , _gidarsDkimAttributes :: !(Map Text IdentityDkimAttributes)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityDkimAttributesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gidarsResponseStatus' - -- | The response status code.
---
--- * 'gidarsDkimAttributes' - The DKIM attributes for an email address or a domain.
-getIdentityDkimAttributesResponse
-    :: Int -- ^ 'gidarsResponseStatus'
-    -> GetIdentityDkimAttributesResponse
-getIdentityDkimAttributesResponse pResponseStatus_ =
-  GetIdentityDkimAttributesResponse'
-    {_gidarsResponseStatus = pResponseStatus_, _gidarsDkimAttributes = mempty}
-
-
--- | -- | The response status code.
-gidarsResponseStatus :: Lens' GetIdentityDkimAttributesResponse Int
-gidarsResponseStatus = lens _gidarsResponseStatus (\ s a -> s{_gidarsResponseStatus = a})
-
--- | The DKIM attributes for an email address or a domain.
-gidarsDkimAttributes :: Lens' GetIdentityDkimAttributesResponse (HashMap Text IdentityDkimAttributes)
-gidarsDkimAttributes = lens _gidarsDkimAttributes (\ s a -> s{_gidarsDkimAttributes = a}) . _Map
-
-instance NFData GetIdentityDkimAttributesResponse
-         where
diff --git a/gen/Network/AWS/SES/GetIdentityMailFromDomainAttributes.hs b/gen/Network/AWS/SES/GetIdentityMailFromDomainAttributes.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetIdentityMailFromDomainAttributes.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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.GetIdentityMailFromDomainAttributes
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the custom MAIL FROM attributes for a list of identities (email addresses : domains).
---
---
--- This operation is throttled at one request per second and can only get custom MAIL FROM attributes for up to 100 identities at a time.
---
-module Network.AWS.SES.GetIdentityMailFromDomainAttributes
-    (
-    -- * Creating a Request
-      getIdentityMailFromDomainAttributes
-    , GetIdentityMailFromDomainAttributes
-    -- * Request Lenses
-    , gimfdaIdentities
-
-    -- * Destructuring the Response
-    , getIdentityMailFromDomainAttributesResponse
-    , GetIdentityMailFromDomainAttributesResponse
-    -- * Response Lenses
-    , gimfdarsResponseStatus
-    , gimfdarsMailFromDomainAttributes
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the Amazon SES custom MAIL FROM attributes for a list of identities. For information about using a custom MAIL FROM domain, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'getIdentityMailFromDomainAttributes' smart constructor.
-newtype GetIdentityMailFromDomainAttributes = GetIdentityMailFromDomainAttributes'
-  { _gimfdaIdentities :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityMailFromDomainAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gimfdaIdentities' - A list of one or more identities.
-getIdentityMailFromDomainAttributes
-    :: GetIdentityMailFromDomainAttributes
-getIdentityMailFromDomainAttributes =
-  GetIdentityMailFromDomainAttributes' {_gimfdaIdentities = mempty}
-
-
--- | A list of one or more identities.
-gimfdaIdentities :: Lens' GetIdentityMailFromDomainAttributes [Text]
-gimfdaIdentities = lens _gimfdaIdentities (\ s a -> s{_gimfdaIdentities = a}) . _Coerce
-
-instance AWSRequest
-           GetIdentityMailFromDomainAttributes
-         where
-        type Rs GetIdentityMailFromDomainAttributes =
-             GetIdentityMailFromDomainAttributesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "GetIdentityMailFromDomainAttributesResult"
-              (\ s h x ->
-                 GetIdentityMailFromDomainAttributesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "MailFromDomainAttributes" .!@ mempty >>=
-                        parseXMLMap "entry" "key" "value"))
-
-instance Hashable GetIdentityMailFromDomainAttributes
-         where
-
-instance NFData GetIdentityMailFromDomainAttributes
-         where
-
-instance ToHeaders
-           GetIdentityMailFromDomainAttributes
-         where
-        toHeaders = const mempty
-
-instance ToPath GetIdentityMailFromDomainAttributes
-         where
-        toPath = const "/"
-
-instance ToQuery GetIdentityMailFromDomainAttributes
-         where
-        toQuery GetIdentityMailFromDomainAttributes'{..}
-          = mconcat
-              ["Action" =:
-                 ("GetIdentityMailFromDomainAttributes" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identities" =:
-                 toQueryList "member" _gimfdaIdentities]
-
--- | Represents the custom MAIL FROM attributes for a list of identities.
---
---
---
--- /See:/ 'getIdentityMailFromDomainAttributesResponse' smart constructor.
-data GetIdentityMailFromDomainAttributesResponse = GetIdentityMailFromDomainAttributesResponse'
-  { _gimfdarsResponseStatus :: !Int
-  , _gimfdarsMailFromDomainAttributes :: !(Map Text IdentityMailFromDomainAttributes)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityMailFromDomainAttributesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gimfdarsResponseStatus' - -- | The response status code.
---
--- * 'gimfdarsMailFromDomainAttributes' - A map of identities to custom MAIL FROM attributes.
-getIdentityMailFromDomainAttributesResponse
-    :: Int -- ^ 'gimfdarsResponseStatus'
-    -> GetIdentityMailFromDomainAttributesResponse
-getIdentityMailFromDomainAttributesResponse pResponseStatus_ =
-  GetIdentityMailFromDomainAttributesResponse'
-    { _gimfdarsResponseStatus = pResponseStatus_
-    , _gimfdarsMailFromDomainAttributes = mempty
-    }
-
-
--- | -- | The response status code.
-gimfdarsResponseStatus :: Lens' GetIdentityMailFromDomainAttributesResponse Int
-gimfdarsResponseStatus = lens _gimfdarsResponseStatus (\ s a -> s{_gimfdarsResponseStatus = a})
-
--- | A map of identities to custom MAIL FROM attributes.
-gimfdarsMailFromDomainAttributes :: Lens' GetIdentityMailFromDomainAttributesResponse (HashMap Text IdentityMailFromDomainAttributes)
-gimfdarsMailFromDomainAttributes = lens _gimfdarsMailFromDomainAttributes (\ s a -> s{_gimfdarsMailFromDomainAttributes = a}) . _Map
-
-instance NFData
-           GetIdentityMailFromDomainAttributesResponse
-         where
diff --git a/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs b/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetIdentityNotificationAttributes.hs
+++ /dev/null
@@ -1,151 +0,0 @@
-{-# 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.GetIdentityNotificationAttributes
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Given a list of verified identities (email addresses and/or domains), returns a structure describing identity notification attributes.
---
---
--- This operation is throttled at one request per second and can only get notification attributes for up to 100 identities at a time.
---
--- For more information about using notifications with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.GetIdentityNotificationAttributes
-    (
-    -- * Creating a Request
-      getIdentityNotificationAttributes
-    , GetIdentityNotificationAttributes
-    -- * Request Lenses
-    , ginaIdentities
-
-    -- * Destructuring the Response
-    , getIdentityNotificationAttributesResponse
-    , GetIdentityNotificationAttributesResponse
-    -- * Response Lenses
-    , ginarsResponseStatus
-    , ginarsNotificationAttributes
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the notification attributes for a list of identities you verified with Amazon SES. For information about Amazon SES notifications, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'getIdentityNotificationAttributes' smart constructor.
-newtype GetIdentityNotificationAttributes = GetIdentityNotificationAttributes'
-  { _ginaIdentities :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityNotificationAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ginaIdentities' - A list of one or more identities. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ .
-getIdentityNotificationAttributes
-    :: GetIdentityNotificationAttributes
-getIdentityNotificationAttributes =
-  GetIdentityNotificationAttributes' {_ginaIdentities = mempty}
-
-
--- | A list of one or more identities. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ .
-ginaIdentities :: Lens' GetIdentityNotificationAttributes [Text]
-ginaIdentities = lens _ginaIdentities (\ s a -> s{_ginaIdentities = a}) . _Coerce
-
-instance AWSRequest GetIdentityNotificationAttributes
-         where
-        type Rs GetIdentityNotificationAttributes =
-             GetIdentityNotificationAttributesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "GetIdentityNotificationAttributesResult"
-              (\ s h x ->
-                 GetIdentityNotificationAttributesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "NotificationAttributes" .!@ mempty >>=
-                        parseXMLMap "entry" "key" "value"))
-
-instance Hashable GetIdentityNotificationAttributes
-         where
-
-instance NFData GetIdentityNotificationAttributes
-         where
-
-instance ToHeaders GetIdentityNotificationAttributes
-         where
-        toHeaders = const mempty
-
-instance ToPath GetIdentityNotificationAttributes
-         where
-        toPath = const "/"
-
-instance ToQuery GetIdentityNotificationAttributes
-         where
-        toQuery GetIdentityNotificationAttributes'{..}
-          = mconcat
-              ["Action" =:
-                 ("GetIdentityNotificationAttributes" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identities" =: toQueryList "member" _ginaIdentities]
-
--- | Represents the notification attributes for a list of identities.
---
---
---
--- /See:/ 'getIdentityNotificationAttributesResponse' smart constructor.
-data GetIdentityNotificationAttributesResponse = GetIdentityNotificationAttributesResponse'
-  { _ginarsResponseStatus         :: !Int
-  , _ginarsNotificationAttributes :: !(Map Text IdentityNotificationAttributes)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityNotificationAttributesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ginarsResponseStatus' - -- | The response status code.
---
--- * 'ginarsNotificationAttributes' - A map of Identity to IdentityNotificationAttributes.
-getIdentityNotificationAttributesResponse
-    :: Int -- ^ 'ginarsResponseStatus'
-    -> GetIdentityNotificationAttributesResponse
-getIdentityNotificationAttributesResponse pResponseStatus_ =
-  GetIdentityNotificationAttributesResponse'
-    { _ginarsResponseStatus = pResponseStatus_
-    , _ginarsNotificationAttributes = mempty
-    }
-
-
--- | -- | The response status code.
-ginarsResponseStatus :: Lens' GetIdentityNotificationAttributesResponse Int
-ginarsResponseStatus = lens _ginarsResponseStatus (\ s a -> s{_ginarsResponseStatus = a})
-
--- | A map of Identity to IdentityNotificationAttributes.
-ginarsNotificationAttributes :: Lens' GetIdentityNotificationAttributesResponse (HashMap Text IdentityNotificationAttributes)
-ginarsNotificationAttributes = lens _ginarsNotificationAttributes (\ s a -> s{_ginarsNotificationAttributes = a}) . _Map
-
-instance NFData
-           GetIdentityNotificationAttributesResponse
-         where
diff --git a/gen/Network/AWS/SES/GetIdentityPolicies.hs b/gen/Network/AWS/SES/GetIdentityPolicies.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetIdentityPolicies.hs
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# 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.GetIdentityPolicies
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the requested sending authorization policies for the given identity (an email address or a domain). The policies are returned as a map of policy names to policy contents. You can retrieve a maximum of 20 policies at a time.
---
---
--- Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetIdentityPolicies
-    (
-    -- * Creating a Request
-      getIdentityPolicies
-    , GetIdentityPolicies
-    -- * Request Lenses
-    , gipIdentity
-    , gipPolicyNames
-
-    -- * Destructuring the Response
-    , getIdentityPoliciesResponse
-    , GetIdentityPoliciesResponse
-    -- * Response Lenses
-    , giprsResponseStatus
-    , giprsPolicies
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the requested sending authorization policies for an identity. Sending authorization is an Amazon SES feature that enables you to authorize other senders to use your identities. For information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'getIdentityPolicies' smart constructor.
-data GetIdentityPolicies = GetIdentityPolicies'
-  { _gipIdentity    :: !Text
-  , _gipPolicyNames :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityPolicies' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gipIdentity' - The identity for which the policies will be retrieved. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
---
--- * 'gipPolicyNames' - A list of the names of policies to be retrieved. You can retrieve a maximum of 20 policies at a time. If you do not know the names of the policies that are attached to the identity, you can use @ListIdentityPolicies@ .
-getIdentityPolicies
-    :: Text -- ^ 'gipIdentity'
-    -> GetIdentityPolicies
-getIdentityPolicies pIdentity_ =
-  GetIdentityPolicies' {_gipIdentity = pIdentity_, _gipPolicyNames = mempty}
-
-
--- | The identity for which the policies will be retrieved. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
-gipIdentity :: Lens' GetIdentityPolicies Text
-gipIdentity = lens _gipIdentity (\ s a -> s{_gipIdentity = a})
-
--- | A list of the names of policies to be retrieved. You can retrieve a maximum of 20 policies at a time. If you do not know the names of the policies that are attached to the identity, you can use @ListIdentityPolicies@ .
-gipPolicyNames :: Lens' GetIdentityPolicies [Text]
-gipPolicyNames = lens _gipPolicyNames (\ s a -> s{_gipPolicyNames = a}) . _Coerce
-
-instance AWSRequest GetIdentityPolicies where
-        type Rs GetIdentityPolicies =
-             GetIdentityPoliciesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetIdentityPoliciesResult"
-              (\ s h x ->
-                 GetIdentityPoliciesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "Policies" .!@ mempty >>=
-                        parseXMLMap "entry" "key" "value"))
-
-instance Hashable GetIdentityPolicies where
-
-instance NFData GetIdentityPolicies where
-
-instance ToHeaders GetIdentityPolicies where
-        toHeaders = const mempty
-
-instance ToPath GetIdentityPolicies where
-        toPath = const "/"
-
-instance ToQuery GetIdentityPolicies where
-        toQuery GetIdentityPolicies'{..}
-          = mconcat
-              ["Action" =: ("GetIdentityPolicies" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _gipIdentity,
-               "PolicyNames" =:
-                 toQueryList "member" _gipPolicyNames]
-
--- | Represents the requested sending authorization policies.
---
---
---
--- /See:/ 'getIdentityPoliciesResponse' smart constructor.
-data GetIdentityPoliciesResponse = GetIdentityPoliciesResponse'
-  { _giprsResponseStatus :: !Int
-  , _giprsPolicies       :: !(Map Text Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityPoliciesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'giprsResponseStatus' - -- | The response status code.
---
--- * 'giprsPolicies' - A map of policy names to policies.
-getIdentityPoliciesResponse
-    :: Int -- ^ 'giprsResponseStatus'
-    -> GetIdentityPoliciesResponse
-getIdentityPoliciesResponse pResponseStatus_ =
-  GetIdentityPoliciesResponse'
-    {_giprsResponseStatus = pResponseStatus_, _giprsPolicies = mempty}
-
-
--- | -- | The response status code.
-giprsResponseStatus :: Lens' GetIdentityPoliciesResponse Int
-giprsResponseStatus = lens _giprsResponseStatus (\ s a -> s{_giprsResponseStatus = a})
-
--- | A map of policy names to policies.
-giprsPolicies :: Lens' GetIdentityPoliciesResponse (HashMap Text Text)
-giprsPolicies = lens _giprsPolicies (\ s a -> s{_giprsPolicies = a}) . _Map
-
-instance NFData GetIdentityPoliciesResponse where
diff --git a/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs b/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetIdentityVerificationAttributes.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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.GetIdentityVerificationAttributes
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Given a list of identities (email addresses and/or domains), returns the verification status and (for domain identities) the verification token for each identity.
---
---
--- The verification status of an email address is "Pending" until the email address owner clicks the link within the verification email that Amazon SES sent to that address. If the email address owner clicks the link within 24 hours, the verification status of the email address changes to "Success". If the link is not clicked within 24 hours, the verification status changes to "Failed." In that case, if you still want to verify the email address, you must restart the verification process from the beginning.
---
--- For domain identities, the domain's verification status is "Pending" as Amazon SES searches for the required TXT record in the DNS settings of the domain. When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning.
---
--- This operation is throttled at one request per second and can only get verification attributes for up to 100 identities at a time.
---
-module Network.AWS.SES.GetIdentityVerificationAttributes
-    (
-    -- * Creating a Request
-      getIdentityVerificationAttributes
-    , GetIdentityVerificationAttributes
-    -- * Request Lenses
-    , givaIdentities
-
-    -- * Destructuring the Response
-    , getIdentityVerificationAttributesResponse
-    , GetIdentityVerificationAttributesResponse
-    -- * Response Lenses
-    , givarsResponseStatus
-    , givarsVerificationAttributes
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return the Amazon SES verification status of a list of identities. For domain identities, this request also returns the verification token. For information about verifying identities with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'getIdentityVerificationAttributes' smart constructor.
-newtype GetIdentityVerificationAttributes = GetIdentityVerificationAttributes'
-  { _givaIdentities :: [Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityVerificationAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'givaIdentities' - A list of identities.
-getIdentityVerificationAttributes
-    :: GetIdentityVerificationAttributes
-getIdentityVerificationAttributes =
-  GetIdentityVerificationAttributes' {_givaIdentities = mempty}
-
-
--- | A list of identities.
-givaIdentities :: Lens' GetIdentityVerificationAttributes [Text]
-givaIdentities = lens _givaIdentities (\ s a -> s{_givaIdentities = a}) . _Coerce
-
-instance AWSRequest GetIdentityVerificationAttributes
-         where
-        type Rs GetIdentityVerificationAttributes =
-             GetIdentityVerificationAttributesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "GetIdentityVerificationAttributesResult"
-              (\ s h x ->
-                 GetIdentityVerificationAttributesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "VerificationAttributes" .!@ mempty >>=
-                        parseXMLMap "entry" "key" "value"))
-
-instance Hashable GetIdentityVerificationAttributes
-         where
-
-instance NFData GetIdentityVerificationAttributes
-         where
-
-instance ToHeaders GetIdentityVerificationAttributes
-         where
-        toHeaders = const mempty
-
-instance ToPath GetIdentityVerificationAttributes
-         where
-        toPath = const "/"
-
-instance ToQuery GetIdentityVerificationAttributes
-         where
-        toQuery GetIdentityVerificationAttributes'{..}
-          = mconcat
-              ["Action" =:
-                 ("GetIdentityVerificationAttributes" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identities" =: toQueryList "member" _givaIdentities]
-
--- | The Amazon SES verification status of a list of identities. For domain identities, this response also contains the verification token.
---
---
---
--- /See:/ 'getIdentityVerificationAttributesResponse' smart constructor.
-data GetIdentityVerificationAttributesResponse = GetIdentityVerificationAttributesResponse'
-  { _givarsResponseStatus         :: !Int
-  , _givarsVerificationAttributes :: !(Map Text IdentityVerificationAttributes)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityVerificationAttributesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'givarsResponseStatus' - -- | The response status code.
---
--- * 'givarsVerificationAttributes' - A map of Identities to IdentityVerificationAttributes objects.
-getIdentityVerificationAttributesResponse
-    :: Int -- ^ 'givarsResponseStatus'
-    -> GetIdentityVerificationAttributesResponse
-getIdentityVerificationAttributesResponse pResponseStatus_ =
-  GetIdentityVerificationAttributesResponse'
-    { _givarsResponseStatus = pResponseStatus_
-    , _givarsVerificationAttributes = mempty
-    }
-
-
--- | -- | The response status code.
-givarsResponseStatus :: Lens' GetIdentityVerificationAttributesResponse Int
-givarsResponseStatus = lens _givarsResponseStatus (\ s a -> s{_givarsResponseStatus = a})
-
--- | A map of Identities to IdentityVerificationAttributes objects.
-givarsVerificationAttributes :: Lens' GetIdentityVerificationAttributesResponse (HashMap Text IdentityVerificationAttributes)
-givarsVerificationAttributes = lens _givarsVerificationAttributes (\ s a -> s{_givarsVerificationAttributes = a}) . _Map
-
-instance NFData
-           GetIdentityVerificationAttributesResponse
-         where
diff --git a/gen/Network/AWS/SES/GetSendQuota.hs b/gen/Network/AWS/SES/GetSendQuota.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetSendQuota.hs
+++ /dev/null
@@ -1,142 +0,0 @@
-{-# 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.GetSendQuota
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Provides the sending limits for the Amazon SES account.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetSendQuota
-    (
-    -- * Creating a Request
-      getSendQuota
-    , GetSendQuota
-
-    -- * Destructuring the Response
-    , getSendQuotaResponse
-    , GetSendQuotaResponse
-    -- * Response Lenses
-    , gsqrsMaxSendRate
-    , gsqrsSentLast24Hours
-    , gsqrsMax24HourSend
-    , gsqrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'getSendQuota' smart constructor.
-data GetSendQuota =
-  GetSendQuota'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetSendQuota' with the minimum fields required to make a request.
---
-getSendQuota
-    :: GetSendQuota
-getSendQuota = GetSendQuota'
-
-
-instance AWSRequest GetSendQuota where
-        type Rs GetSendQuota = GetSendQuotaResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetSendQuotaResult"
-              (\ s h x ->
-                 GetSendQuotaResponse' <$>
-                   (x .@? "MaxSendRate") <*> (x .@? "SentLast24Hours")
-                     <*> (x .@? "Max24HourSend")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetSendQuota where
-
-instance NFData GetSendQuota where
-
-instance ToHeaders GetSendQuota where
-        toHeaders = const mempty
-
-instance ToPath GetSendQuota where
-        toPath = const "/"
-
-instance ToQuery GetSendQuota where
-        toQuery
-          = const
-              (mconcat
-                 ["Action" =: ("GetSendQuota" :: ByteString),
-                  "Version" =: ("2010-12-01" :: ByteString)])
-
--- | Represents your Amazon SES daily sending quota, maximum send rate, and the number of emails you have sent in the last 24 hours.
---
---
---
--- /See:/ 'getSendQuotaResponse' smart constructor.
-data GetSendQuotaResponse = GetSendQuotaResponse'
-  { _gsqrsMaxSendRate     :: !(Maybe Double)
-  , _gsqrsSentLast24Hours :: !(Maybe Double)
-  , _gsqrsMax24HourSend   :: !(Maybe Double)
-  , _gsqrsResponseStatus  :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetSendQuotaResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gsqrsMaxSendRate' - The maximum number of emails that Amazon SES can accept from the user's account per second.
---
--- * 'gsqrsSentLast24Hours' - The number of emails sent during the previous 24 hours.
---
--- * 'gsqrsMax24HourSend' - The maximum number of emails the user is allowed to send in a 24-hour interval. A value of -1 signifies an unlimited quota.
---
--- * 'gsqrsResponseStatus' - -- | The response status code.
-getSendQuotaResponse
-    :: Int -- ^ 'gsqrsResponseStatus'
-    -> GetSendQuotaResponse
-getSendQuotaResponse pResponseStatus_ =
-  GetSendQuotaResponse'
-    { _gsqrsMaxSendRate = Nothing
-    , _gsqrsSentLast24Hours = Nothing
-    , _gsqrsMax24HourSend = Nothing
-    , _gsqrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The maximum number of emails that Amazon SES can accept from the user's account per second.
-gsqrsMaxSendRate :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrsMaxSendRate = lens _gsqrsMaxSendRate (\ s a -> s{_gsqrsMaxSendRate = a})
-
--- | The number of emails sent during the previous 24 hours.
-gsqrsSentLast24Hours :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrsSentLast24Hours = lens _gsqrsSentLast24Hours (\ s a -> s{_gsqrsSentLast24Hours = a})
-
--- | The maximum number of emails the user is allowed to send in a 24-hour interval. A value of -1 signifies an unlimited quota.
-gsqrsMax24HourSend :: Lens' GetSendQuotaResponse (Maybe Double)
-gsqrsMax24HourSend = lens _gsqrsMax24HourSend (\ s a -> s{_gsqrsMax24HourSend = a})
-
--- | -- | The response status code.
-gsqrsResponseStatus :: Lens' GetSendQuotaResponse Int
-gsqrsResponseStatus = lens _gsqrsResponseStatus (\ s a -> s{_gsqrsResponseStatus = a})
-
-instance NFData GetSendQuotaResponse where
diff --git a/gen/Network/AWS/SES/GetSendStatistics.hs b/gen/Network/AWS/SES/GetSendStatistics.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetSendStatistics.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# 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.GetSendStatistics
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Provides sending statistics for the Amazon SES account. The result is a list of data points, representing the last two weeks of sending activity. Each data point in the list contains statistics for a 15-minute period of time.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetSendStatistics
-    (
-    -- * Creating a Request
-      getSendStatistics
-    , GetSendStatistics
-
-    -- * Destructuring the Response
-    , getSendStatisticsResponse
-    , GetSendStatisticsResponse
-    -- * Response Lenses
-    , gssrsSendDataPoints
-    , gssrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'getSendStatistics' smart constructor.
-data GetSendStatistics =
-  GetSendStatistics'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetSendStatistics' with the minimum fields required to make a request.
---
-getSendStatistics
-    :: GetSendStatistics
-getSendStatistics = GetSendStatistics'
-
-
-instance AWSRequest GetSendStatistics where
-        type Rs GetSendStatistics = GetSendStatisticsResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetSendStatisticsResult"
-              (\ s h x ->
-                 GetSendStatisticsResponse' <$>
-                   (x .@? "SendDataPoints" .!@ mempty >>=
-                      may (parseXMLList "member"))
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetSendStatistics where
-
-instance NFData GetSendStatistics where
-
-instance ToHeaders GetSendStatistics where
-        toHeaders = const mempty
-
-instance ToPath GetSendStatistics where
-        toPath = const "/"
-
-instance ToQuery GetSendStatistics where
-        toQuery
-          = const
-              (mconcat
-                 ["Action" =: ("GetSendStatistics" :: ByteString),
-                  "Version" =: ("2010-12-01" :: ByteString)])
-
--- | Represents a list of data points. This list contains aggregated data from the previous two weeks of your sending activity with Amazon SES.
---
---
---
--- /See:/ 'getSendStatisticsResponse' smart constructor.
-data GetSendStatisticsResponse = GetSendStatisticsResponse'
-  { _gssrsSendDataPoints :: !(Maybe [SendDataPoint])
-  , _gssrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetSendStatisticsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gssrsSendDataPoints' - A list of data points, each of which represents 15 minutes of activity.
---
--- * 'gssrsResponseStatus' - -- | The response status code.
-getSendStatisticsResponse
-    :: Int -- ^ 'gssrsResponseStatus'
-    -> GetSendStatisticsResponse
-getSendStatisticsResponse pResponseStatus_ =
-  GetSendStatisticsResponse'
-    {_gssrsSendDataPoints = Nothing, _gssrsResponseStatus = pResponseStatus_}
-
-
--- | A list of data points, each of which represents 15 minutes of activity.
-gssrsSendDataPoints :: Lens' GetSendStatisticsResponse [SendDataPoint]
-gssrsSendDataPoints = lens _gssrsSendDataPoints (\ s a -> s{_gssrsSendDataPoints = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-gssrsResponseStatus :: Lens' GetSendStatisticsResponse Int
-gssrsResponseStatus = lens _gssrsResponseStatus (\ s a -> s{_gssrsResponseStatus = a})
-
-instance NFData GetSendStatisticsResponse where
diff --git a/gen/Network/AWS/SES/GetTemplate.hs b/gen/Network/AWS/SES/GetTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/GetTemplate.hs
+++ /dev/null
@@ -1,126 +0,0 @@
-{-# 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.GetTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Displays the template object (which includes the Subject line, HTML part and text part) for the template you specify.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.GetTemplate
-    (
-    -- * Creating a Request
-      getTemplate
-    , GetTemplate
-    -- * Request Lenses
-    , gtTemplateName
-
-    -- * Destructuring the Response
-    , getTemplateResponse
-    , GetTemplateResponse
-    -- * Response Lenses
-    , gtrsTemplate
-    , gtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'getTemplate' smart constructor.
-newtype GetTemplate = GetTemplate'
-  { _gtTemplateName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gtTemplateName' - The name of the template you want to retrieve.
-getTemplate
-    :: Text -- ^ 'gtTemplateName'
-    -> GetTemplate
-getTemplate pTemplateName_ = GetTemplate' {_gtTemplateName = pTemplateName_}
-
-
--- | The name of the template you want to retrieve.
-gtTemplateName :: Lens' GetTemplate Text
-gtTemplateName = lens _gtTemplateName (\ s a -> s{_gtTemplateName = a})
-
-instance AWSRequest GetTemplate where
-        type Rs GetTemplate = GetTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "GetTemplateResult"
-              (\ s h x ->
-                 GetTemplateResponse' <$>
-                   (x .@? "Template") <*> (pure (fromEnum s)))
-
-instance Hashable GetTemplate where
-
-instance NFData GetTemplate where
-
-instance ToHeaders GetTemplate where
-        toHeaders = const mempty
-
-instance ToPath GetTemplate where
-        toPath = const "/"
-
-instance ToQuery GetTemplate where
-        toQuery GetTemplate'{..}
-          = mconcat
-              ["Action" =: ("GetTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _gtTemplateName]
-
--- | /See:/ 'getTemplateResponse' smart constructor.
-data GetTemplateResponse = GetTemplateResponse'
-  { _gtrsTemplate       :: !(Maybe Template)
-  , _gtrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gtrsTemplate' - Undocumented member.
---
--- * 'gtrsResponseStatus' - -- | The response status code.
-getTemplateResponse
-    :: Int -- ^ 'gtrsResponseStatus'
-    -> GetTemplateResponse
-getTemplateResponse pResponseStatus_ =
-  GetTemplateResponse'
-    {_gtrsTemplate = Nothing, _gtrsResponseStatus = pResponseStatus_}
-
-
--- | Undocumented member.
-gtrsTemplate :: Lens' GetTemplateResponse (Maybe Template)
-gtrsTemplate = lens _gtrsTemplate (\ s a -> s{_gtrsTemplate = a})
-
--- | -- | The response status code.
-gtrsResponseStatus :: Lens' GetTemplateResponse Int
-gtrsResponseStatus = lens _gtrsResponseStatus (\ s a -> s{_gtrsResponseStatus = a})
-
-instance NFData GetTemplateResponse where
diff --git a/gen/Network/AWS/SES/ListConfigurationSets.hs b/gen/Network/AWS/SES/ListConfigurationSets.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListConfigurationSets.hs
+++ /dev/null
@@ -1,158 +0,0 @@
-{-# 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.ListConfigurationSets
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Provides a list of the configuration sets associated with your Amazon SES account. For information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Monitoring Your Amazon SES Sending Activity> in the /Amazon SES Developer Guide./
---
---
--- You can execute this operation no more than once per second. This operation will return up to 1,000 configuration sets each time it is run. If your Amazon SES account has more than 1,000 configuration sets, this operation will also return a NextToken element. You can then execute the @ListConfigurationSets@ operation again, passing the @NextToken@ parameter and the value of the NextToken element to retrieve additional results.
---
-module Network.AWS.SES.ListConfigurationSets
-    (
-    -- * Creating a Request
-      listConfigurationSets
-    , ListConfigurationSets
-    -- * Request Lenses
-    , lcsNextToken
-    , lcsMaxItems
-
-    -- * Destructuring the Response
-    , listConfigurationSetsResponse
-    , ListConfigurationSetsResponse
-    -- * Response Lenses
-    , lcsrsConfigurationSets
-    , lcsrsNextToken
-    , lcsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to list the configuration sets associated with your AWS account. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'listConfigurationSets' smart constructor.
-data ListConfigurationSets = ListConfigurationSets'
-  { _lcsNextToken :: !(Maybe Text)
-  , _lcsMaxItems  :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListConfigurationSets' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcsNextToken' - A token returned from a previous call to @ListConfigurationSets@ to indicate the position of the configuration set in the configuration set list.
---
--- * 'lcsMaxItems' - The number of configuration sets to return.
-listConfigurationSets
-    :: ListConfigurationSets
-listConfigurationSets =
-  ListConfigurationSets' {_lcsNextToken = Nothing, _lcsMaxItems = Nothing}
-
-
--- | A token returned from a previous call to @ListConfigurationSets@ to indicate the position of the configuration set in the configuration set list.
-lcsNextToken :: Lens' ListConfigurationSets (Maybe Text)
-lcsNextToken = lens _lcsNextToken (\ s a -> s{_lcsNextToken = a})
-
--- | The number of configuration sets to return.
-lcsMaxItems :: Lens' ListConfigurationSets (Maybe Int)
-lcsMaxItems = lens _lcsMaxItems (\ s a -> s{_lcsMaxItems = a})
-
-instance AWSRequest ListConfigurationSets where
-        type Rs ListConfigurationSets =
-             ListConfigurationSetsResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "ListConfigurationSetsResult"
-              (\ s h x ->
-                 ListConfigurationSetsResponse' <$>
-                   (x .@? "ConfigurationSets" .!@ mempty >>=
-                      may (parseXMLList "member"))
-                     <*> (x .@? "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListConfigurationSets where
-
-instance NFData ListConfigurationSets where
-
-instance ToHeaders ListConfigurationSets where
-        toHeaders = const mempty
-
-instance ToPath ListConfigurationSets where
-        toPath = const "/"
-
-instance ToQuery ListConfigurationSets where
-        toQuery ListConfigurationSets'{..}
-          = mconcat
-              ["Action" =: ("ListConfigurationSets" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "NextToken" =: _lcsNextToken,
-               "MaxItems" =: _lcsMaxItems]
-
--- | A list of configuration sets associated with your AWS account. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'listConfigurationSetsResponse' smart constructor.
-data ListConfigurationSetsResponse = ListConfigurationSetsResponse'
-  { _lcsrsConfigurationSets :: !(Maybe [ConfigurationSet])
-  , _lcsrsNextToken         :: !(Maybe Text)
-  , _lcsrsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListConfigurationSetsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcsrsConfigurationSets' - A list of configuration sets.
---
--- * 'lcsrsNextToken' - A token indicating that there are additional configuration sets available to be listed. Pass this token to successive calls of @ListConfigurationSets@ .
---
--- * 'lcsrsResponseStatus' - -- | The response status code.
-listConfigurationSetsResponse
-    :: Int -- ^ 'lcsrsResponseStatus'
-    -> ListConfigurationSetsResponse
-listConfigurationSetsResponse pResponseStatus_ =
-  ListConfigurationSetsResponse'
-    { _lcsrsConfigurationSets = Nothing
-    , _lcsrsNextToken = Nothing
-    , _lcsrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of configuration sets.
-lcsrsConfigurationSets :: Lens' ListConfigurationSetsResponse [ConfigurationSet]
-lcsrsConfigurationSets = lens _lcsrsConfigurationSets (\ s a -> s{_lcsrsConfigurationSets = a}) . _Default . _Coerce
-
--- | A token indicating that there are additional configuration sets available to be listed. Pass this token to successive calls of @ListConfigurationSets@ .
-lcsrsNextToken :: Lens' ListConfigurationSetsResponse (Maybe Text)
-lcsrsNextToken = lens _lcsrsNextToken (\ s a -> s{_lcsrsNextToken = a})
-
--- | -- | The response status code.
-lcsrsResponseStatus :: Lens' ListConfigurationSetsResponse Int
-lcsrsResponseStatus = lens _lcsrsResponseStatus (\ s a -> s{_lcsrsResponseStatus = a})
-
-instance NFData ListConfigurationSetsResponse where
diff --git a/gen/Network/AWS/SES/ListCustomVerificationEmailTemplates.hs b/gen/Network/AWS/SES/ListCustomVerificationEmailTemplates.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListCustomVerificationEmailTemplates.hs
+++ /dev/null
@@ -1,191 +0,0 @@
-{-# 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.ListCustomVerificationEmailTemplates
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists the existing custom verification email templates for your account.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
---
--- This operation returns paginated results.
-module Network.AWS.SES.ListCustomVerificationEmailTemplates
-    (
-    -- * Creating a Request
-      listCustomVerificationEmailTemplates
-    , ListCustomVerificationEmailTemplates
-    -- * Request Lenses
-    , lcvetNextToken
-    , lcvetMaxResults
-
-    -- * Destructuring the Response
-    , listCustomVerificationEmailTemplatesResponse
-    , ListCustomVerificationEmailTemplatesResponse
-    -- * Response Lenses
-    , lcvetrsNextToken
-    , lcvetrsCustomVerificationEmailTemplates
-    , lcvetrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to list the existing custom verification email templates for your account.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
---
--- /See:/ 'listCustomVerificationEmailTemplates' smart constructor.
-data ListCustomVerificationEmailTemplates = ListCustomVerificationEmailTemplates'
-  { _lcvetNextToken  :: !(Maybe Text)
-  , _lcvetMaxResults :: !(Maybe Nat)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListCustomVerificationEmailTemplates' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcvetNextToken' - An array the contains the name and creation time stamp for each template in your Amazon SES account.
---
--- * 'lcvetMaxResults' - The maximum number of custom verification email templates to return. This value must be at least 1 and less than or equal to 50. If you do not specify a value, or if you specify a value less than 1 or greater than 50, the operation will return up to 50 results.
-listCustomVerificationEmailTemplates
-    :: ListCustomVerificationEmailTemplates
-listCustomVerificationEmailTemplates =
-  ListCustomVerificationEmailTemplates'
-    {_lcvetNextToken = Nothing, _lcvetMaxResults = Nothing}
-
-
--- | An array the contains the name and creation time stamp for each template in your Amazon SES account.
-lcvetNextToken :: Lens' ListCustomVerificationEmailTemplates (Maybe Text)
-lcvetNextToken = lens _lcvetNextToken (\ s a -> s{_lcvetNextToken = a})
-
--- | The maximum number of custom verification email templates to return. This value must be at least 1 and less than or equal to 50. If you do not specify a value, or if you specify a value less than 1 or greater than 50, the operation will return up to 50 results.
-lcvetMaxResults :: Lens' ListCustomVerificationEmailTemplates (Maybe Natural)
-lcvetMaxResults = lens _lcvetMaxResults (\ s a -> s{_lcvetMaxResults = a}) . mapping _Nat
-
-instance AWSPager
-           ListCustomVerificationEmailTemplates
-         where
-        page rq rs
-          | stop (rs ^. lcvetrsNextToken) = Nothing
-          | stop
-              (rs ^. lcvetrsCustomVerificationEmailTemplates)
-            = Nothing
-          | otherwise =
-            Just $ rq & lcvetNextToken .~ rs ^. lcvetrsNextToken
-
-instance AWSRequest
-           ListCustomVerificationEmailTemplates
-         where
-        type Rs ListCustomVerificationEmailTemplates =
-             ListCustomVerificationEmailTemplatesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "ListCustomVerificationEmailTemplatesResult"
-              (\ s h x ->
-                 ListCustomVerificationEmailTemplatesResponse' <$>
-                   (x .@? "NextToken") <*>
-                     (x .@? "CustomVerificationEmailTemplates" .!@ mempty
-                        >>= may (parseXMLList "member"))
-                     <*> (pure (fromEnum s)))
-
-instance Hashable
-           ListCustomVerificationEmailTemplates
-         where
-
-instance NFData ListCustomVerificationEmailTemplates
-         where
-
-instance ToHeaders
-           ListCustomVerificationEmailTemplates
-         where
-        toHeaders = const mempty
-
-instance ToPath ListCustomVerificationEmailTemplates
-         where
-        toPath = const "/"
-
-instance ToQuery ListCustomVerificationEmailTemplates
-         where
-        toQuery ListCustomVerificationEmailTemplates'{..}
-          = mconcat
-              ["Action" =:
-                 ("ListCustomVerificationEmailTemplates" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "NextToken" =: _lcvetNextToken,
-               "MaxResults" =: _lcvetMaxResults]
-
--- | A paginated list of custom verification email templates.
---
---
---
--- /See:/ 'listCustomVerificationEmailTemplatesResponse' smart constructor.
-data ListCustomVerificationEmailTemplatesResponse = ListCustomVerificationEmailTemplatesResponse'
-  { _lcvetrsNextToken :: !(Maybe Text)
-  , _lcvetrsCustomVerificationEmailTemplates :: !(Maybe [CustomVerificationEmailTemplate])
-  , _lcvetrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListCustomVerificationEmailTemplatesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lcvetrsNextToken' - A token indicating that there are additional custom verification email templates available to be listed. Pass this token to a subsequent call to @ListTemplates@ to retrieve the next 50 custom verification email templates.
---
--- * 'lcvetrsCustomVerificationEmailTemplates' - A list of the custom verification email templates that exist in your account.
---
--- * 'lcvetrsResponseStatus' - -- | The response status code.
-listCustomVerificationEmailTemplatesResponse
-    :: Int -- ^ 'lcvetrsResponseStatus'
-    -> ListCustomVerificationEmailTemplatesResponse
-listCustomVerificationEmailTemplatesResponse pResponseStatus_ =
-  ListCustomVerificationEmailTemplatesResponse'
-    { _lcvetrsNextToken = Nothing
-    , _lcvetrsCustomVerificationEmailTemplates = Nothing
-    , _lcvetrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A token indicating that there are additional custom verification email templates available to be listed. Pass this token to a subsequent call to @ListTemplates@ to retrieve the next 50 custom verification email templates.
-lcvetrsNextToken :: Lens' ListCustomVerificationEmailTemplatesResponse (Maybe Text)
-lcvetrsNextToken = lens _lcvetrsNextToken (\ s a -> s{_lcvetrsNextToken = a})
-
--- | A list of the custom verification email templates that exist in your account.
-lcvetrsCustomVerificationEmailTemplates :: Lens' ListCustomVerificationEmailTemplatesResponse [CustomVerificationEmailTemplate]
-lcvetrsCustomVerificationEmailTemplates = lens _lcvetrsCustomVerificationEmailTemplates (\ s a -> s{_lcvetrsCustomVerificationEmailTemplates = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-lcvetrsResponseStatus :: Lens' ListCustomVerificationEmailTemplatesResponse Int
-lcvetrsResponseStatus = lens _lcvetrsResponseStatus (\ s a -> s{_lcvetrsResponseStatus = a})
-
-instance NFData
-           ListCustomVerificationEmailTemplatesResponse
-         where
diff --git a/gen/Network/AWS/SES/ListIdentities.hs b/gen/Network/AWS/SES/ListIdentities.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListIdentities.hs
+++ /dev/null
@@ -1,176 +0,0 @@
-{-# 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.ListIdentities
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a list containing all of the identities (email addresses and domains) for your AWS account, regardless of verification status.
---
---
--- You can execute this operation no more than once per second.
---
---
--- This operation returns paginated results.
-module Network.AWS.SES.ListIdentities
-    (
-    -- * Creating a Request
-      listIdentities
-    , ListIdentities
-    -- * Request Lenses
-    , liIdentityType
-    , liNextToken
-    , liMaxItems
-
-    -- * Destructuring the Response
-    , listIdentitiesResponse
-    , ListIdentitiesResponse
-    -- * Response Lenses
-    , lirsNextToken
-    , lirsResponseStatus
-    , lirsIdentities
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return a list of all identities (email addresses and domains) that you have attempted to verify under your AWS account, regardless of verification status.
---
---
---
--- /See:/ 'listIdentities' smart constructor.
-data ListIdentities = ListIdentities'
-  { _liIdentityType :: !(Maybe IdentityType)
-  , _liNextToken    :: !(Maybe Text)
-  , _liMaxItems     :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentities' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'liIdentityType' - The type of the identities to list. Possible values are "EmailAddress" and "Domain". If this parameter is omitted, then all identities will be listed.
---
--- * 'liNextToken' - The token to use for pagination.
---
--- * 'liMaxItems' - The maximum number of identities per page. Possible values are 1-1000 inclusive.
-listIdentities
-    :: ListIdentities
-listIdentities =
-  ListIdentities'
-    {_liIdentityType = Nothing, _liNextToken = Nothing, _liMaxItems = Nothing}
-
-
--- | The type of the identities to list. Possible values are "EmailAddress" and "Domain". If this parameter is omitted, then all identities will be listed.
-liIdentityType :: Lens' ListIdentities (Maybe IdentityType)
-liIdentityType = lens _liIdentityType (\ s a -> s{_liIdentityType = a})
-
--- | The token to use for pagination.
-liNextToken :: Lens' ListIdentities (Maybe Text)
-liNextToken = lens _liNextToken (\ s a -> s{_liNextToken = a})
-
--- | The maximum number of identities per page. Possible values are 1-1000 inclusive.
-liMaxItems :: Lens' ListIdentities (Maybe Int)
-liMaxItems = lens _liMaxItems (\ s a -> s{_liMaxItems = a})
-
-instance AWSPager ListIdentities where
-        page rq rs
-          | stop (rs ^. lirsNextToken) = Nothing
-          | stop (rs ^. lirsIdentities) = Nothing
-          | otherwise =
-            Just $ rq & liNextToken .~ rs ^. lirsNextToken
-
-instance AWSRequest ListIdentities where
-        type Rs ListIdentities = ListIdentitiesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "ListIdentitiesResult"
-              (\ s h x ->
-                 ListIdentitiesResponse' <$>
-                   (x .@? "NextToken") <*> (pure (fromEnum s)) <*>
-                     (x .@? "Identities" .!@ mempty >>=
-                        parseXMLList "member"))
-
-instance Hashable ListIdentities where
-
-instance NFData ListIdentities where
-
-instance ToHeaders ListIdentities where
-        toHeaders = const mempty
-
-instance ToPath ListIdentities where
-        toPath = const "/"
-
-instance ToQuery ListIdentities where
-        toQuery ListIdentities'{..}
-          = mconcat
-              ["Action" =: ("ListIdentities" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "IdentityType" =: _liIdentityType,
-               "NextToken" =: _liNextToken,
-               "MaxItems" =: _liMaxItems]
-
--- | A list of all identities that you have attempted to verify under your AWS account, regardless of verification status.
---
---
---
--- /See:/ 'listIdentitiesResponse' smart constructor.
-data ListIdentitiesResponse = ListIdentitiesResponse'
-  { _lirsNextToken      :: !(Maybe Text)
-  , _lirsResponseStatus :: !Int
-  , _lirsIdentities     :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentitiesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lirsNextToken' - The token used for pagination.
---
--- * 'lirsResponseStatus' - -- | The response status code.
---
--- * 'lirsIdentities' - A list of identities.
-listIdentitiesResponse
-    :: Int -- ^ 'lirsResponseStatus'
-    -> ListIdentitiesResponse
-listIdentitiesResponse pResponseStatus_ =
-  ListIdentitiesResponse'
-    { _lirsNextToken = Nothing
-    , _lirsResponseStatus = pResponseStatus_
-    , _lirsIdentities = mempty
-    }
-
-
--- | The token used for pagination.
-lirsNextToken :: Lens' ListIdentitiesResponse (Maybe Text)
-lirsNextToken = lens _lirsNextToken (\ s a -> s{_lirsNextToken = a})
-
--- | -- | The response status code.
-lirsResponseStatus :: Lens' ListIdentitiesResponse Int
-lirsResponseStatus = lens _lirsResponseStatus (\ s a -> s{_lirsResponseStatus = a})
-
--- | A list of identities.
-lirsIdentities :: Lens' ListIdentitiesResponse [Text]
-lirsIdentities = lens _lirsIdentities (\ s a -> s{_lirsIdentities = a}) . _Coerce
-
-instance NFData ListIdentitiesResponse where
diff --git a/gen/Network/AWS/SES/ListIdentityPolicies.hs b/gen/Network/AWS/SES/ListIdentityPolicies.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListIdentityPolicies.hs
+++ /dev/null
@@ -1,140 +0,0 @@
-{-# 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.ListIdentityPolicies
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a list of sending authorization policies that are attached to the given identity (an email address or a domain). This API returns only a list. If you want the actual policy content, you can use @GetIdentityPolicies@ .
---
---
--- Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.ListIdentityPolicies
-    (
-    -- * Creating a Request
-      listIdentityPolicies
-    , ListIdentityPolicies
-    -- * Request Lenses
-    , lipIdentity
-
-    -- * Destructuring the Response
-    , listIdentityPoliciesResponse
-    , ListIdentityPoliciesResponse
-    -- * Response Lenses
-    , liprsResponseStatus
-    , liprsPolicyNames
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to return a list of sending authorization policies that are attached to an identity. Sending authorization is an Amazon SES feature that enables you to authorize other senders to use your identities. For information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'listIdentityPolicies' smart constructor.
-newtype ListIdentityPolicies = ListIdentityPolicies'
-  { _lipIdentity :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentityPolicies' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lipIdentity' - The identity that is associated with the policy for which the policies will be listed. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
-listIdentityPolicies
-    :: Text -- ^ 'lipIdentity'
-    -> ListIdentityPolicies
-listIdentityPolicies pIdentity_ =
-  ListIdentityPolicies' {_lipIdentity = pIdentity_}
-
-
--- | The identity that is associated with the policy for which the policies will be listed. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
-lipIdentity :: Lens' ListIdentityPolicies Text
-lipIdentity = lens _lipIdentity (\ s a -> s{_lipIdentity = a})
-
-instance AWSRequest ListIdentityPolicies where
-        type Rs ListIdentityPolicies =
-             ListIdentityPoliciesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "ListIdentityPoliciesResult"
-              (\ s h x ->
-                 ListIdentityPoliciesResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "PolicyNames" .!@ mempty >>=
-                        parseXMLList "member"))
-
-instance Hashable ListIdentityPolicies where
-
-instance NFData ListIdentityPolicies where
-
-instance ToHeaders ListIdentityPolicies where
-        toHeaders = const mempty
-
-instance ToPath ListIdentityPolicies where
-        toPath = const "/"
-
-instance ToQuery ListIdentityPolicies where
-        toQuery ListIdentityPolicies'{..}
-          = mconcat
-              ["Action" =: ("ListIdentityPolicies" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _lipIdentity]
-
--- | A list of names of sending authorization policies that apply to an identity.
---
---
---
--- /See:/ 'listIdentityPoliciesResponse' smart constructor.
-data ListIdentityPoliciesResponse = ListIdentityPoliciesResponse'
-  { _liprsResponseStatus :: !Int
-  , _liprsPolicyNames    :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentityPoliciesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'liprsResponseStatus' - -- | The response status code.
---
--- * 'liprsPolicyNames' - A list of names of policies that apply to the specified identity.
-listIdentityPoliciesResponse
-    :: Int -- ^ 'liprsResponseStatus'
-    -> ListIdentityPoliciesResponse
-listIdentityPoliciesResponse pResponseStatus_ =
-  ListIdentityPoliciesResponse'
-    {_liprsResponseStatus = pResponseStatus_, _liprsPolicyNames = mempty}
-
-
--- | -- | The response status code.
-liprsResponseStatus :: Lens' ListIdentityPoliciesResponse Int
-liprsResponseStatus = lens _liprsResponseStatus (\ s a -> s{_liprsResponseStatus = a})
-
--- | A list of names of policies that apply to the specified identity.
-liprsPolicyNames :: Lens' ListIdentityPoliciesResponse [Text]
-liprsPolicyNames = lens _liprsPolicyNames (\ s a -> s{_liprsPolicyNames = a}) . _Coerce
-
-instance NFData ListIdentityPoliciesResponse where
diff --git a/gen/Network/AWS/SES/ListReceiptFilters.hs b/gen/Network/AWS/SES/ListReceiptFilters.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListReceiptFilters.hs
+++ /dev/null
@@ -1,129 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists the IP address filters associated with your AWS 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> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.ListReceiptFilters
-    (
-    -- * Creating a Request
-      listReceiptFilters
-    , ListReceiptFilters
-
-    -- * Destructuring the Response
-    , listReceiptFiltersResponse
-    , ListReceiptFiltersResponse
-    -- * Response Lenses
-    , lrfrsFilters
-    , lrfrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to list the IP address filters that exist under your AWS account. You use IP address filters when you receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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 Hashable ListReceiptFilters where
-
-instance NFData ListReceiptFilters where
-
-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)])
-
--- | A list of IP address filters that exist under your AWS account.
---
---
---
--- /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' - 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.
---
--- * 'lrfrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData ListReceiptFiltersResponse where
diff --git a/gen/Network/AWS/SES/ListReceiptRuleSets.hs b/gen/Network/AWS/SES/ListReceiptRuleSets.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListReceiptRuleSets.hs
+++ /dev/null
@@ -1,150 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to list the receipt rule sets that exist under your AWS account. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - A token returned from a previous call to @ListReceiptRuleSets@ to indicate the position in the receipt rule set list.
-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 Hashable ListReceiptRuleSets where
-
-instance NFData ListReceiptRuleSets where
-
-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]
-
--- | A list of receipt rule sets that exist under your AWS account.
---
---
---
--- /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' - 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.
---
--- * 'lrrsrsNextToken' - 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.
---
--- * 'lrrsrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData ListReceiptRuleSetsResponse where
diff --git a/gen/Network/AWS/SES/ListTemplates.hs b/gen/Network/AWS/SES/ListTemplates.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListTemplates.hs
+++ /dev/null
@@ -1,148 +0,0 @@
-{-# 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.ListTemplates
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists the email templates present in your Amazon SES account.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.ListTemplates
-    (
-    -- * Creating a Request
-      listTemplates
-    , ListTemplates
-    -- * Request Lenses
-    , ltNextToken
-    , ltMaxItems
-
-    -- * Destructuring the Response
-    , listTemplatesResponse
-    , ListTemplatesResponse
-    -- * Response Lenses
-    , ltrsTemplatesMetadata
-    , ltrsNextToken
-    , ltrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'listTemplates' smart constructor.
-data ListTemplates = ListTemplates'
-  { _ltNextToken :: !(Maybe Text)
-  , _ltMaxItems  :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTemplates' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltNextToken' - A token returned from a previous call to @ListTemplates@ to indicate the position in the list of email templates.
---
--- * 'ltMaxItems' - The maximum number of templates to return. This value must be at least 1 and less than or equal to 10. If you do not specify a value, or if you specify a value less than 1 or greater than 10, the operation will return up to 10 results.
-listTemplates
-    :: ListTemplates
-listTemplates = ListTemplates' {_ltNextToken = Nothing, _ltMaxItems = Nothing}
-
-
--- | A token returned from a previous call to @ListTemplates@ to indicate the position in the list of email templates.
-ltNextToken :: Lens' ListTemplates (Maybe Text)
-ltNextToken = lens _ltNextToken (\ s a -> s{_ltNextToken = a})
-
--- | The maximum number of templates to return. This value must be at least 1 and less than or equal to 10. If you do not specify a value, or if you specify a value less than 1 or greater than 10, the operation will return up to 10 results.
-ltMaxItems :: Lens' ListTemplates (Maybe Int)
-ltMaxItems = lens _ltMaxItems (\ s a -> s{_ltMaxItems = a})
-
-instance AWSRequest ListTemplates where
-        type Rs ListTemplates = ListTemplatesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "ListTemplatesResult"
-              (\ s h x ->
-                 ListTemplatesResponse' <$>
-                   (x .@? "TemplatesMetadata" .!@ mempty >>=
-                      may (parseXMLList "member"))
-                     <*> (x .@? "NextToken")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListTemplates where
-
-instance NFData ListTemplates where
-
-instance ToHeaders ListTemplates where
-        toHeaders = const mempty
-
-instance ToPath ListTemplates where
-        toPath = const "/"
-
-instance ToQuery ListTemplates where
-        toQuery ListTemplates'{..}
-          = mconcat
-              ["Action" =: ("ListTemplates" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "NextToken" =: _ltNextToken,
-               "MaxItems" =: _ltMaxItems]
-
--- | /See:/ 'listTemplatesResponse' smart constructor.
-data ListTemplatesResponse = ListTemplatesResponse'
-  { _ltrsTemplatesMetadata :: !(Maybe [TemplateMetadata])
-  , _ltrsNextToken         :: !(Maybe Text)
-  , _ltrsResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListTemplatesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ltrsTemplatesMetadata' - An array the contains the name and creation time stamp for each template in your Amazon SES account.
---
--- * 'ltrsNextToken' - A token indicating that there are additional email templates available to be listed. Pass this token to a subsequent call to @ListTemplates@ to retrieve the next 50 email templates.
---
--- * 'ltrsResponseStatus' - -- | The response status code.
-listTemplatesResponse
-    :: Int -- ^ 'ltrsResponseStatus'
-    -> ListTemplatesResponse
-listTemplatesResponse pResponseStatus_ =
-  ListTemplatesResponse'
-    { _ltrsTemplatesMetadata = Nothing
-    , _ltrsNextToken = Nothing
-    , _ltrsResponseStatus = pResponseStatus_
-    }
-
-
--- | An array the contains the name and creation time stamp for each template in your Amazon SES account.
-ltrsTemplatesMetadata :: Lens' ListTemplatesResponse [TemplateMetadata]
-ltrsTemplatesMetadata = lens _ltrsTemplatesMetadata (\ s a -> s{_ltrsTemplatesMetadata = a}) . _Default . _Coerce
-
--- | A token indicating that there are additional email templates available to be listed. Pass this token to a subsequent call to @ListTemplates@ to retrieve the next 50 email templates.
-ltrsNextToken :: Lens' ListTemplatesResponse (Maybe Text)
-ltrsNextToken = lens _ltrsNextToken (\ s a -> s{_ltrsNextToken = a})
-
--- | -- | The response status code.
-ltrsResponseStatus :: Lens' ListTemplatesResponse Int
-ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a})
-
-instance NFData ListTemplatesResponse where
diff --git a/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs b/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ListVerifiedEmailAddresses.hs
+++ /dev/null
@@ -1,126 +0,0 @@
-{-# 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.ListVerifiedEmailAddresses
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deprecated. Use the @ListIdentities@ operation to list the email addresses and domains associated with your account.
---
---
-module Network.AWS.SES.ListVerifiedEmailAddresses
-    (
-    -- * Creating a Request
-      listVerifiedEmailAddresses
-    , ListVerifiedEmailAddresses
-
-    -- * Destructuring the Response
-    , listVerifiedEmailAddressesResponse
-    , ListVerifiedEmailAddressesResponse
-    -- * Response Lenses
-    , lvearsVerifiedEmailAddresses
-    , lvearsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'listVerifiedEmailAddresses' smart constructor.
-data ListVerifiedEmailAddresses =
-  ListVerifiedEmailAddresses'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListVerifiedEmailAddresses' with the minimum fields required to make a request.
---
-listVerifiedEmailAddresses
-    :: ListVerifiedEmailAddresses
-listVerifiedEmailAddresses = ListVerifiedEmailAddresses'
-
-
-instance AWSRequest ListVerifiedEmailAddresses where
-        type Rs ListVerifiedEmailAddresses =
-             ListVerifiedEmailAddressesResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "ListVerifiedEmailAddressesResult"
-              (\ s h x ->
-                 ListVerifiedEmailAddressesResponse' <$>
-                   (x .@? "VerifiedEmailAddresses" .!@ mempty >>=
-                      may (parseXMLList "member"))
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListVerifiedEmailAddresses where
-
-instance NFData ListVerifiedEmailAddresses where
-
-instance ToHeaders ListVerifiedEmailAddresses where
-        toHeaders = const mempty
-
-instance ToPath ListVerifiedEmailAddresses where
-        toPath = const "/"
-
-instance ToQuery ListVerifiedEmailAddresses where
-        toQuery
-          = const
-              (mconcat
-                 ["Action" =:
-                    ("ListVerifiedEmailAddresses" :: ByteString),
-                  "Version" =: ("2010-12-01" :: ByteString)])
-
--- | A list of email addresses that you have verified with Amazon SES under your AWS account.
---
---
---
--- /See:/ 'listVerifiedEmailAddressesResponse' smart constructor.
-data ListVerifiedEmailAddressesResponse = ListVerifiedEmailAddressesResponse'
-  { _lvearsVerifiedEmailAddresses :: !(Maybe [Text])
-  , _lvearsResponseStatus         :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListVerifiedEmailAddressesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lvearsVerifiedEmailAddresses' - A list of email addresses that have been verified.
---
--- * 'lvearsResponseStatus' - -- | The response status code.
-listVerifiedEmailAddressesResponse
-    :: Int -- ^ 'lvearsResponseStatus'
-    -> ListVerifiedEmailAddressesResponse
-listVerifiedEmailAddressesResponse pResponseStatus_ =
-  ListVerifiedEmailAddressesResponse'
-    { _lvearsVerifiedEmailAddresses = Nothing
-    , _lvearsResponseStatus = pResponseStatus_
-    }
-
-
--- | A list of email addresses that have been verified.
-lvearsVerifiedEmailAddresses :: Lens' ListVerifiedEmailAddressesResponse [Text]
-lvearsVerifiedEmailAddresses = lens _lvearsVerifiedEmailAddresses (\ s a -> s{_lvearsVerifiedEmailAddresses = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-lvearsResponseStatus :: Lens' ListVerifiedEmailAddressesResponse Int
-lvearsResponseStatus = lens _lvearsResponseStatus (\ s a -> s{_lvearsResponseStatus = a})
-
-instance NFData ListVerifiedEmailAddressesResponse
-         where
diff --git a/gen/Network/AWS/SES/PutIdentityPolicy.hs b/gen/Network/AWS/SES/PutIdentityPolicy.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/PutIdentityPolicy.hs
+++ /dev/null
@@ -1,151 +0,0 @@
-{-# 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.PutIdentityPolicy
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds or updates a sending authorization policy for the specified identity (an email address or a domain).
---
---
--- Sending authorization is a feature that enables an identity owner to authorize other senders to use its identities. For information about using sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.PutIdentityPolicy
-    (
-    -- * Creating a Request
-      putIdentityPolicy
-    , PutIdentityPolicy
-    -- * Request Lenses
-    , pipIdentity
-    , pipPolicyName
-    , pipPolicy
-
-    -- * Destructuring the Response
-    , putIdentityPolicyResponse
-    , PutIdentityPolicyResponse
-    -- * Response Lenses
-    , piprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to add or update a sending authorization policy for an identity. Sending authorization is an Amazon SES feature that enables you to authorize other senders to use your identities. For information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'putIdentityPolicy' smart constructor.
-data PutIdentityPolicy = PutIdentityPolicy'
-  { _pipIdentity   :: !Text
-  , _pipPolicyName :: !Text
-  , _pipPolicy     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutIdentityPolicy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pipIdentity' - The identity that the policy will apply to. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
---
--- * 'pipPolicyName' - The name of the policy. The policy name cannot exceed 64 characters and can only include alphanumeric characters, dashes, and underscores.
---
--- * 'pipPolicy' - The text of the policy in JSON format. The policy cannot exceed 4 KB. For information about the syntax of sending authorization policies, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide> .
-putIdentityPolicy
-    :: Text -- ^ 'pipIdentity'
-    -> Text -- ^ 'pipPolicyName'
-    -> Text -- ^ 'pipPolicy'
-    -> PutIdentityPolicy
-putIdentityPolicy pIdentity_ pPolicyName_ pPolicy_ =
-  PutIdentityPolicy'
-    { _pipIdentity = pIdentity_
-    , _pipPolicyName = pPolicyName_
-    , _pipPolicy = pPolicy_
-    }
-
-
--- | The identity that the policy will apply to. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ . To successfully call this API, you must own the identity.
-pipIdentity :: Lens' PutIdentityPolicy Text
-pipIdentity = lens _pipIdentity (\ s a -> s{_pipIdentity = a})
-
--- | The name of the policy. The policy name cannot exceed 64 characters and can only include alphanumeric characters, dashes, and underscores.
-pipPolicyName :: Lens' PutIdentityPolicy Text
-pipPolicyName = lens _pipPolicyName (\ s a -> s{_pipPolicyName = a})
-
--- | The text of the policy in JSON format. The policy cannot exceed 4 KB. For information about the syntax of sending authorization policies, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization-policies.html Amazon SES Developer Guide> .
-pipPolicy :: Lens' PutIdentityPolicy Text
-pipPolicy = lens _pipPolicy (\ s a -> s{_pipPolicy = a})
-
-instance AWSRequest PutIdentityPolicy where
-        type Rs PutIdentityPolicy = PutIdentityPolicyResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "PutIdentityPolicyResult"
-              (\ s h x ->
-                 PutIdentityPolicyResponse' <$> (pure (fromEnum s)))
-
-instance Hashable PutIdentityPolicy where
-
-instance NFData PutIdentityPolicy where
-
-instance ToHeaders PutIdentityPolicy where
-        toHeaders = const mempty
-
-instance ToPath PutIdentityPolicy where
-        toPath = const "/"
-
-instance ToQuery PutIdentityPolicy where
-        toQuery PutIdentityPolicy'{..}
-          = mconcat
-              ["Action" =: ("PutIdentityPolicy" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _pipIdentity,
-               "PolicyName" =: _pipPolicyName,
-               "Policy" =: _pipPolicy]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'putIdentityPolicyResponse' smart constructor.
-newtype PutIdentityPolicyResponse = PutIdentityPolicyResponse'
-  { _piprsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PutIdentityPolicyResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piprsResponseStatus' - -- | The response status code.
-putIdentityPolicyResponse
-    :: Int -- ^ 'piprsResponseStatus'
-    -> PutIdentityPolicyResponse
-putIdentityPolicyResponse pResponseStatus_ =
-  PutIdentityPolicyResponse' {_piprsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-piprsResponseStatus :: Lens' PutIdentityPolicyResponse Int
-piprsResponseStatus = lens _piprsResponseStatus (\ s a -> s{_piprsResponseStatus = a})
-
-instance NFData PutIdentityPolicyResponse where
diff --git a/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs b/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/ReorderReceiptRuleSet.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Reorders the receipt rules within a 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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to reorder the receipt rules within a receipt rule set. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set to reorder.
---
--- * 'rrrsRuleNames' - A list of the specified receipt rule set's receipt rules in the order that you want to put them.
-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 Hashable ReorderReceiptRuleSet where
-
-instance NFData ReorderReceiptRuleSet where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData ReorderReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/SendBounce.hs b/gen/Network/AWS/SES/SendBounce.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendBounce.hs
+++ /dev/null
@@ -1,191 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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.
---
---
--- 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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a bounce message to the sender of an email you received through Amazon SES.
---
---
---
--- /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' - Message-related DSN fields. If not specified, Amazon SES will choose the values.
---
--- * 'sbExplanation' - 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.
---
--- * 'sbBounceSenderARN' - 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> .
---
--- * 'sbOriginalMessageId' - The message ID of the message to be bounced.
---
--- * 'sbBounceSender' - The address to use in the "From" header of the bounce message. This must be an identity that you have verified with Amazon SES.
---
--- * 'sbBouncedRecipientInfoList' - 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.
-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 Hashable SendBounce where
-
-instance NFData SendBounce where
-
-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]
-
--- | Represents a unique message ID.
---
---
---
--- /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' - The message ID of the bounce message.
---
--- * 'sbrsResponseStatus' - -- | The response status code.
-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})
-
-instance NFData SendBounceResponse where
diff --git a/gen/Network/AWS/SES/SendBulkTemplatedEmail.hs b/gen/Network/AWS/SES/SendBulkTemplatedEmail.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendBulkTemplatedEmail.hs
+++ /dev/null
@@ -1,253 +0,0 @@
-{-# 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.SendBulkTemplatedEmail
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Composes an email message to multiple destinations. The message body is created using an email template.
---
---
--- In order to send email using the @SendBulkTemplatedEmail@ operation, your call to the API must meet the following requirements:
---
---     * The call must refer to an existing email template. You can create email templates using the 'CreateTemplate' operation.
---
---     * The message must be sent from a verified email address or domain.
---
---     * If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains> in the /Amazon SES Developer Guide./
---
---     * The total size of the message, including attachments, must be less than 10 MB.
---
---     * Each @Destination@ parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format /UserName@[SubDomain.]Domain.TopLevelDomain/ ), the entire message will be rejected, even if the message contains other recipients that are valid.
---
---
---
-module Network.AWS.SES.SendBulkTemplatedEmail
-    (
-    -- * Creating a Request
-      sendBulkTemplatedEmail
-    , SendBulkTemplatedEmail
-    -- * Request Lenses
-    , sbteReturnPath
-    , sbteConfigurationSetName
-    , sbteSourceARN
-    , sbteDefaultTags
-    , sbteReturnPathARN
-    , sbteTemplateARN
-    , sbteDefaultTemplateData
-    , sbteReplyToAddresses
-    , sbteSource
-    , sbteTemplate
-    , sbteDestinations
-
-    -- * Destructuring the Response
-    , sendBulkTemplatedEmailResponse
-    , SendBulkTemplatedEmailResponse
-    -- * Response Lenses
-    , sbtersResponseStatus
-    , sbtersStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a templated email to multiple destinations using Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'sendBulkTemplatedEmail' smart constructor.
-data SendBulkTemplatedEmail = SendBulkTemplatedEmail'
-  { _sbteReturnPath           :: !(Maybe Text)
-  , _sbteConfigurationSetName :: !(Maybe Text)
-  , _sbteSourceARN            :: !(Maybe Text)
-  , _sbteDefaultTags          :: !(Maybe [MessageTag])
-  , _sbteReturnPathARN        :: !(Maybe Text)
-  , _sbteTemplateARN          :: !(Maybe Text)
-  , _sbteDefaultTemplateData  :: !(Maybe Text)
-  , _sbteReplyToAddresses     :: !(Maybe [Text])
-  , _sbteSource               :: !Text
-  , _sbteTemplate             :: !Text
-  , _sbteDestinations         :: ![BulkEmailDestination]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendBulkTemplatedEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sbteReturnPath' - The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
---
--- * 'sbteConfigurationSetName' - The name of the configuration set to use when you send an email using @SendBulkTemplatedEmail@ .
---
--- * 'sbteSourceARN' - 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'sbteDefaultTags' - A list of tags, in the form of name/value pairs, to apply to an email that you send to a destination using @SendBulkTemplatedEmail@ .
---
--- * 'sbteReturnPathARN' - 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'sbteTemplateARN' - The ARN of the template to use when sending this email.
---
--- * 'sbteDefaultTemplateData' - A list of replacement values to apply to the template when replacement data is not specified in a Destination object. These values act as a default or fallback option when no other data is available. The template data is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
---
--- * 'sbteReplyToAddresses' - The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
---
--- * 'sbteSource' - The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'sbteTemplate' - The template to use when sending this email.
---
--- * 'sbteDestinations' - One or more @Destination@ objects. All of the recipients in a @Destination@ will receive the same version of the email. You can specify up to 50 @Destination@ objects within a @Destinations@ array.
-sendBulkTemplatedEmail
-    :: Text -- ^ 'sbteSource'
-    -> Text -- ^ 'sbteTemplate'
-    -> SendBulkTemplatedEmail
-sendBulkTemplatedEmail pSource_ pTemplate_ =
-  SendBulkTemplatedEmail'
-    { _sbteReturnPath = Nothing
-    , _sbteConfigurationSetName = Nothing
-    , _sbteSourceARN = Nothing
-    , _sbteDefaultTags = Nothing
-    , _sbteReturnPathARN = Nothing
-    , _sbteTemplateARN = Nothing
-    , _sbteDefaultTemplateData = Nothing
-    , _sbteReplyToAddresses = Nothing
-    , _sbteSource = pSource_
-    , _sbteTemplate = pTemplate_
-    , _sbteDestinations = mempty
-    }
-
-
--- | The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
-sbteReturnPath :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteReturnPath = lens _sbteReturnPath (\ s a -> s{_sbteReturnPath = a})
-
--- | The name of the configuration set to use when you send an email using @SendBulkTemplatedEmail@ .
-sbteConfigurationSetName :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteConfigurationSetName = lens _sbteConfigurationSetName (\ s a -> s{_sbteConfigurationSetName = 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-sbteSourceARN :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteSourceARN = lens _sbteSourceARN (\ s a -> s{_sbteSourceARN = a})
-
--- | A list of tags, in the form of name/value pairs, to apply to an email that you send to a destination using @SendBulkTemplatedEmail@ .
-sbteDefaultTags :: Lens' SendBulkTemplatedEmail [MessageTag]
-sbteDefaultTags = lens _sbteDefaultTags (\ s a -> s{_sbteDefaultTags = a}) . _Default . _Coerce
-
--- | 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-sbteReturnPathARN :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteReturnPathARN = lens _sbteReturnPathARN (\ s a -> s{_sbteReturnPathARN = a})
-
--- | The ARN of the template to use when sending this email.
-sbteTemplateARN :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteTemplateARN = lens _sbteTemplateARN (\ s a -> s{_sbteTemplateARN = a})
-
--- | A list of replacement values to apply to the template when replacement data is not specified in a Destination object. These values act as a default or fallback option when no other data is available. The template data is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-sbteDefaultTemplateData :: Lens' SendBulkTemplatedEmail (Maybe Text)
-sbteDefaultTemplateData = lens _sbteDefaultTemplateData (\ s a -> s{_sbteDefaultTemplateData = a})
-
--- | The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
-sbteReplyToAddresses :: Lens' SendBulkTemplatedEmail [Text]
-sbteReplyToAddresses = lens _sbteReplyToAddresses (\ s a -> s{_sbteReplyToAddresses = a}) . _Default . _Coerce
-
--- | The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-sbteSource :: Lens' SendBulkTemplatedEmail Text
-sbteSource = lens _sbteSource (\ s a -> s{_sbteSource = a})
-
--- | The template to use when sending this email.
-sbteTemplate :: Lens' SendBulkTemplatedEmail Text
-sbteTemplate = lens _sbteTemplate (\ s a -> s{_sbteTemplate = a})
-
--- | One or more @Destination@ objects. All of the recipients in a @Destination@ will receive the same version of the email. You can specify up to 50 @Destination@ objects within a @Destinations@ array.
-sbteDestinations :: Lens' SendBulkTemplatedEmail [BulkEmailDestination]
-sbteDestinations = lens _sbteDestinations (\ s a -> s{_sbteDestinations = a}) . _Coerce
-
-instance AWSRequest SendBulkTemplatedEmail where
-        type Rs SendBulkTemplatedEmail =
-             SendBulkTemplatedEmailResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SendBulkTemplatedEmailResult"
-              (\ s h x ->
-                 SendBulkTemplatedEmailResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "Status" .!@ mempty >>=
-                        parseXMLList "member"))
-
-instance Hashable SendBulkTemplatedEmail where
-
-instance NFData SendBulkTemplatedEmail where
-
-instance ToHeaders SendBulkTemplatedEmail where
-        toHeaders = const mempty
-
-instance ToPath SendBulkTemplatedEmail where
-        toPath = const "/"
-
-instance ToQuery SendBulkTemplatedEmail where
-        toQuery SendBulkTemplatedEmail'{..}
-          = mconcat
-              ["Action" =:
-                 ("SendBulkTemplatedEmail" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ReturnPath" =: _sbteReturnPath,
-               "ConfigurationSetName" =: _sbteConfigurationSetName,
-               "SourceArn" =: _sbteSourceARN,
-               "DefaultTags" =:
-                 toQuery (toQueryList "member" <$> _sbteDefaultTags),
-               "ReturnPathArn" =: _sbteReturnPathARN,
-               "TemplateArn" =: _sbteTemplateARN,
-               "DefaultTemplateData" =: _sbteDefaultTemplateData,
-               "ReplyToAddresses" =:
-                 toQuery
-                   (toQueryList "member" <$> _sbteReplyToAddresses),
-               "Source" =: _sbteSource, "Template" =: _sbteTemplate,
-               "Destinations" =:
-                 toQueryList "member" _sbteDestinations]
-
--- | /See:/ 'sendBulkTemplatedEmailResponse' smart constructor.
-data SendBulkTemplatedEmailResponse = SendBulkTemplatedEmailResponse'
-  { _sbtersResponseStatus :: !Int
-  , _sbtersStatus         :: ![BulkEmailDestinationStatus]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendBulkTemplatedEmailResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sbtersResponseStatus' - -- | The response status code.
---
--- * 'sbtersStatus' - The unique message identifier returned from the @SendBulkTemplatedEmail@ action.
-sendBulkTemplatedEmailResponse
-    :: Int -- ^ 'sbtersResponseStatus'
-    -> SendBulkTemplatedEmailResponse
-sendBulkTemplatedEmailResponse pResponseStatus_ =
-  SendBulkTemplatedEmailResponse'
-    {_sbtersResponseStatus = pResponseStatus_, _sbtersStatus = mempty}
-
-
--- | -- | The response status code.
-sbtersResponseStatus :: Lens' SendBulkTemplatedEmailResponse Int
-sbtersResponseStatus = lens _sbtersResponseStatus (\ s a -> s{_sbtersResponseStatus = a})
-
--- | The unique message identifier returned from the @SendBulkTemplatedEmail@ action.
-sbtersStatus :: Lens' SendBulkTemplatedEmailResponse [BulkEmailDestinationStatus]
-sbtersStatus = lens _sbtersStatus (\ s a -> s{_sbtersStatus = a}) . _Coerce
-
-instance NFData SendBulkTemplatedEmailResponse where
diff --git a/gen/Network/AWS/SES/SendCustomVerificationEmail.hs b/gen/Network/AWS/SES/SendCustomVerificationEmail.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendCustomVerificationEmail.hs
+++ /dev/null
@@ -1,164 +0,0 @@
-{-# 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.SendCustomVerificationEmail
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds an email address to the list of identities for your Amazon SES account and attempts to verify it. As a result of executing this operation, a customized verification email is sent to the specified address.
---
---
--- To use this operation, you must first create a custom verification email template. For more information about creating and using custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.SendCustomVerificationEmail
-    (
-    -- * Creating a Request
-      sendCustomVerificationEmail
-    , SendCustomVerificationEmail
-    -- * Request Lenses
-    , scveConfigurationSetName
-    , scveEmailAddress
-    , scveTemplateName
-
-    -- * Destructuring the Response
-    , sendCustomVerificationEmailResponse
-    , SendCustomVerificationEmailResponse
-    -- * Response Lenses
-    , scversMessageId
-    , scversResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a custom verification email to a specified recipient.
---
---
---
--- /See:/ 'sendCustomVerificationEmail' smart constructor.
-data SendCustomVerificationEmail = SendCustomVerificationEmail'
-  { _scveConfigurationSetName :: !(Maybe Text)
-  , _scveEmailAddress         :: !Text
-  , _scveTemplateName         :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendCustomVerificationEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scveConfigurationSetName' - Name of a configuration set to use when sending the verification email.
---
--- * 'scveEmailAddress' - The email address to verify.
---
--- * 'scveTemplateName' - The name of the custom verification email template to use when sending the verification email.
-sendCustomVerificationEmail
-    :: Text -- ^ 'scveEmailAddress'
-    -> Text -- ^ 'scveTemplateName'
-    -> SendCustomVerificationEmail
-sendCustomVerificationEmail pEmailAddress_ pTemplateName_ =
-  SendCustomVerificationEmail'
-    { _scveConfigurationSetName = Nothing
-    , _scveEmailAddress = pEmailAddress_
-    , _scveTemplateName = pTemplateName_
-    }
-
-
--- | Name of a configuration set to use when sending the verification email.
-scveConfigurationSetName :: Lens' SendCustomVerificationEmail (Maybe Text)
-scveConfigurationSetName = lens _scveConfigurationSetName (\ s a -> s{_scveConfigurationSetName = a})
-
--- | The email address to verify.
-scveEmailAddress :: Lens' SendCustomVerificationEmail Text
-scveEmailAddress = lens _scveEmailAddress (\ s a -> s{_scveEmailAddress = a})
-
--- | The name of the custom verification email template to use when sending the verification email.
-scveTemplateName :: Lens' SendCustomVerificationEmail Text
-scveTemplateName = lens _scveTemplateName (\ s a -> s{_scveTemplateName = a})
-
-instance AWSRequest SendCustomVerificationEmail where
-        type Rs SendCustomVerificationEmail =
-             SendCustomVerificationEmailResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "SendCustomVerificationEmailResult"
-              (\ s h x ->
-                 SendCustomVerificationEmailResponse' <$>
-                   (x .@? "MessageId") <*> (pure (fromEnum s)))
-
-instance Hashable SendCustomVerificationEmail where
-
-instance NFData SendCustomVerificationEmail where
-
-instance ToHeaders SendCustomVerificationEmail where
-        toHeaders = const mempty
-
-instance ToPath SendCustomVerificationEmail where
-        toPath = const "/"
-
-instance ToQuery SendCustomVerificationEmail where
-        toQuery SendCustomVerificationEmail'{..}
-          = mconcat
-              ["Action" =:
-                 ("SendCustomVerificationEmail" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _scveConfigurationSetName,
-               "EmailAddress" =: _scveEmailAddress,
-               "TemplateName" =: _scveTemplateName]
-
--- | The response received when attempting to send the custom verification email.
---
---
---
--- /See:/ 'sendCustomVerificationEmailResponse' smart constructor.
-data SendCustomVerificationEmailResponse = SendCustomVerificationEmailResponse'
-  { _scversMessageId      :: !(Maybe Text)
-  , _scversResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendCustomVerificationEmailResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'scversMessageId' - The unique message identifier returned from the @SendCustomVerificationEmail@ operation.
---
--- * 'scversResponseStatus' - -- | The response status code.
-sendCustomVerificationEmailResponse
-    :: Int -- ^ 'scversResponseStatus'
-    -> SendCustomVerificationEmailResponse
-sendCustomVerificationEmailResponse pResponseStatus_ =
-  SendCustomVerificationEmailResponse'
-    {_scversMessageId = Nothing, _scversResponseStatus = pResponseStatus_}
-
-
--- | The unique message identifier returned from the @SendCustomVerificationEmail@ operation.
-scversMessageId :: Lens' SendCustomVerificationEmailResponse (Maybe Text)
-scversMessageId = lens _scversMessageId (\ s a -> s{_scversMessageId = a})
-
--- | -- | The response status code.
-scversResponseStatus :: Lens' SendCustomVerificationEmailResponse Int
-scversResponseStatus = lens _scversResponseStatus (\ s a -> s{_scversResponseStatus = a})
-
-instance NFData SendCustomVerificationEmailResponse
-         where
diff --git a/gen/Network/AWS/SES/SendEmail.hs b/gen/Network/AWS/SES/SendEmail.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendEmail.hs
+++ /dev/null
@@ -1,234 +0,0 @@
-{-# 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.SendEmail
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Composes an email message and immediately queues it for sending. In order to send email using the @SendEmail@ operation, your message must meet the following requirements:
---
---
---     * The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error.
---
---     * If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains> in the /Amazon SES Developer Guide./
---
---     * The total size of the message, including attachments, must be smaller than 10 MB.
---
---     * The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format /UserName@[SubDomain.]Domain.TopLevelDomain/ ), the entire message will be rejected, even if the message contains other recipients that are valid.
---
---     * The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the @SendEmail@ operation several times to send the message to each group.
---
---
---
--- /Important:/ For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your /sending quota/ ). For more information about sending quotas in Amazon SES, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Managing Your Amazon SES Sending Limits> in the /Amazon SES Developer Guide./
---
-module Network.AWS.SES.SendEmail
-    (
-    -- * Creating a Request
-      sendEmail
-    , SendEmail
-    -- * Request Lenses
-    , seReturnPath
-    , seConfigurationSetName
-    , seSourceARN
-    , seReturnPathARN
-    , seTags
-    , seReplyToAddresses
-    , seSource
-    , seDestination
-    , seMessage
-
-    -- * Destructuring the Response
-    , sendEmailResponse
-    , SendEmailResponse
-    -- * Response Lenses
-    , sersResponseStatus
-    , sersMessageId
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a single formatted email using Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-formatted.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'sendEmail' smart constructor.
-data SendEmail = SendEmail'
-  { _seReturnPath           :: !(Maybe Text)
-  , _seConfigurationSetName :: !(Maybe Text)
-  , _seSourceARN            :: !(Maybe Text)
-  , _seReturnPathARN        :: !(Maybe Text)
-  , _seTags                 :: !(Maybe [MessageTag])
-  , _seReplyToAddresses     :: !(Maybe [Text])
-  , _seSource               :: !Text
-  , _seDestination          :: !Destination
-  , _seMessage              :: !Message
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'seReturnPath' - The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
---
--- * 'seConfigurationSetName' - The name of the configuration set to use when you send an email using @SendEmail@ .
---
--- * 'seSourceARN' - 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'seReturnPathARN' - 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'seTags' - A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
---
--- * 'seReplyToAddresses' - The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
---
--- * 'seSource' - The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'seDestination' - The destination for this email, composed of To:, CC:, and BCC: fields.
---
--- * 'seMessage' - The message to be sent.
-sendEmail
-    :: Text -- ^ 'seSource'
-    -> Destination -- ^ 'seDestination'
-    -> Message -- ^ 'seMessage'
-    -> SendEmail
-sendEmail pSource_ pDestination_ pMessage_ =
-  SendEmail'
-    { _seReturnPath = Nothing
-    , _seConfigurationSetName = Nothing
-    , _seSourceARN = Nothing
-    , _seReturnPathARN = Nothing
-    , _seTags = Nothing
-    , _seReplyToAddresses = Nothing
-    , _seSource = pSource_
-    , _seDestination = pDestination_
-    , _seMessage = pMessage_
-    }
-
-
--- | The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
-seReturnPath :: Lens' SendEmail (Maybe Text)
-seReturnPath = lens _seReturnPath (\ s a -> s{_seReturnPath = a})
-
--- | The name of the configuration set to use when you send an email using @SendEmail@ .
-seConfigurationSetName :: Lens' SendEmail (Maybe Text)
-seConfigurationSetName = lens _seConfigurationSetName (\ s a -> s{_seConfigurationSetName = 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-seSourceARN :: Lens' SendEmail (Maybe Text)
-seSourceARN = lens _seSourceARN (\ s a -> s{_seSourceARN = 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-seReturnPathARN :: Lens' SendEmail (Maybe Text)
-seReturnPathARN = lens _seReturnPathARN (\ s a -> s{_seReturnPathARN = a})
-
--- | A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
-seTags :: Lens' SendEmail [MessageTag]
-seTags = lens _seTags (\ s a -> s{_seTags = a}) . _Default . _Coerce
-
--- | The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
-seReplyToAddresses :: Lens' SendEmail [Text]
-seReplyToAddresses = lens _seReplyToAddresses (\ s a -> s{_seReplyToAddresses = a}) . _Default . _Coerce
-
--- | The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-seSource :: Lens' SendEmail Text
-seSource = lens _seSource (\ s a -> s{_seSource = a})
-
--- | The destination for this email, composed of To:, CC:, and BCC: fields.
-seDestination :: Lens' SendEmail Destination
-seDestination = lens _seDestination (\ s a -> s{_seDestination = a})
-
--- | The message to be sent.
-seMessage :: Lens' SendEmail Message
-seMessage = lens _seMessage (\ s a -> s{_seMessage = a})
-
-instance AWSRequest SendEmail where
-        type Rs SendEmail = SendEmailResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SendEmailResult"
-              (\ s h x ->
-                 SendEmailResponse' <$>
-                   (pure (fromEnum s)) <*> (x .@ "MessageId"))
-
-instance Hashable SendEmail where
-
-instance NFData SendEmail where
-
-instance ToHeaders SendEmail where
-        toHeaders = const mempty
-
-instance ToPath SendEmail where
-        toPath = const "/"
-
-instance ToQuery SendEmail where
-        toQuery SendEmail'{..}
-          = mconcat
-              ["Action" =: ("SendEmail" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ReturnPath" =: _seReturnPath,
-               "ConfigurationSetName" =: _seConfigurationSetName,
-               "SourceArn" =: _seSourceARN,
-               "ReturnPathArn" =: _seReturnPathARN,
-               "Tags" =: toQuery (toQueryList "member" <$> _seTags),
-               "ReplyToAddresses" =:
-                 toQuery
-                   (toQueryList "member" <$> _seReplyToAddresses),
-               "Source" =: _seSource,
-               "Destination" =: _seDestination,
-               "Message" =: _seMessage]
-
--- | Represents a unique message ID.
---
---
---
--- /See:/ 'sendEmailResponse' smart constructor.
-data SendEmailResponse = SendEmailResponse'
-  { _sersResponseStatus :: !Int
-  , _sersMessageId      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendEmailResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sersResponseStatus' - -- | The response status code.
---
--- * 'sersMessageId' - The unique message identifier returned from the @SendEmail@ action.
-sendEmailResponse
-    :: Int -- ^ 'sersResponseStatus'
-    -> Text -- ^ 'sersMessageId'
-    -> SendEmailResponse
-sendEmailResponse pResponseStatus_ pMessageId_ =
-  SendEmailResponse'
-    {_sersResponseStatus = pResponseStatus_, _sersMessageId = pMessageId_}
-
-
--- | -- | The response status code.
-sersResponseStatus :: Lens' SendEmailResponse Int
-sersResponseStatus = lens _sersResponseStatus (\ s a -> s{_sersResponseStatus = a})
-
--- | The unique message identifier returned from the @SendEmail@ action.
-sersMessageId :: Lens' SendEmailResponse Text
-sersMessageId = lens _sersMessageId (\ s a -> s{_sersMessageId = a})
-
-instance NFData SendEmailResponse where
diff --git a/gen/Network/AWS/SES/SendRawEmail.hs b/gen/Network/AWS/SES/SendRawEmail.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendRawEmail.hs
+++ /dev/null
@@ -1,243 +0,0 @@
-{-# 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.SendRawEmail
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Composes an email message and immediately queues it for sending. When calling this operation, you may specify the message headers as well as the content. The @SendRawEmail@ operation is particularly useful for sending multipart MIME emails (such as those that contain both a plain-text and an HTML version).
---
---
--- In order to send email using the @SendRawEmail@ operation, your message must meet the following requirements:
---
---     * The message must be sent from a verified email address or domain. If you attempt to send email using a non-verified address or domain, the operation will result in an "Email address not verified" error.
---
---     * If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains> in the /Amazon SES Developer Guide./
---
---     * The total size of the message, including attachments, must be smaller than 10 MB.
---
---     * The message must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format /UserName@[SubDomain.]Domain.TopLevelDomain/ ), the entire message will be rejected, even if the message contains other recipients that are valid.
---
---     * The message may not include more than 50 recipients, across the To:, CC: and BCC: fields. If you need to send an email message to a larger audience, you can divide your recipient list into groups of 50 or fewer, and then call the @SendRawEmail@ operation several times to send the message to each group.
---
---
---
--- /Important:/ For every message that you send, the total number of recipients (including each recipient in the To:, CC: and BCC: fields) is counted against the maximum number of emails you can send in a 24-hour period (your /sending quota/ ). For more information about sending quotas in Amazon SES, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/manage-sending-limits.html Managing Your Amazon SES Sending Limits> in the /Amazon SES Developer Guide./
---
--- Additionally, keep the following considerations in mind when using the @SendRawEmail@ operation:
---
---     * Although you can customize the message headers when using the @SendRawEmail@ operation, Amazon SES will automatically apply its own @Message-ID@ and @Date@ headers; if you passed these headers when creating the message, they will be overwritten by the values that Amazon SES provides.
---
---     * If you are using sending authorization to send on behalf of another user, @SendRawEmail@ enables you to specify the cross-account identity for the email's Source, From, and Return-Path parameters in one of two ways: you can pass optional parameters @SourceArn@ , @FromArn@ , and/or @ReturnPathArn@ to the API, or you can include the following X-headers in the header of your raw email:
---
---     * @X-SES-SOURCE-ARN@
---
---     * @X-SES-FROM-ARN@
---
---     * @X-SES-RETURN-PATH-ARN@
---
---
---
--- /Important:/ Do not include these X-headers in the DKIM signature; Amazon SES will remove them before sending the email.
---
--- For most common sending authorization scenarios, we recommend that you specify the @SourceIdentityArn@ parameter and not the @FromIdentityArn@ or @ReturnPathIdentityArn@ parameters. If you only specify the @SourceIdentityArn@ parameter, Amazon SES will set the From and Return Path addresses to the identity specified in @SourceIdentityArn@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Using Sending Authorization with Amazon SES> in the /Amazon SES Developer Guide./
---
---
---
-module Network.AWS.SES.SendRawEmail
-    (
-    -- * Creating a Request
-      sendRawEmail
-    , SendRawEmail
-    -- * Request Lenses
-    , sreConfigurationSetName
-    , sreSourceARN
-    , sreDestinations
-    , sreReturnPathARN
-    , sreSource
-    , sreFromARN
-    , sreTags
-    , sreRawMessage
-
-    -- * Destructuring the Response
-    , sendRawEmailResponse
-    , SendRawEmailResponse
-    -- * Response Lenses
-    , srersResponseStatus
-    , srersMessageId
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a single raw email using Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'sendRawEmail' smart constructor.
-data SendRawEmail = SendRawEmail'
-  { _sreConfigurationSetName :: !(Maybe Text)
-  , _sreSourceARN            :: !(Maybe Text)
-  , _sreDestinations         :: !(Maybe [Text])
-  , _sreReturnPathARN        :: !(Maybe Text)
-  , _sreSource               :: !(Maybe Text)
-  , _sreFromARN              :: !(Maybe Text)
-  , _sreTags                 :: !(Maybe [MessageTag])
-  , _sreRawMessage           :: !RawMessage
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendRawEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sreConfigurationSetName' - The name of the configuration set to use when you send an email using @SendRawEmail@ .
---
--- * 'sreSourceARN' - 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . Instead of using this parameter, you can use the X-header @X-SES-SOURCE-ARN@ in the raw message of the email. If you use both the @SourceArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @SourceArn@ parameter.
---
--- * 'sreDestinations' - A list of destinations for the message, consisting of To:, CC:, and BCC: addresses.
---
--- * 'sreReturnPathARN' - 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . Instead of using this parameter, you can use the X-header @X-SES-RETURN-PATH-ARN@ in the raw message of the email. If you use both the @ReturnPathArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @ReturnPathArn@ parameter.
---
--- * 'sreSource' - The identity's email address. If you do not provide a value for this parameter, you must specify a "From" address in the raw text of the message. (You can also specify both.) If you specify the @Source@ parameter and have feedback forwarding enabled, then bounces and complaints will be sent to this email address. This takes precedence over any Return-Path header that you might include in the raw text of the message.
---
--- * 'sreFromARN' - 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 specify a particular "From" address in the header of the raw email. Instead of using this parameter, you can use the X-header @X-SES-FROM-ARN@ in the raw message of the email. If you use both the @FromArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @FromArn@ parameter.
---
--- * 'sreTags' - A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendRawEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
---
--- * 'sreRawMessage' - The raw text of the message. The client is responsible for ensuring the following:     * Message must contain a header and a body, separated by a blank line.     * All required header fields must be present.     * Each part of a multipart MIME message must be formatted properly.     * MIME content types must be among those supported by Amazon SES. For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Amazon SES Developer Guide> .     * Must be base64-encoded.     * Per <https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6 RFC 5321> , the maximum length of each line of text, including the <CRLF>, must not exceed 1,000 characters.
-sendRawEmail
-    :: RawMessage -- ^ 'sreRawMessage'
-    -> SendRawEmail
-sendRawEmail pRawMessage_ =
-  SendRawEmail'
-    { _sreConfigurationSetName = Nothing
-    , _sreSourceARN = Nothing
-    , _sreDestinations = Nothing
-    , _sreReturnPathARN = Nothing
-    , _sreSource = Nothing
-    , _sreFromARN = Nothing
-    , _sreTags = Nothing
-    , _sreRawMessage = pRawMessage_
-    }
-
-
--- | The name of the configuration set to use when you send an email using @SendRawEmail@ .
-sreConfigurationSetName :: Lens' SendRawEmail (Maybe Text)
-sreConfigurationSetName = lens _sreConfigurationSetName (\ s a -> s{_sreConfigurationSetName = 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . Instead of using this parameter, you can use the X-header @X-SES-SOURCE-ARN@ in the raw message of the email. If you use both the @SourceArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @SourceArn@ parameter.
-sreSourceARN :: Lens' SendRawEmail (Maybe Text)
-sreSourceARN = lens _sreSourceARN (\ s a -> s{_sreSourceARN = a})
-
--- | A list of destinations for the message, consisting of To:, CC:, and BCC: addresses.
-sreDestinations :: Lens' SendRawEmail [Text]
-sreDestinations = lens _sreDestinations (\ s a -> s{_sreDestinations = a}) . _Default . _Coerce
-
--- | 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . Instead of using this parameter, you can use the X-header @X-SES-RETURN-PATH-ARN@ in the raw message of the email. If you use both the @ReturnPathArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @ReturnPathArn@ parameter.
-sreReturnPathARN :: Lens' SendRawEmail (Maybe Text)
-sreReturnPathARN = lens _sreReturnPathARN (\ s a -> s{_sreReturnPathARN = a})
-
--- | The identity's email address. If you do not provide a value for this parameter, you must specify a "From" address in the raw text of the message. (You can also specify both.) If you specify the @Source@ parameter and have feedback forwarding enabled, then bounces and complaints will be sent to this email address. This takes precedence over any Return-Path header that you might include in the raw text of the message.
-sreSource :: Lens' SendRawEmail (Maybe Text)
-sreSource = lens _sreSource (\ s a -> s{_sreSource = 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 specify a particular "From" address in the header of the raw email. Instead of using this parameter, you can use the X-header @X-SES-FROM-ARN@ in the raw message of the email. If you use both the @FromArn@ parameter and the corresponding X-header, Amazon SES uses the value of the @FromArn@ parameter.
-sreFromARN :: Lens' SendRawEmail (Maybe Text)
-sreFromARN = lens _sreFromARN (\ s a -> s{_sreFromARN = a})
-
--- | A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendRawEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
-sreTags :: Lens' SendRawEmail [MessageTag]
-sreTags = lens _sreTags (\ s a -> s{_sreTags = a}) . _Default . _Coerce
-
--- | The raw text of the message. The client is responsible for ensuring the following:     * Message must contain a header and a body, separated by a blank line.     * All required header fields must be present.     * Each part of a multipart MIME message must be formatted properly.     * MIME content types must be among those supported by Amazon SES. For more information, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mime-types.html Amazon SES Developer Guide> .     * Must be base64-encoded.     * Per <https://tools.ietf.org/html/rfc5321#section-4.5.3.1.6 RFC 5321> , the maximum length of each line of text, including the <CRLF>, must not exceed 1,000 characters.
-sreRawMessage :: Lens' SendRawEmail RawMessage
-sreRawMessage = lens _sreRawMessage (\ s a -> s{_sreRawMessage = a})
-
-instance AWSRequest SendRawEmail where
-        type Rs SendRawEmail = SendRawEmailResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SendRawEmailResult"
-              (\ s h x ->
-                 SendRawEmailResponse' <$>
-                   (pure (fromEnum s)) <*> (x .@ "MessageId"))
-
-instance Hashable SendRawEmail where
-
-instance NFData SendRawEmail where
-
-instance ToHeaders SendRawEmail where
-        toHeaders = const mempty
-
-instance ToPath SendRawEmail where
-        toPath = const "/"
-
-instance ToQuery SendRawEmail where
-        toQuery SendRawEmail'{..}
-          = mconcat
-              ["Action" =: ("SendRawEmail" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _sreConfigurationSetName,
-               "SourceArn" =: _sreSourceARN,
-               "Destinations" =:
-                 toQuery (toQueryList "member" <$> _sreDestinations),
-               "ReturnPathArn" =: _sreReturnPathARN,
-               "Source" =: _sreSource, "FromArn" =: _sreFromARN,
-               "Tags" =:
-                 toQuery (toQueryList "member" <$> _sreTags),
-               "RawMessage" =: _sreRawMessage]
-
--- | Represents a unique message ID.
---
---
---
--- /See:/ 'sendRawEmailResponse' smart constructor.
-data SendRawEmailResponse = SendRawEmailResponse'
-  { _srersResponseStatus :: !Int
-  , _srersMessageId      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendRawEmailResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srersResponseStatus' - -- | The response status code.
---
--- * 'srersMessageId' - The unique message identifier returned from the @SendRawEmail@ action.
-sendRawEmailResponse
-    :: Int -- ^ 'srersResponseStatus'
-    -> Text -- ^ 'srersMessageId'
-    -> SendRawEmailResponse
-sendRawEmailResponse pResponseStatus_ pMessageId_ =
-  SendRawEmailResponse'
-    {_srersResponseStatus = pResponseStatus_, _srersMessageId = pMessageId_}
-
-
--- | -- | The response status code.
-srersResponseStatus :: Lens' SendRawEmailResponse Int
-srersResponseStatus = lens _srersResponseStatus (\ s a -> s{_srersResponseStatus = a})
-
--- | The unique message identifier returned from the @SendRawEmail@ action.
-srersMessageId :: Lens' SendRawEmailResponse Text
-srersMessageId = lens _srersMessageId (\ s a -> s{_srersMessageId = a})
-
-instance NFData SendRawEmailResponse where
diff --git a/gen/Network/AWS/SES/SendTemplatedEmail.hs b/gen/Network/AWS/SES/SendTemplatedEmail.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SendTemplatedEmail.hs
+++ /dev/null
@@ -1,255 +0,0 @@
-{-# 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.SendTemplatedEmail
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Composes an email message using an email template and immediately queues it for sending.
---
---
--- In order to send email using the @SendTemplatedEmail@ operation, your call to the API must meet the following requirements:
---
---     * The call must refer to an existing email template. You can create email templates using the 'CreateTemplate' operation.
---
---     * The message must be sent from a verified email address or domain.
---
---     * If your account is still in the Amazon SES sandbox, you may only send to verified addresses or domains, or to email addresses associated with the Amazon SES Mailbox Simulator. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains> in the /Amazon SES Developer Guide./
---
---     * The total size of the message, including attachments, must be less than 10 MB.
---
---     * Calls to the @SendTemplatedEmail@ operation may only include one @Destination@ parameter. A destination is a set of recipients who will receive the same version of the email. The @Destination@ parameter can include up to 50 recipients, across the To:, CC: and BCC: fields.
---
---     * The @Destination@ parameter must include at least one recipient email address. The recipient address can be a To: address, a CC: address, or a BCC: address. If a recipient email address is invalid (that is, it is not in the format /UserName@[SubDomain.]Domain.TopLevelDomain/ ), the entire message will be rejected, even if the message contains other recipients that are valid.
---
---
---
-module Network.AWS.SES.SendTemplatedEmail
-    (
-    -- * Creating a Request
-      sendTemplatedEmail
-    , SendTemplatedEmail
-    -- * Request Lenses
-    , steReturnPath
-    , steConfigurationSetName
-    , steSourceARN
-    , steReturnPathARN
-    , steTemplateARN
-    , steTags
-    , steReplyToAddresses
-    , steSource
-    , steDestination
-    , steTemplate
-    , steTemplateData
-
-    -- * Destructuring the Response
-    , sendTemplatedEmailResponse
-    , SendTemplatedEmailResponse
-    -- * Response Lenses
-    , stersResponseStatus
-    , stersMessageId
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to send a templated email using Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'sendTemplatedEmail' smart constructor.
-data SendTemplatedEmail = SendTemplatedEmail'
-  { _steReturnPath           :: !(Maybe Text)
-  , _steConfigurationSetName :: !(Maybe Text)
-  , _steSourceARN            :: !(Maybe Text)
-  , _steReturnPathARN        :: !(Maybe Text)
-  , _steTemplateARN          :: !(Maybe Text)
-  , _steTags                 :: !(Maybe [MessageTag])
-  , _steReplyToAddresses     :: !(Maybe [Text])
-  , _steSource               :: !Text
-  , _steDestination          :: !Destination
-  , _steTemplate             :: !Text
-  , _steTemplateData         :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendTemplatedEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'steReturnPath' - The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
---
--- * 'steConfigurationSetName' - The name of the configuration set to use when you send an email using @SendTemplatedEmail@ .
---
--- * 'steSourceARN' - 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'steReturnPathARN' - 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'steTemplateARN' - The ARN of the template to use when sending this email.
---
--- * 'steTags' - A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendTemplatedEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
---
--- * 'steReplyToAddresses' - The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
---
--- * 'steSource' - The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
---
--- * 'steDestination' - The destination for this email, composed of To:, CC:, and BCC: fields. A Destination can include up to 50 recipients across these three fields.
---
--- * 'steTemplate' - The template to use when sending this email.
---
--- * 'steTemplateData' - A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-sendTemplatedEmail
-    :: Text -- ^ 'steSource'
-    -> Destination -- ^ 'steDestination'
-    -> Text -- ^ 'steTemplate'
-    -> Text -- ^ 'steTemplateData'
-    -> SendTemplatedEmail
-sendTemplatedEmail pSource_ pDestination_ pTemplate_ pTemplateData_ =
-  SendTemplatedEmail'
-    { _steReturnPath = Nothing
-    , _steConfigurationSetName = Nothing
-    , _steSourceARN = Nothing
-    , _steReturnPathARN = Nothing
-    , _steTemplateARN = Nothing
-    , _steTags = Nothing
-    , _steReplyToAddresses = Nothing
-    , _steSource = pSource_
-    , _steDestination = pDestination_
-    , _steTemplate = pTemplate_
-    , _steTemplateData = pTemplateData_
-    }
-
-
--- | The email address that bounces and complaints will be forwarded to when feedback forwarding is enabled. If the message cannot be delivered to the recipient, then an error message will be returned from the recipient's ISP; this message will then be forwarded to the email address specified by the @ReturnPath@ parameter. The @ReturnPath@ parameter is never overwritten. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES.
-steReturnPath :: Lens' SendTemplatedEmail (Maybe Text)
-steReturnPath = lens _steReturnPath (\ s a -> s{_steReturnPath = a})
-
--- | The name of the configuration set to use when you send an email using @SendTemplatedEmail@ .
-steConfigurationSetName :: Lens' SendTemplatedEmail (Maybe Text)
-steConfigurationSetName = lens _steConfigurationSetName (\ s a -> s{_steConfigurationSetName = 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 send for the email address specified in the @Source@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to send from @user@example.com@ , then you would specify the @SourceArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @Source@ to be @user@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-steSourceARN :: Lens' SendTemplatedEmail (Maybe Text)
-steSourceARN = lens _steSourceARN (\ s a -> s{_steSourceARN = 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 email address specified in the @ReturnPath@ parameter. For example, if the owner of @example.com@ (which has ARN @arn:aws:ses:us-east-1:123456789012:identity/example.com@ ) attaches a policy to it that authorizes you to use @feedback@example.com@ , then you would specify the @ReturnPathArn@ to be @arn:aws:ses:us-east-1:123456789012:identity/example.com@ , and the @ReturnPath@ to be @feedback@example.com@ . For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-steReturnPathARN :: Lens' SendTemplatedEmail (Maybe Text)
-steReturnPathARN = lens _steReturnPathARN (\ s a -> s{_steReturnPathARN = a})
-
--- | The ARN of the template to use when sending this email.
-steTemplateARN :: Lens' SendTemplatedEmail (Maybe Text)
-steTemplateARN = lens _steTemplateARN (\ s a -> s{_steTemplateARN = a})
-
--- | A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendTemplatedEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
-steTags :: Lens' SendTemplatedEmail [MessageTag]
-steTags = lens _steTags (\ s a -> s{_steTags = a}) . _Default . _Coerce
-
--- | The reply-to email address(es) for the message. If the recipient replies to the message, each reply-to address will receive the reply.
-steReplyToAddresses :: Lens' SendTemplatedEmail [Text]
-steReplyToAddresses = lens _steReplyToAddresses (\ s a -> s{_steReplyToAddresses = a}) . _Default . _Coerce
-
--- | The email address that is sending the email. This email address must be either individually verified with Amazon SES, or from a domain that has been verified with Amazon SES. For information about verifying identities, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Amazon SES Developer Guide> . If you are sending on behalf of another user and have been permitted to do so by a sending authorization policy, then you must also specify the @SourceArn@ parameter. For more information about sending authorization, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/sending-authorization.html Amazon SES Developer Guide> .
-steSource :: Lens' SendTemplatedEmail Text
-steSource = lens _steSource (\ s a -> s{_steSource = a})
-
--- | The destination for this email, composed of To:, CC:, and BCC: fields. A Destination can include up to 50 recipients across these three fields.
-steDestination :: Lens' SendTemplatedEmail Destination
-steDestination = lens _steDestination (\ s a -> s{_steDestination = a})
-
--- | The template to use when sending this email.
-steTemplate :: Lens' SendTemplatedEmail Text
-steTemplate = lens _steTemplate (\ s a -> s{_steTemplate = a})
-
--- | A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-steTemplateData :: Lens' SendTemplatedEmail Text
-steTemplateData = lens _steTemplateData (\ s a -> s{_steTemplateData = a})
-
-instance AWSRequest SendTemplatedEmail where
-        type Rs SendTemplatedEmail =
-             SendTemplatedEmailResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SendTemplatedEmailResult"
-              (\ s h x ->
-                 SendTemplatedEmailResponse' <$>
-                   (pure (fromEnum s)) <*> (x .@ "MessageId"))
-
-instance Hashable SendTemplatedEmail where
-
-instance NFData SendTemplatedEmail where
-
-instance ToHeaders SendTemplatedEmail where
-        toHeaders = const mempty
-
-instance ToPath SendTemplatedEmail where
-        toPath = const "/"
-
-instance ToQuery SendTemplatedEmail where
-        toQuery SendTemplatedEmail'{..}
-          = mconcat
-              ["Action" =: ("SendTemplatedEmail" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ReturnPath" =: _steReturnPath,
-               "ConfigurationSetName" =: _steConfigurationSetName,
-               "SourceArn" =: _steSourceARN,
-               "ReturnPathArn" =: _steReturnPathARN,
-               "TemplateArn" =: _steTemplateARN,
-               "Tags" =:
-                 toQuery (toQueryList "member" <$> _steTags),
-               "ReplyToAddresses" =:
-                 toQuery
-                   (toQueryList "member" <$> _steReplyToAddresses),
-               "Source" =: _steSource,
-               "Destination" =: _steDestination,
-               "Template" =: _steTemplate,
-               "TemplateData" =: _steTemplateData]
-
--- | /See:/ 'sendTemplatedEmailResponse' smart constructor.
-data SendTemplatedEmailResponse = SendTemplatedEmailResponse'
-  { _stersResponseStatus :: !Int
-  , _stersMessageId      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SendTemplatedEmailResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'stersResponseStatus' - -- | The response status code.
---
--- * 'stersMessageId' - The unique message identifier returned from the @SendTemplatedEmail@ action.
-sendTemplatedEmailResponse
-    :: Int -- ^ 'stersResponseStatus'
-    -> Text -- ^ 'stersMessageId'
-    -> SendTemplatedEmailResponse
-sendTemplatedEmailResponse pResponseStatus_ pMessageId_ =
-  SendTemplatedEmailResponse'
-    {_stersResponseStatus = pResponseStatus_, _stersMessageId = pMessageId_}
-
-
--- | -- | The response status code.
-stersResponseStatus :: Lens' SendTemplatedEmailResponse Int
-stersResponseStatus = lens _stersResponseStatus (\ s a -> s{_stersResponseStatus = a})
-
--- | The unique message identifier returned from the @SendTemplatedEmail@ action.
-stersMessageId :: Lens' SendTemplatedEmailResponse Text
-stersMessageId = lens _stersMessageId (\ s a -> s{_stersMessageId = a})
-
-instance NFData SendTemplatedEmailResponse where
diff --git a/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs b/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetActiveReceiptRuleSet.hs
+++ /dev/null
@@ -1,128 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Sets the specified receipt rule set as the active 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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to set a receipt rule set as the active receipt rule set. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set to make active. Setting this value to null disables all email receiving.
-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 Hashable SetActiveReceiptRuleSet where
-
-instance NFData SetActiveReceiptRuleSet where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData SetActiveReceiptRuleSetResponse where
diff --git a/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs b/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetIdentityDkimEnabled.hs
+++ /dev/null
@@ -1,149 +0,0 @@
-{-# 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.SetIdentityDkimEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Enables or disables Easy DKIM signing of email sent from an identity:
---
---
---     * If Easy DKIM signing is enabled for a domain name identity (such as @example.com@ ), then Amazon SES will DKIM-sign all email sent by addresses under that domain name (for example, @user@example.com@ ).
---
---     * If Easy DKIM signing is enabled for an email address, then Amazon SES will DKIM-sign all email sent by that email address.
---
---
---
--- For email addresses (for example, @user@example.com@ ), you can only enable Easy DKIM signing if the corresponding domain (in this case, @example.com@ ) has been set up for Easy DKIM using the AWS Console or the @VerifyDomainDkim@ operation.
---
--- You can execute this operation no more than once per second.
---
--- For more information about Easy DKIM signing, go to the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.SetIdentityDkimEnabled
-    (
-    -- * Creating a Request
-      setIdentityDkimEnabled
-    , SetIdentityDkimEnabled
-    -- * Request Lenses
-    , sideIdentity
-    , sideDkimEnabled
-
-    -- * Destructuring the Response
-    , setIdentityDkimEnabledResponse
-    , SetIdentityDkimEnabledResponse
-    -- * Response Lenses
-    , sidersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to enable or disable Amazon SES Easy DKIM signing for an identity. For more information about setting up Easy DKIM, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'setIdentityDkimEnabled' smart constructor.
-data SetIdentityDkimEnabled = SetIdentityDkimEnabled'
-  { _sideIdentity    :: !Text
-  , _sideDkimEnabled :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityDkimEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sideIdentity' - The identity for which DKIM signing should be enabled or disabled.
---
--- * 'sideDkimEnabled' - Sets whether DKIM signing is enabled for an identity. Set to @true@ to enable DKIM signing for this identity; @false@ to disable it.
-setIdentityDkimEnabled
-    :: Text -- ^ 'sideIdentity'
-    -> Bool -- ^ 'sideDkimEnabled'
-    -> SetIdentityDkimEnabled
-setIdentityDkimEnabled pIdentity_ pDkimEnabled_ =
-  SetIdentityDkimEnabled'
-    {_sideIdentity = pIdentity_, _sideDkimEnabled = pDkimEnabled_}
-
-
--- | The identity for which DKIM signing should be enabled or disabled.
-sideIdentity :: Lens' SetIdentityDkimEnabled Text
-sideIdentity = lens _sideIdentity (\ s a -> s{_sideIdentity = a})
-
--- | Sets whether DKIM signing is enabled for an identity. Set to @true@ to enable DKIM signing for this identity; @false@ to disable it.
-sideDkimEnabled :: Lens' SetIdentityDkimEnabled Bool
-sideDkimEnabled = lens _sideDkimEnabled (\ s a -> s{_sideDkimEnabled = a})
-
-instance AWSRequest SetIdentityDkimEnabled where
-        type Rs SetIdentityDkimEnabled =
-             SetIdentityDkimEnabledResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SetIdentityDkimEnabledResult"
-              (\ s h x ->
-                 SetIdentityDkimEnabledResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable SetIdentityDkimEnabled where
-
-instance NFData SetIdentityDkimEnabled where
-
-instance ToHeaders SetIdentityDkimEnabled where
-        toHeaders = const mempty
-
-instance ToPath SetIdentityDkimEnabled where
-        toPath = const "/"
-
-instance ToQuery SetIdentityDkimEnabled where
-        toQuery SetIdentityDkimEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("SetIdentityDkimEnabled" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _sideIdentity,
-               "DkimEnabled" =: _sideDkimEnabled]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'setIdentityDkimEnabledResponse' smart constructor.
-newtype SetIdentityDkimEnabledResponse = SetIdentityDkimEnabledResponse'
-  { _sidersResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityDkimEnabledResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sidersResponseStatus' - -- | The response status code.
-setIdentityDkimEnabledResponse
-    :: Int -- ^ 'sidersResponseStatus'
-    -> SetIdentityDkimEnabledResponse
-setIdentityDkimEnabledResponse pResponseStatus_ =
-  SetIdentityDkimEnabledResponse' {_sidersResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-sidersResponseStatus :: Lens' SetIdentityDkimEnabledResponse Int
-sidersResponseStatus = lens _sidersResponseStatus (\ s a -> s{_sidersResponseStatus = a})
-
-instance NFData SetIdentityDkimEnabledResponse where
diff --git a/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs b/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetIdentityFeedbackForwardingEnabled.hs
+++ /dev/null
@@ -1,155 +0,0 @@
-{-# 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.SetIdentityFeedbackForwardingEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Given an identity (an email address or a domain), enables or disables whether Amazon SES forwards bounce and complaint notifications as email. Feedback forwarding can only be disabled when Amazon Simple Notification Service (Amazon SNS) topics are specified for both bounces and complaints.
---
---
--- You can execute this operation no more than once per second.
---
--- For more information about using notifications with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.SetIdentityFeedbackForwardingEnabled
-    (
-    -- * Creating a Request
-      setIdentityFeedbackForwardingEnabled
-    , SetIdentityFeedbackForwardingEnabled
-    -- * Request Lenses
-    , siffeIdentity
-    , siffeForwardingEnabled
-
-    -- * Destructuring the Response
-    , setIdentityFeedbackForwardingEnabledResponse
-    , SetIdentityFeedbackForwardingEnabledResponse
-    -- * Response Lenses
-    , siffersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to enable or disable whether Amazon SES forwards you bounce and complaint notifications through email. For information about email feedback forwarding, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-email.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'setIdentityFeedbackForwardingEnabled' smart constructor.
-data SetIdentityFeedbackForwardingEnabled = SetIdentityFeedbackForwardingEnabled'
-  { _siffeIdentity          :: !Text
-  , _siffeForwardingEnabled :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityFeedbackForwardingEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'siffeIdentity' - The identity for which to set bounce and complaint notification forwarding. Examples: @user@example.com@ , @example.com@ .
---
--- * 'siffeForwardingEnabled' - Sets whether Amazon SES will forward bounce and complaint notifications as email. @true@ specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. @false@ specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to @false@ when Amazon SNS topics are set for both @Bounce@ and @Complaint@ notification types.
-setIdentityFeedbackForwardingEnabled
-    :: Text -- ^ 'siffeIdentity'
-    -> Bool -- ^ 'siffeForwardingEnabled'
-    -> SetIdentityFeedbackForwardingEnabled
-setIdentityFeedbackForwardingEnabled pIdentity_ pForwardingEnabled_ =
-  SetIdentityFeedbackForwardingEnabled'
-    {_siffeIdentity = pIdentity_, _siffeForwardingEnabled = pForwardingEnabled_}
-
-
--- | The identity for which to set bounce and complaint notification forwarding. Examples: @user@example.com@ , @example.com@ .
-siffeIdentity :: Lens' SetIdentityFeedbackForwardingEnabled Text
-siffeIdentity = lens _siffeIdentity (\ s a -> s{_siffeIdentity = a})
-
--- | Sets whether Amazon SES will forward bounce and complaint notifications as email. @true@ specifies that Amazon SES will forward bounce and complaint notifications as email, in addition to any Amazon SNS topic publishing otherwise specified. @false@ specifies that Amazon SES will publish bounce and complaint notifications only through Amazon SNS. This value can only be set to @false@ when Amazon SNS topics are set for both @Bounce@ and @Complaint@ notification types.
-siffeForwardingEnabled :: Lens' SetIdentityFeedbackForwardingEnabled Bool
-siffeForwardingEnabled = lens _siffeForwardingEnabled (\ s a -> s{_siffeForwardingEnabled = a})
-
-instance AWSRequest
-           SetIdentityFeedbackForwardingEnabled
-         where
-        type Rs SetIdentityFeedbackForwardingEnabled =
-             SetIdentityFeedbackForwardingEnabledResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "SetIdentityFeedbackForwardingEnabledResult"
-              (\ s h x ->
-                 SetIdentityFeedbackForwardingEnabledResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           SetIdentityFeedbackForwardingEnabled
-         where
-
-instance NFData SetIdentityFeedbackForwardingEnabled
-         where
-
-instance ToHeaders
-           SetIdentityFeedbackForwardingEnabled
-         where
-        toHeaders = const mempty
-
-instance ToPath SetIdentityFeedbackForwardingEnabled
-         where
-        toPath = const "/"
-
-instance ToQuery SetIdentityFeedbackForwardingEnabled
-         where
-        toQuery SetIdentityFeedbackForwardingEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("SetIdentityFeedbackForwardingEnabled" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _siffeIdentity,
-               "ForwardingEnabled" =: _siffeForwardingEnabled]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'setIdentityFeedbackForwardingEnabledResponse' smart constructor.
-newtype SetIdentityFeedbackForwardingEnabledResponse = SetIdentityFeedbackForwardingEnabledResponse'
-  { _siffersResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityFeedbackForwardingEnabledResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'siffersResponseStatus' - -- | The response status code.
-setIdentityFeedbackForwardingEnabledResponse
-    :: Int -- ^ 'siffersResponseStatus'
-    -> SetIdentityFeedbackForwardingEnabledResponse
-setIdentityFeedbackForwardingEnabledResponse pResponseStatus_ =
-  SetIdentityFeedbackForwardingEnabledResponse'
-    {_siffersResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-siffersResponseStatus :: Lens' SetIdentityFeedbackForwardingEnabledResponse Int
-siffersResponseStatus = lens _siffersResponseStatus (\ s a -> s{_siffersResponseStatus = a})
-
-instance NFData
-           SetIdentityFeedbackForwardingEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/SetIdentityHeadersInNotificationsEnabled.hs b/gen/Network/AWS/SES/SetIdentityHeadersInNotificationsEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetIdentityHeadersInNotificationsEnabled.hs
+++ /dev/null
@@ -1,171 +0,0 @@
-{-# 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.SetIdentityHeadersInNotificationsEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Given an identity (an email address or a domain), sets whether Amazon SES includes the original email headers in the Amazon Simple Notification Service (Amazon SNS) notifications of a specified type.
---
---
--- You can execute this operation no more than once per second.
---
--- For more information about using notifications with Amazon SES, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.SetIdentityHeadersInNotificationsEnabled
-    (
-    -- * Creating a Request
-      setIdentityHeadersInNotificationsEnabled
-    , SetIdentityHeadersInNotificationsEnabled
-    -- * Request Lenses
-    , sihineIdentity
-    , sihineNotificationType
-    , sihineEnabled
-
-    -- * Destructuring the Response
-    , setIdentityHeadersInNotificationsEnabledResponse
-    , SetIdentityHeadersInNotificationsEnabledResponse
-    -- * Response Lenses
-    , sihinersResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to set whether Amazon SES includes the original email headers in the Amazon SNS notifications of a specified type. For information about notifications, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-sns.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'setIdentityHeadersInNotificationsEnabled' smart constructor.
-data SetIdentityHeadersInNotificationsEnabled = SetIdentityHeadersInNotificationsEnabled'
-  { _sihineIdentity         :: !Text
-  , _sihineNotificationType :: !NotificationType
-  , _sihineEnabled          :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityHeadersInNotificationsEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sihineIdentity' - The identity for which to enable or disable headers in notifications. Examples: @user@example.com@ , @example.com@ .
---
--- * 'sihineNotificationType' - The notification type for which to enable or disable headers in notifications.
---
--- * 'sihineEnabled' - Sets whether Amazon SES includes the original email headers in Amazon SNS notifications of the specified notification type. A value of @true@ specifies that Amazon SES will include headers in notifications, and a value of @false@ specifies that Amazon SES will not include headers in notifications. This value can only be set when @NotificationType@ is already set to use a particular Amazon SNS topic.
-setIdentityHeadersInNotificationsEnabled
-    :: Text -- ^ 'sihineIdentity'
-    -> NotificationType -- ^ 'sihineNotificationType'
-    -> Bool -- ^ 'sihineEnabled'
-    -> SetIdentityHeadersInNotificationsEnabled
-setIdentityHeadersInNotificationsEnabled pIdentity_ pNotificationType_ pEnabled_ =
-  SetIdentityHeadersInNotificationsEnabled'
-    { _sihineIdentity = pIdentity_
-    , _sihineNotificationType = pNotificationType_
-    , _sihineEnabled = pEnabled_
-    }
-
-
--- | The identity for which to enable or disable headers in notifications. Examples: @user@example.com@ , @example.com@ .
-sihineIdentity :: Lens' SetIdentityHeadersInNotificationsEnabled Text
-sihineIdentity = lens _sihineIdentity (\ s a -> s{_sihineIdentity = a})
-
--- | The notification type for which to enable or disable headers in notifications.
-sihineNotificationType :: Lens' SetIdentityHeadersInNotificationsEnabled NotificationType
-sihineNotificationType = lens _sihineNotificationType (\ s a -> s{_sihineNotificationType = a})
-
--- | Sets whether Amazon SES includes the original email headers in Amazon SNS notifications of the specified notification type. A value of @true@ specifies that Amazon SES will include headers in notifications, and a value of @false@ specifies that Amazon SES will not include headers in notifications. This value can only be set when @NotificationType@ is already set to use a particular Amazon SNS topic.
-sihineEnabled :: Lens' SetIdentityHeadersInNotificationsEnabled Bool
-sihineEnabled = lens _sihineEnabled (\ s a -> s{_sihineEnabled = a})
-
-instance AWSRequest
-           SetIdentityHeadersInNotificationsEnabled
-         where
-        type Rs SetIdentityHeadersInNotificationsEnabled =
-             SetIdentityHeadersInNotificationsEnabledResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "SetIdentityHeadersInNotificationsEnabledResult"
-              (\ s h x ->
-                 SetIdentityHeadersInNotificationsEnabledResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           SetIdentityHeadersInNotificationsEnabled
-         where
-
-instance NFData
-           SetIdentityHeadersInNotificationsEnabled
-         where
-
-instance ToHeaders
-           SetIdentityHeadersInNotificationsEnabled
-         where
-        toHeaders = const mempty
-
-instance ToPath
-           SetIdentityHeadersInNotificationsEnabled
-         where
-        toPath = const "/"
-
-instance ToQuery
-           SetIdentityHeadersInNotificationsEnabled
-         where
-        toQuery SetIdentityHeadersInNotificationsEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("SetIdentityHeadersInNotificationsEnabled" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Identity" =: _sihineIdentity,
-               "NotificationType" =: _sihineNotificationType,
-               "Enabled" =: _sihineEnabled]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'setIdentityHeadersInNotificationsEnabledResponse' smart constructor.
-newtype SetIdentityHeadersInNotificationsEnabledResponse = SetIdentityHeadersInNotificationsEnabledResponse'
-  { _sihinersResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityHeadersInNotificationsEnabledResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sihinersResponseStatus' - -- | The response status code.
-setIdentityHeadersInNotificationsEnabledResponse
-    :: Int -- ^ 'sihinersResponseStatus'
-    -> SetIdentityHeadersInNotificationsEnabledResponse
-setIdentityHeadersInNotificationsEnabledResponse pResponseStatus_ =
-  SetIdentityHeadersInNotificationsEnabledResponse'
-    {_sihinersResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-sihinersResponseStatus :: Lens' SetIdentityHeadersInNotificationsEnabledResponse Int
-sihinersResponseStatus = lens _sihinersResponseStatus (\ s a -> s{_sihinersResponseStatus = a})
-
-instance NFData
-           SetIdentityHeadersInNotificationsEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/SetIdentityMailFromDomain.hs b/gen/Network/AWS/SES/SetIdentityMailFromDomain.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetIdentityMailFromDomain.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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.SetIdentityMailFromDomain
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Enables or disables the custom MAIL FROM domain setup for a verified identity (an email address or a domain).
---
---
--- /Important:/ To send emails using the specified MAIL FROM domain, you must add an MX record to your MAIL FROM domain's DNS settings. If you want your emails to pass Sender Policy Framework (SPF) checks, you must also add or update an SPF record. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from-set.html Amazon SES Developer Guide> .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.SetIdentityMailFromDomain
-    (
-    -- * Creating a Request
-      setIdentityMailFromDomain
-    , SetIdentityMailFromDomain
-    -- * Request Lenses
-    , simfdMailFromDomain
-    , simfdBehaviorOnMXFailure
-    , simfdIdentity
-
-    -- * Destructuring the Response
-    , setIdentityMailFromDomainResponse
-    , SetIdentityMailFromDomainResponse
-    -- * Response Lenses
-    , simfdrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to enable or disable the Amazon SES custom MAIL FROM domain setup for a verified identity. For information about using a custom MAIL FROM domain, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'setIdentityMailFromDomain' smart constructor.
-data SetIdentityMailFromDomain = SetIdentityMailFromDomain'
-  { _simfdMailFromDomain      :: !(Maybe Text)
-  , _simfdBehaviorOnMXFailure :: !(Maybe BehaviorOnMXFailure)
-  , _simfdIdentity            :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityMailFromDomain' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'simfdMailFromDomain' - The custom MAIL FROM domain that you want the verified identity to use. The MAIL FROM domain must 1) be a subdomain of the verified identity, 2) not be used in a "From" address if the MAIL FROM domain is the destination of email feedback forwarding (for more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide> ), and 3) not be used to receive emails. A value of @null@ disables the custom MAIL FROM setting for the identity.
---
--- * 'simfdBehaviorOnMXFailure' - The action that you want Amazon SES to take if it cannot successfully read the required MX record when you send an email. If you choose @UseDefaultValue@ , Amazon SES will use amazonses.com (or a subdomain of that) as the MAIL FROM domain. If you choose @RejectMessage@ , Amazon SES will return a @MailFromDomainNotVerified@ error and not send the email. The action specified in @BehaviorOnMXFailure@ is taken when the custom MAIL FROM domain setup is in the @Pending@ , @Failed@ , and @TemporaryFailure@ states.
---
--- * 'simfdIdentity' - The verified identity for which you want to enable or disable the specified custom MAIL FROM domain.
-setIdentityMailFromDomain
-    :: Text -- ^ 'simfdIdentity'
-    -> SetIdentityMailFromDomain
-setIdentityMailFromDomain pIdentity_ =
-  SetIdentityMailFromDomain'
-    { _simfdMailFromDomain = Nothing
-    , _simfdBehaviorOnMXFailure = Nothing
-    , _simfdIdentity = pIdentity_
-    }
-
-
--- | The custom MAIL FROM domain that you want the verified identity to use. The MAIL FROM domain must 1) be a subdomain of the verified identity, 2) not be used in a "From" address if the MAIL FROM domain is the destination of email feedback forwarding (for more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from.html Amazon SES Developer Guide> ), and 3) not be used to receive emails. A value of @null@ disables the custom MAIL FROM setting for the identity.
-simfdMailFromDomain :: Lens' SetIdentityMailFromDomain (Maybe Text)
-simfdMailFromDomain = lens _simfdMailFromDomain (\ s a -> s{_simfdMailFromDomain = a})
-
--- | The action that you want Amazon SES to take if it cannot successfully read the required MX record when you send an email. If you choose @UseDefaultValue@ , Amazon SES will use amazonses.com (or a subdomain of that) as the MAIL FROM domain. If you choose @RejectMessage@ , Amazon SES will return a @MailFromDomainNotVerified@ error and not send the email. The action specified in @BehaviorOnMXFailure@ is taken when the custom MAIL FROM domain setup is in the @Pending@ , @Failed@ , and @TemporaryFailure@ states.
-simfdBehaviorOnMXFailure :: Lens' SetIdentityMailFromDomain (Maybe BehaviorOnMXFailure)
-simfdBehaviorOnMXFailure = lens _simfdBehaviorOnMXFailure (\ s a -> s{_simfdBehaviorOnMXFailure = a})
-
--- | The verified identity for which you want to enable or disable the specified custom MAIL FROM domain.
-simfdIdentity :: Lens' SetIdentityMailFromDomain Text
-simfdIdentity = lens _simfdIdentity (\ s a -> s{_simfdIdentity = a})
-
-instance AWSRequest SetIdentityMailFromDomain where
-        type Rs SetIdentityMailFromDomain =
-             SetIdentityMailFromDomainResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "SetIdentityMailFromDomainResult"
-              (\ s h x ->
-                 SetIdentityMailFromDomainResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable SetIdentityMailFromDomain where
-
-instance NFData SetIdentityMailFromDomain where
-
-instance ToHeaders SetIdentityMailFromDomain where
-        toHeaders = const mempty
-
-instance ToPath SetIdentityMailFromDomain where
-        toPath = const "/"
-
-instance ToQuery SetIdentityMailFromDomain where
-        toQuery SetIdentityMailFromDomain'{..}
-          = mconcat
-              ["Action" =:
-                 ("SetIdentityMailFromDomain" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "MailFromDomain" =: _simfdMailFromDomain,
-               "BehaviorOnMXFailure" =: _simfdBehaviorOnMXFailure,
-               "Identity" =: _simfdIdentity]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'setIdentityMailFromDomainResponse' smart constructor.
-newtype SetIdentityMailFromDomainResponse = SetIdentityMailFromDomainResponse'
-  { _simfdrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityMailFromDomainResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'simfdrsResponseStatus' - -- | The response status code.
-setIdentityMailFromDomainResponse
-    :: Int -- ^ 'simfdrsResponseStatus'
-    -> SetIdentityMailFromDomainResponse
-setIdentityMailFromDomainResponse pResponseStatus_ =
-  SetIdentityMailFromDomainResponse' {_simfdrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-simfdrsResponseStatus :: Lens' SetIdentityMailFromDomainResponse Int
-simfdrsResponseStatus = lens _simfdrsResponseStatus (\ s a -> s{_simfdrsResponseStatus = a})
-
-instance NFData SetIdentityMailFromDomainResponse
-         where
diff --git a/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs b/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetIdentityNotificationTopic.hs
+++ /dev/null
@@ -1,157 +0,0 @@
-{-# 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.SetIdentityNotificationTopic
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Given an identity (an email address or a domain), sets the Amazon Simple Notification Service (Amazon SNS) topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with that identity as the @Source@ .
---
---
--- You can execute this operation no more than once per second.
---
--- For more information about feedback notification, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.SetIdentityNotificationTopic
-    (
-    -- * Creating a Request
-      setIdentityNotificationTopic
-    , SetIdentityNotificationTopic
-    -- * Request Lenses
-    , sintSNSTopic
-    , sintIdentity
-    , sintNotificationType
-
-    -- * Destructuring the Response
-    , setIdentityNotificationTopicResponse
-    , SetIdentityNotificationTopicResponse
-    -- * Response Lenses
-    , sintrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to specify the Amazon SNS topic to which Amazon SES will publish bounce, complaint, or delivery notifications for emails sent with that identity as the Source. For information about Amazon SES notifications, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications-via-sns.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'setIdentityNotificationTopic' smart constructor.
-data SetIdentityNotificationTopic = SetIdentityNotificationTopic'
-  { _sintSNSTopic         :: !(Maybe Text)
-  , _sintIdentity         :: !Text
-  , _sintNotificationType :: !NotificationType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityNotificationTopic' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sintSNSTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, @SnsTopic@ is cleared and publishing is disabled.
---
--- * 'sintIdentity' - The identity for which the Amazon SNS topic will be set. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ .
---
--- * 'sintNotificationType' - The type of notifications that will be published to the specified Amazon SNS topic.
-setIdentityNotificationTopic
-    :: Text -- ^ 'sintIdentity'
-    -> NotificationType -- ^ 'sintNotificationType'
-    -> SetIdentityNotificationTopic
-setIdentityNotificationTopic pIdentity_ pNotificationType_ =
-  SetIdentityNotificationTopic'
-    { _sintSNSTopic = Nothing
-    , _sintIdentity = pIdentity_
-    , _sintNotificationType = pNotificationType_
-    }
-
-
--- | The Amazon Resource Name (ARN) of the Amazon SNS topic. If the parameter is omitted from the request or a null value is passed, @SnsTopic@ is cleared and publishing is disabled.
-sintSNSTopic :: Lens' SetIdentityNotificationTopic (Maybe Text)
-sintSNSTopic = lens _sintSNSTopic (\ s a -> s{_sintSNSTopic = a})
-
--- | The identity for which the Amazon SNS topic will be set. You can specify an identity by using its name or by using its Amazon Resource Name (ARN). Examples: @user@example.com@ , @example.com@ , @arn:aws:ses:us-east-1:123456789012:identity/example.com@ .
-sintIdentity :: Lens' SetIdentityNotificationTopic Text
-sintIdentity = lens _sintIdentity (\ s a -> s{_sintIdentity = a})
-
--- | The type of notifications that will be published to the specified Amazon SNS topic.
-sintNotificationType :: Lens' SetIdentityNotificationTopic NotificationType
-sintNotificationType = lens _sintNotificationType (\ s a -> s{_sintNotificationType = a})
-
-instance AWSRequest SetIdentityNotificationTopic
-         where
-        type Rs SetIdentityNotificationTopic =
-             SetIdentityNotificationTopicResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "SetIdentityNotificationTopicResult"
-              (\ s h x ->
-                 SetIdentityNotificationTopicResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable SetIdentityNotificationTopic where
-
-instance NFData SetIdentityNotificationTopic where
-
-instance ToHeaders SetIdentityNotificationTopic where
-        toHeaders = const mempty
-
-instance ToPath SetIdentityNotificationTopic where
-        toPath = const "/"
-
-instance ToQuery SetIdentityNotificationTopic where
-        toQuery SetIdentityNotificationTopic'{..}
-          = mconcat
-              ["Action" =:
-                 ("SetIdentityNotificationTopic" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "SnsTopic" =: _sintSNSTopic,
-               "Identity" =: _sintIdentity,
-               "NotificationType" =: _sintNotificationType]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'setIdentityNotificationTopicResponse' smart constructor.
-newtype SetIdentityNotificationTopicResponse = SetIdentityNotificationTopicResponse'
-  { _sintrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityNotificationTopicResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sintrsResponseStatus' - -- | The response status code.
-setIdentityNotificationTopicResponse
-    :: Int -- ^ 'sintrsResponseStatus'
-    -> SetIdentityNotificationTopicResponse
-setIdentityNotificationTopicResponse pResponseStatus_ =
-  SetIdentityNotificationTopicResponse'
-    {_sintrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-sintrsResponseStatus :: Lens' SetIdentityNotificationTopicResponse Int
-sintrsResponseStatus = lens _sintrsResponseStatus (\ s a -> s{_sintrsResponseStatus = a})
-
-instance NFData SetIdentityNotificationTopicResponse
-         where
diff --git a/gen/Network/AWS/SES/SetReceiptRulePosition.hs b/gen/Network/AWS/SES/SetReceiptRulePosition.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/SetReceiptRulePosition.hs
+++ /dev/null
@@ -1,153 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to set the position of a receipt rule in a receipt rule set. You use receipt rule sets to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule after which to place the specified receipt rule.
---
--- * 'srrpRuleSetName' - The name of the receipt rule set that contains the receipt rule to reposition.
---
--- * 'srrpRuleName' - The name of the receipt rule to reposition.
-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 Hashable SetReceiptRulePosition where
-
-instance NFData SetReceiptRulePosition where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData SetReceiptRulePositionResponse where
diff --git a/gen/Network/AWS/SES/TestRenderTemplate.hs b/gen/Network/AWS/SES/TestRenderTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/TestRenderTemplate.hs
+++ /dev/null
@@ -1,139 +0,0 @@
-{-# 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.TestRenderTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Creates a preview of the MIME content of an email when provided with a template and a set of replacement data.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.TestRenderTemplate
-    (
-    -- * Creating a Request
-      testRenderTemplate
-    , TestRenderTemplate
-    -- * Request Lenses
-    , trtTemplateName
-    , trtTemplateData
-
-    -- * Destructuring the Response
-    , testRenderTemplateResponse
-    , TestRenderTemplateResponse
-    -- * Response Lenses
-    , trtrsRenderedTemplate
-    , trtrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'testRenderTemplate' smart constructor.
-data TestRenderTemplate = TestRenderTemplate'
-  { _trtTemplateName :: !Text
-  , _trtTemplateData :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestRenderTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trtTemplateName' - The name of the template that you want to render.
---
--- * 'trtTemplateData' - A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-testRenderTemplate
-    :: Text -- ^ 'trtTemplateName'
-    -> Text -- ^ 'trtTemplateData'
-    -> TestRenderTemplate
-testRenderTemplate pTemplateName_ pTemplateData_ =
-  TestRenderTemplate'
-    {_trtTemplateName = pTemplateName_, _trtTemplateData = pTemplateData_}
-
-
--- | The name of the template that you want to render.
-trtTemplateName :: Lens' TestRenderTemplate Text
-trtTemplateName = lens _trtTemplateName (\ s a -> s{_trtTemplateName = a})
-
--- | A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-trtTemplateData :: Lens' TestRenderTemplate Text
-trtTemplateData = lens _trtTemplateData (\ s a -> s{_trtTemplateData = a})
-
-instance AWSRequest TestRenderTemplate where
-        type Rs TestRenderTemplate =
-             TestRenderTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "TestRenderTemplateResult"
-              (\ s h x ->
-                 TestRenderTemplateResponse' <$>
-                   (x .@? "RenderedTemplate") <*> (pure (fromEnum s)))
-
-instance Hashable TestRenderTemplate where
-
-instance NFData TestRenderTemplate where
-
-instance ToHeaders TestRenderTemplate where
-        toHeaders = const mempty
-
-instance ToPath TestRenderTemplate where
-        toPath = const "/"
-
-instance ToQuery TestRenderTemplate where
-        toQuery TestRenderTemplate'{..}
-          = mconcat
-              ["Action" =: ("TestRenderTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "TemplateName" =: _trtTemplateName,
-               "TemplateData" =: _trtTemplateData]
-
--- | /See:/ 'testRenderTemplateResponse' smart constructor.
-data TestRenderTemplateResponse = TestRenderTemplateResponse'
-  { _trtrsRenderedTemplate :: !(Maybe Text)
-  , _trtrsResponseStatus   :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TestRenderTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'trtrsRenderedTemplate' - The complete MIME message rendered by applying the data in the TemplateData parameter to the template specified in the TemplateName parameter.
---
--- * 'trtrsResponseStatus' - -- | The response status code.
-testRenderTemplateResponse
-    :: Int -- ^ 'trtrsResponseStatus'
-    -> TestRenderTemplateResponse
-testRenderTemplateResponse pResponseStatus_ =
-  TestRenderTemplateResponse'
-    {_trtrsRenderedTemplate = Nothing, _trtrsResponseStatus = pResponseStatus_}
-
-
--- | The complete MIME message rendered by applying the data in the TemplateData parameter to the template specified in the TemplateName parameter.
-trtrsRenderedTemplate :: Lens' TestRenderTemplateResponse (Maybe Text)
-trtrsRenderedTemplate = lens _trtrsRenderedTemplate (\ s a -> s{_trtrsRenderedTemplate = a})
-
--- | -- | The response status code.
-trtrsResponseStatus :: Lens' TestRenderTemplateResponse Int
-trtrsResponseStatus = lens _trtrsResponseStatus (\ s a -> s{_trtrsResponseStatus = a})
-
-instance NFData TestRenderTemplateResponse where
diff --git a/gen/Network/AWS/SES/Types.hs b/gen/Network/AWS/SES/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/Types.hs
+++ /dev/null
@@ -1,699 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SES.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SES.Types
-    (
-    -- * Service Configuration
-      ses
-
-    -- * Errors
-    , _InvalidConfigurationSetException
-    , _InvalidSNSDestinationException
-    , _TemplateDoesNotExistException
-    , _ConfigurationSetSendingPausedException
-    , _CannotDeleteException
-    , _ProductionAccessNotGrantedException
-    , _RuleDoesNotExistException
-    , _MessageRejected
-    , _InvalidRenderingParameterException
-    , _MissingRenderingAttributeException
-    , _FromEmailAddressNotVerifiedException
-    , _RuleSetDoesNotExistException
-    , _MailFromDomainNotVerifiedException
-    , _InvalidFirehoseDestinationException
-    , _ConfigurationSetAlreadyExistsException
-    , _CustomVerificationEmailInvalidContentException
-    , _InvalidTrackingOptionsException
-    , _AccountSendingPausedException
-    , _EventDestinationDoesNotExistException
-    , _CustomVerificationEmailTemplateAlreadyExistsException
-    , _CustomVerificationEmailTemplateDoesNotExistException
-    , _InvalidCloudWatchDestinationException
-    , _InvalidLambdaFunctionException
-    , _TrackingOptionsDoesNotExistException
-    , _InvalidTemplateException
-    , _ConfigurationSetDoesNotExistException
-    , _InvalidPolicyException
-    , _InvalidS3ConfigurationException
-    , _TrackingOptionsAlreadyExistsException
-    , _InvalidSNSTopicException
-    , _EventDestinationAlreadyExistsException
-    , _AlreadyExistsException
-    , _LimitExceededException
-
-    -- * BehaviorOnMXFailure
-    , BehaviorOnMXFailure (..)
-
-    -- * BounceType
-    , BounceType (..)
-
-    -- * BulkEmailStatus
-    , BulkEmailStatus (..)
-
-    -- * ConfigurationSetAttribute
-    , ConfigurationSetAttribute (..)
-
-    -- * CustomMailFromStatus
-    , CustomMailFromStatus (..)
-
-    -- * DimensionValueSource
-    , DimensionValueSource (..)
-
-    -- * DsnAction
-    , DsnAction (..)
-
-    -- * EventType
-    , EventType (..)
-
-    -- * IdentityType
-    , IdentityType (..)
-
-    -- * InvocationType
-    , InvocationType (..)
-
-    -- * NotificationType
-    , NotificationType (..)
-
-    -- * ReceiptFilterPolicy
-    , ReceiptFilterPolicy (..)
-
-    -- * SNSActionEncoding
-    , SNSActionEncoding (..)
-
-    -- * 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
-
-    -- * BulkEmailDestination
-    , BulkEmailDestination
-    , bulkEmailDestination
-    , bedReplacementTemplateData
-    , bedReplacementTags
-    , bedDestination
-
-    -- * BulkEmailDestinationStatus
-    , BulkEmailDestinationStatus
-    , bulkEmailDestinationStatus
-    , bedsStatus
-    , bedsError
-    , bedsMessageId
-
-    -- * CloudWatchDestination
-    , CloudWatchDestination
-    , cloudWatchDestination
-    , cwdDimensionConfigurations
-
-    -- * CloudWatchDimensionConfiguration
-    , CloudWatchDimensionConfiguration
-    , cloudWatchDimensionConfiguration
-    , cwdcDimensionName
-    , cwdcDimensionValueSource
-    , cwdcDefaultDimensionValue
-
-    -- * ConfigurationSet
-    , ConfigurationSet
-    , configurationSet
-    , csName
-
-    -- * Content
-    , Content
-    , content
-    , cCharset
-    , cData
-
-    -- * CustomVerificationEmailTemplate
-    , CustomVerificationEmailTemplate
-    , customVerificationEmailTemplate
-    , cvetFromEmailAddress
-    , cvetTemplateName
-    , cvetFailureRedirectionURL
-    , cvetTemplateSubject
-    , cvetSuccessRedirectionURL
-
-    -- * Destination
-    , Destination
-    , destination
-    , dBCCAddresses
-    , dCCAddresses
-    , dToAddresses
-
-    -- * EventDestination
-    , EventDestination
-    , eventDestination
-    , edEnabled
-    , edKinesisFirehoseDestination
-    , edCloudWatchDestination
-    , edSNSDestination
-    , edName
-    , edMatchingEventTypes
-
-    -- * ExtensionField
-    , ExtensionField
-    , extensionField
-    , efName
-    , efValue
-
-    -- * IdentityDkimAttributes
-    , IdentityDkimAttributes
-    , identityDkimAttributes
-    , idaDkimTokens
-    , idaDkimEnabled
-    , idaDkimVerificationStatus
-
-    -- * IdentityMailFromDomainAttributes
-    , IdentityMailFromDomainAttributes
-    , identityMailFromDomainAttributes
-    , imfdaMailFromDomain
-    , imfdaMailFromDomainStatus
-    , imfdaBehaviorOnMXFailure
-
-    -- * IdentityNotificationAttributes
-    , IdentityNotificationAttributes
-    , identityNotificationAttributes
-    , inaHeadersInDeliveryNotificationsEnabled
-    , inaHeadersInComplaintNotificationsEnabled
-    , inaHeadersInBounceNotificationsEnabled
-    , inaBounceTopic
-    , inaComplaintTopic
-    , inaDeliveryTopic
-    , inaForwardingEnabled
-
-    -- * IdentityVerificationAttributes
-    , IdentityVerificationAttributes
-    , identityVerificationAttributes
-    , ivaVerificationToken
-    , ivaVerificationStatus
-
-    -- * KinesisFirehoseDestination
-    , KinesisFirehoseDestination
-    , kinesisFirehoseDestination
-    , kfdIAMRoleARN
-    , kfdDeliveryStreamARN
-
-    -- * LambdaAction
-    , LambdaAction
-    , lambdaAction
-    , laInvocationType
-    , laTopicARN
-    , laFunctionARN
-
-    -- * Message
-    , Message
-    , message
-    , mSubject
-    , mBody
-
-    -- * MessageDsn
-    , MessageDsn
-    , messageDsn
-    , mdArrivalDate
-    , mdExtensionFields
-    , mdReportingMta
-
-    -- * MessageTag
-    , MessageTag
-    , messageTag
-    , mtName
-    , mtValue
-
-    -- * 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
-
-    -- * ReputationOptions
-    , ReputationOptions
-    , reputationOptions
-    , roLastFreshStart
-    , roReputationMetricsEnabled
-    , roSendingEnabled
-
-    -- * S3Action
-    , S3Action
-    , s3Action
-    , s3KMSKeyARN
-    , s3TopicARN
-    , s3ObjectKeyPrefix
-    , s3BucketName
-
-    -- * SNSAction
-    , SNSAction
-    , snsAction
-    , saEncoding
-    , saTopicARN
-
-    -- * SNSDestination
-    , SNSDestination
-    , snsDestination
-    , sdTopicARN
-
-    -- * SendDataPoint
-    , SendDataPoint
-    , sendDataPoint
-    , sdpRejects
-    , sdpComplaints
-    , sdpDeliveryAttempts
-    , sdpBounces
-    , sdpTimestamp
-
-    -- * StopAction
-    , StopAction
-    , stopAction
-    , sTopicARN
-    , sScope
-
-    -- * Template
-    , Template
-    , template
-    , tTextPart
-    , tSubjectPart
-    , tHTMLPart
-    , tTemplateName
-
-    -- * TemplateMetadata
-    , TemplateMetadata
-    , templateMetadata
-    , tmName
-    , tmCreatedTimestamp
-
-    -- * TrackingOptions
-    , TrackingOptions
-    , trackingOptions
-    , toCustomRedirectDomain
-
-    -- * WorkmailAction
-    , WorkmailAction
-    , workmailAction
-    , waTopicARN
-    , waOrganizationARN
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SES.Types.Product
-import Network.AWS.SES.Types.Sum
-import Network.AWS.Sign.V4
-
--- | API version @2010-12-01@ of the Amazon Simple Email Service SDK configuration.
-ses :: Service
-ses =
-  Service
-    { _svcAbbrev = "SES"
-    , _svcSigner = v4
-    , _svcPrefix = "email"
-    , _svcVersion = "2010-12-01"
-    , _svcEndpoint = defaultEndpoint ses
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseXMLError "SES"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | Indicates that the configuration set is invalid. See the error message for details.
---
---
-_InvalidConfigurationSetException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidConfigurationSetException =
-  _MatchServiceError ses "InvalidConfigurationSet" . hasStatus 400
-
-
--- | Indicates that the Amazon Simple Notification Service (Amazon SNS) destination is invalid. See the error message for details.
---
---
-_InvalidSNSDestinationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidSNSDestinationException =
-  _MatchServiceError ses "InvalidSNSDestination" . hasStatus 400
-
-
--- | Indicates that the Template object you specified does not exist in your Amazon SES account.
---
---
-_TemplateDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_TemplateDoesNotExistException =
-  _MatchServiceError ses "TemplateDoesNotExist" . hasStatus 400
-
-
--- | Indicates that email sending is disabled for the configuration set.
---
---
--- You can enable or disable email sending for a configuration set using 'UpdateConfigurationSetSendingEnabled' .
---
-_ConfigurationSetSendingPausedException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConfigurationSetSendingPausedException =
-  _MatchServiceError ses "ConfigurationSetSendingPausedException" .
-  hasStatus 400
-
-
--- | Indicates that the delete operation could not be completed.
---
---
-_CannotDeleteException :: AsError a => Getting (First ServiceError) a ServiceError
-_CannotDeleteException = _MatchServiceError ses "CannotDelete" . hasStatus 400
-
-
--- | Indicates that the account has not been granted production access.
---
---
-_ProductionAccessNotGrantedException :: AsError a => Getting (First ServiceError) a ServiceError
-_ProductionAccessNotGrantedException =
-  _MatchServiceError ses "ProductionAccessNotGranted" . hasStatus 400
-
-
--- | Indicates that the provided receipt rule does not exist.
---
---
-_RuleDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_RuleDoesNotExistException =
-  _MatchServiceError ses "RuleDoesNotExist" . hasStatus 400
-
-
--- | 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 = _MatchServiceError ses "MessageRejected" . hasStatus 400
-
-
--- | Indicates that one or more of the replacement values you provided is invalid. This error may occur when the TemplateData object contains invalid JSON.
---
---
-_InvalidRenderingParameterException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidRenderingParameterException =
-  _MatchServiceError ses "InvalidRenderingParameter" . hasStatus 400
-
-
--- | Indicates that one or more of the replacement values for the specified template was not specified. Ensure that the TemplateData object contains references to all of the replacement tags in the specified template.
---
---
-_MissingRenderingAttributeException :: AsError a => Getting (First ServiceError) a ServiceError
-_MissingRenderingAttributeException =
-  _MatchServiceError ses "MissingRenderingAttribute" . hasStatus 400
-
-
--- | Indicates that the sender address specified for a custom verification email is not verified, and is therefore not eligible to send the custom verification email.
---
---
-_FromEmailAddressNotVerifiedException :: AsError a => Getting (First ServiceError) a ServiceError
-_FromEmailAddressNotVerifiedException =
-  _MatchServiceError ses "FromEmailAddressNotVerified" . hasStatus 400
-
-
--- | Indicates that the provided receipt rule set does not exist.
---
---
-_RuleSetDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_RuleSetDoesNotExistException =
-  _MatchServiceError ses "RuleSetDoesNotExist" . hasStatus 400
-
-
--- | Indicates that the message could not be sent because Amazon SES could not read the MX record required to use the specified MAIL FROM domain. For information about editing the custom MAIL FROM domain settings for an identity, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/mail-from-edit.html Amazon SES Developer Guide> .
---
---
-_MailFromDomainNotVerifiedException :: AsError a => Getting (First ServiceError) a ServiceError
-_MailFromDomainNotVerifiedException =
-  _MatchServiceError ses "MailFromDomainNotVerifiedException" . hasStatus 400
-
-
--- | Indicates that the Amazon Kinesis Firehose destination is invalid. See the error message for details.
---
---
-_InvalidFirehoseDestinationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidFirehoseDestinationException =
-  _MatchServiceError ses "InvalidFirehoseDestination" . hasStatus 400
-
-
--- | Indicates that the configuration set could not be created because of a naming conflict.
---
---
-_ConfigurationSetAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConfigurationSetAlreadyExistsException =
-  _MatchServiceError ses "ConfigurationSetAlreadyExists" . hasStatus 400
-
-
--- | Indicates that custom verification email template provided content is invalid.
---
---
-_CustomVerificationEmailInvalidContentException :: AsError a => Getting (First ServiceError) a ServiceError
-_CustomVerificationEmailInvalidContentException =
-  _MatchServiceError ses "CustomVerificationEmailInvalidContent" . hasStatus 400
-
-
--- | Indicates that the custom domain to be used for open and click tracking redirects is invalid. This error appears most often in the following situations:
---
---
---     * When the tracking domain you specified is not verified in Amazon SES.
---
---     * When the tracking domain you specified is not a valid domain or subdomain.
---
---
---
-_InvalidTrackingOptionsException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidTrackingOptionsException =
-  _MatchServiceError ses "InvalidTrackingOptions" . hasStatus 400
-
-
--- | Indicates that email sending is disabled for your entire Amazon SES account.
---
---
--- You can enable or disable email sending for your Amazon SES account using 'UpdateAccountSendingEnabled' .
---
-_AccountSendingPausedException :: AsError a => Getting (First ServiceError) a ServiceError
-_AccountSendingPausedException =
-  _MatchServiceError ses "AccountSendingPausedException" . hasStatus 400
-
-
--- | Indicates that the event destination does not exist.
---
---
-_EventDestinationDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_EventDestinationDoesNotExistException =
-  _MatchServiceError ses "EventDestinationDoesNotExist" . hasStatus 400
-
-
--- | Indicates that a custom verification email template with the name you specified already exists.
---
---
-_CustomVerificationEmailTemplateAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_CustomVerificationEmailTemplateAlreadyExistsException =
-  _MatchServiceError ses "CustomVerificationEmailTemplateAlreadyExists" .
-  hasStatus 400
-
-
--- | Indicates that a custom verification email template with the name you specified does not exist.
---
---
-_CustomVerificationEmailTemplateDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_CustomVerificationEmailTemplateDoesNotExistException =
-  _MatchServiceError ses "CustomVerificationEmailTemplateDoesNotExist" .
-  hasStatus 400
-
-
--- | Indicates that the Amazon CloudWatch destination is invalid. See the error message for details.
---
---
-_InvalidCloudWatchDestinationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidCloudWatchDestinationException =
-  _MatchServiceError ses "InvalidCloudWatchDestination" . hasStatus 400
-
-
--- | 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 =
-  _MatchServiceError ses "InvalidLambdaFunction" . hasStatus 400
-
-
--- | Indicates that the TrackingOptions object you specified does not exist.
---
---
-_TrackingOptionsDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_TrackingOptionsDoesNotExistException =
-  _MatchServiceError ses "TrackingOptionsDoesNotExistException" . hasStatus 400
-
-
--- | Indicates that a template could not be created because it contained invalid JSON.
---
---
-_InvalidTemplateException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidTemplateException =
-  _MatchServiceError ses "InvalidTemplate" . hasStatus 400
-
-
--- | Indicates that the configuration set does not exist.
---
---
-_ConfigurationSetDoesNotExistException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConfigurationSetDoesNotExistException =
-  _MatchServiceError ses "ConfigurationSetDoesNotExist" . hasStatus 400
-
-
--- | 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 = _MatchServiceError ses "InvalidPolicy" . hasStatus 400
-
-
--- | 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 =
-  _MatchServiceError ses "InvalidS3Configuration" . hasStatus 400
-
-
--- | Indicates that the configuration set you specified already contains a TrackingOptions object.
---
---
-_TrackingOptionsAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TrackingOptionsAlreadyExistsException =
-  _MatchServiceError ses "TrackingOptionsAlreadyExistsException" . hasStatus 400
-
-
--- | 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 =
-  _MatchServiceError ses "InvalidSnsTopic" . hasStatus 400
-
-
--- | Indicates that the event destination could not be created because of a naming conflict.
---
---
-_EventDestinationAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_EventDestinationAlreadyExistsException =
-  _MatchServiceError ses "EventDestinationAlreadyExists" . hasStatus 400
-
-
--- | Indicates that a resource could not be created because of a naming conflict.
---
---
-_AlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_AlreadyExistsException = _MatchServiceError ses "AlreadyExists" . hasStatus 400
-
-
--- | Indicates that a resource could not be created because of 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 = _MatchServiceError ses "LimitExceeded" . hasStatus 400
-
diff --git a/gen/Network/AWS/SES/Types/Product.hs b/gen/Network/AWS/SES/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/Types/Product.hs
+++ /dev/null
@@ -1,2368 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SES.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SES.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SES.Types.Sum
-
--- | 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' - 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.
---
--- * 'ahaHeaderValue' - Must be less than 2048 characters, and must not contain newline characters ("\r" or "\n").
-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 Hashable AddHeaderAction where
-
-instance NFData AddHeaderAction where
-
-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' - 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).
---
--- * 'bHTML' - 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.
-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 Hashable Body where
-
-instance NFData Body where
-
-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' - 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> .
---
--- * 'baStatusCode' - The SMTP enhanced status code, as defined by <https://tools.ietf.org/html/rfc3463 RFC 3463> .
---
--- * 'baSmtpReplyCode' - The SMTP reply code, as defined by <https://tools.ietf.org/html/rfc5321 RFC 5321> .
---
--- * 'baMessage' - Human-readable text to include in the bounce message.
---
--- * 'baSender' - The email address of the sender of the bounced email. This is the address from which the bounce message will be sent.
-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 Hashable BounceAction where
-
-instance NFData BounceAction where
-
-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' - The reason for the bounce. You must provide either this parameter or @RecipientDsnFields@ .
---
--- * 'briRecipientDsnFields' - 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@ .
---
--- * 'briRecipientARN' - 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> .
---
--- * 'briRecipient' - The email address of the recipient of the bounced email.
-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 Hashable BouncedRecipientInfo where
-
-instance NFData BouncedRecipientInfo where
-
-instance ToQuery BouncedRecipientInfo where
-        toQuery BouncedRecipientInfo'{..}
-          = mconcat
-              ["BounceType" =: _briBounceType,
-               "RecipientDsnFields" =: _briRecipientDsnFields,
-               "RecipientArn" =: _briRecipientARN,
-               "Recipient" =: _briRecipient]
-
--- | An array that contains one or more Destinations, as well as the tags and replacement data associated with each of those Destinations.
---
---
---
--- /See:/ 'bulkEmailDestination' smart constructor.
-data BulkEmailDestination = BulkEmailDestination'
-  { _bedReplacementTemplateData :: !(Maybe Text)
-  , _bedReplacementTags         :: !(Maybe [MessageTag])
-  , _bedDestination             :: !Destination
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BulkEmailDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bedReplacementTemplateData' - A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
---
--- * 'bedReplacementTags' - A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendBulkTemplatedEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
---
--- * 'bedDestination' - Undocumented member.
-bulkEmailDestination
-    :: Destination -- ^ 'bedDestination'
-    -> BulkEmailDestination
-bulkEmailDestination pDestination_ =
-  BulkEmailDestination'
-    { _bedReplacementTemplateData = Nothing
-    , _bedReplacementTags = Nothing
-    , _bedDestination = pDestination_
-    }
-
-
--- | A list of replacement values to apply to the template. This parameter is a JSON object, typically consisting of key-value pairs in which the keys correspond to replacement tags in the email template.
-bedReplacementTemplateData :: Lens' BulkEmailDestination (Maybe Text)
-bedReplacementTemplateData = lens _bedReplacementTemplateData (\ s a -> s{_bedReplacementTemplateData = a})
-
--- | A list of tags, in the form of name/value pairs, to apply to an email that you send using @SendBulkTemplatedEmail@ . Tags correspond to characteristics of the email that you define, so that you can publish email sending events.
-bedReplacementTags :: Lens' BulkEmailDestination [MessageTag]
-bedReplacementTags = lens _bedReplacementTags (\ s a -> s{_bedReplacementTags = a}) . _Default . _Coerce
-
--- | Undocumented member.
-bedDestination :: Lens' BulkEmailDestination Destination
-bedDestination = lens _bedDestination (\ s a -> s{_bedDestination = a})
-
-instance Hashable BulkEmailDestination where
-
-instance NFData BulkEmailDestination where
-
-instance ToQuery BulkEmailDestination where
-        toQuery BulkEmailDestination'{..}
-          = mconcat
-              ["ReplacementTemplateData" =:
-                 _bedReplacementTemplateData,
-               "ReplacementTags" =:
-                 toQuery
-                   (toQueryList "member" <$> _bedReplacementTags),
-               "Destination" =: _bedDestination]
-
--- | An object that contains the response from the @SendBulkTemplatedEmail@ operation.
---
---
---
--- /See:/ 'bulkEmailDestinationStatus' smart constructor.
-data BulkEmailDestinationStatus = BulkEmailDestinationStatus'
-  { _bedsStatus    :: !(Maybe BulkEmailStatus)
-  , _bedsError     :: !(Maybe Text)
-  , _bedsMessageId :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BulkEmailDestinationStatus' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bedsStatus' - The status of a message sent using the @SendBulkTemplatedEmail@ operation. Possible values for this parameter include:     * @Success@ : Amazon SES accepted the message, and will attempt to deliver it to the recipients.     * @MessageRejected@ : The message was rejected because it contained a virus.     * @MailFromDomainNotVerified@ : The sender's email address or domain was not verified.     * @ConfigurationSetDoesNotExist@ : The configuration set you specified does not exist.     * @TemplateDoesNotExist@ : The template you specified does not exist.     * @AccountSuspended@ : Your account has been shut down because of issues related to your email sending practices.     * @AccountThrottled@ : The number of emails you can send has been reduced because your account has exceeded its allocated sending limit.     * @AccountDailyQuotaExceeded@ : You have reached or exceeded the maximum number of emails you can send from your account in a 24-hour period.     * @InvalidSendingPoolName@ : The configuration set you specified refers to an IP pool that does not exist.     * @AccountSendingPaused@ : Email sending for the Amazon SES account was disabled using the 'UpdateAccountSendingEnabled' operation.     * @ConfigurationSetSendingPaused@ : Email sending for this configuration set was disabled using the 'UpdateConfigurationSetSendingEnabled' operation.     * @InvalidParameterValue@ : One or more of the parameters you specified when calling this operation was invalid. See the error message for additional information.     * @TransientFailure@ : Amazon SES was unable to process your request because of a temporary issue.     * @Failed@ : Amazon SES was unable to process your request. See the error message for additional information.
---
--- * 'bedsError' - A description of an error that prevented a message being sent using the @SendBulkTemplatedEmail@ operation.
---
--- * 'bedsMessageId' - The unique message identifier returned from the @SendBulkTemplatedEmail@ operation.
-bulkEmailDestinationStatus
-    :: BulkEmailDestinationStatus
-bulkEmailDestinationStatus =
-  BulkEmailDestinationStatus'
-    {_bedsStatus = Nothing, _bedsError = Nothing, _bedsMessageId = Nothing}
-
-
--- | The status of a message sent using the @SendBulkTemplatedEmail@ operation. Possible values for this parameter include:     * @Success@ : Amazon SES accepted the message, and will attempt to deliver it to the recipients.     * @MessageRejected@ : The message was rejected because it contained a virus.     * @MailFromDomainNotVerified@ : The sender's email address or domain was not verified.     * @ConfigurationSetDoesNotExist@ : The configuration set you specified does not exist.     * @TemplateDoesNotExist@ : The template you specified does not exist.     * @AccountSuspended@ : Your account has been shut down because of issues related to your email sending practices.     * @AccountThrottled@ : The number of emails you can send has been reduced because your account has exceeded its allocated sending limit.     * @AccountDailyQuotaExceeded@ : You have reached or exceeded the maximum number of emails you can send from your account in a 24-hour period.     * @InvalidSendingPoolName@ : The configuration set you specified refers to an IP pool that does not exist.     * @AccountSendingPaused@ : Email sending for the Amazon SES account was disabled using the 'UpdateAccountSendingEnabled' operation.     * @ConfigurationSetSendingPaused@ : Email sending for this configuration set was disabled using the 'UpdateConfigurationSetSendingEnabled' operation.     * @InvalidParameterValue@ : One or more of the parameters you specified when calling this operation was invalid. See the error message for additional information.     * @TransientFailure@ : Amazon SES was unable to process your request because of a temporary issue.     * @Failed@ : Amazon SES was unable to process your request. See the error message for additional information.
-bedsStatus :: Lens' BulkEmailDestinationStatus (Maybe BulkEmailStatus)
-bedsStatus = lens _bedsStatus (\ s a -> s{_bedsStatus = a})
-
--- | A description of an error that prevented a message being sent using the @SendBulkTemplatedEmail@ operation.
-bedsError :: Lens' BulkEmailDestinationStatus (Maybe Text)
-bedsError = lens _bedsError (\ s a -> s{_bedsError = a})
-
--- | The unique message identifier returned from the @SendBulkTemplatedEmail@ operation.
-bedsMessageId :: Lens' BulkEmailDestinationStatus (Maybe Text)
-bedsMessageId = lens _bedsMessageId (\ s a -> s{_bedsMessageId = a})
-
-instance FromXML BulkEmailDestinationStatus where
-        parseXML x
-          = BulkEmailDestinationStatus' <$>
-              (x .@? "Status") <*> (x .@? "Error") <*>
-                (x .@? "MessageId")
-
-instance Hashable BulkEmailDestinationStatus where
-
-instance NFData BulkEmailDestinationStatus where
-
--- | Contains information associated with an Amazon CloudWatch event destination to which email sending events are published.
---
---
--- Event destinations, such as Amazon CloudWatch, are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'cloudWatchDestination' smart constructor.
-newtype CloudWatchDestination = CloudWatchDestination'
-  { _cwdDimensionConfigurations :: [CloudWatchDimensionConfiguration]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CloudWatchDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cwdDimensionConfigurations' - A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.
-cloudWatchDestination
-    :: CloudWatchDestination
-cloudWatchDestination =
-  CloudWatchDestination' {_cwdDimensionConfigurations = mempty}
-
-
--- | A list of dimensions upon which to categorize your emails when you publish email sending events to Amazon CloudWatch.
-cwdDimensionConfigurations :: Lens' CloudWatchDestination [CloudWatchDimensionConfiguration]
-cwdDimensionConfigurations = lens _cwdDimensionConfigurations (\ s a -> s{_cwdDimensionConfigurations = a}) . _Coerce
-
-instance FromXML CloudWatchDestination where
-        parseXML x
-          = CloudWatchDestination' <$>
-              (x .@? "DimensionConfigurations" .!@ mempty >>=
-                 parseXMLList "member")
-
-instance Hashable CloudWatchDestination where
-
-instance NFData CloudWatchDestination where
-
-instance ToQuery CloudWatchDestination where
-        toQuery CloudWatchDestination'{..}
-          = mconcat
-              ["DimensionConfigurations" =:
-                 toQueryList "member" _cwdDimensionConfigurations]
-
--- | Contains the dimension configuration to use when you publish email sending events to Amazon CloudWatch.
---
---
--- For information about publishing email sending events to Amazon CloudWatch, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'cloudWatchDimensionConfiguration' smart constructor.
-data CloudWatchDimensionConfiguration = CloudWatchDimensionConfiguration'
-  { _cwdcDimensionName         :: !Text
-  , _cwdcDimensionValueSource  :: !DimensionValueSource
-  , _cwdcDefaultDimensionValue :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CloudWatchDimensionConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cwdcDimensionName' - The name of an Amazon CloudWatch dimension associated with an email sending metric. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
---
--- * 'cwdcDimensionValueSource' - The place where Amazon SES finds the value of a dimension to publish to Amazon CloudWatch. If you want Amazon SES to use the message tags that you specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the @SendEmail@ /@SendRawEmail@ API, choose @messageTag@ . If you want Amazon SES to use your own email headers, choose @emailHeader@ .
---
--- * 'cwdcDefaultDimensionValue' - The default value of the dimension that is published to Amazon CloudWatch if you do not provide the value of the dimension when you send an email. The default value must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-cloudWatchDimensionConfiguration
-    :: Text -- ^ 'cwdcDimensionName'
-    -> DimensionValueSource -- ^ 'cwdcDimensionValueSource'
-    -> Text -- ^ 'cwdcDefaultDimensionValue'
-    -> CloudWatchDimensionConfiguration
-cloudWatchDimensionConfiguration pDimensionName_ pDimensionValueSource_ pDefaultDimensionValue_ =
-  CloudWatchDimensionConfiguration'
-    { _cwdcDimensionName = pDimensionName_
-    , _cwdcDimensionValueSource = pDimensionValueSource_
-    , _cwdcDefaultDimensionValue = pDefaultDimensionValue_
-    }
-
-
--- | The name of an Amazon CloudWatch dimension associated with an email sending metric. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-cwdcDimensionName :: Lens' CloudWatchDimensionConfiguration Text
-cwdcDimensionName = lens _cwdcDimensionName (\ s a -> s{_cwdcDimensionName = a})
-
--- | The place where Amazon SES finds the value of a dimension to publish to Amazon CloudWatch. If you want Amazon SES to use the message tags that you specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the @SendEmail@ /@SendRawEmail@ API, choose @messageTag@ . If you want Amazon SES to use your own email headers, choose @emailHeader@ .
-cwdcDimensionValueSource :: Lens' CloudWatchDimensionConfiguration DimensionValueSource
-cwdcDimensionValueSource = lens _cwdcDimensionValueSource (\ s a -> s{_cwdcDimensionValueSource = a})
-
--- | The default value of the dimension that is published to Amazon CloudWatch if you do not provide the value of the dimension when you send an email. The default value must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-cwdcDefaultDimensionValue :: Lens' CloudWatchDimensionConfiguration Text
-cwdcDefaultDimensionValue = lens _cwdcDefaultDimensionValue (\ s a -> s{_cwdcDefaultDimensionValue = a})
-
-instance FromXML CloudWatchDimensionConfiguration
-         where
-        parseXML x
-          = CloudWatchDimensionConfiguration' <$>
-              (x .@ "DimensionName") <*>
-                (x .@ "DimensionValueSource")
-                <*> (x .@ "DefaultDimensionValue")
-
-instance Hashable CloudWatchDimensionConfiguration
-         where
-
-instance NFData CloudWatchDimensionConfiguration
-         where
-
-instance ToQuery CloudWatchDimensionConfiguration
-         where
-        toQuery CloudWatchDimensionConfiguration'{..}
-          = mconcat
-              ["DimensionName" =: _cwdcDimensionName,
-               "DimensionValueSource" =: _cwdcDimensionValueSource,
-               "DefaultDimensionValue" =:
-                 _cwdcDefaultDimensionValue]
-
--- | The name of the configuration set.
---
---
--- Configuration sets let you create groups of rules that you can apply to the emails you send using Amazon SES. For more information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/using-configuration-sets.html Using Amazon SES Configuration Sets> in the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/ Amazon SES Developer Guide> .
---
---
--- /See:/ 'configurationSet' smart constructor.
-newtype ConfigurationSet = ConfigurationSet'
-  { _csName :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ConfigurationSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csName' - The name of the configuration set. The name must meet the following requirements:     * Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain 64 characters or fewer.
-configurationSet
-    :: Text -- ^ 'csName'
-    -> ConfigurationSet
-configurationSet pName_ = ConfigurationSet' {_csName = pName_}
-
-
--- | The name of the configuration set. The name must meet the following requirements:     * Contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain 64 characters or fewer.
-csName :: Lens' ConfigurationSet Text
-csName = lens _csName (\ s a -> s{_csName = a})
-
-instance FromXML ConfigurationSet where
-        parseXML x = ConfigurationSet' <$> (x .@ "Name")
-
-instance Hashable ConfigurationSet where
-
-instance NFData ConfigurationSet where
-
-instance ToQuery ConfigurationSet where
-        toQuery ConfigurationSet'{..}
-          = mconcat ["Name" =: _csName]
-
--- | 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' - The character set of the content.
---
--- * 'cData' - The textual data of the content.
-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 Hashable Content where
-
-instance NFData Content where
-
-instance ToQuery Content where
-        toQuery Content'{..}
-          = mconcat ["Charset" =: _cCharset, "Data" =: _cData]
-
--- | Contains information about a custom verification email template.
---
---
---
--- /See:/ 'customVerificationEmailTemplate' smart constructor.
-data CustomVerificationEmailTemplate = CustomVerificationEmailTemplate'
-  { _cvetFromEmailAddress      :: !(Maybe Text)
-  , _cvetTemplateName          :: !(Maybe Text)
-  , _cvetFailureRedirectionURL :: !(Maybe Text)
-  , _cvetTemplateSubject       :: !(Maybe Text)
-  , _cvetSuccessRedirectionURL :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CustomVerificationEmailTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cvetFromEmailAddress' - The email address that the custom verification email is sent from.
---
--- * 'cvetTemplateName' - The name of the custom verification email template.
---
--- * 'cvetFailureRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
---
--- * 'cvetTemplateSubject' - The subject line of the custom verification email.
---
--- * 'cvetSuccessRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
-customVerificationEmailTemplate
-    :: CustomVerificationEmailTemplate
-customVerificationEmailTemplate =
-  CustomVerificationEmailTemplate'
-    { _cvetFromEmailAddress = Nothing
-    , _cvetTemplateName = Nothing
-    , _cvetFailureRedirectionURL = Nothing
-    , _cvetTemplateSubject = Nothing
-    , _cvetSuccessRedirectionURL = Nothing
-    }
-
-
--- | The email address that the custom verification email is sent from.
-cvetFromEmailAddress :: Lens' CustomVerificationEmailTemplate (Maybe Text)
-cvetFromEmailAddress = lens _cvetFromEmailAddress (\ s a -> s{_cvetFromEmailAddress = a})
-
--- | The name of the custom verification email template.
-cvetTemplateName :: Lens' CustomVerificationEmailTemplate (Maybe Text)
-cvetTemplateName = lens _cvetTemplateName (\ s a -> s{_cvetTemplateName = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
-cvetFailureRedirectionURL :: Lens' CustomVerificationEmailTemplate (Maybe Text)
-cvetFailureRedirectionURL = lens _cvetFailureRedirectionURL (\ s a -> s{_cvetFailureRedirectionURL = a})
-
--- | The subject line of the custom verification email.
-cvetTemplateSubject :: Lens' CustomVerificationEmailTemplate (Maybe Text)
-cvetTemplateSubject = lens _cvetTemplateSubject (\ s a -> s{_cvetTemplateSubject = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
-cvetSuccessRedirectionURL :: Lens' CustomVerificationEmailTemplate (Maybe Text)
-cvetSuccessRedirectionURL = lens _cvetSuccessRedirectionURL (\ s a -> s{_cvetSuccessRedirectionURL = a})
-
-instance FromXML CustomVerificationEmailTemplate
-         where
-        parseXML x
-          = CustomVerificationEmailTemplate' <$>
-              (x .@? "FromEmailAddress") <*> (x .@? "TemplateName")
-                <*> (x .@? "FailureRedirectionURL")
-                <*> (x .@? "TemplateSubject")
-                <*> (x .@? "SuccessRedirectionURL")
-
-instance Hashable CustomVerificationEmailTemplate
-         where
-
-instance NFData CustomVerificationEmailTemplate where
-
--- | Represents the destination of the message, consisting of To:, CC:, and BCC: fields.
---
---
---
--- /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' - The BCC: field(s) of the message.
---
--- * 'dCCAddresses' - The CC: field(s) of the message.
---
--- * 'dToAddresses' - The To: field(s) of the message.
-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 Hashable Destination where
-
-instance NFData Destination where
-
-instance ToQuery Destination where
-        toQuery Destination'{..}
-          = mconcat
-              ["BccAddresses" =:
-                 toQuery (toQueryList "member" <$> _dBCCAddresses),
-               "CcAddresses" =:
-                 toQuery (toQueryList "member" <$> _dCCAddresses),
-               "ToAddresses" =:
-                 toQuery (toQueryList "member" <$> _dToAddresses)]
-
--- | Contains information about the event destination that the specified email sending events will be published to.
---
---
--- Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'eventDestination' smart constructor.
-data EventDestination = EventDestination'
-  { _edEnabled                    :: !(Maybe Bool)
-  , _edKinesisFirehoseDestination :: !(Maybe KinesisFirehoseDestination)
-  , _edCloudWatchDestination      :: !(Maybe CloudWatchDestination)
-  , _edSNSDestination             :: !(Maybe SNSDestination)
-  , _edName                       :: !Text
-  , _edMatchingEventTypes         :: ![EventType]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'EventDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'edEnabled' - Sets whether Amazon SES publishes events to this destination when you send an email with the associated configuration set. Set to @true@ to enable publishing to this destination; set to @false@ to prevent publishing to this destination. The default value is @false@ .
---
--- * 'edKinesisFirehoseDestination' - An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination.
---
--- * 'edCloudWatchDestination' - An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination.
---
--- * 'edSNSDestination' - An object that contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination.
---
--- * 'edName' - The name of the event destination. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 64 characters.
---
--- * 'edMatchingEventTypes' - The type of email sending events to publish to the event destination.
-eventDestination
-    :: Text -- ^ 'edName'
-    -> EventDestination
-eventDestination pName_ =
-  EventDestination'
-    { _edEnabled = Nothing
-    , _edKinesisFirehoseDestination = Nothing
-    , _edCloudWatchDestination = Nothing
-    , _edSNSDestination = Nothing
-    , _edName = pName_
-    , _edMatchingEventTypes = mempty
-    }
-
-
--- | Sets whether Amazon SES publishes events to this destination when you send an email with the associated configuration set. Set to @true@ to enable publishing to this destination; set to @false@ to prevent publishing to this destination. The default value is @false@ .
-edEnabled :: Lens' EventDestination (Maybe Bool)
-edEnabled = lens _edEnabled (\ s a -> s{_edEnabled = a})
-
--- | An object that contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination.
-edKinesisFirehoseDestination :: Lens' EventDestination (Maybe KinesisFirehoseDestination)
-edKinesisFirehoseDestination = lens _edKinesisFirehoseDestination (\ s a -> s{_edKinesisFirehoseDestination = a})
-
--- | An object that contains the names, default values, and sources of the dimensions associated with an Amazon CloudWatch event destination.
-edCloudWatchDestination :: Lens' EventDestination (Maybe CloudWatchDestination)
-edCloudWatchDestination = lens _edCloudWatchDestination (\ s a -> s{_edCloudWatchDestination = a})
-
--- | An object that contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination.
-edSNSDestination :: Lens' EventDestination (Maybe SNSDestination)
-edSNSDestination = lens _edSNSDestination (\ s a -> s{_edSNSDestination = a})
-
--- | The name of the event destination. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 64 characters.
-edName :: Lens' EventDestination Text
-edName = lens _edName (\ s a -> s{_edName = a})
-
--- | The type of email sending events to publish to the event destination.
-edMatchingEventTypes :: Lens' EventDestination [EventType]
-edMatchingEventTypes = lens _edMatchingEventTypes (\ s a -> s{_edMatchingEventTypes = a}) . _Coerce
-
-instance FromXML EventDestination where
-        parseXML x
-          = EventDestination' <$>
-              (x .@? "Enabled") <*>
-                (x .@? "KinesisFirehoseDestination")
-                <*> (x .@? "CloudWatchDestination")
-                <*> (x .@? "SNSDestination")
-                <*> (x .@ "Name")
-                <*>
-                (x .@? "MatchingEventTypes" .!@ mempty >>=
-                   parseXMLList "member")
-
-instance Hashable EventDestination where
-
-instance NFData EventDestination where
-
-instance ToQuery EventDestination where
-        toQuery EventDestination'{..}
-          = mconcat
-              ["Enabled" =: _edEnabled,
-               "KinesisFirehoseDestination" =:
-                 _edKinesisFirehoseDestination,
-               "CloudWatchDestination" =: _edCloudWatchDestination,
-               "SNSDestination" =: _edSNSDestination,
-               "Name" =: _edName,
-               "MatchingEventTypes" =:
-                 toQueryList "member" _edMatchingEventTypes]
-
--- | 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' - 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.
---
--- * 'efValue' - The value of the header to add. Must be less than 2048 characters, and must not contain newline characters ("\r" or "\n").
-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 Hashable ExtensionField where
-
-instance NFData ExtensionField where
-
-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' - 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> .
---
--- * 'idaDkimEnabled' - True if DKIM signing is enabled for email sent from the identity; false otherwise. The default value is true.
---
--- * 'idaDkimVerificationStatus' - 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.)
-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. The default value is true.
-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")
-
-instance Hashable IdentityDkimAttributes where
-
-instance NFData IdentityDkimAttributes where
-
--- | Represents the custom MAIL FROM domain attributes of a verified identity (email address or domain).
---
---
---
--- /See:/ 'identityMailFromDomainAttributes' smart constructor.
-data IdentityMailFromDomainAttributes = IdentityMailFromDomainAttributes'
-  { _imfdaMailFromDomain       :: !Text
-  , _imfdaMailFromDomainStatus :: !CustomMailFromStatus
-  , _imfdaBehaviorOnMXFailure  :: !BehaviorOnMXFailure
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'IdentityMailFromDomainAttributes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'imfdaMailFromDomain' - The custom MAIL FROM domain that the identity is configured to use.
---
--- * 'imfdaMailFromDomainStatus' - The state that indicates whether Amazon SES has successfully read the MX record required for custom MAIL FROM domain setup. If the state is @Success@ , Amazon SES uses the specified custom MAIL FROM domain when the verified identity sends an email. All other states indicate that Amazon SES takes the action described by @BehaviorOnMXFailure@ .
---
--- * 'imfdaBehaviorOnMXFailure' - The action that Amazon SES takes if it cannot successfully read the required MX record when you send an email. A value of @UseDefaultValue@ indicates that if Amazon SES cannot read the required MX record, it uses amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value of @RejectMessage@ indicates that if Amazon SES cannot read the required MX record, Amazon SES returns a @MailFromDomainNotVerified@ error and does not send the email. The custom MAIL FROM setup states that result in this behavior are @Pending@ , @Failed@ , and @TemporaryFailure@ .
-identityMailFromDomainAttributes
-    :: Text -- ^ 'imfdaMailFromDomain'
-    -> CustomMailFromStatus -- ^ 'imfdaMailFromDomainStatus'
-    -> BehaviorOnMXFailure -- ^ 'imfdaBehaviorOnMXFailure'
-    -> IdentityMailFromDomainAttributes
-identityMailFromDomainAttributes pMailFromDomain_ pMailFromDomainStatus_ pBehaviorOnMXFailure_ =
-  IdentityMailFromDomainAttributes'
-    { _imfdaMailFromDomain = pMailFromDomain_
-    , _imfdaMailFromDomainStatus = pMailFromDomainStatus_
-    , _imfdaBehaviorOnMXFailure = pBehaviorOnMXFailure_
-    }
-
-
--- | The custom MAIL FROM domain that the identity is configured to use.
-imfdaMailFromDomain :: Lens' IdentityMailFromDomainAttributes Text
-imfdaMailFromDomain = lens _imfdaMailFromDomain (\ s a -> s{_imfdaMailFromDomain = a})
-
--- | The state that indicates whether Amazon SES has successfully read the MX record required for custom MAIL FROM domain setup. If the state is @Success@ , Amazon SES uses the specified custom MAIL FROM domain when the verified identity sends an email. All other states indicate that Amazon SES takes the action described by @BehaviorOnMXFailure@ .
-imfdaMailFromDomainStatus :: Lens' IdentityMailFromDomainAttributes CustomMailFromStatus
-imfdaMailFromDomainStatus = lens _imfdaMailFromDomainStatus (\ s a -> s{_imfdaMailFromDomainStatus = a})
-
--- | The action that Amazon SES takes if it cannot successfully read the required MX record when you send an email. A value of @UseDefaultValue@ indicates that if Amazon SES cannot read the required MX record, it uses amazonses.com (or a subdomain of that) as the MAIL FROM domain. A value of @RejectMessage@ indicates that if Amazon SES cannot read the required MX record, Amazon SES returns a @MailFromDomainNotVerified@ error and does not send the email. The custom MAIL FROM setup states that result in this behavior are @Pending@ , @Failed@ , and @TemporaryFailure@ .
-imfdaBehaviorOnMXFailure :: Lens' IdentityMailFromDomainAttributes BehaviorOnMXFailure
-imfdaBehaviorOnMXFailure = lens _imfdaBehaviorOnMXFailure (\ s a -> s{_imfdaBehaviorOnMXFailure = a})
-
-instance FromXML IdentityMailFromDomainAttributes
-         where
-        parseXML x
-          = IdentityMailFromDomainAttributes' <$>
-              (x .@ "MailFromDomain") <*>
-                (x .@ "MailFromDomainStatus")
-                <*> (x .@ "BehaviorOnMXFailure")
-
-instance Hashable IdentityMailFromDomainAttributes
-         where
-
-instance NFData IdentityMailFromDomainAttributes
-         where
-
--- | 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'
-  { _inaHeadersInDeliveryNotificationsEnabled  :: !(Maybe Bool)
-  , _inaHeadersInComplaintNotificationsEnabled :: !(Maybe Bool)
-  , _inaHeadersInBounceNotificationsEnabled    :: !(Maybe Bool)
-  , _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:
---
--- * 'inaHeadersInDeliveryNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Delivery@ . A value of @true@ specifies that Amazon SES will include headers in delivery notifications, and a value of @false@ specifies that Amazon SES will not include headers in delivery notifications.
---
--- * 'inaHeadersInComplaintNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Complaint@ . A value of @true@ specifies that Amazon SES will include headers in complaint notifications, and a value of @false@ specifies that Amazon SES will not include headers in complaint notifications.
---
--- * 'inaHeadersInBounceNotificationsEnabled' - Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Bounce@ . A value of @true@ specifies that Amazon SES will include headers in bounce notifications, and a value of @false@ specifies that Amazon SES will not include headers in bounce notifications.
---
--- * 'inaBounceTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish bounce notifications.
---
--- * 'inaComplaintTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish complaint notifications.
---
--- * 'inaDeliveryTopic' - The Amazon Resource Name (ARN) of the Amazon SNS topic where Amazon SES will publish delivery notifications.
---
--- * 'inaForwardingEnabled' - 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.
-identityNotificationAttributes
-    :: Text -- ^ 'inaBounceTopic'
-    -> Text -- ^ 'inaComplaintTopic'
-    -> Text -- ^ 'inaDeliveryTopic'
-    -> Bool -- ^ 'inaForwardingEnabled'
-    -> IdentityNotificationAttributes
-identityNotificationAttributes pBounceTopic_ pComplaintTopic_ pDeliveryTopic_ pForwardingEnabled_ =
-  IdentityNotificationAttributes'
-    { _inaHeadersInDeliveryNotificationsEnabled = Nothing
-    , _inaHeadersInComplaintNotificationsEnabled = Nothing
-    , _inaHeadersInBounceNotificationsEnabled = Nothing
-    , _inaBounceTopic = pBounceTopic_
-    , _inaComplaintTopic = pComplaintTopic_
-    , _inaDeliveryTopic = pDeliveryTopic_
-    , _inaForwardingEnabled = pForwardingEnabled_
-    }
-
-
--- | Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Delivery@ . A value of @true@ specifies that Amazon SES will include headers in delivery notifications, and a value of @false@ specifies that Amazon SES will not include headers in delivery notifications.
-inaHeadersInDeliveryNotificationsEnabled :: Lens' IdentityNotificationAttributes (Maybe Bool)
-inaHeadersInDeliveryNotificationsEnabled = lens _inaHeadersInDeliveryNotificationsEnabled (\ s a -> s{_inaHeadersInDeliveryNotificationsEnabled = a})
-
--- | Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Complaint@ . A value of @true@ specifies that Amazon SES will include headers in complaint notifications, and a value of @false@ specifies that Amazon SES will not include headers in complaint notifications.
-inaHeadersInComplaintNotificationsEnabled :: Lens' IdentityNotificationAttributes (Maybe Bool)
-inaHeadersInComplaintNotificationsEnabled = lens _inaHeadersInComplaintNotificationsEnabled (\ s a -> s{_inaHeadersInComplaintNotificationsEnabled = a})
-
--- | Describes whether Amazon SES includes the original email headers in Amazon SNS notifications of type @Bounce@ . A value of @true@ specifies that Amazon SES will include headers in bounce notifications, and a value of @false@ specifies that Amazon SES will not include headers in bounce notifications.
-inaHeadersInBounceNotificationsEnabled :: Lens' IdentityNotificationAttributes (Maybe Bool)
-inaHeadersInBounceNotificationsEnabled = lens _inaHeadersInBounceNotificationsEnabled (\ s a -> s{_inaHeadersInBounceNotificationsEnabled = a})
-
--- | 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 .@? "HeadersInDeliveryNotificationsEnabled") <*>
-                (x .@? "HeadersInComplaintNotificationsEnabled")
-                <*> (x .@? "HeadersInBounceNotificationsEnabled")
-                <*> (x .@ "BounceTopic")
-                <*> (x .@ "ComplaintTopic")
-                <*> (x .@ "DeliveryTopic")
-                <*> (x .@ "ForwardingEnabled")
-
-instance Hashable IdentityNotificationAttributes
-         where
-
-instance NFData IdentityNotificationAttributes where
-
--- | 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' - The verification token for a domain identity. Null for email address identities.
---
--- * 'ivaVerificationStatus' - The verification status of the identity: "Pending", "Success", "Failed", or "TemporaryFailure".
-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")
-
-instance Hashable IdentityVerificationAttributes
-         where
-
-instance NFData IdentityVerificationAttributes where
-
--- | Contains the delivery stream ARN and the IAM role ARN associated with an Amazon Kinesis Firehose event destination.
---
---
--- Event destinations, such as Amazon Kinesis Firehose, are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'kinesisFirehoseDestination' smart constructor.
-data KinesisFirehoseDestination = KinesisFirehoseDestination'
-  { _kfdIAMRoleARN        :: !Text
-  , _kfdDeliveryStreamARN :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'KinesisFirehoseDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'kfdIAMRoleARN' - The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Firehose stream.
---
--- * 'kfdDeliveryStreamARN' - The ARN of the Amazon Kinesis Firehose stream that email sending events should be published to.
-kinesisFirehoseDestination
-    :: Text -- ^ 'kfdIAMRoleARN'
-    -> Text -- ^ 'kfdDeliveryStreamARN'
-    -> KinesisFirehoseDestination
-kinesisFirehoseDestination pIAMRoleARN_ pDeliveryStreamARN_ =
-  KinesisFirehoseDestination'
-    {_kfdIAMRoleARN = pIAMRoleARN_, _kfdDeliveryStreamARN = pDeliveryStreamARN_}
-
-
--- | The ARN of the IAM role under which Amazon SES publishes email sending events to the Amazon Kinesis Firehose stream.
-kfdIAMRoleARN :: Lens' KinesisFirehoseDestination Text
-kfdIAMRoleARN = lens _kfdIAMRoleARN (\ s a -> s{_kfdIAMRoleARN = a})
-
--- | The ARN of the Amazon Kinesis Firehose stream that email sending events should be published to.
-kfdDeliveryStreamARN :: Lens' KinesisFirehoseDestination Text
-kfdDeliveryStreamARN = lens _kfdDeliveryStreamARN (\ s a -> s{_kfdDeliveryStreamARN = a})
-
-instance FromXML KinesisFirehoseDestination where
-        parseXML x
-          = KinesisFirehoseDestination' <$>
-              (x .@ "IAMRoleARN") <*> (x .@ "DeliveryStreamARN")
-
-instance Hashable KinesisFirehoseDestination where
-
-instance NFData KinesisFirehoseDestination where
-
-instance ToQuery KinesisFirehoseDestination where
-        toQuery KinesisFirehoseDestination'{..}
-          = mconcat
-              ["IAMRoleARN" =: _kfdIAMRoleARN,
-               "DeliveryStreamARN" =: _kfdDeliveryStreamARN]
-
--- | 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' - 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> . /Important:/ 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.
---
--- * 'laTopicARN' - 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> .
---
--- * 'laFunctionARN' - 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> .
-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> . /Important:/ 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 Hashable LambdaAction where
-
-instance NFData LambdaAction where
-
-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' - The subject of the message: A short summary of the content, which will appear in the recipient's inbox.
---
--- * 'mBody' - The message body.
-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 Hashable Message where
-
-instance NFData Message where
-
-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' - 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.
---
--- * 'mdExtensionFields' - Additional X-headers to include in the DSN.
---
--- * 'mdReportingMta' - 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@ .
-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 Hashable MessageDsn where
-
-instance NFData MessageDsn where
-
-instance ToQuery MessageDsn where
-        toQuery MessageDsn'{..}
-          = mconcat
-              ["ArrivalDate" =: _mdArrivalDate,
-               "ExtensionFields" =:
-                 toQuery
-                   (toQueryList "member" <$> _mdExtensionFields),
-               "ReportingMta" =: _mdReportingMta]
-
--- | Contains the name and value of a tag that you can provide to @SendEmail@ or @SendRawEmail@ to apply to an email.
---
---
--- Message tags, which you use with configuration sets, enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'messageTag' smart constructor.
-data MessageTag = MessageTag'
-  { _mtName  :: !Text
-  , _mtValue :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MessageTag' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mtName' - The name of the tag. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
---
--- * 'mtValue' - The value of the tag. The value must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-messageTag
-    :: Text -- ^ 'mtName'
-    -> Text -- ^ 'mtValue'
-    -> MessageTag
-messageTag pName_ pValue_ = MessageTag' {_mtName = pName_, _mtValue = pValue_}
-
-
--- | The name of the tag. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-mtName :: Lens' MessageTag Text
-mtName = lens _mtName (\ s a -> s{_mtName = a})
-
--- | The value of the tag. The value must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Contain less than 256 characters.
-mtValue :: Lens' MessageTag Text
-mtValue = lens _mtValue (\ s a -> s{_mtValue = a})
-
-instance Hashable MessageTag where
-
-instance NFData MessageTag where
-
-instance ToQuery MessageTag where
-        toQuery MessageTag'{..}
-          = mconcat ["Name" =: _mtName, "Value" =: _mtValue]
-
--- | 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' - The raw data of the message. This data needs to base64-encoded if you are accessing Amazon SES directly through the HTTPS interface. If you are accessing Amazon SES using an AWS SDK, the SDK takes care of the base 64-encoding for you. In all cases, the client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, and MIME encoding. 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@ .  /Important:/ 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. 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.
-rawMessage
-    :: ByteString -- ^ 'rmData'
-    -> RawMessage
-rawMessage pData_ = RawMessage' {_rmData = _Base64 # pData_}
-
-
--- | The raw data of the message. This data needs to base64-encoded if you are accessing Amazon SES directly through the HTTPS interface. If you are accessing Amazon SES using an AWS SDK, the SDK takes care of the base 64-encoding for you. In all cases, the client must ensure that the message format complies with Internet email standards regarding email header fields, MIME types, and MIME encoding. 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@ .  /Important:/ 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. 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 Hashable RawMessage where
-
-instance NFData RawMessage where
-
-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' - Adds a header to the received email.
---
--- * 'raSNSAction' - Publishes the email content within a notification to Amazon SNS.
---
--- * 'raWorkmailAction' - Calls Amazon WorkMail and, optionally, publishes a notification to Amazon SNS.
---
--- * 'raBounceAction' - Rejects the received email by returning a bounce response to the sender and, optionally, publishes a notification to Amazon Simple Notification Service (Amazon SNS).
---
--- * 'raLambdaAction' - Calls an AWS Lambda function, and optionally, publishes a notification to Amazon SNS.
---
--- * 'raStopAction' - Terminates the evaluation of the receipt rule set and optionally publishes a notification to Amazon SNS.
---
--- * 'raS3Action' - Saves the received message to an Amazon Simple Storage Service (Amazon S3) bucket and, optionally, publishes a notification to Amazon SNS.
-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 Hashable ReceiptAction where
-
-instance NFData ReceiptAction where
-
-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' - The name of the IP address filter. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Start and end with a letter or number.     * Contain less than 64 characters.
---
--- * 'rfIPFilter' - A structure that provides the IP addresses to block or allow, and whether to block or allow incoming mail from them.
-receiptFilter
-    :: Text -- ^ 'rfName'
-    -> ReceiptIPFilter -- ^ 'rfIPFilter'
-    -> ReceiptFilter
-receiptFilter pName_ pIPFilter_ =
-  ReceiptFilter' {_rfName = pName_, _rfIPFilter = pIPFilter_}
-
-
--- | The name of the IP address filter. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), 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 Hashable ReceiptFilter where
-
-instance NFData ReceiptFilter where
-
-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' - Indicates whether to block or allow incoming mail from the specified IP addresses.
---
--- * 'rifCidr' - 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> .
-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 Hashable ReceiptIPFilter where
-
-instance NFData ReceiptIPFilter where
-
-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 that it applies to. 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' - If @true@ , then messages that this receipt rule applies to are scanned for spam and viruses. The default value is @false@ .
---
--- * 'rrEnabled' - If @true@ , the receipt rule is active. The default value is @false@ .
---
--- * 'rrActions' - 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.
---
--- * 'rrRecipients' - The recipient domains and email addresses that the receipt rule applies to. If this field is not specified, this rule will match all recipients under all verified domains.
---
--- * 'rrTLSPolicy' - 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@ .
---
--- * 'rrName' - The name of the receipt rule. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Start and end with a letter or number.     * Contain less than 64 characters.
-receiptRule
-    :: Text -- ^ 'rrName'
-    -> ReceiptRule
-receiptRule pName_ =
-  ReceiptRule'
-    { _rrScanEnabled = Nothing
-    , _rrEnabled = Nothing
-    , _rrActions = Nothing
-    , _rrRecipients = Nothing
-    , _rrTLSPolicy = Nothing
-    , _rrName = pName_
-    }
-
-
--- | If @true@ , then messages that this receipt rule applies to are scanned for spam and viruses. The default value is @false@ .
-rrScanEnabled :: Lens' ReceiptRule (Maybe Bool)
-rrScanEnabled = lens _rrScanEnabled (\ s a -> s{_rrScanEnabled = a})
-
--- | If @true@ , the receipt rule is active. The default value is @false@ .
-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 that the receipt rule applies to. 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:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), 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 Hashable ReceiptRule where
-
-instance NFData ReceiptRule where
-
-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' - The name of the receipt rule set. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-).     * Start and end with a letter or number.     * Contain less than 64 characters.
---
--- * 'rrsmCreatedTimestamp' - The date and time the receipt rule set was created.
-receiptRuleSetMetadata
-    :: ReceiptRuleSetMetadata
-receiptRuleSetMetadata =
-  ReceiptRuleSetMetadata' {_rrsmName = Nothing, _rrsmCreatedTimestamp = Nothing}
-
-
--- | The name of the receipt rule set. The name must:     * This value can only contain ASCII letters (a-z, A-Z), numbers (0-9), 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")
-
-instance Hashable ReceiptRuleSetMetadata where
-
-instance NFData ReceiptRuleSetMetadata where
-
--- | 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' - 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.
---
--- * 'rdfRemoteMta' - 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.
---
--- * 'rdfFinalRecipient' - The email address that the message was ultimately delivered to. 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.
---
--- * 'rdfExtensionFields' - Additional X-headers to include in the DSN.
---
--- * 'rdfLastAttemptDate' - The time the final delivery attempt was made, in <https://www.ietf.org/rfc/rfc0822.txt RFC 822> date-time format.
---
--- * 'rdfAction' - 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> .
---
--- * 'rdfStatus' - The status code that indicates what went wrong. This is required by <https://tools.ietf.org/html/rfc3464 RFC 3464> .
-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 that the message was ultimately delivered to. 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.
-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 Hashable RecipientDsnFields where
-
-instance NFData RecipientDsnFields where
-
-instance ToQuery RecipientDsnFields where
-        toQuery RecipientDsnFields'{..}
-          = mconcat
-              ["DiagnosticCode" =: _rdfDiagnosticCode,
-               "RemoteMta" =: _rdfRemoteMta,
-               "FinalRecipient" =: _rdfFinalRecipient,
-               "ExtensionFields" =:
-                 toQuery
-                   (toQueryList "member" <$> _rdfExtensionFields),
-               "LastAttemptDate" =: _rdfLastAttemptDate,
-               "Action" =: _rdfAction, "Status" =: _rdfStatus]
-
--- | Contains information about the reputation settings for a configuration set.
---
---
---
--- /See:/ 'reputationOptions' smart constructor.
-data ReputationOptions = ReputationOptions'
-  { _roLastFreshStart           :: !(Maybe ISO8601)
-  , _roReputationMetricsEnabled :: !(Maybe Bool)
-  , _roSendingEnabled           :: !(Maybe Bool)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ReputationOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'roLastFreshStart' - The date and time at which the reputation metrics for the configuration set were last reset. Resetting these metrics is known as a /fresh start/ . When you disable email sending for a configuration set using 'UpdateConfigurationSetSendingEnabled' and later re-enable it, the reputation metrics for the configuration set (but not for the entire Amazon SES account) are reset. If email sending for the configuration set has never been disabled and later re-enabled, the value of this attribute is @null@ .
---
--- * 'roReputationMetricsEnabled' - Describes whether or not Amazon SES publishes reputation metrics for the configuration set, such as bounce and complaint rates, to Amazon CloudWatch. If the value is @true@ , reputation metrics are published. If the value is @false@ , reputation metrics are not published. The default value is @false@ .
---
--- * 'roSendingEnabled' - Describes whether email sending is enabled or disabled for the configuration set. If the value is @true@ , then Amazon SES will send emails that use the configuration set. If the value is @false@ , Amazon SES will not send emails that use the configuration set. The default value is @true@ . You can change this setting using 'UpdateConfigurationSetSendingEnabled' .
-reputationOptions
-    :: ReputationOptions
-reputationOptions =
-  ReputationOptions'
-    { _roLastFreshStart = Nothing
-    , _roReputationMetricsEnabled = Nothing
-    , _roSendingEnabled = Nothing
-    }
-
-
--- | The date and time at which the reputation metrics for the configuration set were last reset. Resetting these metrics is known as a /fresh start/ . When you disable email sending for a configuration set using 'UpdateConfigurationSetSendingEnabled' and later re-enable it, the reputation metrics for the configuration set (but not for the entire Amazon SES account) are reset. If email sending for the configuration set has never been disabled and later re-enabled, the value of this attribute is @null@ .
-roLastFreshStart :: Lens' ReputationOptions (Maybe UTCTime)
-roLastFreshStart = lens _roLastFreshStart (\ s a -> s{_roLastFreshStart = a}) . mapping _Time
-
--- | Describes whether or not Amazon SES publishes reputation metrics for the configuration set, such as bounce and complaint rates, to Amazon CloudWatch. If the value is @true@ , reputation metrics are published. If the value is @false@ , reputation metrics are not published. The default value is @false@ .
-roReputationMetricsEnabled :: Lens' ReputationOptions (Maybe Bool)
-roReputationMetricsEnabled = lens _roReputationMetricsEnabled (\ s a -> s{_roReputationMetricsEnabled = a})
-
--- | Describes whether email sending is enabled or disabled for the configuration set. If the value is @true@ , then Amazon SES will send emails that use the configuration set. If the value is @false@ , Amazon SES will not send emails that use the configuration set. The default value is @true@ . You can change this setting using 'UpdateConfigurationSetSendingEnabled' .
-roSendingEnabled :: Lens' ReputationOptions (Maybe Bool)
-roSendingEnabled = lens _roSendingEnabled (\ s a -> s{_roSendingEnabled = a})
-
-instance FromXML ReputationOptions where
-        parseXML x
-          = ReputationOptions' <$>
-              (x .@? "LastFreshStart") <*>
-                (x .@? "ReputationMetricsEnabled")
-                <*> (x .@? "SendingEnabled")
-
-instance Hashable ReputationOptions where
-
-instance NFData ReputationOptions where
-
--- | 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> .
---
--- 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' - 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. /Important:/ 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 <http://aws.amazon.com/sdk-for-java/ AWS Java SDK> and <http://aws.amazon.com/sdk-for-ruby/ AWS Ruby SDK> only. For more information about client-side encryption using AWS KMS master keys, see the <AmazonS3/latest/dev/UsingClientSideEncryption.html Amazon S3 Developer Guide> .
---
--- * 's3TopicARN' - 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> .
---
--- * 's3ObjectKeyPrefix' - 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.
---
--- * 's3BucketName' - The name of the Amazon S3 bucket that incoming email will be saved to.
-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. /Important:/ 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 <http://aws.amazon.com/sdk-for-java/ AWS Java SDK> and <http://aws.amazon.com/sdk-for-ruby/ AWS Ruby SDK> only. For more information about client-side encryption using AWS KMS master keys, see the <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 that incoming email will be saved to.
-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 Hashable S3Action where
-
-instance NFData S3Action where
-
-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> .
---
--- /Important:/ 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.
-data SNSAction = SNSAction'
-  { _saEncoding :: !(Maybe SNSActionEncoding)
-  , _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:
---
--- * 'saEncoding' - The encoding to use for the email within the Amazon SNS notification. UTF-8 is easier to use, but may not preserve all special characters when a message was encoded with a different encoding format. Base64 preserves all special characters. The default value is UTF-8.
---
--- * 'saTopicARN' - 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> .
-snsAction
-    :: Text -- ^ 'saTopicARN'
-    -> SNSAction
-snsAction pTopicARN_ =
-  SNSAction' {_saEncoding = Nothing, _saTopicARN = pTopicARN_}
-
-
--- | The encoding to use for the email within the Amazon SNS notification. UTF-8 is easier to use, but may not preserve all special characters when a message was encoded with a different encoding format. Base64 preserves all special characters. The default value is UTF-8.
-saEncoding :: Lens' SNSAction (Maybe SNSActionEncoding)
-saEncoding = lens _saEncoding (\ s a -> s{_saEncoding = a})
-
--- | 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 .@? "Encoding") <*> (x .@ "TopicArn")
-
-instance Hashable SNSAction where
-
-instance NFData SNSAction where
-
-instance ToQuery SNSAction where
-        toQuery SNSAction'{..}
-          = mconcat
-              ["Encoding" =: _saEncoding,
-               "TopicArn" =: _saTopicARN]
-
--- | Contains the topic ARN associated with an Amazon Simple Notification Service (Amazon SNS) event destination.
---
---
--- Event destinations, such as Amazon SNS, are associated with configuration sets, which enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'snsDestination' smart constructor.
-newtype SNSDestination = SNSDestination'
-  { _sdTopicARN :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SNSDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sdTopicARN' - The ARN of the Amazon SNS topic that email sending events will be published to. 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> .
-snsDestination
-    :: Text -- ^ 'sdTopicARN'
-    -> SNSDestination
-snsDestination pTopicARN_ = SNSDestination' {_sdTopicARN = pTopicARN_}
-
-
--- | The ARN of the Amazon SNS topic that email sending events will be published to. 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> .
-sdTopicARN :: Lens' SNSDestination Text
-sdTopicARN = lens _sdTopicARN (\ s a -> s{_sdTopicARN = a})
-
-instance FromXML SNSDestination where
-        parseXML x = SNSDestination' <$> (x .@ "TopicARN")
-
-instance Hashable SNSDestination where
-
-instance NFData SNSDestination where
-
-instance ToQuery SNSDestination where
-        toQuery SNSDestination'{..}
-          = mconcat ["TopicARN" =: _sdTopicARN]
-
--- | 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' - Number of emails rejected by Amazon SES.
---
--- * 'sdpComplaints' - Number of unwanted emails that were rejected by recipients.
---
--- * 'sdpDeliveryAttempts' - Number of emails that have been sent.
---
--- * 'sdpBounces' - Number of emails that have bounced.
---
--- * 'sdpTimestamp' - Time of the data point.
-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 sent.
-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")
-
-instance Hashable SendDataPoint where
-
-instance NFData SendDataPoint where
-
--- | 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' - 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> .
---
--- * 'sScope' - The name of the RuleSet that is being stopped.
-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 name of the RuleSet that 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 Hashable StopAction where
-
-instance NFData StopAction where
-
-instance ToQuery StopAction where
-        toQuery StopAction'{..}
-          = mconcat
-              ["TopicArn" =: _sTopicARN, "Scope" =: _sScope]
-
--- | The content of the email, composed of a subject line, an HTML part, and a text-only part.
---
---
---
--- /See:/ 'template' smart constructor.
-data Template = Template'
-  { _tTextPart     :: !(Maybe Text)
-  , _tSubjectPart  :: !(Maybe Text)
-  , _tHTMLPart     :: !(Maybe Text)
-  , _tTemplateName :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Template' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tTextPart' - The email body that will be visible to recipients whose email clients do not display HTML.
---
--- * 'tSubjectPart' - The subject line of the email.
---
--- * 'tHTMLPart' - The HTML body of the email.
---
--- * 'tTemplateName' - The name of the template. You will refer to this name when you send email using the @SendTemplatedEmail@ or @SendBulkTemplatedEmail@ operations.
-template
-    :: Text -- ^ 'tTemplateName'
-    -> Template
-template pTemplateName_ =
-  Template'
-    { _tTextPart = Nothing
-    , _tSubjectPart = Nothing
-    , _tHTMLPart = Nothing
-    , _tTemplateName = pTemplateName_
-    }
-
-
--- | The email body that will be visible to recipients whose email clients do not display HTML.
-tTextPart :: Lens' Template (Maybe Text)
-tTextPart = lens _tTextPart (\ s a -> s{_tTextPart = a})
-
--- | The subject line of the email.
-tSubjectPart :: Lens' Template (Maybe Text)
-tSubjectPart = lens _tSubjectPart (\ s a -> s{_tSubjectPart = a})
-
--- | The HTML body of the email.
-tHTMLPart :: Lens' Template (Maybe Text)
-tHTMLPart = lens _tHTMLPart (\ s a -> s{_tHTMLPart = a})
-
--- | The name of the template. You will refer to this name when you send email using the @SendTemplatedEmail@ or @SendBulkTemplatedEmail@ operations.
-tTemplateName :: Lens' Template Text
-tTemplateName = lens _tTemplateName (\ s a -> s{_tTemplateName = a})
-
-instance FromXML Template where
-        parseXML x
-          = Template' <$>
-              (x .@? "TextPart") <*> (x .@? "SubjectPart") <*>
-                (x .@? "HtmlPart")
-                <*> (x .@ "TemplateName")
-
-instance Hashable Template where
-
-instance NFData Template where
-
-instance ToQuery Template where
-        toQuery Template'{..}
-          = mconcat
-              ["TextPart" =: _tTextPart,
-               "SubjectPart" =: _tSubjectPart,
-               "HtmlPart" =: _tHTMLPart,
-               "TemplateName" =: _tTemplateName]
-
--- | Contains information about an email template.
---
---
---
--- /See:/ 'templateMetadata' smart constructor.
-data TemplateMetadata = TemplateMetadata'
-  { _tmName             :: !(Maybe Text)
-  , _tmCreatedTimestamp :: !(Maybe ISO8601)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TemplateMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tmName' - The name of the template.
---
--- * 'tmCreatedTimestamp' - The time and date the template was created.
-templateMetadata
-    :: TemplateMetadata
-templateMetadata =
-  TemplateMetadata' {_tmName = Nothing, _tmCreatedTimestamp = Nothing}
-
-
--- | The name of the template.
-tmName :: Lens' TemplateMetadata (Maybe Text)
-tmName = lens _tmName (\ s a -> s{_tmName = a})
-
--- | The time and date the template was created.
-tmCreatedTimestamp :: Lens' TemplateMetadata (Maybe UTCTime)
-tmCreatedTimestamp = lens _tmCreatedTimestamp (\ s a -> s{_tmCreatedTimestamp = a}) . mapping _Time
-
-instance FromXML TemplateMetadata where
-        parseXML x
-          = TemplateMetadata' <$>
-              (x .@? "Name") <*> (x .@? "CreatedTimestamp")
-
-instance Hashable TemplateMetadata where
-
-instance NFData TemplateMetadata where
-
--- | A domain that is used to redirect email recipients to an Amazon SES-operated domain. This domain captures open and click events generated by Amazon SES emails.
---
---
--- For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Configuring Custom Domains to Handle Open and Click Tracking> in the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide> .
---
---
--- /See:/ 'trackingOptions' smart constructor.
-newtype TrackingOptions = TrackingOptions'
-  { _toCustomRedirectDomain :: Maybe Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'TrackingOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'toCustomRedirectDomain' - The custom subdomain that will be used to redirect email recipients to the Amazon SES event tracking domain.
-trackingOptions
-    :: TrackingOptions
-trackingOptions = TrackingOptions' {_toCustomRedirectDomain = Nothing}
-
-
--- | The custom subdomain that will be used to redirect email recipients to the Amazon SES event tracking domain.
-toCustomRedirectDomain :: Lens' TrackingOptions (Maybe Text)
-toCustomRedirectDomain = lens _toCustomRedirectDomain (\ s a -> s{_toCustomRedirectDomain = a})
-
-instance FromXML TrackingOptions where
-        parseXML x
-          = TrackingOptions' <$> (x .@? "CustomRedirectDomain")
-
-instance Hashable TrackingOptions where
-
-instance NFData TrackingOptions where
-
-instance ToQuery TrackingOptions where
-        toQuery TrackingOptions'{..}
-          = mconcat
-              ["CustomRedirectDomain" =: _toCustomRedirectDomain]
-
--- | 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' - 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> .
---
--- * 'waOrganizationARN' - 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> .
-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 Hashable WorkmailAction where
-
-instance NFData WorkmailAction where
-
-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
deleted file mode 100644
--- a/gen/Network/AWS/SES/Types/Sum.hs
+++ /dev/null
@@ -1,533 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SES.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SES.Types.Sum where
-
-import Network.AWS.Prelude
-
-data BehaviorOnMXFailure
-  = RejectMessage
-  | UseDefaultValue
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BehaviorOnMXFailure where
-    parser = takeLowerText >>= \case
-        "rejectmessage" -> pure RejectMessage
-        "usedefaultvalue" -> pure UseDefaultValue
-        e -> fromTextError $ "Failure parsing BehaviorOnMXFailure from value: '" <> e
-           <> "'. Accepted values: rejectmessage, usedefaultvalue"
-
-instance ToText BehaviorOnMXFailure where
-    toText = \case
-        RejectMessage -> "RejectMessage"
-        UseDefaultValue -> "UseDefaultValue"
-
-instance Hashable     BehaviorOnMXFailure
-instance NFData       BehaviorOnMXFailure
-instance ToByteString BehaviorOnMXFailure
-instance ToQuery      BehaviorOnMXFailure
-instance ToHeader     BehaviorOnMXFailure
-
-instance FromXML BehaviorOnMXFailure where
-    parseXML = parseXMLText "BehaviorOnMXFailure"
-
-data BounceType
-  = ContentRejected
-  | DoesNotExist
-  | ExceededQuota
-  | MessageTooLarge
-  | TemporaryFailure
-  | Undefined
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BounceType where
-    parser = takeLowerText >>= \case
-        "contentrejected" -> pure ContentRejected
-        "doesnotexist" -> pure DoesNotExist
-        "exceededquota" -> pure ExceededQuota
-        "messagetoolarge" -> pure MessageTooLarge
-        "temporaryfailure" -> pure TemporaryFailure
-        "undefined" -> pure Undefined
-        e -> fromTextError $ "Failure parsing BounceType from value: '" <> e
-           <> "'. Accepted values: contentrejected, doesnotexist, exceededquota, messagetoolarge, temporaryfailure, undefined"
-
-instance ToText BounceType where
-    toText = \case
-        ContentRejected -> "ContentRejected"
-        DoesNotExist -> "DoesNotExist"
-        ExceededQuota -> "ExceededQuota"
-        MessageTooLarge -> "MessageTooLarge"
-        TemporaryFailure -> "TemporaryFailure"
-        Undefined -> "Undefined"
-
-instance Hashable     BounceType
-instance NFData       BounceType
-instance ToByteString BounceType
-instance ToQuery      BounceType
-instance ToHeader     BounceType
-
-data BulkEmailStatus
-  = AccountDailyQuotaExceeded
-  | AccountSendingPaused
-  | AccountSuspended
-  | AccountThrottled
-  | ConfigurationSetDoesNotExist
-  | ConfigurationSetSendingPaused
-  | Failed
-  | InvalidParameterValue
-  | InvalidSendingPoolName
-  | MailFromDomainNotVerified
-  | MessageRejected
-  | Success
-  | TemplateDoesNotExist
-  | TransientFailure
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BulkEmailStatus where
-    parser = takeLowerText >>= \case
-        "accountdailyquotaexceeded" -> pure AccountDailyQuotaExceeded
-        "accountsendingpaused" -> pure AccountSendingPaused
-        "accountsuspended" -> pure AccountSuspended
-        "accountthrottled" -> pure AccountThrottled
-        "configurationsetdoesnotexist" -> pure ConfigurationSetDoesNotExist
-        "configurationsetsendingpaused" -> pure ConfigurationSetSendingPaused
-        "failed" -> pure Failed
-        "invalidparametervalue" -> pure InvalidParameterValue
-        "invalidsendingpoolname" -> pure InvalidSendingPoolName
-        "mailfromdomainnotverified" -> pure MailFromDomainNotVerified
-        "messagerejected" -> pure MessageRejected
-        "success" -> pure Success
-        "templatedoesnotexist" -> pure TemplateDoesNotExist
-        "transientfailure" -> pure TransientFailure
-        e -> fromTextError $ "Failure parsing BulkEmailStatus from value: '" <> e
-           <> "'. Accepted values: accountdailyquotaexceeded, accountsendingpaused, accountsuspended, accountthrottled, configurationsetdoesnotexist, configurationsetsendingpaused, failed, invalidparametervalue, invalidsendingpoolname, mailfromdomainnotverified, messagerejected, success, templatedoesnotexist, transientfailure"
-
-instance ToText BulkEmailStatus where
-    toText = \case
-        AccountDailyQuotaExceeded -> "AccountDailyQuotaExceeded"
-        AccountSendingPaused -> "AccountSendingPaused"
-        AccountSuspended -> "AccountSuspended"
-        AccountThrottled -> "AccountThrottled"
-        ConfigurationSetDoesNotExist -> "ConfigurationSetDoesNotExist"
-        ConfigurationSetSendingPaused -> "ConfigurationSetSendingPaused"
-        Failed -> "Failed"
-        InvalidParameterValue -> "InvalidParameterValue"
-        InvalidSendingPoolName -> "InvalidSendingPoolName"
-        MailFromDomainNotVerified -> "MailFromDomainNotVerified"
-        MessageRejected -> "MessageRejected"
-        Success -> "Success"
-        TemplateDoesNotExist -> "TemplateDoesNotExist"
-        TransientFailure -> "TransientFailure"
-
-instance Hashable     BulkEmailStatus
-instance NFData       BulkEmailStatus
-instance ToByteString BulkEmailStatus
-instance ToQuery      BulkEmailStatus
-instance ToHeader     BulkEmailStatus
-
-instance FromXML BulkEmailStatus where
-    parseXML = parseXMLText "BulkEmailStatus"
-
-data ConfigurationSetAttribute
-  = EventDestinations
-  | ReputationOptions
-  | TrackingOptions
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ConfigurationSetAttribute where
-    parser = takeLowerText >>= \case
-        "eventdestinations" -> pure EventDestinations
-        "reputationoptions" -> pure ReputationOptions
-        "trackingoptions" -> pure TrackingOptions
-        e -> fromTextError $ "Failure parsing ConfigurationSetAttribute from value: '" <> e
-           <> "'. Accepted values: eventdestinations, reputationoptions, trackingoptions"
-
-instance ToText ConfigurationSetAttribute where
-    toText = \case
-        EventDestinations -> "eventDestinations"
-        ReputationOptions -> "reputationOptions"
-        TrackingOptions -> "trackingOptions"
-
-instance Hashable     ConfigurationSetAttribute
-instance NFData       ConfigurationSetAttribute
-instance ToByteString ConfigurationSetAttribute
-instance ToQuery      ConfigurationSetAttribute
-instance ToHeader     ConfigurationSetAttribute
-
-data CustomMailFromStatus
-  = CMFSFailed
-  | CMFSPending
-  | CMFSSuccess
-  | CMFSTemporaryFailure
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CustomMailFromStatus where
-    parser = takeLowerText >>= \case
-        "failed" -> pure CMFSFailed
-        "pending" -> pure CMFSPending
-        "success" -> pure CMFSSuccess
-        "temporaryfailure" -> pure CMFSTemporaryFailure
-        e -> fromTextError $ "Failure parsing CustomMailFromStatus from value: '" <> e
-           <> "'. Accepted values: failed, pending, success, temporaryfailure"
-
-instance ToText CustomMailFromStatus where
-    toText = \case
-        CMFSFailed -> "Failed"
-        CMFSPending -> "Pending"
-        CMFSSuccess -> "Success"
-        CMFSTemporaryFailure -> "TemporaryFailure"
-
-instance Hashable     CustomMailFromStatus
-instance NFData       CustomMailFromStatus
-instance ToByteString CustomMailFromStatus
-instance ToQuery      CustomMailFromStatus
-instance ToHeader     CustomMailFromStatus
-
-instance FromXML CustomMailFromStatus where
-    parseXML = parseXMLText "CustomMailFromStatus"
-
-data DimensionValueSource
-  = EmailHeader
-  | LinkTag
-  | MessageTag
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DimensionValueSource where
-    parser = takeLowerText >>= \case
-        "emailheader" -> pure EmailHeader
-        "linktag" -> pure LinkTag
-        "messagetag" -> pure MessageTag
-        e -> fromTextError $ "Failure parsing DimensionValueSource from value: '" <> e
-           <> "'. Accepted values: emailheader, linktag, messagetag"
-
-instance ToText DimensionValueSource where
-    toText = \case
-        EmailHeader -> "emailHeader"
-        LinkTag -> "linkTag"
-        MessageTag -> "messageTag"
-
-instance Hashable     DimensionValueSource
-instance NFData       DimensionValueSource
-instance ToByteString DimensionValueSource
-instance ToQuery      DimensionValueSource
-instance ToHeader     DimensionValueSource
-
-instance FromXML DimensionValueSource where
-    parseXML = parseXMLText "DimensionValueSource"
-
-data DsnAction
-  = DADelayed
-  | DADelivered
-  | DAExpanded
-  | DAFailed
-  | DARelayed
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, 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 NFData       DsnAction
-instance ToByteString DsnAction
-instance ToQuery      DsnAction
-instance ToHeader     DsnAction
-
-data EventType
-  = ETBounce
-  | ETClick
-  | ETComplaint
-  | ETDelivery
-  | ETOpen
-  | ETReject
-  | ETRenderingFailure
-  | ETSend
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText EventType where
-    parser = takeLowerText >>= \case
-        "bounce" -> pure ETBounce
-        "click" -> pure ETClick
-        "complaint" -> pure ETComplaint
-        "delivery" -> pure ETDelivery
-        "open" -> pure ETOpen
-        "reject" -> pure ETReject
-        "renderingfailure" -> pure ETRenderingFailure
-        "send" -> pure ETSend
-        e -> fromTextError $ "Failure parsing EventType from value: '" <> e
-           <> "'. Accepted values: bounce, click, complaint, delivery, open, reject, renderingfailure, send"
-
-instance ToText EventType where
-    toText = \case
-        ETBounce -> "bounce"
-        ETClick -> "click"
-        ETComplaint -> "complaint"
-        ETDelivery -> "delivery"
-        ETOpen -> "open"
-        ETReject -> "reject"
-        ETRenderingFailure -> "renderingFailure"
-        ETSend -> "send"
-
-instance Hashable     EventType
-instance NFData       EventType
-instance ToByteString EventType
-instance ToQuery      EventType
-instance ToHeader     EventType
-
-instance FromXML EventType where
-    parseXML = parseXMLText "EventType"
-
-data IdentityType
-  = Domain
-  | EmailAddress
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText IdentityType where
-    parser = takeLowerText >>= \case
-        "domain" -> pure Domain
-        "emailaddress" -> pure EmailAddress
-        e -> fromTextError $ "Failure parsing IdentityType from value: '" <> e
-           <> "'. Accepted values: domain, emailaddress"
-
-instance ToText IdentityType where
-    toText = \case
-        Domain -> "Domain"
-        EmailAddress -> "EmailAddress"
-
-instance Hashable     IdentityType
-instance NFData       IdentityType
-instance ToByteString IdentityType
-instance ToQuery      IdentityType
-instance ToHeader     IdentityType
-
-data InvocationType
-  = Event
-  | RequestResponse
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, 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 NFData       InvocationType
-instance ToByteString InvocationType
-instance ToQuery      InvocationType
-instance ToHeader     InvocationType
-
-instance FromXML InvocationType where
-    parseXML = parseXMLText "InvocationType"
-
-data NotificationType
-  = Bounce
-  | Complaint
-  | Delivery
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText NotificationType where
-    parser = takeLowerText >>= \case
-        "bounce" -> pure Bounce
-        "complaint" -> pure Complaint
-        "delivery" -> pure Delivery
-        e -> fromTextError $ "Failure parsing NotificationType from value: '" <> e
-           <> "'. Accepted values: bounce, complaint, delivery"
-
-instance ToText NotificationType where
-    toText = \case
-        Bounce -> "Bounce"
-        Complaint -> "Complaint"
-        Delivery -> "Delivery"
-
-instance Hashable     NotificationType
-instance NFData       NotificationType
-instance ToByteString NotificationType
-instance ToQuery      NotificationType
-instance ToHeader     NotificationType
-
-data ReceiptFilterPolicy
-  = Allow
-  | Block
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, 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 NFData       ReceiptFilterPolicy
-instance ToByteString ReceiptFilterPolicy
-instance ToQuery      ReceiptFilterPolicy
-instance ToHeader     ReceiptFilterPolicy
-
-instance FromXML ReceiptFilterPolicy where
-    parseXML = parseXMLText "ReceiptFilterPolicy"
-
-data SNSActionEncoding
-  = BASE64
-  | Utf8
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SNSActionEncoding where
-    parser = takeLowerText >>= \case
-        "base64" -> pure BASE64
-        "utf-8" -> pure Utf8
-        e -> fromTextError $ "Failure parsing SNSActionEncoding from value: '" <> e
-           <> "'. Accepted values: base64, utf-8"
-
-instance ToText SNSActionEncoding where
-    toText = \case
-        BASE64 -> "Base64"
-        Utf8 -> "UTF-8"
-
-instance Hashable     SNSActionEncoding
-instance NFData       SNSActionEncoding
-instance ToByteString SNSActionEncoding
-instance ToQuery      SNSActionEncoding
-instance ToHeader     SNSActionEncoding
-
-instance FromXML SNSActionEncoding where
-    parseXML = parseXMLText "SNSActionEncoding"
-
-data StopScope =
-  RuleSet
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, 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 NFData       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, Bounded, 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 NFData       TLSPolicy
-instance ToByteString TLSPolicy
-instance ToQuery      TLSPolicy
-instance ToHeader     TLSPolicy
-
-instance FromXML TLSPolicy where
-    parseXML = parseXMLText "TLSPolicy"
-
-data VerificationStatus
-  = VSFailed
-  | VSNotStarted
-  | VSPending
-  | VSSuccess
-  | VSTemporaryFailure
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText VerificationStatus where
-    parser = takeLowerText >>= \case
-        "failed" -> pure VSFailed
-        "notstarted" -> pure VSNotStarted
-        "pending" -> pure VSPending
-        "success" -> pure VSSuccess
-        "temporaryfailure" -> pure VSTemporaryFailure
-        e -> fromTextError $ "Failure parsing VerificationStatus from value: '" <> e
-           <> "'. Accepted values: failed, notstarted, pending, success, temporaryfailure"
-
-instance ToText VerificationStatus where
-    toText = \case
-        VSFailed -> "Failed"
-        VSNotStarted -> "NotStarted"
-        VSPending -> "Pending"
-        VSSuccess -> "Success"
-        VSTemporaryFailure -> "TemporaryFailure"
-
-instance Hashable     VerificationStatus
-instance NFData       VerificationStatus
-instance ToByteString VerificationStatus
-instance ToQuery      VerificationStatus
-instance ToHeader     VerificationStatus
-
-instance FromXML VerificationStatus where
-    parseXML = parseXMLText "VerificationStatus"
diff --git a/gen/Network/AWS/SES/UpdateAccountSendingEnabled.hs b/gen/Network/AWS/SES/UpdateAccountSendingEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateAccountSendingEnabled.hs
+++ /dev/null
@@ -1,110 +0,0 @@
-{-# 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.UpdateAccountSendingEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Enables or disables email sending across your entire Amazon SES account. You can use this operation in conjunction with Amazon CloudWatch alarms to temporarily pause email sending across your Amazon SES account when reputation metrics (such as your bounce on complaint rate) reach certain thresholds.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateAccountSendingEnabled
-    (
-    -- * Creating a Request
-      updateAccountSendingEnabled
-    , UpdateAccountSendingEnabled
-    -- * Request Lenses
-    , uaseEnabled
-
-    -- * Destructuring the Response
-    , updateAccountSendingEnabledResponse
-    , UpdateAccountSendingEnabledResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to enable or disable the email sending capabilities for your entire Amazon SES account.
---
---
---
--- /See:/ 'updateAccountSendingEnabled' smart constructor.
-newtype UpdateAccountSendingEnabled = UpdateAccountSendingEnabled'
-  { _uaseEnabled :: Maybe Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateAccountSendingEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uaseEnabled' - Describes whether email sending is enabled or disabled for your Amazon SES account.
-updateAccountSendingEnabled
-    :: UpdateAccountSendingEnabled
-updateAccountSendingEnabled =
-  UpdateAccountSendingEnabled' {_uaseEnabled = Nothing}
-
-
--- | Describes whether email sending is enabled or disabled for your Amazon SES account.
-uaseEnabled :: Lens' UpdateAccountSendingEnabled (Maybe Bool)
-uaseEnabled = lens _uaseEnabled (\ s a -> s{_uaseEnabled = a})
-
-instance AWSRequest UpdateAccountSendingEnabled where
-        type Rs UpdateAccountSendingEnabled =
-             UpdateAccountSendingEnabledResponse
-        request = postQuery ses
-        response
-          = receiveNull UpdateAccountSendingEnabledResponse'
-
-instance Hashable UpdateAccountSendingEnabled where
-
-instance NFData UpdateAccountSendingEnabled where
-
-instance ToHeaders UpdateAccountSendingEnabled where
-        toHeaders = const mempty
-
-instance ToPath UpdateAccountSendingEnabled where
-        toPath = const "/"
-
-instance ToQuery UpdateAccountSendingEnabled where
-        toQuery UpdateAccountSendingEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateAccountSendingEnabled" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Enabled" =: _uaseEnabled]
-
--- | /See:/ 'updateAccountSendingEnabledResponse' smart constructor.
-data UpdateAccountSendingEnabledResponse =
-  UpdateAccountSendingEnabledResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateAccountSendingEnabledResponse' with the minimum fields required to make a request.
---
-updateAccountSendingEnabledResponse
-    :: UpdateAccountSendingEnabledResponse
-updateAccountSendingEnabledResponse = UpdateAccountSendingEnabledResponse'
-
-
-instance NFData UpdateAccountSendingEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateConfigurationSetEventDestination.hs b/gen/Network/AWS/SES/UpdateConfigurationSetEventDestination.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateConfigurationSetEventDestination.hs
+++ /dev/null
@@ -1,158 +0,0 @@
-{-# 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.UpdateConfigurationSetEventDestination
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates the event destination of a configuration set. Event destinations are associated with configuration sets, which enable you to publish email sending events to Amazon CloudWatch, Amazon Kinesis Firehose, or Amazon Simple Notification Service (Amazon SNS). For information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Monitoring Your Amazon SES Sending Activity> in the /Amazon SES Developer Guide./
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateConfigurationSetEventDestination
-    (
-    -- * Creating a Request
-      updateConfigurationSetEventDestination
-    , UpdateConfigurationSetEventDestination
-    -- * Request Lenses
-    , ucsedConfigurationSetName
-    , ucsedEventDestination
-
-    -- * Destructuring the Response
-    , updateConfigurationSetEventDestinationResponse
-    , UpdateConfigurationSetEventDestinationResponse
-    -- * Response Lenses
-    , ucsedrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to update the event destination of a configuration set. Configuration sets enable you to publish email sending events. For information about using configuration sets, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/monitor-sending-activity.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'updateConfigurationSetEventDestination' smart constructor.
-data UpdateConfigurationSetEventDestination = UpdateConfigurationSetEventDestination'
-  { _ucsedConfigurationSetName :: !Text
-  , _ucsedEventDestination     :: !EventDestination
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetEventDestination' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsedConfigurationSetName' - The name of the configuration set that contains the event destination that you want to update.
---
--- * 'ucsedEventDestination' - The event destination object that you want to apply to the specified configuration set.
-updateConfigurationSetEventDestination
-    :: Text -- ^ 'ucsedConfigurationSetName'
-    -> EventDestination -- ^ 'ucsedEventDestination'
-    -> UpdateConfigurationSetEventDestination
-updateConfigurationSetEventDestination pConfigurationSetName_ pEventDestination_ =
-  UpdateConfigurationSetEventDestination'
-    { _ucsedConfigurationSetName = pConfigurationSetName_
-    , _ucsedEventDestination = pEventDestination_
-    }
-
-
--- | The name of the configuration set that contains the event destination that you want to update.
-ucsedConfigurationSetName :: Lens' UpdateConfigurationSetEventDestination Text
-ucsedConfigurationSetName = lens _ucsedConfigurationSetName (\ s a -> s{_ucsedConfigurationSetName = a})
-
--- | The event destination object that you want to apply to the specified configuration set.
-ucsedEventDestination :: Lens' UpdateConfigurationSetEventDestination EventDestination
-ucsedEventDestination = lens _ucsedEventDestination (\ s a -> s{_ucsedEventDestination = a})
-
-instance AWSRequest
-           UpdateConfigurationSetEventDestination
-         where
-        type Rs UpdateConfigurationSetEventDestination =
-             UpdateConfigurationSetEventDestinationResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "UpdateConfigurationSetEventDestinationResult"
-              (\ s h x ->
-                 UpdateConfigurationSetEventDestinationResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           UpdateConfigurationSetEventDestination
-         where
-
-instance NFData
-           UpdateConfigurationSetEventDestination
-         where
-
-instance ToHeaders
-           UpdateConfigurationSetEventDestination
-         where
-        toHeaders = const mempty
-
-instance ToPath
-           UpdateConfigurationSetEventDestination
-         where
-        toPath = const "/"
-
-instance ToQuery
-           UpdateConfigurationSetEventDestination
-         where
-        toQuery UpdateConfigurationSetEventDestination'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateConfigurationSetEventDestination" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _ucsedConfigurationSetName,
-               "EventDestination" =: _ucsedEventDestination]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'updateConfigurationSetEventDestinationResponse' smart constructor.
-newtype UpdateConfigurationSetEventDestinationResponse = UpdateConfigurationSetEventDestinationResponse'
-  { _ucsedrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetEventDestinationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsedrsResponseStatus' - -- | The response status code.
-updateConfigurationSetEventDestinationResponse
-    :: Int -- ^ 'ucsedrsResponseStatus'
-    -> UpdateConfigurationSetEventDestinationResponse
-updateConfigurationSetEventDestinationResponse pResponseStatus_ =
-  UpdateConfigurationSetEventDestinationResponse'
-    {_ucsedrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ucsedrsResponseStatus :: Lens' UpdateConfigurationSetEventDestinationResponse Int
-ucsedrsResponseStatus = lens _ucsedrsResponseStatus (\ s a -> s{_ucsedrsResponseStatus = a})
-
-instance NFData
-           UpdateConfigurationSetEventDestinationResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateConfigurationSetReputationMetricsEnabled.hs b/gen/Network/AWS/SES/UpdateConfigurationSetReputationMetricsEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateConfigurationSetReputationMetricsEnabled.hs
+++ /dev/null
@@ -1,144 +0,0 @@
-{-# 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.UpdateConfigurationSetReputationMetricsEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Enables or disables the publishing of reputation metrics for emails sent using a specific configuration set. Reputation metrics include bounce and complaint rates. These metrics are published to Amazon CloudWatch. By using Amazon CloudWatch, you can create alarms when bounce or complaint rates exceed a certain threshold.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateConfigurationSetReputationMetricsEnabled
-    (
-    -- * Creating a Request
-      updateConfigurationSetReputationMetricsEnabled
-    , UpdateConfigurationSetReputationMetricsEnabled
-    -- * Request Lenses
-    , ucsrmeConfigurationSetName
-    , ucsrmeEnabled
-
-    -- * Destructuring the Response
-    , updateConfigurationSetReputationMetricsEnabledResponse
-    , UpdateConfigurationSetReputationMetricsEnabledResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to modify the reputation metric publishing settings for a configuration set.
---
---
---
--- /See:/ 'updateConfigurationSetReputationMetricsEnabled' smart constructor.
-data UpdateConfigurationSetReputationMetricsEnabled = UpdateConfigurationSetReputationMetricsEnabled'
-  { _ucsrmeConfigurationSetName :: !Text
-  , _ucsrmeEnabled              :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetReputationMetricsEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsrmeConfigurationSetName' - The name of the configuration set that you want to update.
---
--- * 'ucsrmeEnabled' - Describes whether or not Amazon SES will publish reputation metrics for the configuration set, such as bounce and complaint rates, to Amazon CloudWatch.
-updateConfigurationSetReputationMetricsEnabled
-    :: Text -- ^ 'ucsrmeConfigurationSetName'
-    -> Bool -- ^ 'ucsrmeEnabled'
-    -> UpdateConfigurationSetReputationMetricsEnabled
-updateConfigurationSetReputationMetricsEnabled pConfigurationSetName_ pEnabled_ =
-  UpdateConfigurationSetReputationMetricsEnabled'
-    { _ucsrmeConfigurationSetName = pConfigurationSetName_
-    , _ucsrmeEnabled = pEnabled_
-    }
-
-
--- | The name of the configuration set that you want to update.
-ucsrmeConfigurationSetName :: Lens' UpdateConfigurationSetReputationMetricsEnabled Text
-ucsrmeConfigurationSetName = lens _ucsrmeConfigurationSetName (\ s a -> s{_ucsrmeConfigurationSetName = a})
-
--- | Describes whether or not Amazon SES will publish reputation metrics for the configuration set, such as bounce and complaint rates, to Amazon CloudWatch.
-ucsrmeEnabled :: Lens' UpdateConfigurationSetReputationMetricsEnabled Bool
-ucsrmeEnabled = lens _ucsrmeEnabled (\ s a -> s{_ucsrmeEnabled = a})
-
-instance AWSRequest
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-        type Rs
-               UpdateConfigurationSetReputationMetricsEnabled
-             =
-             UpdateConfigurationSetReputationMetricsEnabledResponse
-        request = postQuery ses
-        response
-          = receiveNull
-              UpdateConfigurationSetReputationMetricsEnabledResponse'
-
-instance Hashable
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-
-instance NFData
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-
-instance ToHeaders
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-        toHeaders = const mempty
-
-instance ToPath
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-        toPath = const "/"
-
-instance ToQuery
-           UpdateConfigurationSetReputationMetricsEnabled
-         where
-        toQuery
-          UpdateConfigurationSetReputationMetricsEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateConfigurationSetReputationMetricsEnabled" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =:
-                 _ucsrmeConfigurationSetName,
-               "Enabled" =: _ucsrmeEnabled]
-
--- | /See:/ 'updateConfigurationSetReputationMetricsEnabledResponse' smart constructor.
-data UpdateConfigurationSetReputationMetricsEnabledResponse =
-  UpdateConfigurationSetReputationMetricsEnabledResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetReputationMetricsEnabledResponse' with the minimum fields required to make a request.
---
-updateConfigurationSetReputationMetricsEnabledResponse
-    :: UpdateConfigurationSetReputationMetricsEnabledResponse
-updateConfigurationSetReputationMetricsEnabledResponse =
-  UpdateConfigurationSetReputationMetricsEnabledResponse'
-
-
-instance NFData
-           UpdateConfigurationSetReputationMetricsEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateConfigurationSetSendingEnabled.hs b/gen/Network/AWS/SES/UpdateConfigurationSetSendingEnabled.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateConfigurationSetSendingEnabled.hs
+++ /dev/null
@@ -1,137 +0,0 @@
-{-# 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.UpdateConfigurationSetSendingEnabled
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Enables or disables email sending for messages sent using a specific configuration set. You can use this operation in conjunction with Amazon CloudWatch alarms to temporarily pause email sending for a configuration set when the reputation metrics for that configuration set (such as your bounce on complaint rate) reach certain thresholds.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateConfigurationSetSendingEnabled
-    (
-    -- * Creating a Request
-      updateConfigurationSetSendingEnabled
-    , UpdateConfigurationSetSendingEnabled
-    -- * Request Lenses
-    , ucsseConfigurationSetName
-    , ucsseEnabled
-
-    -- * Destructuring the Response
-    , updateConfigurationSetSendingEnabledResponse
-    , UpdateConfigurationSetSendingEnabledResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to enable or disable the email sending capabilities for a specific configuration set.
---
---
---
--- /See:/ 'updateConfigurationSetSendingEnabled' smart constructor.
-data UpdateConfigurationSetSendingEnabled = UpdateConfigurationSetSendingEnabled'
-  { _ucsseConfigurationSetName :: !Text
-  , _ucsseEnabled              :: !Bool
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetSendingEnabled' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucsseConfigurationSetName' - The name of the configuration set that you want to update.
---
--- * 'ucsseEnabled' - Describes whether email sending is enabled or disabled for the configuration set.
-updateConfigurationSetSendingEnabled
-    :: Text -- ^ 'ucsseConfigurationSetName'
-    -> Bool -- ^ 'ucsseEnabled'
-    -> UpdateConfigurationSetSendingEnabled
-updateConfigurationSetSendingEnabled pConfigurationSetName_ pEnabled_ =
-  UpdateConfigurationSetSendingEnabled'
-    { _ucsseConfigurationSetName = pConfigurationSetName_
-    , _ucsseEnabled = pEnabled_
-    }
-
-
--- | The name of the configuration set that you want to update.
-ucsseConfigurationSetName :: Lens' UpdateConfigurationSetSendingEnabled Text
-ucsseConfigurationSetName = lens _ucsseConfigurationSetName (\ s a -> s{_ucsseConfigurationSetName = a})
-
--- | Describes whether email sending is enabled or disabled for the configuration set.
-ucsseEnabled :: Lens' UpdateConfigurationSetSendingEnabled Bool
-ucsseEnabled = lens _ucsseEnabled (\ s a -> s{_ucsseEnabled = a})
-
-instance AWSRequest
-           UpdateConfigurationSetSendingEnabled
-         where
-        type Rs UpdateConfigurationSetSendingEnabled =
-             UpdateConfigurationSetSendingEnabledResponse
-        request = postQuery ses
-        response
-          = receiveNull
-              UpdateConfigurationSetSendingEnabledResponse'
-
-instance Hashable
-           UpdateConfigurationSetSendingEnabled
-         where
-
-instance NFData UpdateConfigurationSetSendingEnabled
-         where
-
-instance ToHeaders
-           UpdateConfigurationSetSendingEnabled
-         where
-        toHeaders = const mempty
-
-instance ToPath UpdateConfigurationSetSendingEnabled
-         where
-        toPath = const "/"
-
-instance ToQuery UpdateConfigurationSetSendingEnabled
-         where
-        toQuery UpdateConfigurationSetSendingEnabled'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateConfigurationSetSendingEnabled" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _ucsseConfigurationSetName,
-               "Enabled" =: _ucsseEnabled]
-
--- | /See:/ 'updateConfigurationSetSendingEnabledResponse' smart constructor.
-data UpdateConfigurationSetSendingEnabledResponse =
-  UpdateConfigurationSetSendingEnabledResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetSendingEnabledResponse' with the minimum fields required to make a request.
---
-updateConfigurationSetSendingEnabledResponse
-    :: UpdateConfigurationSetSendingEnabledResponse
-updateConfigurationSetSendingEnabledResponse =
-  UpdateConfigurationSetSendingEnabledResponse'
-
-
-instance NFData
-           UpdateConfigurationSetSendingEnabledResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateConfigurationSetTrackingOptions.hs b/gen/Network/AWS/SES/UpdateConfigurationSetTrackingOptions.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateConfigurationSetTrackingOptions.hs
+++ /dev/null
@@ -1,156 +0,0 @@
-{-# 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.UpdateConfigurationSetTrackingOptions
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Modifies an association between a configuration set and a custom domain for open and click event tracking.
---
---
--- By default, images and links used for tracking open and click events are hosted on domains operated by Amazon SES. You can configure a subdomain of your own to handle these events. For information about using configuration sets, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/configure-custom-open-click-domains.html Configuring Custom Domains to Handle Open and Click Tracking> in the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/Welcome.html Amazon SES Developer Guide> .
---
-module Network.AWS.SES.UpdateConfigurationSetTrackingOptions
-    (
-    -- * Creating a Request
-      updateConfigurationSetTrackingOptions
-    , UpdateConfigurationSetTrackingOptions
-    -- * Request Lenses
-    , ucstoConfigurationSetName
-    , ucstoTrackingOptions
-
-    -- * Destructuring the Response
-    , updateConfigurationSetTrackingOptionsResponse
-    , UpdateConfigurationSetTrackingOptionsResponse
-    -- * Response Lenses
-    , ucstorsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to update the tracking options for a configuration set.
---
---
---
--- /See:/ 'updateConfigurationSetTrackingOptions' smart constructor.
-data UpdateConfigurationSetTrackingOptions = UpdateConfigurationSetTrackingOptions'
-  { _ucstoConfigurationSetName :: !Text
-  , _ucstoTrackingOptions      :: !TrackingOptions
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetTrackingOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucstoConfigurationSetName' - The name of the configuration set for which you want to update the custom tracking domain.
---
--- * 'ucstoTrackingOptions' - Undocumented member.
-updateConfigurationSetTrackingOptions
-    :: Text -- ^ 'ucstoConfigurationSetName'
-    -> TrackingOptions -- ^ 'ucstoTrackingOptions'
-    -> UpdateConfigurationSetTrackingOptions
-updateConfigurationSetTrackingOptions pConfigurationSetName_ pTrackingOptions_ =
-  UpdateConfigurationSetTrackingOptions'
-    { _ucstoConfigurationSetName = pConfigurationSetName_
-    , _ucstoTrackingOptions = pTrackingOptions_
-    }
-
-
--- | The name of the configuration set for which you want to update the custom tracking domain.
-ucstoConfigurationSetName :: Lens' UpdateConfigurationSetTrackingOptions Text
-ucstoConfigurationSetName = lens _ucstoConfigurationSetName (\ s a -> s{_ucstoConfigurationSetName = a})
-
--- | Undocumented member.
-ucstoTrackingOptions :: Lens' UpdateConfigurationSetTrackingOptions TrackingOptions
-ucstoTrackingOptions = lens _ucstoTrackingOptions (\ s a -> s{_ucstoTrackingOptions = a})
-
-instance AWSRequest
-           UpdateConfigurationSetTrackingOptions
-         where
-        type Rs UpdateConfigurationSetTrackingOptions =
-             UpdateConfigurationSetTrackingOptionsResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper
-              "UpdateConfigurationSetTrackingOptionsResult"
-              (\ s h x ->
-                 UpdateConfigurationSetTrackingOptionsResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable
-           UpdateConfigurationSetTrackingOptions
-         where
-
-instance NFData UpdateConfigurationSetTrackingOptions
-         where
-
-instance ToHeaders
-           UpdateConfigurationSetTrackingOptions
-         where
-        toHeaders = const mempty
-
-instance ToPath UpdateConfigurationSetTrackingOptions
-         where
-        toPath = const "/"
-
-instance ToQuery
-           UpdateConfigurationSetTrackingOptions
-         where
-        toQuery UpdateConfigurationSetTrackingOptions'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateConfigurationSetTrackingOptions" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "ConfigurationSetName" =: _ucstoConfigurationSetName,
-               "TrackingOptions" =: _ucstoTrackingOptions]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'updateConfigurationSetTrackingOptionsResponse' smart constructor.
-newtype UpdateConfigurationSetTrackingOptionsResponse = UpdateConfigurationSetTrackingOptionsResponse'
-  { _ucstorsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateConfigurationSetTrackingOptionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucstorsResponseStatus' - -- | The response status code.
-updateConfigurationSetTrackingOptionsResponse
-    :: Int -- ^ 'ucstorsResponseStatus'
-    -> UpdateConfigurationSetTrackingOptionsResponse
-updateConfigurationSetTrackingOptionsResponse pResponseStatus_ =
-  UpdateConfigurationSetTrackingOptionsResponse'
-    {_ucstorsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ucstorsResponseStatus :: Lens' UpdateConfigurationSetTrackingOptionsResponse Int
-ucstorsResponseStatus = lens _ucstorsResponseStatus (\ s a -> s{_ucstorsResponseStatus = a})
-
-instance NFData
-           UpdateConfigurationSetTrackingOptionsResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateCustomVerificationEmailTemplate.hs b/gen/Network/AWS/SES/UpdateCustomVerificationEmailTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateCustomVerificationEmailTemplate.hs
+++ /dev/null
@@ -1,181 +0,0 @@
-{-# 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.UpdateCustomVerificationEmailTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates an existing custom verification email template.
---
---
--- For more information about custom verification email templates, see <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html Using Custom Verification Email Templates> in the /Amazon SES Developer Guide/ .
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateCustomVerificationEmailTemplate
-    (
-    -- * Creating a Request
-      updateCustomVerificationEmailTemplate
-    , UpdateCustomVerificationEmailTemplate
-    -- * Request Lenses
-    , ucvetFromEmailAddress
-    , ucvetFailureRedirectionURL
-    , ucvetTemplateSubject
-    , ucvetSuccessRedirectionURL
-    , ucvetTemplateContent
-    , ucvetTemplateName
-
-    -- * Destructuring the Response
-    , updateCustomVerificationEmailTemplateResponse
-    , UpdateCustomVerificationEmailTemplateResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to update an existing custom verification email template.
---
---
---
--- /See:/ 'updateCustomVerificationEmailTemplate' smart constructor.
-data UpdateCustomVerificationEmailTemplate = UpdateCustomVerificationEmailTemplate'
-  { _ucvetFromEmailAddress      :: !(Maybe Text)
-  , _ucvetFailureRedirectionURL :: !(Maybe Text)
-  , _ucvetTemplateSubject       :: !(Maybe Text)
-  , _ucvetSuccessRedirectionURL :: !(Maybe Text)
-  , _ucvetTemplateContent       :: !(Maybe Text)
-  , _ucvetTemplateName          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateCustomVerificationEmailTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ucvetFromEmailAddress' - The email address that the custom verification email is sent from.
---
--- * 'ucvetFailureRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
---
--- * 'ucvetTemplateSubject' - The subject line of the custom verification email.
---
--- * 'ucvetSuccessRedirectionURL' - The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
---
--- * 'ucvetTemplateContent' - The content of the custom verification email. The total size of the email must be less than 10 MB. The message body may contain HTML, with some limitations. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions> in the /Amazon SES Developer Guide/ .
---
--- * 'ucvetTemplateName' - The name of the custom verification email template that you want to update.
-updateCustomVerificationEmailTemplate
-    :: Text -- ^ 'ucvetTemplateName'
-    -> UpdateCustomVerificationEmailTemplate
-updateCustomVerificationEmailTemplate pTemplateName_ =
-  UpdateCustomVerificationEmailTemplate'
-    { _ucvetFromEmailAddress = Nothing
-    , _ucvetFailureRedirectionURL = Nothing
-    , _ucvetTemplateSubject = Nothing
-    , _ucvetSuccessRedirectionURL = Nothing
-    , _ucvetTemplateContent = Nothing
-    , _ucvetTemplateName = pTemplateName_
-    }
-
-
--- | The email address that the custom verification email is sent from.
-ucvetFromEmailAddress :: Lens' UpdateCustomVerificationEmailTemplate (Maybe Text)
-ucvetFromEmailAddress = lens _ucvetFromEmailAddress (\ s a -> s{_ucvetFromEmailAddress = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is not successfully verified.
-ucvetFailureRedirectionURL :: Lens' UpdateCustomVerificationEmailTemplate (Maybe Text)
-ucvetFailureRedirectionURL = lens _ucvetFailureRedirectionURL (\ s a -> s{_ucvetFailureRedirectionURL = a})
-
--- | The subject line of the custom verification email.
-ucvetTemplateSubject :: Lens' UpdateCustomVerificationEmailTemplate (Maybe Text)
-ucvetTemplateSubject = lens _ucvetTemplateSubject (\ s a -> s{_ucvetTemplateSubject = a})
-
--- | The URL that the recipient of the verification email is sent to if his or her address is successfully verified.
-ucvetSuccessRedirectionURL :: Lens' UpdateCustomVerificationEmailTemplate (Maybe Text)
-ucvetSuccessRedirectionURL = lens _ucvetSuccessRedirectionURL (\ s a -> s{_ucvetSuccessRedirectionURL = a})
-
--- | The content of the custom verification email. The total size of the email must be less than 10 MB. The message body may contain HTML, with some limitations. For more information, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/custom-verification-emails.html#custom-verification-emails-faq Custom Verification Email Frequently Asked Questions> in the /Amazon SES Developer Guide/ .
-ucvetTemplateContent :: Lens' UpdateCustomVerificationEmailTemplate (Maybe Text)
-ucvetTemplateContent = lens _ucvetTemplateContent (\ s a -> s{_ucvetTemplateContent = a})
-
--- | The name of the custom verification email template that you want to update.
-ucvetTemplateName :: Lens' UpdateCustomVerificationEmailTemplate Text
-ucvetTemplateName = lens _ucvetTemplateName (\ s a -> s{_ucvetTemplateName = a})
-
-instance AWSRequest
-           UpdateCustomVerificationEmailTemplate
-         where
-        type Rs UpdateCustomVerificationEmailTemplate =
-             UpdateCustomVerificationEmailTemplateResponse
-        request = postQuery ses
-        response
-          = receiveNull
-              UpdateCustomVerificationEmailTemplateResponse'
-
-instance Hashable
-           UpdateCustomVerificationEmailTemplate
-         where
-
-instance NFData UpdateCustomVerificationEmailTemplate
-         where
-
-instance ToHeaders
-           UpdateCustomVerificationEmailTemplate
-         where
-        toHeaders = const mempty
-
-instance ToPath UpdateCustomVerificationEmailTemplate
-         where
-        toPath = const "/"
-
-instance ToQuery
-           UpdateCustomVerificationEmailTemplate
-         where
-        toQuery UpdateCustomVerificationEmailTemplate'{..}
-          = mconcat
-              ["Action" =:
-                 ("UpdateCustomVerificationEmailTemplate" ::
-                    ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "FromEmailAddress" =: _ucvetFromEmailAddress,
-               "FailureRedirectionURL" =:
-                 _ucvetFailureRedirectionURL,
-               "TemplateSubject" =: _ucvetTemplateSubject,
-               "SuccessRedirectionURL" =:
-                 _ucvetSuccessRedirectionURL,
-               "TemplateContent" =: _ucvetTemplateContent,
-               "TemplateName" =: _ucvetTemplateName]
-
--- | /See:/ 'updateCustomVerificationEmailTemplateResponse' smart constructor.
-data UpdateCustomVerificationEmailTemplateResponse =
-  UpdateCustomVerificationEmailTemplateResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateCustomVerificationEmailTemplateResponse' with the minimum fields required to make a request.
---
-updateCustomVerificationEmailTemplateResponse
-    :: UpdateCustomVerificationEmailTemplateResponse
-updateCustomVerificationEmailTemplateResponse =
-  UpdateCustomVerificationEmailTemplateResponse'
-
-
-instance NFData
-           UpdateCustomVerificationEmailTemplateResponse
-         where
diff --git a/gen/Network/AWS/SES/UpdateReceiptRule.hs b/gen/Network/AWS/SES/UpdateReceiptRule.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateReceiptRule.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# 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-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@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> .
---
--- You can execute this operation no more than once per second.
---
-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.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to update a receipt rule. You use receipt rules to receive email with Amazon SES. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/receiving-email-concepts.html Amazon SES Developer Guide> .
---
---
---
--- /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' - The name of the receipt rule set that the receipt rule belongs to.
---
--- * 'urrRule' - A data structure that contains the updated receipt rule information.
-updateReceiptRule
-    :: Text -- ^ 'urrRuleSetName'
-    -> ReceiptRule -- ^ 'urrRule'
-    -> UpdateReceiptRule
-updateReceiptRule pRuleSetName_ pRule_ =
-  UpdateReceiptRule' {_urrRuleSetName = pRuleSetName_, _urrRule = pRule_}
-
-
--- | The name of the receipt rule set that the receipt rule belongs to.
-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 Hashable UpdateReceiptRule where
-
-instance NFData UpdateReceiptRule where
-
-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]
-
--- | An empty element returned on a successful request.
---
---
---
--- /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' - -- | The response status code.
-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})
-
-instance NFData UpdateReceiptRuleResponse where
diff --git a/gen/Network/AWS/SES/UpdateTemplate.hs b/gen/Network/AWS/SES/UpdateTemplate.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/UpdateTemplate.hs
+++ /dev/null
@@ -1,116 +0,0 @@
-{-# 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.UpdateTemplate
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates an email template. Email templates enable you to send personalized email to one or more destinations in a single API operation. For more information, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide> .
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.UpdateTemplate
-    (
-    -- * Creating a Request
-      updateTemplate
-    , UpdateTemplate
-    -- * Request Lenses
-    , utTemplate
-
-    -- * Destructuring the Response
-    , updateTemplateResponse
-    , UpdateTemplateResponse
-    -- * Response Lenses
-    , utrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | /See:/ 'updateTemplate' smart constructor.
-newtype UpdateTemplate = UpdateTemplate'
-  { _utTemplate :: Template
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateTemplate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'utTemplate' - Undocumented member.
-updateTemplate
-    :: Template -- ^ 'utTemplate'
-    -> UpdateTemplate
-updateTemplate pTemplate_ = UpdateTemplate' {_utTemplate = pTemplate_}
-
-
--- | Undocumented member.
-utTemplate :: Lens' UpdateTemplate Template
-utTemplate = lens _utTemplate (\ s a -> s{_utTemplate = a})
-
-instance AWSRequest UpdateTemplate where
-        type Rs UpdateTemplate = UpdateTemplateResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "UpdateTemplateResult"
-              (\ s h x ->
-                 UpdateTemplateResponse' <$> (pure (fromEnum s)))
-
-instance Hashable UpdateTemplate where
-
-instance NFData UpdateTemplate where
-
-instance ToHeaders UpdateTemplate where
-        toHeaders = const mempty
-
-instance ToPath UpdateTemplate where
-        toPath = const "/"
-
-instance ToQuery UpdateTemplate where
-        toQuery UpdateTemplate'{..}
-          = mconcat
-              ["Action" =: ("UpdateTemplate" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Template" =: _utTemplate]
-
--- | /See:/ 'updateTemplateResponse' smart constructor.
-newtype UpdateTemplateResponse = UpdateTemplateResponse'
-  { _utrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateTemplateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'utrsResponseStatus' - -- | The response status code.
-updateTemplateResponse
-    :: Int -- ^ 'utrsResponseStatus'
-    -> UpdateTemplateResponse
-updateTemplateResponse pResponseStatus_ =
-  UpdateTemplateResponse' {_utrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-utrsResponseStatus :: Lens' UpdateTemplateResponse Int
-utrsResponseStatus = lens _utrsResponseStatus (\ s a -> s{_utrsResponseStatus = a})
-
-instance NFData UpdateTemplateResponse where
diff --git a/gen/Network/AWS/SES/VerifyDomainDkim.hs b/gen/Network/AWS/SES/VerifyDomainDkim.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/VerifyDomainDkim.hs
+++ /dev/null
@@ -1,140 +0,0 @@
-{-# 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.VerifyDomainDkim
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns a set of DKIM tokens for a domain. DKIM /tokens/ are character strings that represent your 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.
---
---
--- You can execute this operation no more than once per second.
---
--- To enable or disable Easy DKIM signing for a domain, use the @SetIdentityDkimEnabled@ operation.
---
--- 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> .
---
-module Network.AWS.SES.VerifyDomainDkim
-    (
-    -- * Creating a Request
-      verifyDomainDkim
-    , VerifyDomainDkim
-    -- * Request Lenses
-    , vddDomain
-
-    -- * Destructuring the Response
-    , verifyDomainDkimResponse
-    , VerifyDomainDkimResponse
-    -- * Response Lenses
-    , vddrsResponseStatus
-    , vddrsDkimTokens
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to generate the CNAME records needed to set up Easy DKIM with Amazon SES. For more information about setting up Easy DKIM, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'verifyDomainDkim' smart constructor.
-newtype VerifyDomainDkim = VerifyDomainDkim'
-  { _vddDomain :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyDomainDkim' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vddDomain' - The name of the domain to be verified for Easy DKIM signing.
-verifyDomainDkim
-    :: Text -- ^ 'vddDomain'
-    -> VerifyDomainDkim
-verifyDomainDkim pDomain_ = VerifyDomainDkim' {_vddDomain = pDomain_}
-
-
--- | The name of the domain to be verified for Easy DKIM signing.
-vddDomain :: Lens' VerifyDomainDkim Text
-vddDomain = lens _vddDomain (\ s a -> s{_vddDomain = a})
-
-instance AWSRequest VerifyDomainDkim where
-        type Rs VerifyDomainDkim = VerifyDomainDkimResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "VerifyDomainDkimResult"
-              (\ s h x ->
-                 VerifyDomainDkimResponse' <$>
-                   (pure (fromEnum s)) <*>
-                     (x .@? "DkimTokens" .!@ mempty >>=
-                        parseXMLList "member"))
-
-instance Hashable VerifyDomainDkim where
-
-instance NFData VerifyDomainDkim where
-
-instance ToHeaders VerifyDomainDkim where
-        toHeaders = const mempty
-
-instance ToPath VerifyDomainDkim where
-        toPath = const "/"
-
-instance ToQuery VerifyDomainDkim where
-        toQuery VerifyDomainDkim'{..}
-          = mconcat
-              ["Action" =: ("VerifyDomainDkim" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Domain" =: _vddDomain]
-
--- | Returns CNAME records that you must publish to the DNS server of your domain to set up Easy DKIM with Amazon SES.
---
---
---
--- /See:/ 'verifyDomainDkimResponse' smart constructor.
-data VerifyDomainDkimResponse = VerifyDomainDkimResponse'
-  { _vddrsResponseStatus :: !Int
-  , _vddrsDkimTokens     :: ![Text]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyDomainDkimResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vddrsResponseStatus' - -- | The response status code.
---
--- * 'vddrsDkimTokens' - A set of character strings that represent the domain's identity. If the identity is an email address, the tokens represent the domain of that address. 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 emails originating from that domain. 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> .
-verifyDomainDkimResponse
-    :: Int -- ^ 'vddrsResponseStatus'
-    -> VerifyDomainDkimResponse
-verifyDomainDkimResponse pResponseStatus_ =
-  VerifyDomainDkimResponse'
-    {_vddrsResponseStatus = pResponseStatus_, _vddrsDkimTokens = mempty}
-
-
--- | -- | The response status code.
-vddrsResponseStatus :: Lens' VerifyDomainDkimResponse Int
-vddrsResponseStatus = lens _vddrsResponseStatus (\ s a -> s{_vddrsResponseStatus = a})
-
--- | A set of character strings that represent the domain's identity. If the identity is an email address, the tokens represent the domain of that address. 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 emails originating from that domain. 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> .
-vddrsDkimTokens :: Lens' VerifyDomainDkimResponse [Text]
-vddrsDkimTokens = lens _vddrsDkimTokens (\ s a -> s{_vddrsDkimTokens = a}) . _Coerce
-
-instance NFData VerifyDomainDkimResponse where
diff --git a/gen/Network/AWS/SES/VerifyDomainIdentity.hs b/gen/Network/AWS/SES/VerifyDomainIdentity.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/VerifyDomainIdentity.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# 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.VerifyDomainIdentity
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a domain to the list of identities for your Amazon SES account and attempts to verify it. For more information about verifying domains, see <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html Verifying Email Addresses and Domains> in the /Amazon SES Developer Guide./
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.VerifyDomainIdentity
-    (
-    -- * Creating a Request
-      verifyDomainIdentity
-    , VerifyDomainIdentity
-    -- * Request Lenses
-    , vdiDomain
-
-    -- * Destructuring the Response
-    , verifyDomainIdentityResponse
-    , VerifyDomainIdentityResponse
-    -- * Response Lenses
-    , vdirsResponseStatus
-    , vdirsVerificationToken
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to begin Amazon SES domain verification and to generate the TXT records that you must publish to the DNS server of your domain to complete the verification. For information about domain verification, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-domains.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'verifyDomainIdentity' smart constructor.
-newtype VerifyDomainIdentity = VerifyDomainIdentity'
-  { _vdiDomain :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyDomainIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vdiDomain' - The domain to be verified.
-verifyDomainIdentity
-    :: Text -- ^ 'vdiDomain'
-    -> VerifyDomainIdentity
-verifyDomainIdentity pDomain_ = VerifyDomainIdentity' {_vdiDomain = pDomain_}
-
-
--- | The domain to be verified.
-vdiDomain :: Lens' VerifyDomainIdentity Text
-vdiDomain = lens _vdiDomain (\ s a -> s{_vdiDomain = a})
-
-instance AWSRequest VerifyDomainIdentity where
-        type Rs VerifyDomainIdentity =
-             VerifyDomainIdentityResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "VerifyDomainIdentityResult"
-              (\ s h x ->
-                 VerifyDomainIdentityResponse' <$>
-                   (pure (fromEnum s)) <*> (x .@ "VerificationToken"))
-
-instance Hashable VerifyDomainIdentity where
-
-instance NFData VerifyDomainIdentity where
-
-instance ToHeaders VerifyDomainIdentity where
-        toHeaders = const mempty
-
-instance ToPath VerifyDomainIdentity where
-        toPath = const "/"
-
-instance ToQuery VerifyDomainIdentity where
-        toQuery VerifyDomainIdentity'{..}
-          = mconcat
-              ["Action" =: ("VerifyDomainIdentity" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "Domain" =: _vdiDomain]
-
--- | Returns a TXT record that you must publish to the DNS server of your domain to complete domain verification with Amazon SES.
---
---
---
--- /See:/ 'verifyDomainIdentityResponse' smart constructor.
-data VerifyDomainIdentityResponse = VerifyDomainIdentityResponse'
-  { _vdirsResponseStatus    :: !Int
-  , _vdirsVerificationToken :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyDomainIdentityResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vdirsResponseStatus' - -- | The response status code.
---
--- * 'vdirsVerificationToken' - A TXT record that you must place in the DNS settings of the domain to complete domain verification with Amazon SES. As Amazon SES searches for the TXT record, the domain's verification status is "Pending". When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning.
-verifyDomainIdentityResponse
-    :: Int -- ^ 'vdirsResponseStatus'
-    -> Text -- ^ 'vdirsVerificationToken'
-    -> VerifyDomainIdentityResponse
-verifyDomainIdentityResponse pResponseStatus_ pVerificationToken_ =
-  VerifyDomainIdentityResponse'
-    { _vdirsResponseStatus = pResponseStatus_
-    , _vdirsVerificationToken = pVerificationToken_
-    }
-
-
--- | -- | The response status code.
-vdirsResponseStatus :: Lens' VerifyDomainIdentityResponse Int
-vdirsResponseStatus = lens _vdirsResponseStatus (\ s a -> s{_vdirsResponseStatus = a})
-
--- | A TXT record that you must place in the DNS settings of the domain to complete domain verification with Amazon SES. As Amazon SES searches for the TXT record, the domain's verification status is "Pending". When Amazon SES detects the record, the domain's verification status changes to "Success". If Amazon SES is unable to detect the record within 72 hours, the domain's verification status changes to "Failed." In that case, if you still want to verify the domain, you must restart the verification process from the beginning.
-vdirsVerificationToken :: Lens' VerifyDomainIdentityResponse Text
-vdirsVerificationToken = lens _vdirsVerificationToken (\ s a -> s{_vdirsVerificationToken = a})
-
-instance NFData VerifyDomainIdentityResponse where
diff --git a/gen/Network/AWS/SES/VerifyEmailAddress.hs b/gen/Network/AWS/SES/VerifyEmailAddress.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/VerifyEmailAddress.hs
+++ /dev/null
@@ -1,106 +0,0 @@
-{-# 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.VerifyEmailAddress
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deprecated. Use the @VerifyEmailIdentity@ operation to verify a new email address.
---
---
-module Network.AWS.SES.VerifyEmailAddress
-    (
-    -- * Creating a Request
-      verifyEmailAddress
-    , VerifyEmailAddress
-    -- * Request Lenses
-    , veaEmailAddress
-
-    -- * Destructuring the Response
-    , verifyEmailAddressResponse
-    , VerifyEmailAddressResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to begin email address verification with Amazon SES. For information about email address verification, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'verifyEmailAddress' smart constructor.
-newtype VerifyEmailAddress = VerifyEmailAddress'
-  { _veaEmailAddress :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyEmailAddress' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'veaEmailAddress' - The email address to be verified.
-verifyEmailAddress
-    :: Text -- ^ 'veaEmailAddress'
-    -> VerifyEmailAddress
-verifyEmailAddress pEmailAddress_ =
-  VerifyEmailAddress' {_veaEmailAddress = pEmailAddress_}
-
-
--- | The email address to be verified.
-veaEmailAddress :: Lens' VerifyEmailAddress Text
-veaEmailAddress = lens _veaEmailAddress (\ s a -> s{_veaEmailAddress = a})
-
-instance AWSRequest VerifyEmailAddress where
-        type Rs VerifyEmailAddress =
-             VerifyEmailAddressResponse
-        request = postQuery ses
-        response = receiveNull VerifyEmailAddressResponse'
-
-instance Hashable VerifyEmailAddress where
-
-instance NFData VerifyEmailAddress where
-
-instance ToHeaders VerifyEmailAddress where
-        toHeaders = const mempty
-
-instance ToPath VerifyEmailAddress where
-        toPath = const "/"
-
-instance ToQuery VerifyEmailAddress where
-        toQuery VerifyEmailAddress'{..}
-          = mconcat
-              ["Action" =: ("VerifyEmailAddress" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "EmailAddress" =: _veaEmailAddress]
-
--- | /See:/ 'verifyEmailAddressResponse' smart constructor.
-data VerifyEmailAddressResponse =
-  VerifyEmailAddressResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyEmailAddressResponse' with the minimum fields required to make a request.
---
-verifyEmailAddressResponse
-    :: VerifyEmailAddressResponse
-verifyEmailAddressResponse = VerifyEmailAddressResponse'
-
-
-instance NFData VerifyEmailAddressResponse where
diff --git a/gen/Network/AWS/SES/VerifyEmailIdentity.hs b/gen/Network/AWS/SES/VerifyEmailIdentity.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/VerifyEmailIdentity.hs
+++ /dev/null
@@ -1,126 +0,0 @@
-{-# 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.VerifyEmailIdentity
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds an email address to the list of identities for your Amazon SES account and attempts to verify it. As a result of executing this operation, a verification email is sent to the specified address.
---
---
--- You can execute this operation no more than once per second.
---
-module Network.AWS.SES.VerifyEmailIdentity
-    (
-    -- * Creating a Request
-      verifyEmailIdentity
-    , VerifyEmailIdentity
-    -- * Request Lenses
-    , veiEmailAddress
-
-    -- * Destructuring the Response
-    , verifyEmailIdentityResponse
-    , VerifyEmailIdentityResponse
-    -- * Response Lenses
-    , veirsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.SES.Types
-import Network.AWS.SES.Types.Product
-
--- | Represents a request to begin email address verification with Amazon SES. For information about email address verification, see the <http://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-email-addresses.html Amazon SES Developer Guide> .
---
---
---
--- /See:/ 'verifyEmailIdentity' smart constructor.
-newtype VerifyEmailIdentity = VerifyEmailIdentity'
-  { _veiEmailAddress :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyEmailIdentity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'veiEmailAddress' - The email address to be verified.
-verifyEmailIdentity
-    :: Text -- ^ 'veiEmailAddress'
-    -> VerifyEmailIdentity
-verifyEmailIdentity pEmailAddress_ =
-  VerifyEmailIdentity' {_veiEmailAddress = pEmailAddress_}
-
-
--- | The email address to be verified.
-veiEmailAddress :: Lens' VerifyEmailIdentity Text
-veiEmailAddress = lens _veiEmailAddress (\ s a -> s{_veiEmailAddress = a})
-
-instance AWSRequest VerifyEmailIdentity where
-        type Rs VerifyEmailIdentity =
-             VerifyEmailIdentityResponse
-        request = postQuery ses
-        response
-          = receiveXMLWrapper "VerifyEmailIdentityResult"
-              (\ s h x ->
-                 VerifyEmailIdentityResponse' <$> (pure (fromEnum s)))
-
-instance Hashable VerifyEmailIdentity where
-
-instance NFData VerifyEmailIdentity where
-
-instance ToHeaders VerifyEmailIdentity where
-        toHeaders = const mempty
-
-instance ToPath VerifyEmailIdentity where
-        toPath = const "/"
-
-instance ToQuery VerifyEmailIdentity where
-        toQuery VerifyEmailIdentity'{..}
-          = mconcat
-              ["Action" =: ("VerifyEmailIdentity" :: ByteString),
-               "Version" =: ("2010-12-01" :: ByteString),
-               "EmailAddress" =: _veiEmailAddress]
-
--- | An empty element returned on a successful request.
---
---
---
--- /See:/ 'verifyEmailIdentityResponse' smart constructor.
-newtype VerifyEmailIdentityResponse = VerifyEmailIdentityResponse'
-  { _veirsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'VerifyEmailIdentityResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'veirsResponseStatus' - -- | The response status code.
-verifyEmailIdentityResponse
-    :: Int -- ^ 'veirsResponseStatus'
-    -> VerifyEmailIdentityResponse
-verifyEmailIdentityResponse pResponseStatus_ =
-  VerifyEmailIdentityResponse' {_veirsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-veirsResponseStatus :: Lens' VerifyEmailIdentityResponse Int
-veirsResponseStatus = lens _veirsResponseStatus (\ s a -> s{_veirsResponseStatus = a})
-
-instance NFData VerifyEmailIdentityResponse where
diff --git a/gen/Network/AWS/SES/Waiters.hs b/gen/Network/AWS/SES/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/SES/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.SES.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.SES.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.SES.Types
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.SES
+import Test.Amazonka.SES.Internal
 import Test.Tasty
-import Test.AWS.SES
-import Test.AWS.SES.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "SES"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "SES"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/SES.hs b/test/Test/AWS/Gen/SES.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/SES.hs
+++ /dev/null
@@ -1,1299 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.SES
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.SES where
-
-import Data.Proxy
-import Network.AWS.SES
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.AWS.SES.Internal
-import Test.Tasty
-
--- Auto-generated: the actual test selection needs to be manually placed into
--- the top-level so that real test data can be incrementally added.
---
--- This commented snippet is what the entire set should look like:
-
--- fixtures :: TestTree
--- fixtures =
---     [ testGroup "request"
---         [ requestCreateTemplate $
---             createTemplate
---
---         , requestDeleteConfigurationSetTrackingOptions $
---             deleteConfigurationSetTrackingOptions
---
---         , requestUpdateConfigurationSetTrackingOptions $
---             updateConfigurationSetTrackingOptions
---
---         , requestCreateReceiptRuleSet $
---             createReceiptRuleSet
---
---         , requestSetIdentityHeadersInNotificationsEnabled $
---             setIdentityHeadersInNotificationsEnabled
---
---         , requestGetSendQuota $
---             getSendQuota
---
---         , requestDescribeConfigurationSet $
---             describeConfigurationSet
---
---         , requestPutIdentityPolicy $
---             putIdentityPolicy
---
---         , requestDeleteCustomVerificationEmailTemplate $
---             deleteCustomVerificationEmailTemplate
---
---         , requestDeleteIdentityPolicy $
---             deleteIdentityPolicy
---
---         , requestUpdateCustomVerificationEmailTemplate $
---             updateCustomVerificationEmailTemplate
---
---         , requestSendCustomVerificationEmail $
---             sendCustomVerificationEmail
---
---         , requestGetIdentityNotificationAttributes $
---             getIdentityNotificationAttributes
---
---         , requestUpdateConfigurationSetReputationMetricsEnabled $
---             updateConfigurationSetReputationMetricsEnabled
---
---         , requestListIdentityPolicies $
---             listIdentityPolicies
---
---         , requestSetIdentityDkimEnabled $
---             setIdentityDkimEnabled
---
---         , requestListReceiptFilters $
---             listReceiptFilters
---
---         , requestDescribeReceiptRuleSet $
---             describeReceiptRuleSet
---
---         , requestGetIdentityMailFromDomainAttributes $
---             getIdentityMailFromDomainAttributes
---
---         , requestCreateReceiptFilter $
---             createReceiptFilter
---
---         , requestUpdateConfigurationSetEventDestination $
---             updateConfigurationSetEventDestination
---
---         , requestDeleteConfigurationSetEventDestination $
---             deleteConfigurationSetEventDestination
---
---         , requestSetIdentityMailFromDomain $
---             setIdentityMailFromDomain
---
---         , requestSetIdentityFeedbackForwardingEnabled $
---             setIdentityFeedbackForwardingEnabled
---
---         , requestListConfigurationSets $
---             listConfigurationSets
---
---         , requestDeleteConfigurationSet $
---             deleteConfigurationSet
---
---         , requestGetIdentityVerificationAttributes $
---             getIdentityVerificationAttributes
---
---         , requestGetIdentityPolicies $
---             getIdentityPolicies
---
---         , requestListTemplates $
---             listTemplates
---
---         , requestVerifyDomainIdentity $
---             verifyDomainIdentity
---
---         , requestUpdateTemplate $
---             updateTemplate
---
---         , requestDeleteTemplate $
---             deleteTemplate
---
---         , requestReorderReceiptRuleSet $
---             reorderReceiptRuleSet
---
---         , requestListReceiptRuleSets $
---             listReceiptRuleSets
---
---         , requestDeleteReceiptRuleSet $
---             deleteReceiptRuleSet
---
---         , requestSetReceiptRulePosition $
---             setReceiptRulePosition
---
---         , requestSendBounce $
---             sendBounce
---
---         , requestGetIdentityDkimAttributes $
---             getIdentityDkimAttributes
---
---         , requestSendTemplatedEmail $
---             sendTemplatedEmail
---
---         , requestVerifyDomainDkim $
---             verifyDomainDkim
---
---         , requestTestRenderTemplate $
---             testRenderTemplate
---
---         , requestSendBulkTemplatedEmail $
---             sendBulkTemplatedEmail
---
---         , requestSendRawEmail $
---             sendRawEmail
---
---         , requestGetSendStatistics $
---             getSendStatistics
---
---         , requestListCustomVerificationEmailTemplates $
---             listCustomVerificationEmailTemplates
---
---         , requestDeleteIdentity $
---             deleteIdentity
---
---         , requestDescribeReceiptRule $
---             describeReceiptRule
---
---         , requestListIdentities $
---             listIdentities
---
---         , requestUpdateConfigurationSetSendingEnabled $
---             updateConfigurationSetSendingEnabled
---
---         , requestCreateCustomVerificationEmailTemplate $
---             createCustomVerificationEmailTemplate
---
---         , requestVerifyEmailIdentity $
---             verifyEmailIdentity
---
---         , requestVerifyEmailAddress $
---             verifyEmailAddress
---
---         , requestDeleteVerifiedEmailAddress $
---             deleteVerifiedEmailAddress
---
---         , requestDeleteReceiptFilter $
---             deleteReceiptFilter
---
---         , requestListVerifiedEmailAddresses $
---             listVerifiedEmailAddresses
---
---         , requestGetCustomVerificationEmailTemplate $
---             getCustomVerificationEmailTemplate
---
---         , requestSetIdentityNotificationTopic $
---             setIdentityNotificationTopic
---
---         , requestSendEmail $
---             sendEmail
---
---         , requestDeleteReceiptRule $
---             deleteReceiptRule
---
---         , requestUpdateReceiptRule $
---             updateReceiptRule
---
---         , requestCloneReceiptRuleSet $
---             cloneReceiptRuleSet
---
---         , requestCreateConfigurationSetEventDestination $
---             createConfigurationSetEventDestination
---
---         , requestGetAccountSendingEnabled $
---             getAccountSendingEnabled
---
---         , requestCreateReceiptRule $
---             createReceiptRule
---
---         , requestGetTemplate $
---             getTemplate
---
---         , requestSetActiveReceiptRuleSet $
---             setActiveReceiptRuleSet
---
---         , requestCreateConfigurationSet $
---             createConfigurationSet
---
---         , requestUpdateAccountSendingEnabled $
---             updateAccountSendingEnabled
---
---         , requestCreateConfigurationSetTrackingOptions $
---             createConfigurationSetTrackingOptions
---
---         , requestDescribeActiveReceiptRuleSet $
---             describeActiveReceiptRuleSet
---
---           ]
-
---     , testGroup "response"
---         [ responseCreateTemplate $
---             createTemplateResponse
---
---         , responseDeleteConfigurationSetTrackingOptions $
---             deleteConfigurationSetTrackingOptionsResponse
---
---         , responseUpdateConfigurationSetTrackingOptions $
---             updateConfigurationSetTrackingOptionsResponse
---
---         , responseCreateReceiptRuleSet $
---             createReceiptRuleSetResponse
---
---         , responseSetIdentityHeadersInNotificationsEnabled $
---             setIdentityHeadersInNotificationsEnabledResponse
---
---         , responseGetSendQuota $
---             getSendQuotaResponse
---
---         , responseDescribeConfigurationSet $
---             describeConfigurationSetResponse
---
---         , responsePutIdentityPolicy $
---             putIdentityPolicyResponse
---
---         , responseDeleteCustomVerificationEmailTemplate $
---             deleteCustomVerificationEmailTemplateResponse
---
---         , responseDeleteIdentityPolicy $
---             deleteIdentityPolicyResponse
---
---         , responseUpdateCustomVerificationEmailTemplate $
---             updateCustomVerificationEmailTemplateResponse
---
---         , responseSendCustomVerificationEmail $
---             sendCustomVerificationEmailResponse
---
---         , responseGetIdentityNotificationAttributes $
---             getIdentityNotificationAttributesResponse
---
---         , responseUpdateConfigurationSetReputationMetricsEnabled $
---             updateConfigurationSetReputationMetricsEnabledResponse
---
---         , responseListIdentityPolicies $
---             listIdentityPoliciesResponse
---
---         , responseSetIdentityDkimEnabled $
---             setIdentityDkimEnabledResponse
---
---         , responseListReceiptFilters $
---             listReceiptFiltersResponse
---
---         , responseDescribeReceiptRuleSet $
---             describeReceiptRuleSetResponse
---
---         , responseGetIdentityMailFromDomainAttributes $
---             getIdentityMailFromDomainAttributesResponse
---
---         , responseCreateReceiptFilter $
---             createReceiptFilterResponse
---
---         , responseUpdateConfigurationSetEventDestination $
---             updateConfigurationSetEventDestinationResponse
---
---         , responseDeleteConfigurationSetEventDestination $
---             deleteConfigurationSetEventDestinationResponse
---
---         , responseSetIdentityMailFromDomain $
---             setIdentityMailFromDomainResponse
---
---         , responseSetIdentityFeedbackForwardingEnabled $
---             setIdentityFeedbackForwardingEnabledResponse
---
---         , responseListConfigurationSets $
---             listConfigurationSetsResponse
---
---         , responseDeleteConfigurationSet $
---             deleteConfigurationSetResponse
---
---         , responseGetIdentityVerificationAttributes $
---             getIdentityVerificationAttributesResponse
---
---         , responseGetIdentityPolicies $
---             getIdentityPoliciesResponse
---
---         , responseListTemplates $
---             listTemplatesResponse
---
---         , responseVerifyDomainIdentity $
---             verifyDomainIdentityResponse
---
---         , responseUpdateTemplate $
---             updateTemplateResponse
---
---         , responseDeleteTemplate $
---             deleteTemplateResponse
---
---         , responseReorderReceiptRuleSet $
---             reorderReceiptRuleSetResponse
---
---         , responseListReceiptRuleSets $
---             listReceiptRuleSetsResponse
---
---         , responseDeleteReceiptRuleSet $
---             deleteReceiptRuleSetResponse
---
---         , responseSetReceiptRulePosition $
---             setReceiptRulePositionResponse
---
---         , responseSendBounce $
---             sendBounceResponse
---
---         , responseGetIdentityDkimAttributes $
---             getIdentityDkimAttributesResponse
---
---         , responseSendTemplatedEmail $
---             sendTemplatedEmailResponse
---
---         , responseVerifyDomainDkim $
---             verifyDomainDkimResponse
---
---         , responseTestRenderTemplate $
---             testRenderTemplateResponse
---
---         , responseSendBulkTemplatedEmail $
---             sendBulkTemplatedEmailResponse
---
---         , responseSendRawEmail $
---             sendRawEmailResponse
---
---         , responseGetSendStatistics $
---             getSendStatisticsResponse
---
---         , responseListCustomVerificationEmailTemplates $
---             listCustomVerificationEmailTemplatesResponse
---
---         , responseDeleteIdentity $
---             deleteIdentityResponse
---
---         , responseDescribeReceiptRule $
---             describeReceiptRuleResponse
---
---         , responseListIdentities $
---             listIdentitiesResponse
---
---         , responseUpdateConfigurationSetSendingEnabled $
---             updateConfigurationSetSendingEnabledResponse
---
---         , responseCreateCustomVerificationEmailTemplate $
---             createCustomVerificationEmailTemplateResponse
---
---         , responseVerifyEmailIdentity $
---             verifyEmailIdentityResponse
---
---         , responseVerifyEmailAddress $
---             verifyEmailAddressResponse
---
---         , responseDeleteVerifiedEmailAddress $
---             deleteVerifiedEmailAddressResponse
---
---         , responseDeleteReceiptFilter $
---             deleteReceiptFilterResponse
---
---         , responseListVerifiedEmailAddresses $
---             listVerifiedEmailAddressesResponse
---
---         , responseGetCustomVerificationEmailTemplate $
---             getCustomVerificationEmailTemplateResponse
---
---         , responseSetIdentityNotificationTopic $
---             setIdentityNotificationTopicResponse
---
---         , responseSendEmail $
---             sendEmailResponse
---
---         , responseDeleteReceiptRule $
---             deleteReceiptRuleResponse
---
---         , responseUpdateReceiptRule $
---             updateReceiptRuleResponse
---
---         , responseCloneReceiptRuleSet $
---             cloneReceiptRuleSetResponse
---
---         , responseCreateConfigurationSetEventDestination $
---             createConfigurationSetEventDestinationResponse
---
---         , responseGetAccountSendingEnabled $
---             getAccountSendingEnabledResponse
---
---         , responseCreateReceiptRule $
---             createReceiptRuleResponse
---
---         , responseGetTemplate $
---             getTemplateResponse
---
---         , responseSetActiveReceiptRuleSet $
---             setActiveReceiptRuleSetResponse
---
---         , responseCreateConfigurationSet $
---             createConfigurationSetResponse
---
---         , responseUpdateAccountSendingEnabled $
---             updateAccountSendingEnabledResponse
---
---         , responseCreateConfigurationSetTrackingOptions $
---             createConfigurationSetTrackingOptionsResponse
---
---         , responseDescribeActiveReceiptRuleSet $
---             describeActiveReceiptRuleSetResponse
---
---           ]
---     ]
-
--- Requests
-
-requestCreateTemplate :: CreateTemplate -> TestTree
-requestCreateTemplate = req
-    "CreateTemplate"
-    "fixture/CreateTemplate.yaml"
-
-requestDeleteConfigurationSetTrackingOptions :: DeleteConfigurationSetTrackingOptions -> TestTree
-requestDeleteConfigurationSetTrackingOptions = req
-    "DeleteConfigurationSetTrackingOptions"
-    "fixture/DeleteConfigurationSetTrackingOptions.yaml"
-
-requestUpdateConfigurationSetTrackingOptions :: UpdateConfigurationSetTrackingOptions -> TestTree
-requestUpdateConfigurationSetTrackingOptions = req
-    "UpdateConfigurationSetTrackingOptions"
-    "fixture/UpdateConfigurationSetTrackingOptions.yaml"
-
-requestCreateReceiptRuleSet :: CreateReceiptRuleSet -> TestTree
-requestCreateReceiptRuleSet = req
-    "CreateReceiptRuleSet"
-    "fixture/CreateReceiptRuleSet.yaml"
-
-requestSetIdentityHeadersInNotificationsEnabled :: SetIdentityHeadersInNotificationsEnabled -> TestTree
-requestSetIdentityHeadersInNotificationsEnabled = req
-    "SetIdentityHeadersInNotificationsEnabled"
-    "fixture/SetIdentityHeadersInNotificationsEnabled.yaml"
-
-requestGetSendQuota :: GetSendQuota -> TestTree
-requestGetSendQuota = req
-    "GetSendQuota"
-    "fixture/GetSendQuota.yaml"
-
-requestDescribeConfigurationSet :: DescribeConfigurationSet -> TestTree
-requestDescribeConfigurationSet = req
-    "DescribeConfigurationSet"
-    "fixture/DescribeConfigurationSet.yaml"
-
-requestPutIdentityPolicy :: PutIdentityPolicy -> TestTree
-requestPutIdentityPolicy = req
-    "PutIdentityPolicy"
-    "fixture/PutIdentityPolicy.yaml"
-
-requestDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplate -> TestTree
-requestDeleteCustomVerificationEmailTemplate = req
-    "DeleteCustomVerificationEmailTemplate"
-    "fixture/DeleteCustomVerificationEmailTemplate.yaml"
-
-requestDeleteIdentityPolicy :: DeleteIdentityPolicy -> TestTree
-requestDeleteIdentityPolicy = req
-    "DeleteIdentityPolicy"
-    "fixture/DeleteIdentityPolicy.yaml"
-
-requestUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplate -> TestTree
-requestUpdateCustomVerificationEmailTemplate = req
-    "UpdateCustomVerificationEmailTemplate"
-    "fixture/UpdateCustomVerificationEmailTemplate.yaml"
-
-requestSendCustomVerificationEmail :: SendCustomVerificationEmail -> TestTree
-requestSendCustomVerificationEmail = req
-    "SendCustomVerificationEmail"
-    "fixture/SendCustomVerificationEmail.yaml"
-
-requestGetIdentityNotificationAttributes :: GetIdentityNotificationAttributes -> TestTree
-requestGetIdentityNotificationAttributes = req
-    "GetIdentityNotificationAttributes"
-    "fixture/GetIdentityNotificationAttributes.yaml"
-
-requestUpdateConfigurationSetReputationMetricsEnabled :: UpdateConfigurationSetReputationMetricsEnabled -> TestTree
-requestUpdateConfigurationSetReputationMetricsEnabled = req
-    "UpdateConfigurationSetReputationMetricsEnabled"
-    "fixture/UpdateConfigurationSetReputationMetricsEnabled.yaml"
-
-requestListIdentityPolicies :: ListIdentityPolicies -> TestTree
-requestListIdentityPolicies = req
-    "ListIdentityPolicies"
-    "fixture/ListIdentityPolicies.yaml"
-
-requestSetIdentityDkimEnabled :: SetIdentityDkimEnabled -> TestTree
-requestSetIdentityDkimEnabled = req
-    "SetIdentityDkimEnabled"
-    "fixture/SetIdentityDkimEnabled.yaml"
-
-requestListReceiptFilters :: ListReceiptFilters -> TestTree
-requestListReceiptFilters = req
-    "ListReceiptFilters"
-    "fixture/ListReceiptFilters.yaml"
-
-requestDescribeReceiptRuleSet :: DescribeReceiptRuleSet -> TestTree
-requestDescribeReceiptRuleSet = req
-    "DescribeReceiptRuleSet"
-    "fixture/DescribeReceiptRuleSet.yaml"
-
-requestGetIdentityMailFromDomainAttributes :: GetIdentityMailFromDomainAttributes -> TestTree
-requestGetIdentityMailFromDomainAttributes = req
-    "GetIdentityMailFromDomainAttributes"
-    "fixture/GetIdentityMailFromDomainAttributes.yaml"
-
-requestCreateReceiptFilter :: CreateReceiptFilter -> TestTree
-requestCreateReceiptFilter = req
-    "CreateReceiptFilter"
-    "fixture/CreateReceiptFilter.yaml"
-
-requestUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestination -> TestTree
-requestUpdateConfigurationSetEventDestination = req
-    "UpdateConfigurationSetEventDestination"
-    "fixture/UpdateConfigurationSetEventDestination.yaml"
-
-requestDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestination -> TestTree
-requestDeleteConfigurationSetEventDestination = req
-    "DeleteConfigurationSetEventDestination"
-    "fixture/DeleteConfigurationSetEventDestination.yaml"
-
-requestSetIdentityMailFromDomain :: SetIdentityMailFromDomain -> TestTree
-requestSetIdentityMailFromDomain = req
-    "SetIdentityMailFromDomain"
-    "fixture/SetIdentityMailFromDomain.yaml"
-
-requestSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabled -> TestTree
-requestSetIdentityFeedbackForwardingEnabled = req
-    "SetIdentityFeedbackForwardingEnabled"
-    "fixture/SetIdentityFeedbackForwardingEnabled.yaml"
-
-requestListConfigurationSets :: ListConfigurationSets -> TestTree
-requestListConfigurationSets = req
-    "ListConfigurationSets"
-    "fixture/ListConfigurationSets.yaml"
-
-requestDeleteConfigurationSet :: DeleteConfigurationSet -> TestTree
-requestDeleteConfigurationSet = req
-    "DeleteConfigurationSet"
-    "fixture/DeleteConfigurationSet.yaml"
-
-requestGetIdentityVerificationAttributes :: GetIdentityVerificationAttributes -> TestTree
-requestGetIdentityVerificationAttributes = req
-    "GetIdentityVerificationAttributes"
-    "fixture/GetIdentityVerificationAttributes.yaml"
-
-requestGetIdentityPolicies :: GetIdentityPolicies -> TestTree
-requestGetIdentityPolicies = req
-    "GetIdentityPolicies"
-    "fixture/GetIdentityPolicies.yaml"
-
-requestListTemplates :: ListTemplates -> TestTree
-requestListTemplates = req
-    "ListTemplates"
-    "fixture/ListTemplates.yaml"
-
-requestVerifyDomainIdentity :: VerifyDomainIdentity -> TestTree
-requestVerifyDomainIdentity = req
-    "VerifyDomainIdentity"
-    "fixture/VerifyDomainIdentity.yaml"
-
-requestUpdateTemplate :: UpdateTemplate -> TestTree
-requestUpdateTemplate = req
-    "UpdateTemplate"
-    "fixture/UpdateTemplate.yaml"
-
-requestDeleteTemplate :: DeleteTemplate -> TestTree
-requestDeleteTemplate = req
-    "DeleteTemplate"
-    "fixture/DeleteTemplate.yaml"
-
-requestReorderReceiptRuleSet :: ReorderReceiptRuleSet -> TestTree
-requestReorderReceiptRuleSet = req
-    "ReorderReceiptRuleSet"
-    "fixture/ReorderReceiptRuleSet.yaml"
-
-requestListReceiptRuleSets :: ListReceiptRuleSets -> TestTree
-requestListReceiptRuleSets = req
-    "ListReceiptRuleSets"
-    "fixture/ListReceiptRuleSets.yaml"
-
-requestDeleteReceiptRuleSet :: DeleteReceiptRuleSet -> TestTree
-requestDeleteReceiptRuleSet = req
-    "DeleteReceiptRuleSet"
-    "fixture/DeleteReceiptRuleSet.yaml"
-
-requestSetReceiptRulePosition :: SetReceiptRulePosition -> TestTree
-requestSetReceiptRulePosition = req
-    "SetReceiptRulePosition"
-    "fixture/SetReceiptRulePosition.yaml"
-
-requestSendBounce :: SendBounce -> TestTree
-requestSendBounce = req
-    "SendBounce"
-    "fixture/SendBounce.yaml"
-
-requestGetIdentityDkimAttributes :: GetIdentityDkimAttributes -> TestTree
-requestGetIdentityDkimAttributes = req
-    "GetIdentityDkimAttributes"
-    "fixture/GetIdentityDkimAttributes.yaml"
-
-requestSendTemplatedEmail :: SendTemplatedEmail -> TestTree
-requestSendTemplatedEmail = req
-    "SendTemplatedEmail"
-    "fixture/SendTemplatedEmail.yaml"
-
-requestVerifyDomainDkim :: VerifyDomainDkim -> TestTree
-requestVerifyDomainDkim = req
-    "VerifyDomainDkim"
-    "fixture/VerifyDomainDkim.yaml"
-
-requestTestRenderTemplate :: TestRenderTemplate -> TestTree
-requestTestRenderTemplate = req
-    "TestRenderTemplate"
-    "fixture/TestRenderTemplate.yaml"
-
-requestSendBulkTemplatedEmail :: SendBulkTemplatedEmail -> TestTree
-requestSendBulkTemplatedEmail = req
-    "SendBulkTemplatedEmail"
-    "fixture/SendBulkTemplatedEmail.yaml"
-
-requestSendRawEmail :: SendRawEmail -> TestTree
-requestSendRawEmail = req
-    "SendRawEmail"
-    "fixture/SendRawEmail.yaml"
-
-requestGetSendStatistics :: GetSendStatistics -> TestTree
-requestGetSendStatistics = req
-    "GetSendStatistics"
-    "fixture/GetSendStatistics.yaml"
-
-requestListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplates -> TestTree
-requestListCustomVerificationEmailTemplates = req
-    "ListCustomVerificationEmailTemplates"
-    "fixture/ListCustomVerificationEmailTemplates.yaml"
-
-requestDeleteIdentity :: DeleteIdentity -> TestTree
-requestDeleteIdentity = req
-    "DeleteIdentity"
-    "fixture/DeleteIdentity.yaml"
-
-requestDescribeReceiptRule :: DescribeReceiptRule -> TestTree
-requestDescribeReceiptRule = req
-    "DescribeReceiptRule"
-    "fixture/DescribeReceiptRule.yaml"
-
-requestListIdentities :: ListIdentities -> TestTree
-requestListIdentities = req
-    "ListIdentities"
-    "fixture/ListIdentities.yaml"
-
-requestUpdateConfigurationSetSendingEnabled :: UpdateConfigurationSetSendingEnabled -> TestTree
-requestUpdateConfigurationSetSendingEnabled = req
-    "UpdateConfigurationSetSendingEnabled"
-    "fixture/UpdateConfigurationSetSendingEnabled.yaml"
-
-requestCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplate -> TestTree
-requestCreateCustomVerificationEmailTemplate = req
-    "CreateCustomVerificationEmailTemplate"
-    "fixture/CreateCustomVerificationEmailTemplate.yaml"
-
-requestVerifyEmailIdentity :: VerifyEmailIdentity -> TestTree
-requestVerifyEmailIdentity = req
-    "VerifyEmailIdentity"
-    "fixture/VerifyEmailIdentity.yaml"
-
-requestVerifyEmailAddress :: VerifyEmailAddress -> TestTree
-requestVerifyEmailAddress = req
-    "VerifyEmailAddress"
-    "fixture/VerifyEmailAddress.yaml"
-
-requestDeleteVerifiedEmailAddress :: DeleteVerifiedEmailAddress -> TestTree
-requestDeleteVerifiedEmailAddress = req
-    "DeleteVerifiedEmailAddress"
-    "fixture/DeleteVerifiedEmailAddress.yaml"
-
-requestDeleteReceiptFilter :: DeleteReceiptFilter -> TestTree
-requestDeleteReceiptFilter = req
-    "DeleteReceiptFilter"
-    "fixture/DeleteReceiptFilter.yaml"
-
-requestListVerifiedEmailAddresses :: ListVerifiedEmailAddresses -> TestTree
-requestListVerifiedEmailAddresses = req
-    "ListVerifiedEmailAddresses"
-    "fixture/ListVerifiedEmailAddresses.yaml"
-
-requestGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplate -> TestTree
-requestGetCustomVerificationEmailTemplate = req
-    "GetCustomVerificationEmailTemplate"
-    "fixture/GetCustomVerificationEmailTemplate.yaml"
-
-requestSetIdentityNotificationTopic :: SetIdentityNotificationTopic -> TestTree
-requestSetIdentityNotificationTopic = req
-    "SetIdentityNotificationTopic"
-    "fixture/SetIdentityNotificationTopic.yaml"
-
-requestSendEmail :: SendEmail -> TestTree
-requestSendEmail = req
-    "SendEmail"
-    "fixture/SendEmail.yaml"
-
-requestDeleteReceiptRule :: DeleteReceiptRule -> TestTree
-requestDeleteReceiptRule = req
-    "DeleteReceiptRule"
-    "fixture/DeleteReceiptRule.yaml"
-
-requestUpdateReceiptRule :: UpdateReceiptRule -> TestTree
-requestUpdateReceiptRule = req
-    "UpdateReceiptRule"
-    "fixture/UpdateReceiptRule.yaml"
-
-requestCloneReceiptRuleSet :: CloneReceiptRuleSet -> TestTree
-requestCloneReceiptRuleSet = req
-    "CloneReceiptRuleSet"
-    "fixture/CloneReceiptRuleSet.yaml"
-
-requestCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestination -> TestTree
-requestCreateConfigurationSetEventDestination = req
-    "CreateConfigurationSetEventDestination"
-    "fixture/CreateConfigurationSetEventDestination.yaml"
-
-requestGetAccountSendingEnabled :: GetAccountSendingEnabled -> TestTree
-requestGetAccountSendingEnabled = req
-    "GetAccountSendingEnabled"
-    "fixture/GetAccountSendingEnabled.yaml"
-
-requestCreateReceiptRule :: CreateReceiptRule -> TestTree
-requestCreateReceiptRule = req
-    "CreateReceiptRule"
-    "fixture/CreateReceiptRule.yaml"
-
-requestGetTemplate :: GetTemplate -> TestTree
-requestGetTemplate = req
-    "GetTemplate"
-    "fixture/GetTemplate.yaml"
-
-requestSetActiveReceiptRuleSet :: SetActiveReceiptRuleSet -> TestTree
-requestSetActiveReceiptRuleSet = req
-    "SetActiveReceiptRuleSet"
-    "fixture/SetActiveReceiptRuleSet.yaml"
-
-requestCreateConfigurationSet :: CreateConfigurationSet -> TestTree
-requestCreateConfigurationSet = req
-    "CreateConfigurationSet"
-    "fixture/CreateConfigurationSet.yaml"
-
-requestUpdateAccountSendingEnabled :: UpdateAccountSendingEnabled -> TestTree
-requestUpdateAccountSendingEnabled = req
-    "UpdateAccountSendingEnabled"
-    "fixture/UpdateAccountSendingEnabled.yaml"
-
-requestCreateConfigurationSetTrackingOptions :: CreateConfigurationSetTrackingOptions -> TestTree
-requestCreateConfigurationSetTrackingOptions = req
-    "CreateConfigurationSetTrackingOptions"
-    "fixture/CreateConfigurationSetTrackingOptions.yaml"
-
-requestDescribeActiveReceiptRuleSet :: DescribeActiveReceiptRuleSet -> TestTree
-requestDescribeActiveReceiptRuleSet = req
-    "DescribeActiveReceiptRuleSet"
-    "fixture/DescribeActiveReceiptRuleSet.yaml"
-
--- Responses
-
-responseCreateTemplate :: CreateTemplateResponse -> TestTree
-responseCreateTemplate = res
-    "CreateTemplateResponse"
-    "fixture/CreateTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy CreateTemplate)
-
-responseDeleteConfigurationSetTrackingOptions :: DeleteConfigurationSetTrackingOptionsResponse -> TestTree
-responseDeleteConfigurationSetTrackingOptions = res
-    "DeleteConfigurationSetTrackingOptionsResponse"
-    "fixture/DeleteConfigurationSetTrackingOptionsResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteConfigurationSetTrackingOptions)
-
-responseUpdateConfigurationSetTrackingOptions :: UpdateConfigurationSetTrackingOptionsResponse -> TestTree
-responseUpdateConfigurationSetTrackingOptions = res
-    "UpdateConfigurationSetTrackingOptionsResponse"
-    "fixture/UpdateConfigurationSetTrackingOptionsResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateConfigurationSetTrackingOptions)
-
-responseCreateReceiptRuleSet :: CreateReceiptRuleSetResponse -> TestTree
-responseCreateReceiptRuleSet = res
-    "CreateReceiptRuleSetResponse"
-    "fixture/CreateReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy CreateReceiptRuleSet)
-
-responseSetIdentityHeadersInNotificationsEnabled :: SetIdentityHeadersInNotificationsEnabledResponse -> TestTree
-responseSetIdentityHeadersInNotificationsEnabled = res
-    "SetIdentityHeadersInNotificationsEnabledResponse"
-    "fixture/SetIdentityHeadersInNotificationsEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy SetIdentityHeadersInNotificationsEnabled)
-
-responseGetSendQuota :: GetSendQuotaResponse -> TestTree
-responseGetSendQuota = res
-    "GetSendQuotaResponse"
-    "fixture/GetSendQuotaResponse.proto"
-    ses
-    (Proxy :: Proxy GetSendQuota)
-
-responseDescribeConfigurationSet :: DescribeConfigurationSetResponse -> TestTree
-responseDescribeConfigurationSet = res
-    "DescribeConfigurationSetResponse"
-    "fixture/DescribeConfigurationSetResponse.proto"
-    ses
-    (Proxy :: Proxy DescribeConfigurationSet)
-
-responsePutIdentityPolicy :: PutIdentityPolicyResponse -> TestTree
-responsePutIdentityPolicy = res
-    "PutIdentityPolicyResponse"
-    "fixture/PutIdentityPolicyResponse.proto"
-    ses
-    (Proxy :: Proxy PutIdentityPolicy)
-
-responseDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplateResponse -> TestTree
-responseDeleteCustomVerificationEmailTemplate = res
-    "DeleteCustomVerificationEmailTemplateResponse"
-    "fixture/DeleteCustomVerificationEmailTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteCustomVerificationEmailTemplate)
-
-responseDeleteIdentityPolicy :: DeleteIdentityPolicyResponse -> TestTree
-responseDeleteIdentityPolicy = res
-    "DeleteIdentityPolicyResponse"
-    "fixture/DeleteIdentityPolicyResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteIdentityPolicy)
-
-responseUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplateResponse -> TestTree
-responseUpdateCustomVerificationEmailTemplate = res
-    "UpdateCustomVerificationEmailTemplateResponse"
-    "fixture/UpdateCustomVerificationEmailTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateCustomVerificationEmailTemplate)
-
-responseSendCustomVerificationEmail :: SendCustomVerificationEmailResponse -> TestTree
-responseSendCustomVerificationEmail = res
-    "SendCustomVerificationEmailResponse"
-    "fixture/SendCustomVerificationEmailResponse.proto"
-    ses
-    (Proxy :: Proxy SendCustomVerificationEmail)
-
-responseGetIdentityNotificationAttributes :: GetIdentityNotificationAttributesResponse -> TestTree
-responseGetIdentityNotificationAttributes = res
-    "GetIdentityNotificationAttributesResponse"
-    "fixture/GetIdentityNotificationAttributesResponse.proto"
-    ses
-    (Proxy :: Proxy GetIdentityNotificationAttributes)
-
-responseUpdateConfigurationSetReputationMetricsEnabled :: UpdateConfigurationSetReputationMetricsEnabledResponse -> TestTree
-responseUpdateConfigurationSetReputationMetricsEnabled = res
-    "UpdateConfigurationSetReputationMetricsEnabledResponse"
-    "fixture/UpdateConfigurationSetReputationMetricsEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateConfigurationSetReputationMetricsEnabled)
-
-responseListIdentityPolicies :: ListIdentityPoliciesResponse -> TestTree
-responseListIdentityPolicies = res
-    "ListIdentityPoliciesResponse"
-    "fixture/ListIdentityPoliciesResponse.proto"
-    ses
-    (Proxy :: Proxy ListIdentityPolicies)
-
-responseSetIdentityDkimEnabled :: SetIdentityDkimEnabledResponse -> TestTree
-responseSetIdentityDkimEnabled = res
-    "SetIdentityDkimEnabledResponse"
-    "fixture/SetIdentityDkimEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy SetIdentityDkimEnabled)
-
-responseListReceiptFilters :: ListReceiptFiltersResponse -> TestTree
-responseListReceiptFilters = res
-    "ListReceiptFiltersResponse"
-    "fixture/ListReceiptFiltersResponse.proto"
-    ses
-    (Proxy :: Proxy ListReceiptFilters)
-
-responseDescribeReceiptRuleSet :: DescribeReceiptRuleSetResponse -> TestTree
-responseDescribeReceiptRuleSet = res
-    "DescribeReceiptRuleSetResponse"
-    "fixture/DescribeReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy DescribeReceiptRuleSet)
-
-responseGetIdentityMailFromDomainAttributes :: GetIdentityMailFromDomainAttributesResponse -> TestTree
-responseGetIdentityMailFromDomainAttributes = res
-    "GetIdentityMailFromDomainAttributesResponse"
-    "fixture/GetIdentityMailFromDomainAttributesResponse.proto"
-    ses
-    (Proxy :: Proxy GetIdentityMailFromDomainAttributes)
-
-responseCreateReceiptFilter :: CreateReceiptFilterResponse -> TestTree
-responseCreateReceiptFilter = res
-    "CreateReceiptFilterResponse"
-    "fixture/CreateReceiptFilterResponse.proto"
-    ses
-    (Proxy :: Proxy CreateReceiptFilter)
-
-responseUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestinationResponse -> TestTree
-responseUpdateConfigurationSetEventDestination = res
-    "UpdateConfigurationSetEventDestinationResponse"
-    "fixture/UpdateConfigurationSetEventDestinationResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateConfigurationSetEventDestination)
-
-responseDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestinationResponse -> TestTree
-responseDeleteConfigurationSetEventDestination = res
-    "DeleteConfigurationSetEventDestinationResponse"
-    "fixture/DeleteConfigurationSetEventDestinationResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteConfigurationSetEventDestination)
-
-responseSetIdentityMailFromDomain :: SetIdentityMailFromDomainResponse -> TestTree
-responseSetIdentityMailFromDomain = res
-    "SetIdentityMailFromDomainResponse"
-    "fixture/SetIdentityMailFromDomainResponse.proto"
-    ses
-    (Proxy :: Proxy SetIdentityMailFromDomain)
-
-responseSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabledResponse -> TestTree
-responseSetIdentityFeedbackForwardingEnabled = res
-    "SetIdentityFeedbackForwardingEnabledResponse"
-    "fixture/SetIdentityFeedbackForwardingEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy SetIdentityFeedbackForwardingEnabled)
-
-responseListConfigurationSets :: ListConfigurationSetsResponse -> TestTree
-responseListConfigurationSets = res
-    "ListConfigurationSetsResponse"
-    "fixture/ListConfigurationSetsResponse.proto"
-    ses
-    (Proxy :: Proxy ListConfigurationSets)
-
-responseDeleteConfigurationSet :: DeleteConfigurationSetResponse -> TestTree
-responseDeleteConfigurationSet = res
-    "DeleteConfigurationSetResponse"
-    "fixture/DeleteConfigurationSetResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteConfigurationSet)
-
-responseGetIdentityVerificationAttributes :: GetIdentityVerificationAttributesResponse -> TestTree
-responseGetIdentityVerificationAttributes = res
-    "GetIdentityVerificationAttributesResponse"
-    "fixture/GetIdentityVerificationAttributesResponse.proto"
-    ses
-    (Proxy :: Proxy GetIdentityVerificationAttributes)
-
-responseGetIdentityPolicies :: GetIdentityPoliciesResponse -> TestTree
-responseGetIdentityPolicies = res
-    "GetIdentityPoliciesResponse"
-    "fixture/GetIdentityPoliciesResponse.proto"
-    ses
-    (Proxy :: Proxy GetIdentityPolicies)
-
-responseListTemplates :: ListTemplatesResponse -> TestTree
-responseListTemplates = res
-    "ListTemplatesResponse"
-    "fixture/ListTemplatesResponse.proto"
-    ses
-    (Proxy :: Proxy ListTemplates)
-
-responseVerifyDomainIdentity :: VerifyDomainIdentityResponse -> TestTree
-responseVerifyDomainIdentity = res
-    "VerifyDomainIdentityResponse"
-    "fixture/VerifyDomainIdentityResponse.proto"
-    ses
-    (Proxy :: Proxy VerifyDomainIdentity)
-
-responseUpdateTemplate :: UpdateTemplateResponse -> TestTree
-responseUpdateTemplate = res
-    "UpdateTemplateResponse"
-    "fixture/UpdateTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateTemplate)
-
-responseDeleteTemplate :: DeleteTemplateResponse -> TestTree
-responseDeleteTemplate = res
-    "DeleteTemplateResponse"
-    "fixture/DeleteTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteTemplate)
-
-responseReorderReceiptRuleSet :: ReorderReceiptRuleSetResponse -> TestTree
-responseReorderReceiptRuleSet = res
-    "ReorderReceiptRuleSetResponse"
-    "fixture/ReorderReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy ReorderReceiptRuleSet)
-
-responseListReceiptRuleSets :: ListReceiptRuleSetsResponse -> TestTree
-responseListReceiptRuleSets = res
-    "ListReceiptRuleSetsResponse"
-    "fixture/ListReceiptRuleSetsResponse.proto"
-    ses
-    (Proxy :: Proxy ListReceiptRuleSets)
-
-responseDeleteReceiptRuleSet :: DeleteReceiptRuleSetResponse -> TestTree
-responseDeleteReceiptRuleSet = res
-    "DeleteReceiptRuleSetResponse"
-    "fixture/DeleteReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteReceiptRuleSet)
-
-responseSetReceiptRulePosition :: SetReceiptRulePositionResponse -> TestTree
-responseSetReceiptRulePosition = res
-    "SetReceiptRulePositionResponse"
-    "fixture/SetReceiptRulePositionResponse.proto"
-    ses
-    (Proxy :: Proxy SetReceiptRulePosition)
-
-responseSendBounce :: SendBounceResponse -> TestTree
-responseSendBounce = res
-    "SendBounceResponse"
-    "fixture/SendBounceResponse.proto"
-    ses
-    (Proxy :: Proxy SendBounce)
-
-responseGetIdentityDkimAttributes :: GetIdentityDkimAttributesResponse -> TestTree
-responseGetIdentityDkimAttributes = res
-    "GetIdentityDkimAttributesResponse"
-    "fixture/GetIdentityDkimAttributesResponse.proto"
-    ses
-    (Proxy :: Proxy GetIdentityDkimAttributes)
-
-responseSendTemplatedEmail :: SendTemplatedEmailResponse -> TestTree
-responseSendTemplatedEmail = res
-    "SendTemplatedEmailResponse"
-    "fixture/SendTemplatedEmailResponse.proto"
-    ses
-    (Proxy :: Proxy SendTemplatedEmail)
-
-responseVerifyDomainDkim :: VerifyDomainDkimResponse -> TestTree
-responseVerifyDomainDkim = res
-    "VerifyDomainDkimResponse"
-    "fixture/VerifyDomainDkimResponse.proto"
-    ses
-    (Proxy :: Proxy VerifyDomainDkim)
-
-responseTestRenderTemplate :: TestRenderTemplateResponse -> TestTree
-responseTestRenderTemplate = res
-    "TestRenderTemplateResponse"
-    "fixture/TestRenderTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy TestRenderTemplate)
-
-responseSendBulkTemplatedEmail :: SendBulkTemplatedEmailResponse -> TestTree
-responseSendBulkTemplatedEmail = res
-    "SendBulkTemplatedEmailResponse"
-    "fixture/SendBulkTemplatedEmailResponse.proto"
-    ses
-    (Proxy :: Proxy SendBulkTemplatedEmail)
-
-responseSendRawEmail :: SendRawEmailResponse -> TestTree
-responseSendRawEmail = res
-    "SendRawEmailResponse"
-    "fixture/SendRawEmailResponse.proto"
-    ses
-    (Proxy :: Proxy SendRawEmail)
-
-responseGetSendStatistics :: GetSendStatisticsResponse -> TestTree
-responseGetSendStatistics = res
-    "GetSendStatisticsResponse"
-    "fixture/GetSendStatisticsResponse.proto"
-    ses
-    (Proxy :: Proxy GetSendStatistics)
-
-responseListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplatesResponse -> TestTree
-responseListCustomVerificationEmailTemplates = res
-    "ListCustomVerificationEmailTemplatesResponse"
-    "fixture/ListCustomVerificationEmailTemplatesResponse.proto"
-    ses
-    (Proxy :: Proxy ListCustomVerificationEmailTemplates)
-
-responseDeleteIdentity :: DeleteIdentityResponse -> TestTree
-responseDeleteIdentity = res
-    "DeleteIdentityResponse"
-    "fixture/DeleteIdentityResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteIdentity)
-
-responseDescribeReceiptRule :: DescribeReceiptRuleResponse -> TestTree
-responseDescribeReceiptRule = res
-    "DescribeReceiptRuleResponse"
-    "fixture/DescribeReceiptRuleResponse.proto"
-    ses
-    (Proxy :: Proxy DescribeReceiptRule)
-
-responseListIdentities :: ListIdentitiesResponse -> TestTree
-responseListIdentities = res
-    "ListIdentitiesResponse"
-    "fixture/ListIdentitiesResponse.proto"
-    ses
-    (Proxy :: Proxy ListIdentities)
-
-responseUpdateConfigurationSetSendingEnabled :: UpdateConfigurationSetSendingEnabledResponse -> TestTree
-responseUpdateConfigurationSetSendingEnabled = res
-    "UpdateConfigurationSetSendingEnabledResponse"
-    "fixture/UpdateConfigurationSetSendingEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateConfigurationSetSendingEnabled)
-
-responseCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplateResponse -> TestTree
-responseCreateCustomVerificationEmailTemplate = res
-    "CreateCustomVerificationEmailTemplateResponse"
-    "fixture/CreateCustomVerificationEmailTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy CreateCustomVerificationEmailTemplate)
-
-responseVerifyEmailIdentity :: VerifyEmailIdentityResponse -> TestTree
-responseVerifyEmailIdentity = res
-    "VerifyEmailIdentityResponse"
-    "fixture/VerifyEmailIdentityResponse.proto"
-    ses
-    (Proxy :: Proxy VerifyEmailIdentity)
-
-responseVerifyEmailAddress :: VerifyEmailAddressResponse -> TestTree
-responseVerifyEmailAddress = res
-    "VerifyEmailAddressResponse"
-    "fixture/VerifyEmailAddressResponse.proto"
-    ses
-    (Proxy :: Proxy VerifyEmailAddress)
-
-responseDeleteVerifiedEmailAddress :: DeleteVerifiedEmailAddressResponse -> TestTree
-responseDeleteVerifiedEmailAddress = res
-    "DeleteVerifiedEmailAddressResponse"
-    "fixture/DeleteVerifiedEmailAddressResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteVerifiedEmailAddress)
-
-responseDeleteReceiptFilter :: DeleteReceiptFilterResponse -> TestTree
-responseDeleteReceiptFilter = res
-    "DeleteReceiptFilterResponse"
-    "fixture/DeleteReceiptFilterResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteReceiptFilter)
-
-responseListVerifiedEmailAddresses :: ListVerifiedEmailAddressesResponse -> TestTree
-responseListVerifiedEmailAddresses = res
-    "ListVerifiedEmailAddressesResponse"
-    "fixture/ListVerifiedEmailAddressesResponse.proto"
-    ses
-    (Proxy :: Proxy ListVerifiedEmailAddresses)
-
-responseGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplateResponse -> TestTree
-responseGetCustomVerificationEmailTemplate = res
-    "GetCustomVerificationEmailTemplateResponse"
-    "fixture/GetCustomVerificationEmailTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy GetCustomVerificationEmailTemplate)
-
-responseSetIdentityNotificationTopic :: SetIdentityNotificationTopicResponse -> TestTree
-responseSetIdentityNotificationTopic = res
-    "SetIdentityNotificationTopicResponse"
-    "fixture/SetIdentityNotificationTopicResponse.proto"
-    ses
-    (Proxy :: Proxy SetIdentityNotificationTopic)
-
-responseSendEmail :: SendEmailResponse -> TestTree
-responseSendEmail = res
-    "SendEmailResponse"
-    "fixture/SendEmailResponse.proto"
-    ses
-    (Proxy :: Proxy SendEmail)
-
-responseDeleteReceiptRule :: DeleteReceiptRuleResponse -> TestTree
-responseDeleteReceiptRule = res
-    "DeleteReceiptRuleResponse"
-    "fixture/DeleteReceiptRuleResponse.proto"
-    ses
-    (Proxy :: Proxy DeleteReceiptRule)
-
-responseUpdateReceiptRule :: UpdateReceiptRuleResponse -> TestTree
-responseUpdateReceiptRule = res
-    "UpdateReceiptRuleResponse"
-    "fixture/UpdateReceiptRuleResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateReceiptRule)
-
-responseCloneReceiptRuleSet :: CloneReceiptRuleSetResponse -> TestTree
-responseCloneReceiptRuleSet = res
-    "CloneReceiptRuleSetResponse"
-    "fixture/CloneReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy CloneReceiptRuleSet)
-
-responseCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestinationResponse -> TestTree
-responseCreateConfigurationSetEventDestination = res
-    "CreateConfigurationSetEventDestinationResponse"
-    "fixture/CreateConfigurationSetEventDestinationResponse.proto"
-    ses
-    (Proxy :: Proxy CreateConfigurationSetEventDestination)
-
-responseGetAccountSendingEnabled :: GetAccountSendingEnabledResponse -> TestTree
-responseGetAccountSendingEnabled = res
-    "GetAccountSendingEnabledResponse"
-    "fixture/GetAccountSendingEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy GetAccountSendingEnabled)
-
-responseCreateReceiptRule :: CreateReceiptRuleResponse -> TestTree
-responseCreateReceiptRule = res
-    "CreateReceiptRuleResponse"
-    "fixture/CreateReceiptRuleResponse.proto"
-    ses
-    (Proxy :: Proxy CreateReceiptRule)
-
-responseGetTemplate :: GetTemplateResponse -> TestTree
-responseGetTemplate = res
-    "GetTemplateResponse"
-    "fixture/GetTemplateResponse.proto"
-    ses
-    (Proxy :: Proxy GetTemplate)
-
-responseSetActiveReceiptRuleSet :: SetActiveReceiptRuleSetResponse -> TestTree
-responseSetActiveReceiptRuleSet = res
-    "SetActiveReceiptRuleSetResponse"
-    "fixture/SetActiveReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy SetActiveReceiptRuleSet)
-
-responseCreateConfigurationSet :: CreateConfigurationSetResponse -> TestTree
-responseCreateConfigurationSet = res
-    "CreateConfigurationSetResponse"
-    "fixture/CreateConfigurationSetResponse.proto"
-    ses
-    (Proxy :: Proxy CreateConfigurationSet)
-
-responseUpdateAccountSendingEnabled :: UpdateAccountSendingEnabledResponse -> TestTree
-responseUpdateAccountSendingEnabled = res
-    "UpdateAccountSendingEnabledResponse"
-    "fixture/UpdateAccountSendingEnabledResponse.proto"
-    ses
-    (Proxy :: Proxy UpdateAccountSendingEnabled)
-
-responseCreateConfigurationSetTrackingOptions :: CreateConfigurationSetTrackingOptionsResponse -> TestTree
-responseCreateConfigurationSetTrackingOptions = res
-    "CreateConfigurationSetTrackingOptionsResponse"
-    "fixture/CreateConfigurationSetTrackingOptionsResponse.proto"
-    ses
-    (Proxy :: Proxy CreateConfigurationSetTrackingOptions)
-
-responseDescribeActiveReceiptRuleSet :: DescribeActiveReceiptRuleSetResponse -> TestTree
-responseDescribeActiveReceiptRuleSet = res
-    "DescribeActiveReceiptRuleSetResponse"
-    "fixture/DescribeActiveReceiptRuleSetResponse.proto"
-    ses
-    (Proxy :: Proxy DescribeActiveReceiptRuleSet)
diff --git a/test/Test/AWS/SES.hs b/test/Test/AWS/SES.hs
deleted file mode 100644
--- a/test/Test/AWS/SES.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Module      : Test.AWS.SES
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.SES
-    ( tests
-    , fixtures
-    ) where
-
-import           Network.AWS.SES
-import           Test.AWS.Gen.SES
-import           Test.Tasty
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/SES/Internal.hs b/test/Test/AWS/SES/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/SES/Internal.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Test.AWS.SES.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.SES.Internal where
-
-import Test.AWS.Prelude
diff --git a/test/Test/Amazonka/Gen/SES.hs b/test/Test/Amazonka/Gen/SES.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/SES.hs
@@ -0,0 +1,1458 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.SES
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.SES where
+
+import Amazonka.SES
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.SES.Internal
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestCloneReceiptRuleSet $
+--             newCloneReceiptRuleSet
+--
+--         , requestCreateConfigurationSet $
+--             newCreateConfigurationSet
+--
+--         , requestCreateConfigurationSetEventDestination $
+--             newCreateConfigurationSetEventDestination
+--
+--         , requestCreateConfigurationSetTrackingOptions $
+--             newCreateConfigurationSetTrackingOptions
+--
+--         , requestCreateCustomVerificationEmailTemplate $
+--             newCreateCustomVerificationEmailTemplate
+--
+--         , requestCreateReceiptFilter $
+--             newCreateReceiptFilter
+--
+--         , requestCreateReceiptRule $
+--             newCreateReceiptRule
+--
+--         , requestCreateReceiptRuleSet $
+--             newCreateReceiptRuleSet
+--
+--         , requestCreateTemplate $
+--             newCreateTemplate
+--
+--         , requestDeleteConfigurationSet $
+--             newDeleteConfigurationSet
+--
+--         , requestDeleteConfigurationSetEventDestination $
+--             newDeleteConfigurationSetEventDestination
+--
+--         , requestDeleteConfigurationSetTrackingOptions $
+--             newDeleteConfigurationSetTrackingOptions
+--
+--         , requestDeleteCustomVerificationEmailTemplate $
+--             newDeleteCustomVerificationEmailTemplate
+--
+--         , requestDeleteIdentity $
+--             newDeleteIdentity
+--
+--         , requestDeleteIdentityPolicy $
+--             newDeleteIdentityPolicy
+--
+--         , requestDeleteReceiptFilter $
+--             newDeleteReceiptFilter
+--
+--         , requestDeleteReceiptRule $
+--             newDeleteReceiptRule
+--
+--         , requestDeleteReceiptRuleSet $
+--             newDeleteReceiptRuleSet
+--
+--         , requestDeleteTemplate $
+--             newDeleteTemplate
+--
+--         , requestDeleteVerifiedEmailAddress $
+--             newDeleteVerifiedEmailAddress
+--
+--         , requestDescribeActiveReceiptRuleSet $
+--             newDescribeActiveReceiptRuleSet
+--
+--         , requestDescribeConfigurationSet $
+--             newDescribeConfigurationSet
+--
+--         , requestDescribeReceiptRule $
+--             newDescribeReceiptRule
+--
+--         , requestDescribeReceiptRuleSet $
+--             newDescribeReceiptRuleSet
+--
+--         , requestGetAccountSendingEnabled $
+--             newGetAccountSendingEnabled
+--
+--         , requestGetCustomVerificationEmailTemplate $
+--             newGetCustomVerificationEmailTemplate
+--
+--         , requestGetIdentityDkimAttributes $
+--             newGetIdentityDkimAttributes
+--
+--         , requestGetIdentityMailFromDomainAttributes $
+--             newGetIdentityMailFromDomainAttributes
+--
+--         , requestGetIdentityNotificationAttributes $
+--             newGetIdentityNotificationAttributes
+--
+--         , requestGetIdentityPolicies $
+--             newGetIdentityPolicies
+--
+--         , requestGetIdentityVerificationAttributes $
+--             newGetIdentityVerificationAttributes
+--
+--         , requestGetSendQuota $
+--             newGetSendQuota
+--
+--         , requestGetSendStatistics $
+--             newGetSendStatistics
+--
+--         , requestGetTemplate $
+--             newGetTemplate
+--
+--         , requestListConfigurationSets $
+--             newListConfigurationSets
+--
+--         , requestListCustomVerificationEmailTemplates $
+--             newListCustomVerificationEmailTemplates
+--
+--         , requestListIdentities $
+--             newListIdentities
+--
+--         , requestListIdentityPolicies $
+--             newListIdentityPolicies
+--
+--         , requestListReceiptFilters $
+--             newListReceiptFilters
+--
+--         , requestListReceiptRuleSets $
+--             newListReceiptRuleSets
+--
+--         , requestListTemplates $
+--             newListTemplates
+--
+--         , requestListVerifiedEmailAddresses $
+--             newListVerifiedEmailAddresses
+--
+--         , requestPutConfigurationSetDeliveryOptions $
+--             newPutConfigurationSetDeliveryOptions
+--
+--         , requestPutIdentityPolicy $
+--             newPutIdentityPolicy
+--
+--         , requestReorderReceiptRuleSet $
+--             newReorderReceiptRuleSet
+--
+--         , requestSendBounce $
+--             newSendBounce
+--
+--         , requestSendBulkTemplatedEmail $
+--             newSendBulkTemplatedEmail
+--
+--         , requestSendCustomVerificationEmail $
+--             newSendCustomVerificationEmail
+--
+--         , requestSendEmail $
+--             newSendEmail
+--
+--         , requestSendRawEmail $
+--             newSendRawEmail
+--
+--         , requestSendTemplatedEmail $
+--             newSendTemplatedEmail
+--
+--         , requestSetActiveReceiptRuleSet $
+--             newSetActiveReceiptRuleSet
+--
+--         , requestSetIdentityDkimEnabled $
+--             newSetIdentityDkimEnabled
+--
+--         , requestSetIdentityFeedbackForwardingEnabled $
+--             newSetIdentityFeedbackForwardingEnabled
+--
+--         , requestSetIdentityHeadersInNotificationsEnabled $
+--             newSetIdentityHeadersInNotificationsEnabled
+--
+--         , requestSetIdentityMailFromDomain $
+--             newSetIdentityMailFromDomain
+--
+--         , requestSetIdentityNotificationTopic $
+--             newSetIdentityNotificationTopic
+--
+--         , requestSetReceiptRulePosition $
+--             newSetReceiptRulePosition
+--
+--         , requestTestRenderTemplate $
+--             newTestRenderTemplate
+--
+--         , requestUpdateAccountSendingEnabled $
+--             newUpdateAccountSendingEnabled
+--
+--         , requestUpdateConfigurationSetEventDestination $
+--             newUpdateConfigurationSetEventDestination
+--
+--         , requestUpdateConfigurationSetReputationMetricsEnabled $
+--             newUpdateConfigurationSetReputationMetricsEnabled
+--
+--         , requestUpdateConfigurationSetSendingEnabled $
+--             newUpdateConfigurationSetSendingEnabled
+--
+--         , requestUpdateConfigurationSetTrackingOptions $
+--             newUpdateConfigurationSetTrackingOptions
+--
+--         , requestUpdateCustomVerificationEmailTemplate $
+--             newUpdateCustomVerificationEmailTemplate
+--
+--         , requestUpdateReceiptRule $
+--             newUpdateReceiptRule
+--
+--         , requestUpdateTemplate $
+--             newUpdateTemplate
+--
+--         , requestVerifyDomainDkim $
+--             newVerifyDomainDkim
+--
+--         , requestVerifyDomainIdentity $
+--             newVerifyDomainIdentity
+--
+--         , requestVerifyEmailAddress $
+--             newVerifyEmailAddress
+--
+--         , requestVerifyEmailIdentity $
+--             newVerifyEmailIdentity
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseCloneReceiptRuleSet $
+--             newCloneReceiptRuleSetResponse
+--
+--         , responseCreateConfigurationSet $
+--             newCreateConfigurationSetResponse
+--
+--         , responseCreateConfigurationSetEventDestination $
+--             newCreateConfigurationSetEventDestinationResponse
+--
+--         , responseCreateConfigurationSetTrackingOptions $
+--             newCreateConfigurationSetTrackingOptionsResponse
+--
+--         , responseCreateCustomVerificationEmailTemplate $
+--             newCreateCustomVerificationEmailTemplateResponse
+--
+--         , responseCreateReceiptFilter $
+--             newCreateReceiptFilterResponse
+--
+--         , responseCreateReceiptRule $
+--             newCreateReceiptRuleResponse
+--
+--         , responseCreateReceiptRuleSet $
+--             newCreateReceiptRuleSetResponse
+--
+--         , responseCreateTemplate $
+--             newCreateTemplateResponse
+--
+--         , responseDeleteConfigurationSet $
+--             newDeleteConfigurationSetResponse
+--
+--         , responseDeleteConfigurationSetEventDestination $
+--             newDeleteConfigurationSetEventDestinationResponse
+--
+--         , responseDeleteConfigurationSetTrackingOptions $
+--             newDeleteConfigurationSetTrackingOptionsResponse
+--
+--         , responseDeleteCustomVerificationEmailTemplate $
+--             newDeleteCustomVerificationEmailTemplateResponse
+--
+--         , responseDeleteIdentity $
+--             newDeleteIdentityResponse
+--
+--         , responseDeleteIdentityPolicy $
+--             newDeleteIdentityPolicyResponse
+--
+--         , responseDeleteReceiptFilter $
+--             newDeleteReceiptFilterResponse
+--
+--         , responseDeleteReceiptRule $
+--             newDeleteReceiptRuleResponse
+--
+--         , responseDeleteReceiptRuleSet $
+--             newDeleteReceiptRuleSetResponse
+--
+--         , responseDeleteTemplate $
+--             newDeleteTemplateResponse
+--
+--         , responseDeleteVerifiedEmailAddress $
+--             newDeleteVerifiedEmailAddressResponse
+--
+--         , responseDescribeActiveReceiptRuleSet $
+--             newDescribeActiveReceiptRuleSetResponse
+--
+--         , responseDescribeConfigurationSet $
+--             newDescribeConfigurationSetResponse
+--
+--         , responseDescribeReceiptRule $
+--             newDescribeReceiptRuleResponse
+--
+--         , responseDescribeReceiptRuleSet $
+--             newDescribeReceiptRuleSetResponse
+--
+--         , responseGetAccountSendingEnabled $
+--             newGetAccountSendingEnabledResponse
+--
+--         , responseGetCustomVerificationEmailTemplate $
+--             newGetCustomVerificationEmailTemplateResponse
+--
+--         , responseGetIdentityDkimAttributes $
+--             newGetIdentityDkimAttributesResponse
+--
+--         , responseGetIdentityMailFromDomainAttributes $
+--             newGetIdentityMailFromDomainAttributesResponse
+--
+--         , responseGetIdentityNotificationAttributes $
+--             newGetIdentityNotificationAttributesResponse
+--
+--         , responseGetIdentityPolicies $
+--             newGetIdentityPoliciesResponse
+--
+--         , responseGetIdentityVerificationAttributes $
+--             newGetIdentityVerificationAttributesResponse
+--
+--         , responseGetSendQuota $
+--             newGetSendQuotaResponse
+--
+--         , responseGetSendStatistics $
+--             newGetSendStatisticsResponse
+--
+--         , responseGetTemplate $
+--             newGetTemplateResponse
+--
+--         , responseListConfigurationSets $
+--             newListConfigurationSetsResponse
+--
+--         , responseListCustomVerificationEmailTemplates $
+--             newListCustomVerificationEmailTemplatesResponse
+--
+--         , responseListIdentities $
+--             newListIdentitiesResponse
+--
+--         , responseListIdentityPolicies $
+--             newListIdentityPoliciesResponse
+--
+--         , responseListReceiptFilters $
+--             newListReceiptFiltersResponse
+--
+--         , responseListReceiptRuleSets $
+--             newListReceiptRuleSetsResponse
+--
+--         , responseListTemplates $
+--             newListTemplatesResponse
+--
+--         , responseListVerifiedEmailAddresses $
+--             newListVerifiedEmailAddressesResponse
+--
+--         , responsePutConfigurationSetDeliveryOptions $
+--             newPutConfigurationSetDeliveryOptionsResponse
+--
+--         , responsePutIdentityPolicy $
+--             newPutIdentityPolicyResponse
+--
+--         , responseReorderReceiptRuleSet $
+--             newReorderReceiptRuleSetResponse
+--
+--         , responseSendBounce $
+--             newSendBounceResponse
+--
+--         , responseSendBulkTemplatedEmail $
+--             newSendBulkTemplatedEmailResponse
+--
+--         , responseSendCustomVerificationEmail $
+--             newSendCustomVerificationEmailResponse
+--
+--         , responseSendEmail $
+--             newSendEmailResponse
+--
+--         , responseSendRawEmail $
+--             newSendRawEmailResponse
+--
+--         , responseSendTemplatedEmail $
+--             newSendTemplatedEmailResponse
+--
+--         , responseSetActiveReceiptRuleSet $
+--             newSetActiveReceiptRuleSetResponse
+--
+--         , responseSetIdentityDkimEnabled $
+--             newSetIdentityDkimEnabledResponse
+--
+--         , responseSetIdentityFeedbackForwardingEnabled $
+--             newSetIdentityFeedbackForwardingEnabledResponse
+--
+--         , responseSetIdentityHeadersInNotificationsEnabled $
+--             newSetIdentityHeadersInNotificationsEnabledResponse
+--
+--         , responseSetIdentityMailFromDomain $
+--             newSetIdentityMailFromDomainResponse
+--
+--         , responseSetIdentityNotificationTopic $
+--             newSetIdentityNotificationTopicResponse
+--
+--         , responseSetReceiptRulePosition $
+--             newSetReceiptRulePositionResponse
+--
+--         , responseTestRenderTemplate $
+--             newTestRenderTemplateResponse
+--
+--         , responseUpdateAccountSendingEnabled $
+--             newUpdateAccountSendingEnabledResponse
+--
+--         , responseUpdateConfigurationSetEventDestination $
+--             newUpdateConfigurationSetEventDestinationResponse
+--
+--         , responseUpdateConfigurationSetReputationMetricsEnabled $
+--             newUpdateConfigurationSetReputationMetricsEnabledResponse
+--
+--         , responseUpdateConfigurationSetSendingEnabled $
+--             newUpdateConfigurationSetSendingEnabledResponse
+--
+--         , responseUpdateConfigurationSetTrackingOptions $
+--             newUpdateConfigurationSetTrackingOptionsResponse
+--
+--         , responseUpdateCustomVerificationEmailTemplate $
+--             newUpdateCustomVerificationEmailTemplateResponse
+--
+--         , responseUpdateReceiptRule $
+--             newUpdateReceiptRuleResponse
+--
+--         , responseUpdateTemplate $
+--             newUpdateTemplateResponse
+--
+--         , responseVerifyDomainDkim $
+--             newVerifyDomainDkimResponse
+--
+--         , responseVerifyDomainIdentity $
+--             newVerifyDomainIdentityResponse
+--
+--         , responseVerifyEmailAddress $
+--             newVerifyEmailAddressResponse
+--
+--         , responseVerifyEmailIdentity $
+--             newVerifyEmailIdentityResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestCloneReceiptRuleSet :: CloneReceiptRuleSet -> TestTree
+requestCloneReceiptRuleSet =
+  req
+    "CloneReceiptRuleSet"
+    "fixture/CloneReceiptRuleSet.yaml"
+
+requestCreateConfigurationSet :: CreateConfigurationSet -> TestTree
+requestCreateConfigurationSet =
+  req
+    "CreateConfigurationSet"
+    "fixture/CreateConfigurationSet.yaml"
+
+requestCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestination -> TestTree
+requestCreateConfigurationSetEventDestination =
+  req
+    "CreateConfigurationSetEventDestination"
+    "fixture/CreateConfigurationSetEventDestination.yaml"
+
+requestCreateConfigurationSetTrackingOptions :: CreateConfigurationSetTrackingOptions -> TestTree
+requestCreateConfigurationSetTrackingOptions =
+  req
+    "CreateConfigurationSetTrackingOptions"
+    "fixture/CreateConfigurationSetTrackingOptions.yaml"
+
+requestCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplate -> TestTree
+requestCreateCustomVerificationEmailTemplate =
+  req
+    "CreateCustomVerificationEmailTemplate"
+    "fixture/CreateCustomVerificationEmailTemplate.yaml"
+
+requestCreateReceiptFilter :: CreateReceiptFilter -> TestTree
+requestCreateReceiptFilter =
+  req
+    "CreateReceiptFilter"
+    "fixture/CreateReceiptFilter.yaml"
+
+requestCreateReceiptRule :: CreateReceiptRule -> TestTree
+requestCreateReceiptRule =
+  req
+    "CreateReceiptRule"
+    "fixture/CreateReceiptRule.yaml"
+
+requestCreateReceiptRuleSet :: CreateReceiptRuleSet -> TestTree
+requestCreateReceiptRuleSet =
+  req
+    "CreateReceiptRuleSet"
+    "fixture/CreateReceiptRuleSet.yaml"
+
+requestCreateTemplate :: CreateTemplate -> TestTree
+requestCreateTemplate =
+  req
+    "CreateTemplate"
+    "fixture/CreateTemplate.yaml"
+
+requestDeleteConfigurationSet :: DeleteConfigurationSet -> TestTree
+requestDeleteConfigurationSet =
+  req
+    "DeleteConfigurationSet"
+    "fixture/DeleteConfigurationSet.yaml"
+
+requestDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestination -> TestTree
+requestDeleteConfigurationSetEventDestination =
+  req
+    "DeleteConfigurationSetEventDestination"
+    "fixture/DeleteConfigurationSetEventDestination.yaml"
+
+requestDeleteConfigurationSetTrackingOptions :: DeleteConfigurationSetTrackingOptions -> TestTree
+requestDeleteConfigurationSetTrackingOptions =
+  req
+    "DeleteConfigurationSetTrackingOptions"
+    "fixture/DeleteConfigurationSetTrackingOptions.yaml"
+
+requestDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplate -> TestTree
+requestDeleteCustomVerificationEmailTemplate =
+  req
+    "DeleteCustomVerificationEmailTemplate"
+    "fixture/DeleteCustomVerificationEmailTemplate.yaml"
+
+requestDeleteIdentity :: DeleteIdentity -> TestTree
+requestDeleteIdentity =
+  req
+    "DeleteIdentity"
+    "fixture/DeleteIdentity.yaml"
+
+requestDeleteIdentityPolicy :: DeleteIdentityPolicy -> TestTree
+requestDeleteIdentityPolicy =
+  req
+    "DeleteIdentityPolicy"
+    "fixture/DeleteIdentityPolicy.yaml"
+
+requestDeleteReceiptFilter :: DeleteReceiptFilter -> TestTree
+requestDeleteReceiptFilter =
+  req
+    "DeleteReceiptFilter"
+    "fixture/DeleteReceiptFilter.yaml"
+
+requestDeleteReceiptRule :: DeleteReceiptRule -> TestTree
+requestDeleteReceiptRule =
+  req
+    "DeleteReceiptRule"
+    "fixture/DeleteReceiptRule.yaml"
+
+requestDeleteReceiptRuleSet :: DeleteReceiptRuleSet -> TestTree
+requestDeleteReceiptRuleSet =
+  req
+    "DeleteReceiptRuleSet"
+    "fixture/DeleteReceiptRuleSet.yaml"
+
+requestDeleteTemplate :: DeleteTemplate -> TestTree
+requestDeleteTemplate =
+  req
+    "DeleteTemplate"
+    "fixture/DeleteTemplate.yaml"
+
+requestDeleteVerifiedEmailAddress :: DeleteVerifiedEmailAddress -> TestTree
+requestDeleteVerifiedEmailAddress =
+  req
+    "DeleteVerifiedEmailAddress"
+    "fixture/DeleteVerifiedEmailAddress.yaml"
+
+requestDescribeActiveReceiptRuleSet :: DescribeActiveReceiptRuleSet -> TestTree
+requestDescribeActiveReceiptRuleSet =
+  req
+    "DescribeActiveReceiptRuleSet"
+    "fixture/DescribeActiveReceiptRuleSet.yaml"
+
+requestDescribeConfigurationSet :: DescribeConfigurationSet -> TestTree
+requestDescribeConfigurationSet =
+  req
+    "DescribeConfigurationSet"
+    "fixture/DescribeConfigurationSet.yaml"
+
+requestDescribeReceiptRule :: DescribeReceiptRule -> TestTree
+requestDescribeReceiptRule =
+  req
+    "DescribeReceiptRule"
+    "fixture/DescribeReceiptRule.yaml"
+
+requestDescribeReceiptRuleSet :: DescribeReceiptRuleSet -> TestTree
+requestDescribeReceiptRuleSet =
+  req
+    "DescribeReceiptRuleSet"
+    "fixture/DescribeReceiptRuleSet.yaml"
+
+requestGetAccountSendingEnabled :: GetAccountSendingEnabled -> TestTree
+requestGetAccountSendingEnabled =
+  req
+    "GetAccountSendingEnabled"
+    "fixture/GetAccountSendingEnabled.yaml"
+
+requestGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplate -> TestTree
+requestGetCustomVerificationEmailTemplate =
+  req
+    "GetCustomVerificationEmailTemplate"
+    "fixture/GetCustomVerificationEmailTemplate.yaml"
+
+requestGetIdentityDkimAttributes :: GetIdentityDkimAttributes -> TestTree
+requestGetIdentityDkimAttributes =
+  req
+    "GetIdentityDkimAttributes"
+    "fixture/GetIdentityDkimAttributes.yaml"
+
+requestGetIdentityMailFromDomainAttributes :: GetIdentityMailFromDomainAttributes -> TestTree
+requestGetIdentityMailFromDomainAttributes =
+  req
+    "GetIdentityMailFromDomainAttributes"
+    "fixture/GetIdentityMailFromDomainAttributes.yaml"
+
+requestGetIdentityNotificationAttributes :: GetIdentityNotificationAttributes -> TestTree
+requestGetIdentityNotificationAttributes =
+  req
+    "GetIdentityNotificationAttributes"
+    "fixture/GetIdentityNotificationAttributes.yaml"
+
+requestGetIdentityPolicies :: GetIdentityPolicies -> TestTree
+requestGetIdentityPolicies =
+  req
+    "GetIdentityPolicies"
+    "fixture/GetIdentityPolicies.yaml"
+
+requestGetIdentityVerificationAttributes :: GetIdentityVerificationAttributes -> TestTree
+requestGetIdentityVerificationAttributes =
+  req
+    "GetIdentityVerificationAttributes"
+    "fixture/GetIdentityVerificationAttributes.yaml"
+
+requestGetSendQuota :: GetSendQuota -> TestTree
+requestGetSendQuota =
+  req
+    "GetSendQuota"
+    "fixture/GetSendQuota.yaml"
+
+requestGetSendStatistics :: GetSendStatistics -> TestTree
+requestGetSendStatistics =
+  req
+    "GetSendStatistics"
+    "fixture/GetSendStatistics.yaml"
+
+requestGetTemplate :: GetTemplate -> TestTree
+requestGetTemplate =
+  req
+    "GetTemplate"
+    "fixture/GetTemplate.yaml"
+
+requestListConfigurationSets :: ListConfigurationSets -> TestTree
+requestListConfigurationSets =
+  req
+    "ListConfigurationSets"
+    "fixture/ListConfigurationSets.yaml"
+
+requestListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplates -> TestTree
+requestListCustomVerificationEmailTemplates =
+  req
+    "ListCustomVerificationEmailTemplates"
+    "fixture/ListCustomVerificationEmailTemplates.yaml"
+
+requestListIdentities :: ListIdentities -> TestTree
+requestListIdentities =
+  req
+    "ListIdentities"
+    "fixture/ListIdentities.yaml"
+
+requestListIdentityPolicies :: ListIdentityPolicies -> TestTree
+requestListIdentityPolicies =
+  req
+    "ListIdentityPolicies"
+    "fixture/ListIdentityPolicies.yaml"
+
+requestListReceiptFilters :: ListReceiptFilters -> TestTree
+requestListReceiptFilters =
+  req
+    "ListReceiptFilters"
+    "fixture/ListReceiptFilters.yaml"
+
+requestListReceiptRuleSets :: ListReceiptRuleSets -> TestTree
+requestListReceiptRuleSets =
+  req
+    "ListReceiptRuleSets"
+    "fixture/ListReceiptRuleSets.yaml"
+
+requestListTemplates :: ListTemplates -> TestTree
+requestListTemplates =
+  req
+    "ListTemplates"
+    "fixture/ListTemplates.yaml"
+
+requestListVerifiedEmailAddresses :: ListVerifiedEmailAddresses -> TestTree
+requestListVerifiedEmailAddresses =
+  req
+    "ListVerifiedEmailAddresses"
+    "fixture/ListVerifiedEmailAddresses.yaml"
+
+requestPutConfigurationSetDeliveryOptions :: PutConfigurationSetDeliveryOptions -> TestTree
+requestPutConfigurationSetDeliveryOptions =
+  req
+    "PutConfigurationSetDeliveryOptions"
+    "fixture/PutConfigurationSetDeliveryOptions.yaml"
+
+requestPutIdentityPolicy :: PutIdentityPolicy -> TestTree
+requestPutIdentityPolicy =
+  req
+    "PutIdentityPolicy"
+    "fixture/PutIdentityPolicy.yaml"
+
+requestReorderReceiptRuleSet :: ReorderReceiptRuleSet -> TestTree
+requestReorderReceiptRuleSet =
+  req
+    "ReorderReceiptRuleSet"
+    "fixture/ReorderReceiptRuleSet.yaml"
+
+requestSendBounce :: SendBounce -> TestTree
+requestSendBounce =
+  req
+    "SendBounce"
+    "fixture/SendBounce.yaml"
+
+requestSendBulkTemplatedEmail :: SendBulkTemplatedEmail -> TestTree
+requestSendBulkTemplatedEmail =
+  req
+    "SendBulkTemplatedEmail"
+    "fixture/SendBulkTemplatedEmail.yaml"
+
+requestSendCustomVerificationEmail :: SendCustomVerificationEmail -> TestTree
+requestSendCustomVerificationEmail =
+  req
+    "SendCustomVerificationEmail"
+    "fixture/SendCustomVerificationEmail.yaml"
+
+requestSendEmail :: SendEmail -> TestTree
+requestSendEmail =
+  req
+    "SendEmail"
+    "fixture/SendEmail.yaml"
+
+requestSendRawEmail :: SendRawEmail -> TestTree
+requestSendRawEmail =
+  req
+    "SendRawEmail"
+    "fixture/SendRawEmail.yaml"
+
+requestSendTemplatedEmail :: SendTemplatedEmail -> TestTree
+requestSendTemplatedEmail =
+  req
+    "SendTemplatedEmail"
+    "fixture/SendTemplatedEmail.yaml"
+
+requestSetActiveReceiptRuleSet :: SetActiveReceiptRuleSet -> TestTree
+requestSetActiveReceiptRuleSet =
+  req
+    "SetActiveReceiptRuleSet"
+    "fixture/SetActiveReceiptRuleSet.yaml"
+
+requestSetIdentityDkimEnabled :: SetIdentityDkimEnabled -> TestTree
+requestSetIdentityDkimEnabled =
+  req
+    "SetIdentityDkimEnabled"
+    "fixture/SetIdentityDkimEnabled.yaml"
+
+requestSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabled -> TestTree
+requestSetIdentityFeedbackForwardingEnabled =
+  req
+    "SetIdentityFeedbackForwardingEnabled"
+    "fixture/SetIdentityFeedbackForwardingEnabled.yaml"
+
+requestSetIdentityHeadersInNotificationsEnabled :: SetIdentityHeadersInNotificationsEnabled -> TestTree
+requestSetIdentityHeadersInNotificationsEnabled =
+  req
+    "SetIdentityHeadersInNotificationsEnabled"
+    "fixture/SetIdentityHeadersInNotificationsEnabled.yaml"
+
+requestSetIdentityMailFromDomain :: SetIdentityMailFromDomain -> TestTree
+requestSetIdentityMailFromDomain =
+  req
+    "SetIdentityMailFromDomain"
+    "fixture/SetIdentityMailFromDomain.yaml"
+
+requestSetIdentityNotificationTopic :: SetIdentityNotificationTopic -> TestTree
+requestSetIdentityNotificationTopic =
+  req
+    "SetIdentityNotificationTopic"
+    "fixture/SetIdentityNotificationTopic.yaml"
+
+requestSetReceiptRulePosition :: SetReceiptRulePosition -> TestTree
+requestSetReceiptRulePosition =
+  req
+    "SetReceiptRulePosition"
+    "fixture/SetReceiptRulePosition.yaml"
+
+requestTestRenderTemplate :: TestRenderTemplate -> TestTree
+requestTestRenderTemplate =
+  req
+    "TestRenderTemplate"
+    "fixture/TestRenderTemplate.yaml"
+
+requestUpdateAccountSendingEnabled :: UpdateAccountSendingEnabled -> TestTree
+requestUpdateAccountSendingEnabled =
+  req
+    "UpdateAccountSendingEnabled"
+    "fixture/UpdateAccountSendingEnabled.yaml"
+
+requestUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestination -> TestTree
+requestUpdateConfigurationSetEventDestination =
+  req
+    "UpdateConfigurationSetEventDestination"
+    "fixture/UpdateConfigurationSetEventDestination.yaml"
+
+requestUpdateConfigurationSetReputationMetricsEnabled :: UpdateConfigurationSetReputationMetricsEnabled -> TestTree
+requestUpdateConfigurationSetReputationMetricsEnabled =
+  req
+    "UpdateConfigurationSetReputationMetricsEnabled"
+    "fixture/UpdateConfigurationSetReputationMetricsEnabled.yaml"
+
+requestUpdateConfigurationSetSendingEnabled :: UpdateConfigurationSetSendingEnabled -> TestTree
+requestUpdateConfigurationSetSendingEnabled =
+  req
+    "UpdateConfigurationSetSendingEnabled"
+    "fixture/UpdateConfigurationSetSendingEnabled.yaml"
+
+requestUpdateConfigurationSetTrackingOptions :: UpdateConfigurationSetTrackingOptions -> TestTree
+requestUpdateConfigurationSetTrackingOptions =
+  req
+    "UpdateConfigurationSetTrackingOptions"
+    "fixture/UpdateConfigurationSetTrackingOptions.yaml"
+
+requestUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplate -> TestTree
+requestUpdateCustomVerificationEmailTemplate =
+  req
+    "UpdateCustomVerificationEmailTemplate"
+    "fixture/UpdateCustomVerificationEmailTemplate.yaml"
+
+requestUpdateReceiptRule :: UpdateReceiptRule -> TestTree
+requestUpdateReceiptRule =
+  req
+    "UpdateReceiptRule"
+    "fixture/UpdateReceiptRule.yaml"
+
+requestUpdateTemplate :: UpdateTemplate -> TestTree
+requestUpdateTemplate =
+  req
+    "UpdateTemplate"
+    "fixture/UpdateTemplate.yaml"
+
+requestVerifyDomainDkim :: VerifyDomainDkim -> TestTree
+requestVerifyDomainDkim =
+  req
+    "VerifyDomainDkim"
+    "fixture/VerifyDomainDkim.yaml"
+
+requestVerifyDomainIdentity :: VerifyDomainIdentity -> TestTree
+requestVerifyDomainIdentity =
+  req
+    "VerifyDomainIdentity"
+    "fixture/VerifyDomainIdentity.yaml"
+
+requestVerifyEmailAddress :: VerifyEmailAddress -> TestTree
+requestVerifyEmailAddress =
+  req
+    "VerifyEmailAddress"
+    "fixture/VerifyEmailAddress.yaml"
+
+requestVerifyEmailIdentity :: VerifyEmailIdentity -> TestTree
+requestVerifyEmailIdentity =
+  req
+    "VerifyEmailIdentity"
+    "fixture/VerifyEmailIdentity.yaml"
+
+-- Responses
+
+responseCloneReceiptRuleSet :: CloneReceiptRuleSetResponse -> TestTree
+responseCloneReceiptRuleSet =
+  res
+    "CloneReceiptRuleSetResponse"
+    "fixture/CloneReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CloneReceiptRuleSet)
+
+responseCreateConfigurationSet :: CreateConfigurationSetResponse -> TestTree
+responseCreateConfigurationSet =
+  res
+    "CreateConfigurationSetResponse"
+    "fixture/CreateConfigurationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConfigurationSet)
+
+responseCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestinationResponse -> TestTree
+responseCreateConfigurationSetEventDestination =
+  res
+    "CreateConfigurationSetEventDestinationResponse"
+    "fixture/CreateConfigurationSetEventDestinationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConfigurationSetEventDestination)
+
+responseCreateConfigurationSetTrackingOptions :: CreateConfigurationSetTrackingOptionsResponse -> TestTree
+responseCreateConfigurationSetTrackingOptions =
+  res
+    "CreateConfigurationSetTrackingOptionsResponse"
+    "fixture/CreateConfigurationSetTrackingOptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateConfigurationSetTrackingOptions)
+
+responseCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplateResponse -> TestTree
+responseCreateCustomVerificationEmailTemplate =
+  res
+    "CreateCustomVerificationEmailTemplateResponse"
+    "fixture/CreateCustomVerificationEmailTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCustomVerificationEmailTemplate)
+
+responseCreateReceiptFilter :: CreateReceiptFilterResponse -> TestTree
+responseCreateReceiptFilter =
+  res
+    "CreateReceiptFilterResponse"
+    "fixture/CreateReceiptFilterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateReceiptFilter)
+
+responseCreateReceiptRule :: CreateReceiptRuleResponse -> TestTree
+responseCreateReceiptRule =
+  res
+    "CreateReceiptRuleResponse"
+    "fixture/CreateReceiptRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateReceiptRule)
+
+responseCreateReceiptRuleSet :: CreateReceiptRuleSetResponse -> TestTree
+responseCreateReceiptRuleSet =
+  res
+    "CreateReceiptRuleSetResponse"
+    "fixture/CreateReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateReceiptRuleSet)
+
+responseCreateTemplate :: CreateTemplateResponse -> TestTree
+responseCreateTemplate =
+  res
+    "CreateTemplateResponse"
+    "fixture/CreateTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateTemplate)
+
+responseDeleteConfigurationSet :: DeleteConfigurationSetResponse -> TestTree
+responseDeleteConfigurationSet =
+  res
+    "DeleteConfigurationSetResponse"
+    "fixture/DeleteConfigurationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConfigurationSet)
+
+responseDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestinationResponse -> TestTree
+responseDeleteConfigurationSetEventDestination =
+  res
+    "DeleteConfigurationSetEventDestinationResponse"
+    "fixture/DeleteConfigurationSetEventDestinationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConfigurationSetEventDestination)
+
+responseDeleteConfigurationSetTrackingOptions :: DeleteConfigurationSetTrackingOptionsResponse -> TestTree
+responseDeleteConfigurationSetTrackingOptions =
+  res
+    "DeleteConfigurationSetTrackingOptionsResponse"
+    "fixture/DeleteConfigurationSetTrackingOptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteConfigurationSetTrackingOptions)
+
+responseDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplateResponse -> TestTree
+responseDeleteCustomVerificationEmailTemplate =
+  res
+    "DeleteCustomVerificationEmailTemplateResponse"
+    "fixture/DeleteCustomVerificationEmailTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomVerificationEmailTemplate)
+
+responseDeleteIdentity :: DeleteIdentityResponse -> TestTree
+responseDeleteIdentity =
+  res
+    "DeleteIdentityResponse"
+    "fixture/DeleteIdentityResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteIdentity)
+
+responseDeleteIdentityPolicy :: DeleteIdentityPolicyResponse -> TestTree
+responseDeleteIdentityPolicy =
+  res
+    "DeleteIdentityPolicyResponse"
+    "fixture/DeleteIdentityPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteIdentityPolicy)
+
+responseDeleteReceiptFilter :: DeleteReceiptFilterResponse -> TestTree
+responseDeleteReceiptFilter =
+  res
+    "DeleteReceiptFilterResponse"
+    "fixture/DeleteReceiptFilterResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteReceiptFilter)
+
+responseDeleteReceiptRule :: DeleteReceiptRuleResponse -> TestTree
+responseDeleteReceiptRule =
+  res
+    "DeleteReceiptRuleResponse"
+    "fixture/DeleteReceiptRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteReceiptRule)
+
+responseDeleteReceiptRuleSet :: DeleteReceiptRuleSetResponse -> TestTree
+responseDeleteReceiptRuleSet =
+  res
+    "DeleteReceiptRuleSetResponse"
+    "fixture/DeleteReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteReceiptRuleSet)
+
+responseDeleteTemplate :: DeleteTemplateResponse -> TestTree
+responseDeleteTemplate =
+  res
+    "DeleteTemplateResponse"
+    "fixture/DeleteTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteTemplate)
+
+responseDeleteVerifiedEmailAddress :: DeleteVerifiedEmailAddressResponse -> TestTree
+responseDeleteVerifiedEmailAddress =
+  res
+    "DeleteVerifiedEmailAddressResponse"
+    "fixture/DeleteVerifiedEmailAddressResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteVerifiedEmailAddress)
+
+responseDescribeActiveReceiptRuleSet :: DescribeActiveReceiptRuleSetResponse -> TestTree
+responseDescribeActiveReceiptRuleSet =
+  res
+    "DescribeActiveReceiptRuleSetResponse"
+    "fixture/DescribeActiveReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeActiveReceiptRuleSet)
+
+responseDescribeConfigurationSet :: DescribeConfigurationSetResponse -> TestTree
+responseDescribeConfigurationSet =
+  res
+    "DescribeConfigurationSetResponse"
+    "fixture/DescribeConfigurationSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeConfigurationSet)
+
+responseDescribeReceiptRule :: DescribeReceiptRuleResponse -> TestTree
+responseDescribeReceiptRule =
+  res
+    "DescribeReceiptRuleResponse"
+    "fixture/DescribeReceiptRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeReceiptRule)
+
+responseDescribeReceiptRuleSet :: DescribeReceiptRuleSetResponse -> TestTree
+responseDescribeReceiptRuleSet =
+  res
+    "DescribeReceiptRuleSetResponse"
+    "fixture/DescribeReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeReceiptRuleSet)
+
+responseGetAccountSendingEnabled :: GetAccountSendingEnabledResponse -> TestTree
+responseGetAccountSendingEnabled =
+  res
+    "GetAccountSendingEnabledResponse"
+    "fixture/GetAccountSendingEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetAccountSendingEnabled)
+
+responseGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplateResponse -> TestTree
+responseGetCustomVerificationEmailTemplate =
+  res
+    "GetCustomVerificationEmailTemplateResponse"
+    "fixture/GetCustomVerificationEmailTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCustomVerificationEmailTemplate)
+
+responseGetIdentityDkimAttributes :: GetIdentityDkimAttributesResponse -> TestTree
+responseGetIdentityDkimAttributes =
+  res
+    "GetIdentityDkimAttributesResponse"
+    "fixture/GetIdentityDkimAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityDkimAttributes)
+
+responseGetIdentityMailFromDomainAttributes :: GetIdentityMailFromDomainAttributesResponse -> TestTree
+responseGetIdentityMailFromDomainAttributes =
+  res
+    "GetIdentityMailFromDomainAttributesResponse"
+    "fixture/GetIdentityMailFromDomainAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityMailFromDomainAttributes)
+
+responseGetIdentityNotificationAttributes :: GetIdentityNotificationAttributesResponse -> TestTree
+responseGetIdentityNotificationAttributes =
+  res
+    "GetIdentityNotificationAttributesResponse"
+    "fixture/GetIdentityNotificationAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityNotificationAttributes)
+
+responseGetIdentityPolicies :: GetIdentityPoliciesResponse -> TestTree
+responseGetIdentityPolicies =
+  res
+    "GetIdentityPoliciesResponse"
+    "fixture/GetIdentityPoliciesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityPolicies)
+
+responseGetIdentityVerificationAttributes :: GetIdentityVerificationAttributesResponse -> TestTree
+responseGetIdentityVerificationAttributes =
+  res
+    "GetIdentityVerificationAttributesResponse"
+    "fixture/GetIdentityVerificationAttributesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityVerificationAttributes)
+
+responseGetSendQuota :: GetSendQuotaResponse -> TestTree
+responseGetSendQuota =
+  res
+    "GetSendQuotaResponse"
+    "fixture/GetSendQuotaResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSendQuota)
+
+responseGetSendStatistics :: GetSendStatisticsResponse -> TestTree
+responseGetSendStatistics =
+  res
+    "GetSendStatisticsResponse"
+    "fixture/GetSendStatisticsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetSendStatistics)
+
+responseGetTemplate :: GetTemplateResponse -> TestTree
+responseGetTemplate =
+  res
+    "GetTemplateResponse"
+    "fixture/GetTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetTemplate)
+
+responseListConfigurationSets :: ListConfigurationSetsResponse -> TestTree
+responseListConfigurationSets =
+  res
+    "ListConfigurationSetsResponse"
+    "fixture/ListConfigurationSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListConfigurationSets)
+
+responseListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplatesResponse -> TestTree
+responseListCustomVerificationEmailTemplates =
+  res
+    "ListCustomVerificationEmailTemplatesResponse"
+    "fixture/ListCustomVerificationEmailTemplatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListCustomVerificationEmailTemplates)
+
+responseListIdentities :: ListIdentitiesResponse -> TestTree
+responseListIdentities =
+  res
+    "ListIdentitiesResponse"
+    "fixture/ListIdentitiesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIdentities)
+
+responseListIdentityPolicies :: ListIdentityPoliciesResponse -> TestTree
+responseListIdentityPolicies =
+  res
+    "ListIdentityPoliciesResponse"
+    "fixture/ListIdentityPoliciesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIdentityPolicies)
+
+responseListReceiptFilters :: ListReceiptFiltersResponse -> TestTree
+responseListReceiptFilters =
+  res
+    "ListReceiptFiltersResponse"
+    "fixture/ListReceiptFiltersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListReceiptFilters)
+
+responseListReceiptRuleSets :: ListReceiptRuleSetsResponse -> TestTree
+responseListReceiptRuleSets =
+  res
+    "ListReceiptRuleSetsResponse"
+    "fixture/ListReceiptRuleSetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListReceiptRuleSets)
+
+responseListTemplates :: ListTemplatesResponse -> TestTree
+responseListTemplates =
+  res
+    "ListTemplatesResponse"
+    "fixture/ListTemplatesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListTemplates)
+
+responseListVerifiedEmailAddresses :: ListVerifiedEmailAddressesResponse -> TestTree
+responseListVerifiedEmailAddresses =
+  res
+    "ListVerifiedEmailAddressesResponse"
+    "fixture/ListVerifiedEmailAddressesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListVerifiedEmailAddresses)
+
+responsePutConfigurationSetDeliveryOptions :: PutConfigurationSetDeliveryOptionsResponse -> TestTree
+responsePutConfigurationSetDeliveryOptions =
+  res
+    "PutConfigurationSetDeliveryOptionsResponse"
+    "fixture/PutConfigurationSetDeliveryOptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetDeliveryOptions)
+
+responsePutIdentityPolicy :: PutIdentityPolicyResponse -> TestTree
+responsePutIdentityPolicy =
+  res
+    "PutIdentityPolicyResponse"
+    "fixture/PutIdentityPolicyResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy PutIdentityPolicy)
+
+responseReorderReceiptRuleSet :: ReorderReceiptRuleSetResponse -> TestTree
+responseReorderReceiptRuleSet =
+  res
+    "ReorderReceiptRuleSetResponse"
+    "fixture/ReorderReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ReorderReceiptRuleSet)
+
+responseSendBounce :: SendBounceResponse -> TestTree
+responseSendBounce =
+  res
+    "SendBounceResponse"
+    "fixture/SendBounceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendBounce)
+
+responseSendBulkTemplatedEmail :: SendBulkTemplatedEmailResponse -> TestTree
+responseSendBulkTemplatedEmail =
+  res
+    "SendBulkTemplatedEmailResponse"
+    "fixture/SendBulkTemplatedEmailResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendBulkTemplatedEmail)
+
+responseSendCustomVerificationEmail :: SendCustomVerificationEmailResponse -> TestTree
+responseSendCustomVerificationEmail =
+  res
+    "SendCustomVerificationEmailResponse"
+    "fixture/SendCustomVerificationEmailResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendCustomVerificationEmail)
+
+responseSendEmail :: SendEmailResponse -> TestTree
+responseSendEmail =
+  res
+    "SendEmailResponse"
+    "fixture/SendEmailResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendEmail)
+
+responseSendRawEmail :: SendRawEmailResponse -> TestTree
+responseSendRawEmail =
+  res
+    "SendRawEmailResponse"
+    "fixture/SendRawEmailResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendRawEmail)
+
+responseSendTemplatedEmail :: SendTemplatedEmailResponse -> TestTree
+responseSendTemplatedEmail =
+  res
+    "SendTemplatedEmailResponse"
+    "fixture/SendTemplatedEmailResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SendTemplatedEmail)
+
+responseSetActiveReceiptRuleSet :: SetActiveReceiptRuleSetResponse -> TestTree
+responseSetActiveReceiptRuleSet =
+  res
+    "SetActiveReceiptRuleSetResponse"
+    "fixture/SetActiveReceiptRuleSetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetActiveReceiptRuleSet)
+
+responseSetIdentityDkimEnabled :: SetIdentityDkimEnabledResponse -> TestTree
+responseSetIdentityDkimEnabled =
+  res
+    "SetIdentityDkimEnabledResponse"
+    "fixture/SetIdentityDkimEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityDkimEnabled)
+
+responseSetIdentityFeedbackForwardingEnabled :: SetIdentityFeedbackForwardingEnabledResponse -> TestTree
+responseSetIdentityFeedbackForwardingEnabled =
+  res
+    "SetIdentityFeedbackForwardingEnabledResponse"
+    "fixture/SetIdentityFeedbackForwardingEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityFeedbackForwardingEnabled)
+
+responseSetIdentityHeadersInNotificationsEnabled :: SetIdentityHeadersInNotificationsEnabledResponse -> TestTree
+responseSetIdentityHeadersInNotificationsEnabled =
+  res
+    "SetIdentityHeadersInNotificationsEnabledResponse"
+    "fixture/SetIdentityHeadersInNotificationsEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityHeadersInNotificationsEnabled)
+
+responseSetIdentityMailFromDomain :: SetIdentityMailFromDomainResponse -> TestTree
+responseSetIdentityMailFromDomain =
+  res
+    "SetIdentityMailFromDomainResponse"
+    "fixture/SetIdentityMailFromDomainResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityMailFromDomain)
+
+responseSetIdentityNotificationTopic :: SetIdentityNotificationTopicResponse -> TestTree
+responseSetIdentityNotificationTopic =
+  res
+    "SetIdentityNotificationTopicResponse"
+    "fixture/SetIdentityNotificationTopicResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityNotificationTopic)
+
+responseSetReceiptRulePosition :: SetReceiptRulePositionResponse -> TestTree
+responseSetReceiptRulePosition =
+  res
+    "SetReceiptRulePositionResponse"
+    "fixture/SetReceiptRulePositionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetReceiptRulePosition)
+
+responseTestRenderTemplate :: TestRenderTemplateResponse -> TestTree
+responseTestRenderTemplate =
+  res
+    "TestRenderTemplateResponse"
+    "fixture/TestRenderTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy TestRenderTemplate)
+
+responseUpdateAccountSendingEnabled :: UpdateAccountSendingEnabledResponse -> TestTree
+responseUpdateAccountSendingEnabled =
+  res
+    "UpdateAccountSendingEnabledResponse"
+    "fixture/UpdateAccountSendingEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateAccountSendingEnabled)
+
+responseUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestinationResponse -> TestTree
+responseUpdateConfigurationSetEventDestination =
+  res
+    "UpdateConfigurationSetEventDestinationResponse"
+    "fixture/UpdateConfigurationSetEventDestinationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConfigurationSetEventDestination)
+
+responseUpdateConfigurationSetReputationMetricsEnabled :: UpdateConfigurationSetReputationMetricsEnabledResponse -> TestTree
+responseUpdateConfigurationSetReputationMetricsEnabled =
+  res
+    "UpdateConfigurationSetReputationMetricsEnabledResponse"
+    "fixture/UpdateConfigurationSetReputationMetricsEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConfigurationSetReputationMetricsEnabled)
+
+responseUpdateConfigurationSetSendingEnabled :: UpdateConfigurationSetSendingEnabledResponse -> TestTree
+responseUpdateConfigurationSetSendingEnabled =
+  res
+    "UpdateConfigurationSetSendingEnabledResponse"
+    "fixture/UpdateConfigurationSetSendingEnabledResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConfigurationSetSendingEnabled)
+
+responseUpdateConfigurationSetTrackingOptions :: UpdateConfigurationSetTrackingOptionsResponse -> TestTree
+responseUpdateConfigurationSetTrackingOptions =
+  res
+    "UpdateConfigurationSetTrackingOptionsResponse"
+    "fixture/UpdateConfigurationSetTrackingOptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateConfigurationSetTrackingOptions)
+
+responseUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplateResponse -> TestTree
+responseUpdateCustomVerificationEmailTemplate =
+  res
+    "UpdateCustomVerificationEmailTemplateResponse"
+    "fixture/UpdateCustomVerificationEmailTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomVerificationEmailTemplate)
+
+responseUpdateReceiptRule :: UpdateReceiptRuleResponse -> TestTree
+responseUpdateReceiptRule =
+  res
+    "UpdateReceiptRuleResponse"
+    "fixture/UpdateReceiptRuleResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateReceiptRule)
+
+responseUpdateTemplate :: UpdateTemplateResponse -> TestTree
+responseUpdateTemplate =
+  res
+    "UpdateTemplateResponse"
+    "fixture/UpdateTemplateResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateTemplate)
+
+responseVerifyDomainDkim :: VerifyDomainDkimResponse -> TestTree
+responseVerifyDomainDkim =
+  res
+    "VerifyDomainDkimResponse"
+    "fixture/VerifyDomainDkimResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy VerifyDomainDkim)
+
+responseVerifyDomainIdentity :: VerifyDomainIdentityResponse -> TestTree
+responseVerifyDomainIdentity =
+  res
+    "VerifyDomainIdentityResponse"
+    "fixture/VerifyDomainIdentityResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy VerifyDomainIdentity)
+
+responseVerifyEmailAddress :: VerifyEmailAddressResponse -> TestTree
+responseVerifyEmailAddress =
+  res
+    "VerifyEmailAddressResponse"
+    "fixture/VerifyEmailAddressResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy VerifyEmailAddress)
+
+responseVerifyEmailIdentity :: VerifyEmailIdentityResponse -> TestTree
+responseVerifyEmailIdentity =
+  res
+    "VerifyEmailIdentityResponse"
+    "fixture/VerifyEmailIdentityResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy VerifyEmailIdentity)
diff --git a/test/Test/Amazonka/SES.hs b/test/Test/Amazonka/SES.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SES.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.SES
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.SES
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/SES/Internal.hs b/test/Test/Amazonka/SES/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/SES/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.SES.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.SES.Internal where
