packages feed

amazonka-sesv2 (empty) → 2.0

raw patch · 380 files changed

+38754/−0 lines, 380 filesdep +amazonka-coredep +amazonka-sesv2dep +amazonka-test

Dependencies added: amazonka-core, amazonka-sesv2, amazonka-test, base, bytestring, case-insensitive, tasty, tasty-hunit, text, time, unordered-containers

Files

+ LICENSE view
@@ -0,0 +1,367 @@+Mozilla Public License Version 2.0+==================================++1. Definitions+--------------++1.1. "Contributor"+    means each individual or legal entity that creates, contributes to+    the creation of, or owns Covered Software.++1.2. "Contributor Version"+    means the combination of the Contributions of others (if any) used+    by a Contributor and that particular Contributor's Contribution.++1.3. "Contribution"+    means Covered Software of a particular Contributor.++1.4. "Covered Software"+    means Source Code Form to which the initial Contributor has attached+    the notice in Exhibit A, the Executable Form of such Source Code+    Form, and Modifications of such Source Code Form, in each case+    including portions thereof.++1.5. "Incompatible With Secondary Licenses"+    means++    (a) that the initial Contributor has attached the notice described+        in Exhibit B to the Covered Software; or++    (b) that the Covered Software was made available under the terms of+        version 1.1 or earlier of the License, but not also under the+        terms of a Secondary License.++1.6. "Executable Form"+    means any form of the work other than Source Code Form.++1.7. "Larger Work"+    means a work that combines Covered Software with other material, in+    a separate file or files, that is not Covered Software.++1.8. "License"+    means this document.++1.9. "Licensable"+    means having the right to grant, to the maximum extent possible,+    whether at the time of the initial grant or subsequently, any and+    all of the rights conveyed by this License.++1.10. "Modifications"+    means any of the following:++    (a) any file in Source Code Form that results from an addition to,+        deletion from, or modification of the contents of Covered+        Software; or++    (b) any new file in Source Code Form that contains any Covered+        Software.++1.11. "Patent Claims" of a Contributor+    means any patent claim(s), including without limitation, method,+    process, and apparatus claims, in any patent Licensable by such+    Contributor that would be infringed, but for the grant of the+    License, by the making, using, selling, offering for sale, having+    made, import, or transfer of either its Contributions or its+    Contributor Version.++1.12. "Secondary License"+    means either the GNU General Public License, Version 2.0, the GNU+    Lesser General Public License, Version 2.1, the GNU Affero General+    Public License, Version 3.0, or any later versions of those+    licenses.++1.13. "Source Code Form"+    means the form of the work preferred for making modifications.++1.14. "You" (or "Your")+    means an individual or a legal entity exercising rights under this+    License. For legal entities, "You" includes any entity that+    controls, is controlled by, or is under common control with You. For+    purposes of this definition, "control" means (a) the power, direct+    or indirect, to cause the direction or management of such entity,+    whether by contract or otherwise, or (b) ownership of more than+    fifty percent (50%) of the outstanding shares or beneficial+    ownership of such entity.++2. License Grants and Conditions+--------------------------------++2.1. Grants++Each Contributor hereby grants You a world-wide, royalty-free,+non-exclusive license:++(a) under intellectual property rights (other than patent or trademark)+    Licensable by such Contributor to use, reproduce, make available,+    modify, display, perform, distribute, and otherwise exploit its+    Contributions, either on an unmodified basis, with Modifications, or+    as part of a Larger Work; and++(b) under Patent Claims of such Contributor to make, use, sell, offer+    for sale, have made, import, and otherwise transfer either its+    Contributions or its Contributor Version.++2.2. Effective Date++The licenses granted in Section 2.1 with respect to any Contribution+become effective for each Contribution on the date the Contributor first+distributes such Contribution.++2.3. Limitations on Grant Scope++The licenses granted in this Section 2 are the only rights granted under+this License. No additional rights or licenses will be implied from the+distribution or licensing of Covered Software under this License.+Notwithstanding Section 2.1(b) above, no patent license is granted by a+Contributor:++(a) for any code that a Contributor has removed from Covered Software;+    or++(b) for infringements caused by: (i) Your and any other third party's+    modifications of Covered Software, or (ii) the combination of its+    Contributions with other software (except as part of its Contributor+    Version); or++(c) under Patent Claims infringed by Covered Software in the absence of+    its Contributions.++This License does not grant any rights in the trademarks, service marks,+or logos of any Contributor (except as may be necessary to comply with+the notice requirements in Section 3.4).++2.4. Subsequent Licenses++No Contributor makes additional grants as a result of Your choice to+distribute the Covered Software under a subsequent version of this+License (see Section 10.2) or under the terms of a Secondary License (if+permitted under the terms of Section 3.3).++2.5. Representation++Each Contributor represents that the Contributor believes its+Contributions are its original creation(s) or it has sufficient rights+to grant the rights to its Contributions conveyed by this License.++2.6. Fair Use++This License is not intended to limit any rights You have under+applicable copyright doctrines of fair use, fair dealing, or other+equivalents.++2.7. Conditions++Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted+in Section 2.1.++3. Responsibilities+-------------------++3.1. Distribution of Source Form++All distribution of Covered Software in Source Code Form, including any+Modifications that You create or to which You contribute, must be under+the terms of this License. You must inform recipients that the Source+Code Form of the Covered Software is governed by the terms of this+License, and how they can obtain a copy of this License. You may not+attempt to alter or restrict the recipients' rights in the Source Code+Form.++3.2. Distribution of Executable Form++If You distribute Covered Software in Executable Form then:++(a) such Covered Software must also be made available in Source Code+    Form, as described in Section 3.1, and You must inform recipients of+    the Executable Form how they can obtain a copy of such Source Code+    Form by reasonable means in a timely manner, at a charge no more+    than the cost of distribution to the recipient; and++(b) You may distribute such Executable Form under the terms of this+    License, or sublicense it under different terms, provided that the+    license for the Executable Form does not attempt to limit or alter+    the recipients' rights in the Source Code Form under this License.++3.3. Distribution of a Larger Work++You may create and distribute a Larger Work under terms of Your choice,+provided that You also comply with the requirements of this License for+the Covered Software. If the Larger Work is a combination of Covered+Software with a work governed by one or more Secondary Licenses, and the+Covered Software is not Incompatible With Secondary Licenses, this+License permits You to additionally distribute such Covered Software+under the terms of such Secondary License(s), so that the recipient of+the Larger Work may, at their option, further distribute the Covered+Software under the terms of either this License or such Secondary+License(s).++3.4. Notices++You may not remove or alter the substance of any license notices+(including copyright notices, patent notices, disclaimers of warranty,+or limitations of liability) contained within the Source Code Form of+the Covered Software, except that You may alter any license notices to+the extent required to remedy known factual inaccuracies.++3.5. Application of Additional Terms++You may choose to offer, and to charge a fee for, warranty, support,+indemnity or liability obligations to one or more recipients of Covered+Software. However, You may do so only on Your own behalf, and not on+behalf of any Contributor. You must make it absolutely clear that any+such warranty, support, indemnity, or liability obligation is offered by+You alone, and You hereby agree to indemnify every Contributor for any+liability incurred by such Contributor as a result of warranty, support,+indemnity or liability terms You offer. You may include additional+disclaimers of warranty and limitations of liability specific to any+jurisdiction.++4. Inability to Comply Due to Statute or Regulation+---------------------------------------------------++If it is impossible for You to comply with any of the terms of this+License with respect to some or all of the Covered Software due to+statute, judicial order, or regulation then You must: (a) comply with+the terms of this License to the maximum extent possible; and (b)+describe the limitations and the code they affect. Such description must+be placed in a text file included with all distributions of the Covered+Software under this License. Except to the extent prohibited by statute+or regulation, such description must be sufficiently detailed for a+recipient of ordinary skill to be able to understand it.++5. Termination+--------------++5.1. The rights granted under this License will terminate automatically+if You fail to comply with any of its terms. However, if You become+compliant, then the rights granted under this License from a particular+Contributor are reinstated (a) provisionally, unless and until such+Contributor explicitly and finally terminates Your grants, and (b) on an+ongoing basis, if such Contributor fails to notify You of the+non-compliance by some reasonable means prior to 60 days after You have+come back into compliance. Moreover, Your grants from a particular+Contributor are reinstated on an ongoing basis if such Contributor+notifies You of the non-compliance by some reasonable means, this is the+first time You have received notice of non-compliance with this License+from such Contributor, and You become compliant prior to 30 days after+Your receipt of the notice.++5.2. If You initiate litigation against any entity by asserting a patent+infringement claim (excluding declaratory judgment actions,+counter-claims, and cross-claims) alleging that a Contributor Version+directly or indirectly infringes any patent, then the rights granted to+You by any and all Contributors for the Covered Software under Section+2.1 of this License shall terminate.++5.3. In the event of termination under Sections 5.1 or 5.2 above, all+end user license agreements (excluding distributors and resellers) which+have been validly granted by You or Your distributors under this License+prior to termination shall survive termination.++************************************************************************+*                                                                      *+*  6. Disclaimer of Warranty                                           *+*  -------------------------                                           *+*                                                                      *+*  Covered Software is provided under this License on an "as is"       *+*  basis, without warranty of any kind, either expressed, implied, or  *+*  statutory, including, without limitation, warranties that the       *+*  Covered Software is free of defects, merchantable, fit for a        *+*  particular purpose or non-infringing. The entire risk as to the     *+*  quality and performance of the Covered Software is with You.        *+*  Should any Covered Software prove defective in any respect, You     *+*  (not any Contributor) assume the cost of any necessary servicing,   *+*  repair, or correction. This disclaimer of warranty constitutes an   *+*  essential part of this License. No use of any Covered Software is   *+*  authorized under this License except under this disclaimer.         *+*                                                                      *+************************************************************************++************************************************************************+*                                                                      *+*  7. Limitation of Liability                                          *+*  --------------------------                                          *+*                                                                      *+*  Under no circumstances and under no legal theory, whether tort      *+*  (including negligence), contract, or otherwise, shall any           *+*  Contributor, or anyone who distributes Covered Software as          *+*  permitted above, be liable to You for any direct, indirect,         *+*  special, incidental, or consequential damages of any character      *+*  including, without limitation, damages for lost profits, loss of    *+*  goodwill, work stoppage, computer failure or malfunction, or any    *+*  and all other commercial damages or losses, even if such party      *+*  shall have been informed of the possibility of such damages. This   *+*  limitation of liability shall not apply to liability for death or   *+*  personal injury resulting from such party's negligence to the       *+*  extent applicable law prohibits such limitation. Some               *+*  jurisdictions do not allow the exclusion or limitation of           *+*  incidental or consequential damages, so this exclusion and          *+*  limitation may not apply to You.                                    *+*                                                                      *+************************************************************************++8. Litigation+-------------++Any litigation relating to this License may be brought only in the+courts of a jurisdiction where the defendant maintains its principal+place of business and such litigation shall be governed by laws of that+jurisdiction, without reference to its conflict-of-law provisions.+Nothing in this Section shall prevent a party's ability to bring+cross-claims or counter-claims.++9. Miscellaneous+----------------++This License represents the complete agreement concerning the subject+matter hereof. If any provision of this License is held to be+unenforceable, such provision shall be reformed only to the extent+necessary to make it enforceable. Any law or regulation which provides+that the language of a contract shall be construed against the drafter+shall not be used to construe this License against a Contributor.++10. Versions of the License+---------------------------++10.1. New Versions++Mozilla Foundation is the license steward. Except as provided in Section+10.3, no one other than the license steward has the right to modify or+publish new versions of this License. Each version will be given a+distinguishing version number.++10.2. Effect of New Versions++You may distribute the Covered Software under the terms of the version+of the License under which You originally received the Covered Software,+or under the terms of any subsequent version published by the license+steward.++10.3. Modified Versions++If you create software not governed by this License, and you want to+create a new license for such software, you may create and use a+modified version of this License if you rename the license and remove+any references to the name of the license steward (except to note that+such modified license differs from this License).++10.4. Distributing Source Code Form that is Incompatible With Secondary+Licenses++If You choose to distribute Source Code Form that is Incompatible With+Secondary Licenses under the terms of this version of the License, the+notice described in Exhibit B of this License must be attached.++Exhibit A - Source Code Form License Notice+-------------------------------------------++  This Source Code Form is subject to the terms of the Mozilla Public+  License, v. 2.0. If a copy of the MPL was not distributed with this+  file, You can obtain one at http://mozilla.org/MPL/2.0/.++If it is not possible or desirable to put the notice in a particular+file, then You may include the notice in a location (such as a LICENSE+file in a relevant directory) where a recipient would be likely to look+for such a notice.++You may add additional accurate notices of copyright ownership.
+ README.md view
@@ -0,0 +1,44 @@+# Amazon Simple Email Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2019-09-27@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-sesv2)+and the [AWS API Reference](https://aws.amazon.com/documentation/).++The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information, 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+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).++See [Amazonka.SESV2](http://hackage.haskell.org/package/amazonka-sesv2/docs/Amazonka-SESV2.html)+or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.+++## Contribute++For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).++> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.+++## Licence++`amazonka-sesv2` is released under the [Mozilla Public License Version 2.0](http://www.mozilla.org/MPL/).++Parts of the code are derived from AWS service descriptions, licensed under Apache 2.0.+Source files subject to this contain an additional licensing clause in their header.
+ amazonka-sesv2.cabal view
@@ -0,0 +1,279 @@+cabal-version:      2.2+name:               amazonka-sesv2+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:+  Derived from API version @2019-09-27@ 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.SESV2.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.SESV2" 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-sesv2++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:+    Amazonka.SESV2+    Amazonka.SESV2.BatchGetMetricData+    Amazonka.SESV2.CreateConfigurationSet+    Amazonka.SESV2.CreateConfigurationSetEventDestination+    Amazonka.SESV2.CreateContact+    Amazonka.SESV2.CreateContactList+    Amazonka.SESV2.CreateCustomVerificationEmailTemplate+    Amazonka.SESV2.CreateDedicatedIpPool+    Amazonka.SESV2.CreateDeliverabilityTestReport+    Amazonka.SESV2.CreateEmailIdentity+    Amazonka.SESV2.CreateEmailIdentityPolicy+    Amazonka.SESV2.CreateEmailTemplate+    Amazonka.SESV2.CreateImportJob+    Amazonka.SESV2.DeleteConfigurationSet+    Amazonka.SESV2.DeleteConfigurationSetEventDestination+    Amazonka.SESV2.DeleteContact+    Amazonka.SESV2.DeleteContactList+    Amazonka.SESV2.DeleteCustomVerificationEmailTemplate+    Amazonka.SESV2.DeleteDedicatedIpPool+    Amazonka.SESV2.DeleteEmailIdentity+    Amazonka.SESV2.DeleteEmailIdentityPolicy+    Amazonka.SESV2.DeleteEmailTemplate+    Amazonka.SESV2.DeleteSuppressedDestination+    Amazonka.SESV2.GetAccount+    Amazonka.SESV2.GetBlacklistReports+    Amazonka.SESV2.GetConfigurationSet+    Amazonka.SESV2.GetConfigurationSetEventDestinations+    Amazonka.SESV2.GetContact+    Amazonka.SESV2.GetContactList+    Amazonka.SESV2.GetCustomVerificationEmailTemplate+    Amazonka.SESV2.GetDedicatedIp+    Amazonka.SESV2.GetDedicatedIpPool+    Amazonka.SESV2.GetDedicatedIps+    Amazonka.SESV2.GetDeliverabilityDashboardOptions+    Amazonka.SESV2.GetDeliverabilityTestReport+    Amazonka.SESV2.GetDomainDeliverabilityCampaign+    Amazonka.SESV2.GetDomainStatisticsReport+    Amazonka.SESV2.GetEmailIdentity+    Amazonka.SESV2.GetEmailIdentityPolicies+    Amazonka.SESV2.GetEmailTemplate+    Amazonka.SESV2.GetImportJob+    Amazonka.SESV2.GetSuppressedDestination+    Amazonka.SESV2.Lens+    Amazonka.SESV2.ListConfigurationSets+    Amazonka.SESV2.ListContactLists+    Amazonka.SESV2.ListContacts+    Amazonka.SESV2.ListCustomVerificationEmailTemplates+    Amazonka.SESV2.ListDedicatedIpPools+    Amazonka.SESV2.ListDeliverabilityTestReports+    Amazonka.SESV2.ListDomainDeliverabilityCampaigns+    Amazonka.SESV2.ListEmailIdentities+    Amazonka.SESV2.ListEmailTemplates+    Amazonka.SESV2.ListImportJobs+    Amazonka.SESV2.ListRecommendations+    Amazonka.SESV2.ListSuppressedDestinations+    Amazonka.SESV2.ListTagsForResource+    Amazonka.SESV2.PutAccountDedicatedIpWarmupAttributes+    Amazonka.SESV2.PutAccountDetails+    Amazonka.SESV2.PutAccountSendingAttributes+    Amazonka.SESV2.PutAccountSuppressionAttributes+    Amazonka.SESV2.PutAccountVdmAttributes+    Amazonka.SESV2.PutConfigurationSetDeliveryOptions+    Amazonka.SESV2.PutConfigurationSetReputationOptions+    Amazonka.SESV2.PutConfigurationSetSendingOptions+    Amazonka.SESV2.PutConfigurationSetSuppressionOptions+    Amazonka.SESV2.PutConfigurationSetTrackingOptions+    Amazonka.SESV2.PutConfigurationSetVdmOptions+    Amazonka.SESV2.PutDedicatedIpInPool+    Amazonka.SESV2.PutDedicatedIpWarmupAttributes+    Amazonka.SESV2.PutDeliverabilityDashboardOption+    Amazonka.SESV2.PutEmailIdentityConfigurationSetAttributes+    Amazonka.SESV2.PutEmailIdentityDkimAttributes+    Amazonka.SESV2.PutEmailIdentityDkimSigningAttributes+    Amazonka.SESV2.PutEmailIdentityFeedbackAttributes+    Amazonka.SESV2.PutEmailIdentityMailFromAttributes+    Amazonka.SESV2.PutSuppressedDestination+    Amazonka.SESV2.SendBulkEmail+    Amazonka.SESV2.SendCustomVerificationEmail+    Amazonka.SESV2.SendEmail+    Amazonka.SESV2.TagResource+    Amazonka.SESV2.TestRenderEmailTemplate+    Amazonka.SESV2.Types+    Amazonka.SESV2.Types.AccountDetails+    Amazonka.SESV2.Types.BatchGetMetricDataQuery+    Amazonka.SESV2.Types.BehaviorOnMxFailure+    Amazonka.SESV2.Types.BlacklistEntry+    Amazonka.SESV2.Types.Body+    Amazonka.SESV2.Types.BulkEmailContent+    Amazonka.SESV2.Types.BulkEmailEntry+    Amazonka.SESV2.Types.BulkEmailEntryResult+    Amazonka.SESV2.Types.BulkEmailStatus+    Amazonka.SESV2.Types.CloudWatchDestination+    Amazonka.SESV2.Types.CloudWatchDimensionConfiguration+    Amazonka.SESV2.Types.Contact+    Amazonka.SESV2.Types.ContactLanguage+    Amazonka.SESV2.Types.ContactList+    Amazonka.SESV2.Types.ContactListDestination+    Amazonka.SESV2.Types.ContactListImportAction+    Amazonka.SESV2.Types.Content+    Amazonka.SESV2.Types.CustomVerificationEmailTemplateMetadata+    Amazonka.SESV2.Types.DailyVolume+    Amazonka.SESV2.Types.DashboardAttributes+    Amazonka.SESV2.Types.DashboardOptions+    Amazonka.SESV2.Types.DataFormat+    Amazonka.SESV2.Types.DedicatedIp+    Amazonka.SESV2.Types.DedicatedIpPool+    Amazonka.SESV2.Types.DeliverabilityDashboardAccountStatus+    Amazonka.SESV2.Types.DeliverabilityTestReport+    Amazonka.SESV2.Types.DeliverabilityTestStatus+    Amazonka.SESV2.Types.DeliveryOptions+    Amazonka.SESV2.Types.Destination+    Amazonka.SESV2.Types.DimensionValueSource+    Amazonka.SESV2.Types.DkimAttributes+    Amazonka.SESV2.Types.DkimSigningAttributes+    Amazonka.SESV2.Types.DkimSigningAttributesOrigin+    Amazonka.SESV2.Types.DkimSigningKeyLength+    Amazonka.SESV2.Types.DkimStatus+    Amazonka.SESV2.Types.DomainDeliverabilityCampaign+    Amazonka.SESV2.Types.DomainDeliverabilityTrackingOption+    Amazonka.SESV2.Types.DomainIspPlacement+    Amazonka.SESV2.Types.EmailContent+    Amazonka.SESV2.Types.EmailTemplateContent+    Amazonka.SESV2.Types.EmailTemplateMetadata+    Amazonka.SESV2.Types.EventDestination+    Amazonka.SESV2.Types.EventDestinationDefinition+    Amazonka.SESV2.Types.EventType+    Amazonka.SESV2.Types.FailureInfo+    Amazonka.SESV2.Types.FeatureStatus+    Amazonka.SESV2.Types.GuardianAttributes+    Amazonka.SESV2.Types.GuardianOptions+    Amazonka.SESV2.Types.IdentityInfo+    Amazonka.SESV2.Types.IdentityType+    Amazonka.SESV2.Types.ImportDataSource+    Amazonka.SESV2.Types.ImportDestination+    Amazonka.SESV2.Types.ImportDestinationType+    Amazonka.SESV2.Types.ImportJobSummary+    Amazonka.SESV2.Types.InboxPlacementTrackingOption+    Amazonka.SESV2.Types.IspPlacement+    Amazonka.SESV2.Types.JobStatus+    Amazonka.SESV2.Types.KinesisFirehoseDestination+    Amazonka.SESV2.Types.ListContactsFilter+    Amazonka.SESV2.Types.ListManagementOptions+    Amazonka.SESV2.Types.ListRecommendationsFilterKey+    Amazonka.SESV2.Types.MailFromAttributes+    Amazonka.SESV2.Types.MailFromDomainStatus+    Amazonka.SESV2.Types.MailType+    Amazonka.SESV2.Types.Message+    Amazonka.SESV2.Types.MessageTag+    Amazonka.SESV2.Types.Metric+    Amazonka.SESV2.Types.MetricDataError+    Amazonka.SESV2.Types.MetricDataResult+    Amazonka.SESV2.Types.MetricDimensionName+    Amazonka.SESV2.Types.MetricNamespace+    Amazonka.SESV2.Types.OverallVolume+    Amazonka.SESV2.Types.PinpointDestination+    Amazonka.SESV2.Types.PlacementStatistics+    Amazonka.SESV2.Types.QueryErrorCode+    Amazonka.SESV2.Types.RawMessage+    Amazonka.SESV2.Types.Recommendation+    Amazonka.SESV2.Types.RecommendationImpact+    Amazonka.SESV2.Types.RecommendationStatus+    Amazonka.SESV2.Types.RecommendationType+    Amazonka.SESV2.Types.ReplacementEmailContent+    Amazonka.SESV2.Types.ReplacementTemplate+    Amazonka.SESV2.Types.ReputationOptions+    Amazonka.SESV2.Types.ReviewDetails+    Amazonka.SESV2.Types.ReviewStatus+    Amazonka.SESV2.Types.ScalingMode+    Amazonka.SESV2.Types.SendingOptions+    Amazonka.SESV2.Types.SendQuota+    Amazonka.SESV2.Types.SnsDestination+    Amazonka.SESV2.Types.SubscriptionStatus+    Amazonka.SESV2.Types.SuppressedDestination+    Amazonka.SESV2.Types.SuppressedDestinationAttributes+    Amazonka.SESV2.Types.SuppressedDestinationSummary+    Amazonka.SESV2.Types.SuppressionAttributes+    Amazonka.SESV2.Types.SuppressionListDestination+    Amazonka.SESV2.Types.SuppressionListImportAction+    Amazonka.SESV2.Types.SuppressionListReason+    Amazonka.SESV2.Types.SuppressionOptions+    Amazonka.SESV2.Types.Tag+    Amazonka.SESV2.Types.Template+    Amazonka.SESV2.Types.TlsPolicy+    Amazonka.SESV2.Types.Topic+    Amazonka.SESV2.Types.TopicFilter+    Amazonka.SESV2.Types.TopicPreference+    Amazonka.SESV2.Types.TrackingOptions+    Amazonka.SESV2.Types.VdmAttributes+    Amazonka.SESV2.Types.VdmOptions+    Amazonka.SESV2.Types.VerificationStatus+    Amazonka.SESV2.Types.VolumeStatistics+    Amazonka.SESV2.Types.WarmupStatus+    Amazonka.SESV2.UntagResource+    Amazonka.SESV2.UpdateConfigurationSetEventDestination+    Amazonka.SESV2.UpdateContact+    Amazonka.SESV2.UpdateContactList+    Amazonka.SESV2.UpdateCustomVerificationEmailTemplate+    Amazonka.SESV2.UpdateEmailIdentityPolicy+    Amazonka.SESV2.UpdateEmailTemplate+    Amazonka.SESV2.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-sesv2-test+  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.Amazonka.Gen.SESV2+    Test.Amazonka.SESV2+    Test.Amazonka.SESV2.Internal++  build-depends:+    , amazonka-core         >=2.0 && <2.1+    , amazonka-sesv2+    , amazonka-test         >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ fixture/BatchGetMetricData.yaml view
@@ -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:+  ''
+ fixture/BatchGetMetricDataResponse.proto view
+ fixture/CreateConfigurationSet.yaml view
@@ -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:+  ''
+ fixture/CreateConfigurationSetEventDestination.yaml view
@@ -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:+  ''
+ fixture/CreateConfigurationSetEventDestinationResponse.proto view
+ fixture/CreateConfigurationSetResponse.proto view
+ fixture/CreateContact.yaml view
@@ -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:+  ''
+ fixture/CreateContactList.yaml view
@@ -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:+  ''
+ fixture/CreateContactListResponse.proto view
+ fixture/CreateContactResponse.proto view
+ fixture/CreateCustomVerificationEmailTemplate.yaml view
@@ -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:+  ''
+ fixture/CreateCustomVerificationEmailTemplateResponse.proto view
+ fixture/CreateDedicatedIpPool.yaml view
@@ -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:+  ''
+ fixture/CreateDedicatedIpPoolResponse.proto view
+ fixture/CreateDeliverabilityTestReport.yaml view
@@ -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:+  ''
+ fixture/CreateDeliverabilityTestReportResponse.proto view
+ fixture/CreateEmailIdentity.yaml view
@@ -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:+  ''
+ fixture/CreateEmailIdentityPolicy.yaml view
@@ -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:+  ''
+ fixture/CreateEmailIdentityPolicyResponse.proto view
+ fixture/CreateEmailIdentityResponse.proto view
+ fixture/CreateEmailTemplate.yaml view
@@ -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:+  ''
+ fixture/CreateEmailTemplateResponse.proto view
+ fixture/CreateImportJob.yaml view
@@ -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:+  ''
+ fixture/CreateImportJobResponse.proto view
+ fixture/DeleteConfigurationSet.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteConfigurationSetEventDestination.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteConfigurationSetEventDestinationResponse.proto view
+ fixture/DeleteConfigurationSetResponse.proto view
+ fixture/DeleteContact.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteContactList.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteContactListResponse.proto view
+ fixture/DeleteContactResponse.proto view
+ fixture/DeleteCustomVerificationEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteCustomVerificationEmailTemplateResponse.proto view
+ fixture/DeleteDedicatedIpPool.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteDedicatedIpPoolResponse.proto view
+ fixture/DeleteEmailIdentity.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteEmailIdentityPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteEmailIdentityPolicyResponse.proto view
+ fixture/DeleteEmailIdentityResponse.proto view
+ fixture/DeleteEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteEmailTemplateResponse.proto view
+ fixture/DeleteSuppressedDestination.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/DeleteSuppressedDestinationResponse.proto view
+ fixture/GetAccount.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetAccountResponse.proto view
+ fixture/GetBlacklistReports.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetBlacklistReportsResponse.proto view
+ fixture/GetConfigurationSet.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetConfigurationSetEventDestinations.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetConfigurationSetEventDestinationsResponse.proto view
+ fixture/GetConfigurationSetResponse.proto view
+ fixture/GetContact.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetContactList.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetContactListResponse.proto view
+ fixture/GetContactResponse.proto view
+ fixture/GetCustomVerificationEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetCustomVerificationEmailTemplateResponse.proto view
+ fixture/GetDedicatedIp.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDedicatedIpPool.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDedicatedIpPoolResponse.proto view
+ fixture/GetDedicatedIpResponse.proto view
+ fixture/GetDedicatedIps.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDedicatedIpsResponse.proto view
+ fixture/GetDeliverabilityDashboardOptions.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDeliverabilityDashboardOptionsResponse.proto view
+ fixture/GetDeliverabilityTestReport.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDeliverabilityTestReportResponse.proto view
+ fixture/GetDomainDeliverabilityCampaign.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDomainDeliverabilityCampaignResponse.proto view
+ fixture/GetDomainStatisticsReport.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetDomainStatisticsReportResponse.proto view
+ fixture/GetEmailIdentity.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetEmailIdentityPolicies.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetEmailIdentityPoliciesResponse.proto view
+ fixture/GetEmailIdentityResponse.proto view
+ fixture/GetEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetEmailTemplateResponse.proto view
+ fixture/GetImportJob.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetImportJobResponse.proto view
+ fixture/GetSuppressedDestination.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/GetSuppressedDestinationResponse.proto view
+ fixture/ListConfigurationSets.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListConfigurationSetsResponse.proto view
+ fixture/ListContactLists.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListContactListsResponse.proto view
+ fixture/ListContacts.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListContactsResponse.proto view
+ fixture/ListCustomVerificationEmailTemplates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListCustomVerificationEmailTemplatesResponse.proto view
+ fixture/ListDedicatedIpPools.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListDedicatedIpPoolsResponse.proto view
+ fixture/ListDeliverabilityTestReports.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListDeliverabilityTestReportsResponse.proto view
+ fixture/ListDomainDeliverabilityCampaigns.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListDomainDeliverabilityCampaignsResponse.proto view
+ fixture/ListEmailIdentities.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListEmailIdentitiesResponse.proto view
+ fixture/ListEmailTemplates.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListEmailTemplatesResponse.proto view
+ fixture/ListImportJobs.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListImportJobsResponse.proto view
+ fixture/ListRecommendations.yaml view
@@ -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:+  ''
+ fixture/ListRecommendationsResponse.proto view
+ fixture/ListSuppressedDestinations.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListSuppressedDestinationsResponse.proto view
+ fixture/ListTagsForResource.yaml view
@@ -0,0 +1,10 @@+---+method: GET+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:+  ''
+ fixture/ListTagsForResourceResponse.proto view
+ fixture/PutAccountDedicatedIpWarmupAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutAccountDedicatedIpWarmupAttributesResponse.proto view
+ fixture/PutAccountDetails.yaml view
@@ -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:+  ''
+ fixture/PutAccountDetailsResponse.proto view
+ fixture/PutAccountSendingAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutAccountSendingAttributesResponse.proto view
+ fixture/PutAccountSuppressionAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutAccountSuppressionAttributesResponse.proto view
+ fixture/PutAccountVdmAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutAccountVdmAttributesResponse.proto view
+ fixture/PutConfigurationSetDeliveryOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetDeliveryOptionsResponse.proto view
+ fixture/PutConfigurationSetReputationOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetReputationOptionsResponse.proto view
+ fixture/PutConfigurationSetSendingOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetSendingOptionsResponse.proto view
+ fixture/PutConfigurationSetSuppressionOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetSuppressionOptionsResponse.proto view
+ fixture/PutConfigurationSetTrackingOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetTrackingOptionsResponse.proto view
+ fixture/PutConfigurationSetVdmOptions.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutConfigurationSetVdmOptionsResponse.proto view
+ fixture/PutDedicatedIpInPool.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutDedicatedIpInPoolResponse.proto view
+ fixture/PutDedicatedIpWarmupAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutDedicatedIpWarmupAttributesResponse.proto view
+ fixture/PutDeliverabilityDashboardOption.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutDeliverabilityDashboardOptionResponse.proto view
+ fixture/PutEmailIdentityConfigurationSetAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutEmailIdentityConfigurationSetAttributesResponse.proto view
+ fixture/PutEmailIdentityDkimAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutEmailIdentityDkimAttributesResponse.proto view
+ fixture/PutEmailIdentityDkimSigningAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutEmailIdentityDkimSigningAttributesResponse.proto view
+ fixture/PutEmailIdentityFeedbackAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutEmailIdentityFeedbackAttributesResponse.proto view
+ fixture/PutEmailIdentityMailFromAttributes.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutEmailIdentityMailFromAttributesResponse.proto view
+ fixture/PutSuppressedDestination.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/PutSuppressedDestinationResponse.proto view
+ fixture/SendBulkEmail.yaml view
@@ -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:+  ''
+ fixture/SendBulkEmailResponse.proto view
+ fixture/SendCustomVerificationEmail.yaml view
@@ -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:+  ''
+ fixture/SendCustomVerificationEmailResponse.proto view
+ fixture/SendEmail.yaml view
@@ -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:+  ''
+ fixture/SendEmailResponse.proto view
+ fixture/TagResource.yaml view
@@ -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:+  ''
+ fixture/TagResourceResponse.proto view
+ fixture/TestRenderEmailTemplate.yaml view
@@ -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:+  ''
+ fixture/TestRenderEmailTemplateResponse.proto view
+ fixture/UntagResource.yaml view
@@ -0,0 +1,10 @@+---+method: DELETE+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:+  ''
+ fixture/UntagResourceResponse.proto view
+ fixture/UpdateConfigurationSetEventDestination.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateConfigurationSetEventDestinationResponse.proto view
+ fixture/UpdateContact.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateContactList.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateContactListResponse.proto view
+ fixture/UpdateContactResponse.proto view
+ fixture/UpdateCustomVerificationEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateCustomVerificationEmailTemplateResponse.proto view
+ fixture/UpdateEmailIdentityPolicy.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateEmailIdentityPolicyResponse.proto view
+ fixture/UpdateEmailTemplate.yaml view
@@ -0,0 +1,10 @@+---+method: PUT+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:+  ''
+ fixture/UpdateEmailTemplateResponse.proto view
+ gen/Amazonka/SESV2.hs view
@@ -0,0 +1,1117 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.SESV2+-- 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 @2019-09-27@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon SES API v2+--+-- <http://aws.amazon.com/ses Amazon SES> is an Amazon Web Services service+-- that you can use to send email messages to your customers.+--+-- If you\'re new to Amazon SES API v2, you might find it helpful to review+-- the+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/ Amazon Simple Email Service Developer Guide>.+-- The /Amazon SES Developer Guide/ provides information and code samples+-- that demonstrate how to use Amazon SES API v2 features programmatically.+module Amazonka.SESV2+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccountSuspendedException+    _AccountSuspendedException,++    -- ** AlreadyExistsException+    _AlreadyExistsException,++    -- ** BadRequestException+    _BadRequestException,++    -- ** ConcurrentModificationException+    _ConcurrentModificationException,++    -- ** ConflictException+    _ConflictException,++    -- ** InternalServiceErrorException+    _InternalServiceErrorException,++    -- ** InvalidNextTokenException+    _InvalidNextTokenException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** MailFromDomainNotVerifiedException+    _MailFromDomainNotVerifiedException,++    -- ** MessageRejected+    _MessageRejected,++    -- ** NotFoundException+    _NotFoundException,++    -- ** SendingPausedException+    _SendingPausedException,++    -- ** TooManyRequestsException+    _TooManyRequestsException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** BatchGetMetricData+    BatchGetMetricData (BatchGetMetricData'),+    newBatchGetMetricData,+    BatchGetMetricDataResponse (BatchGetMetricDataResponse'),+    newBatchGetMetricDataResponse,++    -- ** CreateConfigurationSet+    CreateConfigurationSet (CreateConfigurationSet'),+    newCreateConfigurationSet,+    CreateConfigurationSetResponse (CreateConfigurationSetResponse'),+    newCreateConfigurationSetResponse,++    -- ** CreateConfigurationSetEventDestination+    CreateConfigurationSetEventDestination (CreateConfigurationSetEventDestination'),+    newCreateConfigurationSetEventDestination,+    CreateConfigurationSetEventDestinationResponse (CreateConfigurationSetEventDestinationResponse'),+    newCreateConfigurationSetEventDestinationResponse,++    -- ** CreateContact+    CreateContact (CreateContact'),+    newCreateContact,+    CreateContactResponse (CreateContactResponse'),+    newCreateContactResponse,++    -- ** CreateContactList+    CreateContactList (CreateContactList'),+    newCreateContactList,+    CreateContactListResponse (CreateContactListResponse'),+    newCreateContactListResponse,++    -- ** CreateCustomVerificationEmailTemplate+    CreateCustomVerificationEmailTemplate (CreateCustomVerificationEmailTemplate'),+    newCreateCustomVerificationEmailTemplate,+    CreateCustomVerificationEmailTemplateResponse (CreateCustomVerificationEmailTemplateResponse'),+    newCreateCustomVerificationEmailTemplateResponse,++    -- ** CreateDedicatedIpPool+    CreateDedicatedIpPool (CreateDedicatedIpPool'),+    newCreateDedicatedIpPool,+    CreateDedicatedIpPoolResponse (CreateDedicatedIpPoolResponse'),+    newCreateDedicatedIpPoolResponse,++    -- ** CreateDeliverabilityTestReport+    CreateDeliverabilityTestReport (CreateDeliverabilityTestReport'),+    newCreateDeliverabilityTestReport,+    CreateDeliverabilityTestReportResponse (CreateDeliverabilityTestReportResponse'),+    newCreateDeliverabilityTestReportResponse,++    -- ** CreateEmailIdentity+    CreateEmailIdentity (CreateEmailIdentity'),+    newCreateEmailIdentity,+    CreateEmailIdentityResponse (CreateEmailIdentityResponse'),+    newCreateEmailIdentityResponse,++    -- ** CreateEmailIdentityPolicy+    CreateEmailIdentityPolicy (CreateEmailIdentityPolicy'),+    newCreateEmailIdentityPolicy,+    CreateEmailIdentityPolicyResponse (CreateEmailIdentityPolicyResponse'),+    newCreateEmailIdentityPolicyResponse,++    -- ** CreateEmailTemplate+    CreateEmailTemplate (CreateEmailTemplate'),+    newCreateEmailTemplate,+    CreateEmailTemplateResponse (CreateEmailTemplateResponse'),+    newCreateEmailTemplateResponse,++    -- ** CreateImportJob+    CreateImportJob (CreateImportJob'),+    newCreateImportJob,+    CreateImportJobResponse (CreateImportJobResponse'),+    newCreateImportJobResponse,++    -- ** DeleteConfigurationSet+    DeleteConfigurationSet (DeleteConfigurationSet'),+    newDeleteConfigurationSet,+    DeleteConfigurationSetResponse (DeleteConfigurationSetResponse'),+    newDeleteConfigurationSetResponse,++    -- ** DeleteConfigurationSetEventDestination+    DeleteConfigurationSetEventDestination (DeleteConfigurationSetEventDestination'),+    newDeleteConfigurationSetEventDestination,+    DeleteConfigurationSetEventDestinationResponse (DeleteConfigurationSetEventDestinationResponse'),+    newDeleteConfigurationSetEventDestinationResponse,++    -- ** DeleteContact+    DeleteContact (DeleteContact'),+    newDeleteContact,+    DeleteContactResponse (DeleteContactResponse'),+    newDeleteContactResponse,++    -- ** DeleteContactList+    DeleteContactList (DeleteContactList'),+    newDeleteContactList,+    DeleteContactListResponse (DeleteContactListResponse'),+    newDeleteContactListResponse,++    -- ** DeleteCustomVerificationEmailTemplate+    DeleteCustomVerificationEmailTemplate (DeleteCustomVerificationEmailTemplate'),+    newDeleteCustomVerificationEmailTemplate,+    DeleteCustomVerificationEmailTemplateResponse (DeleteCustomVerificationEmailTemplateResponse'),+    newDeleteCustomVerificationEmailTemplateResponse,++    -- ** DeleteDedicatedIpPool+    DeleteDedicatedIpPool (DeleteDedicatedIpPool'),+    newDeleteDedicatedIpPool,+    DeleteDedicatedIpPoolResponse (DeleteDedicatedIpPoolResponse'),+    newDeleteDedicatedIpPoolResponse,++    -- ** DeleteEmailIdentity+    DeleteEmailIdentity (DeleteEmailIdentity'),+    newDeleteEmailIdentity,+    DeleteEmailIdentityResponse (DeleteEmailIdentityResponse'),+    newDeleteEmailIdentityResponse,++    -- ** DeleteEmailIdentityPolicy+    DeleteEmailIdentityPolicy (DeleteEmailIdentityPolicy'),+    newDeleteEmailIdentityPolicy,+    DeleteEmailIdentityPolicyResponse (DeleteEmailIdentityPolicyResponse'),+    newDeleteEmailIdentityPolicyResponse,++    -- ** DeleteEmailTemplate+    DeleteEmailTemplate (DeleteEmailTemplate'),+    newDeleteEmailTemplate,+    DeleteEmailTemplateResponse (DeleteEmailTemplateResponse'),+    newDeleteEmailTemplateResponse,++    -- ** DeleteSuppressedDestination+    DeleteSuppressedDestination (DeleteSuppressedDestination'),+    newDeleteSuppressedDestination,+    DeleteSuppressedDestinationResponse (DeleteSuppressedDestinationResponse'),+    newDeleteSuppressedDestinationResponse,++    -- ** GetAccount+    GetAccount (GetAccount'),+    newGetAccount,+    GetAccountResponse (GetAccountResponse'),+    newGetAccountResponse,++    -- ** GetBlacklistReports+    GetBlacklistReports (GetBlacklistReports'),+    newGetBlacklistReports,+    GetBlacklistReportsResponse (GetBlacklistReportsResponse'),+    newGetBlacklistReportsResponse,++    -- ** GetConfigurationSet+    GetConfigurationSet (GetConfigurationSet'),+    newGetConfigurationSet,+    GetConfigurationSetResponse (GetConfigurationSetResponse'),+    newGetConfigurationSetResponse,++    -- ** GetConfigurationSetEventDestinations+    GetConfigurationSetEventDestinations (GetConfigurationSetEventDestinations'),+    newGetConfigurationSetEventDestinations,+    GetConfigurationSetEventDestinationsResponse (GetConfigurationSetEventDestinationsResponse'),+    newGetConfigurationSetEventDestinationsResponse,++    -- ** GetContact+    GetContact (GetContact'),+    newGetContact,+    GetContactResponse (GetContactResponse'),+    newGetContactResponse,++    -- ** GetContactList+    GetContactList (GetContactList'),+    newGetContactList,+    GetContactListResponse (GetContactListResponse'),+    newGetContactListResponse,++    -- ** GetCustomVerificationEmailTemplate+    GetCustomVerificationEmailTemplate (GetCustomVerificationEmailTemplate'),+    newGetCustomVerificationEmailTemplate,+    GetCustomVerificationEmailTemplateResponse (GetCustomVerificationEmailTemplateResponse'),+    newGetCustomVerificationEmailTemplateResponse,++    -- ** GetDedicatedIp+    GetDedicatedIp (GetDedicatedIp'),+    newGetDedicatedIp,+    GetDedicatedIpResponse (GetDedicatedIpResponse'),+    newGetDedicatedIpResponse,++    -- ** GetDedicatedIpPool+    GetDedicatedIpPool (GetDedicatedIpPool'),+    newGetDedicatedIpPool,+    GetDedicatedIpPoolResponse (GetDedicatedIpPoolResponse'),+    newGetDedicatedIpPoolResponse,++    -- ** GetDedicatedIps+    GetDedicatedIps (GetDedicatedIps'),+    newGetDedicatedIps,+    GetDedicatedIpsResponse (GetDedicatedIpsResponse'),+    newGetDedicatedIpsResponse,++    -- ** GetDeliverabilityDashboardOptions+    GetDeliverabilityDashboardOptions (GetDeliverabilityDashboardOptions'),+    newGetDeliverabilityDashboardOptions,+    GetDeliverabilityDashboardOptionsResponse (GetDeliverabilityDashboardOptionsResponse'),+    newGetDeliverabilityDashboardOptionsResponse,++    -- ** GetDeliverabilityTestReport+    GetDeliverabilityTestReport (GetDeliverabilityTestReport'),+    newGetDeliverabilityTestReport,+    GetDeliverabilityTestReportResponse (GetDeliverabilityTestReportResponse'),+    newGetDeliverabilityTestReportResponse,++    -- ** GetDomainDeliverabilityCampaign+    GetDomainDeliverabilityCampaign (GetDomainDeliverabilityCampaign'),+    newGetDomainDeliverabilityCampaign,+    GetDomainDeliverabilityCampaignResponse (GetDomainDeliverabilityCampaignResponse'),+    newGetDomainDeliverabilityCampaignResponse,++    -- ** GetDomainStatisticsReport+    GetDomainStatisticsReport (GetDomainStatisticsReport'),+    newGetDomainStatisticsReport,+    GetDomainStatisticsReportResponse (GetDomainStatisticsReportResponse'),+    newGetDomainStatisticsReportResponse,++    -- ** GetEmailIdentity+    GetEmailIdentity (GetEmailIdentity'),+    newGetEmailIdentity,+    GetEmailIdentityResponse (GetEmailIdentityResponse'),+    newGetEmailIdentityResponse,++    -- ** GetEmailIdentityPolicies+    GetEmailIdentityPolicies (GetEmailIdentityPolicies'),+    newGetEmailIdentityPolicies,+    GetEmailIdentityPoliciesResponse (GetEmailIdentityPoliciesResponse'),+    newGetEmailIdentityPoliciesResponse,++    -- ** GetEmailTemplate+    GetEmailTemplate (GetEmailTemplate'),+    newGetEmailTemplate,+    GetEmailTemplateResponse (GetEmailTemplateResponse'),+    newGetEmailTemplateResponse,++    -- ** GetImportJob+    GetImportJob (GetImportJob'),+    newGetImportJob,+    GetImportJobResponse (GetImportJobResponse'),+    newGetImportJobResponse,++    -- ** GetSuppressedDestination+    GetSuppressedDestination (GetSuppressedDestination'),+    newGetSuppressedDestination,+    GetSuppressedDestinationResponse (GetSuppressedDestinationResponse'),+    newGetSuppressedDestinationResponse,++    -- ** ListConfigurationSets+    ListConfigurationSets (ListConfigurationSets'),+    newListConfigurationSets,+    ListConfigurationSetsResponse (ListConfigurationSetsResponse'),+    newListConfigurationSetsResponse,++    -- ** ListContactLists+    ListContactLists (ListContactLists'),+    newListContactLists,+    ListContactListsResponse (ListContactListsResponse'),+    newListContactListsResponse,++    -- ** ListContacts+    ListContacts (ListContacts'),+    newListContacts,+    ListContactsResponse (ListContactsResponse'),+    newListContactsResponse,++    -- ** ListCustomVerificationEmailTemplates+    ListCustomVerificationEmailTemplates (ListCustomVerificationEmailTemplates'),+    newListCustomVerificationEmailTemplates,+    ListCustomVerificationEmailTemplatesResponse (ListCustomVerificationEmailTemplatesResponse'),+    newListCustomVerificationEmailTemplatesResponse,++    -- ** ListDedicatedIpPools+    ListDedicatedIpPools (ListDedicatedIpPools'),+    newListDedicatedIpPools,+    ListDedicatedIpPoolsResponse (ListDedicatedIpPoolsResponse'),+    newListDedicatedIpPoolsResponse,++    -- ** ListDeliverabilityTestReports+    ListDeliverabilityTestReports (ListDeliverabilityTestReports'),+    newListDeliverabilityTestReports,+    ListDeliverabilityTestReportsResponse (ListDeliverabilityTestReportsResponse'),+    newListDeliverabilityTestReportsResponse,++    -- ** ListDomainDeliverabilityCampaigns+    ListDomainDeliverabilityCampaigns (ListDomainDeliverabilityCampaigns'),+    newListDomainDeliverabilityCampaigns,+    ListDomainDeliverabilityCampaignsResponse (ListDomainDeliverabilityCampaignsResponse'),+    newListDomainDeliverabilityCampaignsResponse,++    -- ** ListEmailIdentities+    ListEmailIdentities (ListEmailIdentities'),+    newListEmailIdentities,+    ListEmailIdentitiesResponse (ListEmailIdentitiesResponse'),+    newListEmailIdentitiesResponse,++    -- ** ListEmailTemplates+    ListEmailTemplates (ListEmailTemplates'),+    newListEmailTemplates,+    ListEmailTemplatesResponse (ListEmailTemplatesResponse'),+    newListEmailTemplatesResponse,++    -- ** ListImportJobs+    ListImportJobs (ListImportJobs'),+    newListImportJobs,+    ListImportJobsResponse (ListImportJobsResponse'),+    newListImportJobsResponse,++    -- ** ListRecommendations+    ListRecommendations (ListRecommendations'),+    newListRecommendations,+    ListRecommendationsResponse (ListRecommendationsResponse'),+    newListRecommendationsResponse,++    -- ** ListSuppressedDestinations+    ListSuppressedDestinations (ListSuppressedDestinations'),+    newListSuppressedDestinations,+    ListSuppressedDestinationsResponse (ListSuppressedDestinationsResponse'),+    newListSuppressedDestinationsResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutAccountDedicatedIpWarmupAttributes+    PutAccountDedicatedIpWarmupAttributes (PutAccountDedicatedIpWarmupAttributes'),+    newPutAccountDedicatedIpWarmupAttributes,+    PutAccountDedicatedIpWarmupAttributesResponse (PutAccountDedicatedIpWarmupAttributesResponse'),+    newPutAccountDedicatedIpWarmupAttributesResponse,++    -- ** PutAccountDetails+    PutAccountDetails (PutAccountDetails'),+    newPutAccountDetails,+    PutAccountDetailsResponse (PutAccountDetailsResponse'),+    newPutAccountDetailsResponse,++    -- ** PutAccountSendingAttributes+    PutAccountSendingAttributes (PutAccountSendingAttributes'),+    newPutAccountSendingAttributes,+    PutAccountSendingAttributesResponse (PutAccountSendingAttributesResponse'),+    newPutAccountSendingAttributesResponse,++    -- ** PutAccountSuppressionAttributes+    PutAccountSuppressionAttributes (PutAccountSuppressionAttributes'),+    newPutAccountSuppressionAttributes,+    PutAccountSuppressionAttributesResponse (PutAccountSuppressionAttributesResponse'),+    newPutAccountSuppressionAttributesResponse,++    -- ** PutAccountVdmAttributes+    PutAccountVdmAttributes (PutAccountVdmAttributes'),+    newPutAccountVdmAttributes,+    PutAccountVdmAttributesResponse (PutAccountVdmAttributesResponse'),+    newPutAccountVdmAttributesResponse,++    -- ** PutConfigurationSetDeliveryOptions+    PutConfigurationSetDeliveryOptions (PutConfigurationSetDeliveryOptions'),+    newPutConfigurationSetDeliveryOptions,+    PutConfigurationSetDeliveryOptionsResponse (PutConfigurationSetDeliveryOptionsResponse'),+    newPutConfigurationSetDeliveryOptionsResponse,++    -- ** PutConfigurationSetReputationOptions+    PutConfigurationSetReputationOptions (PutConfigurationSetReputationOptions'),+    newPutConfigurationSetReputationOptions,+    PutConfigurationSetReputationOptionsResponse (PutConfigurationSetReputationOptionsResponse'),+    newPutConfigurationSetReputationOptionsResponse,++    -- ** PutConfigurationSetSendingOptions+    PutConfigurationSetSendingOptions (PutConfigurationSetSendingOptions'),+    newPutConfigurationSetSendingOptions,+    PutConfigurationSetSendingOptionsResponse (PutConfigurationSetSendingOptionsResponse'),+    newPutConfigurationSetSendingOptionsResponse,++    -- ** PutConfigurationSetSuppressionOptions+    PutConfigurationSetSuppressionOptions (PutConfigurationSetSuppressionOptions'),+    newPutConfigurationSetSuppressionOptions,+    PutConfigurationSetSuppressionOptionsResponse (PutConfigurationSetSuppressionOptionsResponse'),+    newPutConfigurationSetSuppressionOptionsResponse,++    -- ** PutConfigurationSetTrackingOptions+    PutConfigurationSetTrackingOptions (PutConfigurationSetTrackingOptions'),+    newPutConfigurationSetTrackingOptions,+    PutConfigurationSetTrackingOptionsResponse (PutConfigurationSetTrackingOptionsResponse'),+    newPutConfigurationSetTrackingOptionsResponse,++    -- ** PutConfigurationSetVdmOptions+    PutConfigurationSetVdmOptions (PutConfigurationSetVdmOptions'),+    newPutConfigurationSetVdmOptions,+    PutConfigurationSetVdmOptionsResponse (PutConfigurationSetVdmOptionsResponse'),+    newPutConfigurationSetVdmOptionsResponse,++    -- ** PutDedicatedIpInPool+    PutDedicatedIpInPool (PutDedicatedIpInPool'),+    newPutDedicatedIpInPool,+    PutDedicatedIpInPoolResponse (PutDedicatedIpInPoolResponse'),+    newPutDedicatedIpInPoolResponse,++    -- ** PutDedicatedIpWarmupAttributes+    PutDedicatedIpWarmupAttributes (PutDedicatedIpWarmupAttributes'),+    newPutDedicatedIpWarmupAttributes,+    PutDedicatedIpWarmupAttributesResponse (PutDedicatedIpWarmupAttributesResponse'),+    newPutDedicatedIpWarmupAttributesResponse,++    -- ** PutDeliverabilityDashboardOption+    PutDeliverabilityDashboardOption (PutDeliverabilityDashboardOption'),+    newPutDeliverabilityDashboardOption,+    PutDeliverabilityDashboardOptionResponse (PutDeliverabilityDashboardOptionResponse'),+    newPutDeliverabilityDashboardOptionResponse,++    -- ** PutEmailIdentityConfigurationSetAttributes+    PutEmailIdentityConfigurationSetAttributes (PutEmailIdentityConfigurationSetAttributes'),+    newPutEmailIdentityConfigurationSetAttributes,+    PutEmailIdentityConfigurationSetAttributesResponse (PutEmailIdentityConfigurationSetAttributesResponse'),+    newPutEmailIdentityConfigurationSetAttributesResponse,++    -- ** PutEmailIdentityDkimAttributes+    PutEmailIdentityDkimAttributes (PutEmailIdentityDkimAttributes'),+    newPutEmailIdentityDkimAttributes,+    PutEmailIdentityDkimAttributesResponse (PutEmailIdentityDkimAttributesResponse'),+    newPutEmailIdentityDkimAttributesResponse,++    -- ** PutEmailIdentityDkimSigningAttributes+    PutEmailIdentityDkimSigningAttributes (PutEmailIdentityDkimSigningAttributes'),+    newPutEmailIdentityDkimSigningAttributes,+    PutEmailIdentityDkimSigningAttributesResponse (PutEmailIdentityDkimSigningAttributesResponse'),+    newPutEmailIdentityDkimSigningAttributesResponse,++    -- ** PutEmailIdentityFeedbackAttributes+    PutEmailIdentityFeedbackAttributes (PutEmailIdentityFeedbackAttributes'),+    newPutEmailIdentityFeedbackAttributes,+    PutEmailIdentityFeedbackAttributesResponse (PutEmailIdentityFeedbackAttributesResponse'),+    newPutEmailIdentityFeedbackAttributesResponse,++    -- ** PutEmailIdentityMailFromAttributes+    PutEmailIdentityMailFromAttributes (PutEmailIdentityMailFromAttributes'),+    newPutEmailIdentityMailFromAttributes,+    PutEmailIdentityMailFromAttributesResponse (PutEmailIdentityMailFromAttributesResponse'),+    newPutEmailIdentityMailFromAttributesResponse,++    -- ** PutSuppressedDestination+    PutSuppressedDestination (PutSuppressedDestination'),+    newPutSuppressedDestination,+    PutSuppressedDestinationResponse (PutSuppressedDestinationResponse'),+    newPutSuppressedDestinationResponse,++    -- ** SendBulkEmail+    SendBulkEmail (SendBulkEmail'),+    newSendBulkEmail,+    SendBulkEmailResponse (SendBulkEmailResponse'),+    newSendBulkEmailResponse,++    -- ** SendCustomVerificationEmail+    SendCustomVerificationEmail (SendCustomVerificationEmail'),+    newSendCustomVerificationEmail,+    SendCustomVerificationEmailResponse (SendCustomVerificationEmailResponse'),+    newSendCustomVerificationEmailResponse,++    -- ** SendEmail+    SendEmail (SendEmail'),+    newSendEmail,+    SendEmailResponse (SendEmailResponse'),+    newSendEmailResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** TestRenderEmailTemplate+    TestRenderEmailTemplate (TestRenderEmailTemplate'),+    newTestRenderEmailTemplate,+    TestRenderEmailTemplateResponse (TestRenderEmailTemplateResponse'),+    newTestRenderEmailTemplateResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateConfigurationSetEventDestination+    UpdateConfigurationSetEventDestination (UpdateConfigurationSetEventDestination'),+    newUpdateConfigurationSetEventDestination,+    UpdateConfigurationSetEventDestinationResponse (UpdateConfigurationSetEventDestinationResponse'),+    newUpdateConfigurationSetEventDestinationResponse,++    -- ** UpdateContact+    UpdateContact (UpdateContact'),+    newUpdateContact,+    UpdateContactResponse (UpdateContactResponse'),+    newUpdateContactResponse,++    -- ** UpdateContactList+    UpdateContactList (UpdateContactList'),+    newUpdateContactList,+    UpdateContactListResponse (UpdateContactListResponse'),+    newUpdateContactListResponse,++    -- ** UpdateCustomVerificationEmailTemplate+    UpdateCustomVerificationEmailTemplate (UpdateCustomVerificationEmailTemplate'),+    newUpdateCustomVerificationEmailTemplate,+    UpdateCustomVerificationEmailTemplateResponse (UpdateCustomVerificationEmailTemplateResponse'),+    newUpdateCustomVerificationEmailTemplateResponse,++    -- ** UpdateEmailIdentityPolicy+    UpdateEmailIdentityPolicy (UpdateEmailIdentityPolicy'),+    newUpdateEmailIdentityPolicy,+    UpdateEmailIdentityPolicyResponse (UpdateEmailIdentityPolicyResponse'),+    newUpdateEmailIdentityPolicyResponse,++    -- ** UpdateEmailTemplate+    UpdateEmailTemplate (UpdateEmailTemplate'),+    newUpdateEmailTemplate,+    UpdateEmailTemplateResponse (UpdateEmailTemplateResponse'),+    newUpdateEmailTemplateResponse,++    -- * Types++    -- ** BehaviorOnMxFailure+    BehaviorOnMxFailure (..),++    -- ** BulkEmailStatus+    BulkEmailStatus (..),++    -- ** ContactLanguage+    ContactLanguage (..),++    -- ** ContactListImportAction+    ContactListImportAction (..),++    -- ** DataFormat+    DataFormat (..),++    -- ** DeliverabilityDashboardAccountStatus+    DeliverabilityDashboardAccountStatus (..),++    -- ** DeliverabilityTestStatus+    DeliverabilityTestStatus (..),++    -- ** DimensionValueSource+    DimensionValueSource (..),++    -- ** DkimSigningAttributesOrigin+    DkimSigningAttributesOrigin (..),++    -- ** DkimSigningKeyLength+    DkimSigningKeyLength (..),++    -- ** DkimStatus+    DkimStatus (..),++    -- ** EventType+    EventType (..),++    -- ** FeatureStatus+    FeatureStatus (..),++    -- ** IdentityType+    IdentityType (..),++    -- ** ImportDestinationType+    ImportDestinationType (..),++    -- ** JobStatus+    JobStatus (..),++    -- ** ListRecommendationsFilterKey+    ListRecommendationsFilterKey (..),++    -- ** MailFromDomainStatus+    MailFromDomainStatus (..),++    -- ** MailType+    MailType (..),++    -- ** Metric+    Metric (..),++    -- ** MetricDimensionName+    MetricDimensionName (..),++    -- ** MetricNamespace+    MetricNamespace (..),++    -- ** QueryErrorCode+    QueryErrorCode (..),++    -- ** RecommendationImpact+    RecommendationImpact (..),++    -- ** RecommendationStatus+    RecommendationStatus (..),++    -- ** RecommendationType+    RecommendationType (..),++    -- ** ReviewStatus+    ReviewStatus (..),++    -- ** ScalingMode+    ScalingMode (..),++    -- ** SubscriptionStatus+    SubscriptionStatus (..),++    -- ** SuppressionListImportAction+    SuppressionListImportAction (..),++    -- ** SuppressionListReason+    SuppressionListReason (..),++    -- ** TlsPolicy+    TlsPolicy (..),++    -- ** VerificationStatus+    VerificationStatus (..),++    -- ** WarmupStatus+    WarmupStatus (..),++    -- ** AccountDetails+    AccountDetails (AccountDetails'),+    newAccountDetails,++    -- ** BatchGetMetricDataQuery+    BatchGetMetricDataQuery (BatchGetMetricDataQuery'),+    newBatchGetMetricDataQuery,++    -- ** BlacklistEntry+    BlacklistEntry (BlacklistEntry'),+    newBlacklistEntry,++    -- ** Body+    Body (Body'),+    newBody,++    -- ** BulkEmailContent+    BulkEmailContent (BulkEmailContent'),+    newBulkEmailContent,++    -- ** BulkEmailEntry+    BulkEmailEntry (BulkEmailEntry'),+    newBulkEmailEntry,++    -- ** BulkEmailEntryResult+    BulkEmailEntryResult (BulkEmailEntryResult'),+    newBulkEmailEntryResult,++    -- ** CloudWatchDestination+    CloudWatchDestination (CloudWatchDestination'),+    newCloudWatchDestination,++    -- ** CloudWatchDimensionConfiguration+    CloudWatchDimensionConfiguration (CloudWatchDimensionConfiguration'),+    newCloudWatchDimensionConfiguration,++    -- ** Contact+    Contact (Contact'),+    newContact,++    -- ** ContactList+    ContactList (ContactList'),+    newContactList,++    -- ** ContactListDestination+    ContactListDestination (ContactListDestination'),+    newContactListDestination,++    -- ** Content+    Content (Content'),+    newContent,++    -- ** CustomVerificationEmailTemplateMetadata+    CustomVerificationEmailTemplateMetadata (CustomVerificationEmailTemplateMetadata'),+    newCustomVerificationEmailTemplateMetadata,++    -- ** DailyVolume+    DailyVolume (DailyVolume'),+    newDailyVolume,++    -- ** DashboardAttributes+    DashboardAttributes (DashboardAttributes'),+    newDashboardAttributes,++    -- ** DashboardOptions+    DashboardOptions (DashboardOptions'),+    newDashboardOptions,++    -- ** DedicatedIp+    DedicatedIp (DedicatedIp'),+    newDedicatedIp,++    -- ** DedicatedIpPool+    DedicatedIpPool (DedicatedIpPool'),+    newDedicatedIpPool,++    -- ** DeliverabilityTestReport+    DeliverabilityTestReport (DeliverabilityTestReport'),+    newDeliverabilityTestReport,++    -- ** DeliveryOptions+    DeliveryOptions (DeliveryOptions'),+    newDeliveryOptions,++    -- ** Destination+    Destination (Destination'),+    newDestination,++    -- ** DkimAttributes+    DkimAttributes (DkimAttributes'),+    newDkimAttributes,++    -- ** DkimSigningAttributes+    DkimSigningAttributes (DkimSigningAttributes'),+    newDkimSigningAttributes,++    -- ** DomainDeliverabilityCampaign+    DomainDeliverabilityCampaign (DomainDeliverabilityCampaign'),+    newDomainDeliverabilityCampaign,++    -- ** DomainDeliverabilityTrackingOption+    DomainDeliverabilityTrackingOption (DomainDeliverabilityTrackingOption'),+    newDomainDeliverabilityTrackingOption,++    -- ** DomainIspPlacement+    DomainIspPlacement (DomainIspPlacement'),+    newDomainIspPlacement,++    -- ** EmailContent+    EmailContent (EmailContent'),+    newEmailContent,++    -- ** EmailTemplateContent+    EmailTemplateContent (EmailTemplateContent'),+    newEmailTemplateContent,++    -- ** EmailTemplateMetadata+    EmailTemplateMetadata (EmailTemplateMetadata'),+    newEmailTemplateMetadata,++    -- ** EventDestination+    EventDestination (EventDestination'),+    newEventDestination,++    -- ** EventDestinationDefinition+    EventDestinationDefinition (EventDestinationDefinition'),+    newEventDestinationDefinition,++    -- ** FailureInfo+    FailureInfo (FailureInfo'),+    newFailureInfo,++    -- ** GuardianAttributes+    GuardianAttributes (GuardianAttributes'),+    newGuardianAttributes,++    -- ** GuardianOptions+    GuardianOptions (GuardianOptions'),+    newGuardianOptions,++    -- ** IdentityInfo+    IdentityInfo (IdentityInfo'),+    newIdentityInfo,++    -- ** ImportDataSource+    ImportDataSource (ImportDataSource'),+    newImportDataSource,++    -- ** ImportDestination+    ImportDestination (ImportDestination'),+    newImportDestination,++    -- ** ImportJobSummary+    ImportJobSummary (ImportJobSummary'),+    newImportJobSummary,++    -- ** InboxPlacementTrackingOption+    InboxPlacementTrackingOption (InboxPlacementTrackingOption'),+    newInboxPlacementTrackingOption,++    -- ** IspPlacement+    IspPlacement (IspPlacement'),+    newIspPlacement,++    -- ** KinesisFirehoseDestination+    KinesisFirehoseDestination (KinesisFirehoseDestination'),+    newKinesisFirehoseDestination,++    -- ** ListContactsFilter+    ListContactsFilter (ListContactsFilter'),+    newListContactsFilter,++    -- ** ListManagementOptions+    ListManagementOptions (ListManagementOptions'),+    newListManagementOptions,++    -- ** MailFromAttributes+    MailFromAttributes (MailFromAttributes'),+    newMailFromAttributes,++    -- ** Message+    Message (Message'),+    newMessage,++    -- ** MessageTag+    MessageTag (MessageTag'),+    newMessageTag,++    -- ** MetricDataError+    MetricDataError (MetricDataError'),+    newMetricDataError,++    -- ** MetricDataResult+    MetricDataResult (MetricDataResult'),+    newMetricDataResult,++    -- ** OverallVolume+    OverallVolume (OverallVolume'),+    newOverallVolume,++    -- ** PinpointDestination+    PinpointDestination (PinpointDestination'),+    newPinpointDestination,++    -- ** PlacementStatistics+    PlacementStatistics (PlacementStatistics'),+    newPlacementStatistics,++    -- ** RawMessage+    RawMessage (RawMessage'),+    newRawMessage,++    -- ** Recommendation+    Recommendation (Recommendation'),+    newRecommendation,++    -- ** ReplacementEmailContent+    ReplacementEmailContent (ReplacementEmailContent'),+    newReplacementEmailContent,++    -- ** ReplacementTemplate+    ReplacementTemplate (ReplacementTemplate'),+    newReplacementTemplate,++    -- ** ReputationOptions+    ReputationOptions (ReputationOptions'),+    newReputationOptions,++    -- ** ReviewDetails+    ReviewDetails (ReviewDetails'),+    newReviewDetails,++    -- ** SendQuota+    SendQuota (SendQuota'),+    newSendQuota,++    -- ** SendingOptions+    SendingOptions (SendingOptions'),+    newSendingOptions,++    -- ** SnsDestination+    SnsDestination (SnsDestination'),+    newSnsDestination,++    -- ** SuppressedDestination+    SuppressedDestination (SuppressedDestination'),+    newSuppressedDestination,++    -- ** SuppressedDestinationAttributes+    SuppressedDestinationAttributes (SuppressedDestinationAttributes'),+    newSuppressedDestinationAttributes,++    -- ** SuppressedDestinationSummary+    SuppressedDestinationSummary (SuppressedDestinationSummary'),+    newSuppressedDestinationSummary,++    -- ** SuppressionAttributes+    SuppressionAttributes (SuppressionAttributes'),+    newSuppressionAttributes,++    -- ** SuppressionListDestination+    SuppressionListDestination (SuppressionListDestination'),+    newSuppressionListDestination,++    -- ** SuppressionOptions+    SuppressionOptions (SuppressionOptions'),+    newSuppressionOptions,++    -- ** Tag+    Tag (Tag'),+    newTag,++    -- ** Template+    Template (Template'),+    newTemplate,++    -- ** Topic+    Topic (Topic'),+    newTopic,++    -- ** TopicFilter+    TopicFilter (TopicFilter'),+    newTopicFilter,++    -- ** TopicPreference+    TopicPreference (TopicPreference'),+    newTopicPreference,++    -- ** TrackingOptions+    TrackingOptions (TrackingOptions'),+    newTrackingOptions,++    -- ** VdmAttributes+    VdmAttributes (VdmAttributes'),+    newVdmAttributes,++    -- ** VdmOptions+    VdmOptions (VdmOptions'),+    newVdmOptions,++    -- ** VolumeStatistics+    VolumeStatistics (VolumeStatistics'),+    newVolumeStatistics,+  )+where++import Amazonka.SESV2.BatchGetMetricData+import Amazonka.SESV2.CreateConfigurationSet+import Amazonka.SESV2.CreateConfigurationSetEventDestination+import Amazonka.SESV2.CreateContact+import Amazonka.SESV2.CreateContactList+import Amazonka.SESV2.CreateCustomVerificationEmailTemplate+import Amazonka.SESV2.CreateDedicatedIpPool+import Amazonka.SESV2.CreateDeliverabilityTestReport+import Amazonka.SESV2.CreateEmailIdentity+import Amazonka.SESV2.CreateEmailIdentityPolicy+import Amazonka.SESV2.CreateEmailTemplate+import Amazonka.SESV2.CreateImportJob+import Amazonka.SESV2.DeleteConfigurationSet+import Amazonka.SESV2.DeleteConfigurationSetEventDestination+import Amazonka.SESV2.DeleteContact+import Amazonka.SESV2.DeleteContactList+import Amazonka.SESV2.DeleteCustomVerificationEmailTemplate+import Amazonka.SESV2.DeleteDedicatedIpPool+import Amazonka.SESV2.DeleteEmailIdentity+import Amazonka.SESV2.DeleteEmailIdentityPolicy+import Amazonka.SESV2.DeleteEmailTemplate+import Amazonka.SESV2.DeleteSuppressedDestination+import Amazonka.SESV2.GetAccount+import Amazonka.SESV2.GetBlacklistReports+import Amazonka.SESV2.GetConfigurationSet+import Amazonka.SESV2.GetConfigurationSetEventDestinations+import Amazonka.SESV2.GetContact+import Amazonka.SESV2.GetContactList+import Amazonka.SESV2.GetCustomVerificationEmailTemplate+import Amazonka.SESV2.GetDedicatedIp+import Amazonka.SESV2.GetDedicatedIpPool+import Amazonka.SESV2.GetDedicatedIps+import Amazonka.SESV2.GetDeliverabilityDashboardOptions+import Amazonka.SESV2.GetDeliverabilityTestReport+import Amazonka.SESV2.GetDomainDeliverabilityCampaign+import Amazonka.SESV2.GetDomainStatisticsReport+import Amazonka.SESV2.GetEmailIdentity+import Amazonka.SESV2.GetEmailIdentityPolicies+import Amazonka.SESV2.GetEmailTemplate+import Amazonka.SESV2.GetImportJob+import Amazonka.SESV2.GetSuppressedDestination+import Amazonka.SESV2.Lens+import Amazonka.SESV2.ListConfigurationSets+import Amazonka.SESV2.ListContactLists+import Amazonka.SESV2.ListContacts+import Amazonka.SESV2.ListCustomVerificationEmailTemplates+import Amazonka.SESV2.ListDedicatedIpPools+import Amazonka.SESV2.ListDeliverabilityTestReports+import Amazonka.SESV2.ListDomainDeliverabilityCampaigns+import Amazonka.SESV2.ListEmailIdentities+import Amazonka.SESV2.ListEmailTemplates+import Amazonka.SESV2.ListImportJobs+import Amazonka.SESV2.ListRecommendations+import Amazonka.SESV2.ListSuppressedDestinations+import Amazonka.SESV2.ListTagsForResource+import Amazonka.SESV2.PutAccountDedicatedIpWarmupAttributes+import Amazonka.SESV2.PutAccountDetails+import Amazonka.SESV2.PutAccountSendingAttributes+import Amazonka.SESV2.PutAccountSuppressionAttributes+import Amazonka.SESV2.PutAccountVdmAttributes+import Amazonka.SESV2.PutConfigurationSetDeliveryOptions+import Amazonka.SESV2.PutConfigurationSetReputationOptions+import Amazonka.SESV2.PutConfigurationSetSendingOptions+import Amazonka.SESV2.PutConfigurationSetSuppressionOptions+import Amazonka.SESV2.PutConfigurationSetTrackingOptions+import Amazonka.SESV2.PutConfigurationSetVdmOptions+import Amazonka.SESV2.PutDedicatedIpInPool+import Amazonka.SESV2.PutDedicatedIpWarmupAttributes+import Amazonka.SESV2.PutDeliverabilityDashboardOption+import Amazonka.SESV2.PutEmailIdentityConfigurationSetAttributes+import Amazonka.SESV2.PutEmailIdentityDkimAttributes+import Amazonka.SESV2.PutEmailIdentityDkimSigningAttributes+import Amazonka.SESV2.PutEmailIdentityFeedbackAttributes+import Amazonka.SESV2.PutEmailIdentityMailFromAttributes+import Amazonka.SESV2.PutSuppressedDestination+import Amazonka.SESV2.SendBulkEmail+import Amazonka.SESV2.SendCustomVerificationEmail+import Amazonka.SESV2.SendEmail+import Amazonka.SESV2.TagResource+import Amazonka.SESV2.TestRenderEmailTemplate+import Amazonka.SESV2.Types+import Amazonka.SESV2.UntagResource+import Amazonka.SESV2.UpdateConfigurationSetEventDestination+import Amazonka.SESV2.UpdateContact+import Amazonka.SESV2.UpdateContactList+import Amazonka.SESV2.UpdateCustomVerificationEmailTemplate+import Amazonka.SESV2.UpdateEmailIdentityPolicy+import Amazonka.SESV2.UpdateEmailTemplate+import Amazonka.SESV2.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 'SESV2'.++-- $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.
+ gen/Amazonka/SESV2/BatchGetMetricData.hs view
@@ -0,0 +1,190 @@+{-# 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.SESV2.BatchGetMetricData+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves batches of metric data collected based on your sending+-- activity.+--+-- You can execute this operation no more than 16 times per second, and+-- with at most 160 queries from the batches per second (cumulative).+module Amazonka.SESV2.BatchGetMetricData+  ( -- * Creating a Request+    BatchGetMetricData (..),+    newBatchGetMetricData,++    -- * Request Lenses+    batchGetMetricData_queries,++    -- * Destructuring the Response+    BatchGetMetricDataResponse (..),+    newBatchGetMetricDataResponse,++    -- * Response Lenses+    batchGetMetricDataResponse_errors,+    batchGetMetricDataResponse_results,+    batchGetMetricDataResponse_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.SESV2.Types++-- | Represents a request to retrieve a batch of metric data.+--+-- /See:/ 'newBatchGetMetricData' smart constructor.+data BatchGetMetricData = BatchGetMetricData'+  { -- | A list of queries for metrics to be retrieved.+    queries :: Prelude.NonEmpty BatchGetMetricDataQuery+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetMetricData' 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:+--+-- 'queries', 'batchGetMetricData_queries' - A list of queries for metrics to be retrieved.+newBatchGetMetricData ::+  -- | 'queries'+  Prelude.NonEmpty BatchGetMetricDataQuery ->+  BatchGetMetricData+newBatchGetMetricData pQueries_ =+  BatchGetMetricData'+    { queries =+        Lens.coerced Lens.# pQueries_+    }++-- | A list of queries for metrics to be retrieved.+batchGetMetricData_queries :: Lens.Lens' BatchGetMetricData (Prelude.NonEmpty BatchGetMetricDataQuery)+batchGetMetricData_queries = Lens.lens (\BatchGetMetricData' {queries} -> queries) (\s@BatchGetMetricData' {} a -> s {queries = a} :: BatchGetMetricData) Prelude.. Lens.coerced++instance Core.AWSRequest BatchGetMetricData where+  type+    AWSResponse BatchGetMetricData =+      BatchGetMetricDataResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          BatchGetMetricDataResponse'+            Prelude.<$> (x Data..?> "Errors" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Results" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable BatchGetMetricData where+  hashWithSalt _salt BatchGetMetricData' {..} =+    _salt `Prelude.hashWithSalt` queries++instance Prelude.NFData BatchGetMetricData where+  rnf BatchGetMetricData' {..} = Prelude.rnf queries++instance Data.ToHeaders BatchGetMetricData where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON BatchGetMetricData where+  toJSON BatchGetMetricData' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Queries" Data..= queries)]+      )++instance Data.ToPath BatchGetMetricData where+  toPath = Prelude.const "/v2/email/metrics/batch"++instance Data.ToQuery BatchGetMetricData where+  toQuery = Prelude.const Prelude.mempty++-- | Represents the result of processing your metric data batch request+--+-- /See:/ 'newBatchGetMetricDataResponse' smart constructor.+data BatchGetMetricDataResponse = BatchGetMetricDataResponse'+  { -- | A list of @MetricDataError@ encountered while processing your metric+    -- data batch request.+    errors :: Prelude.Maybe [MetricDataError],+    -- | A list of successfully retrieved @MetricDataResult@.+    results :: Prelude.Maybe [MetricDataResult],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetMetricDataResponse' 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:+--+-- 'errors', 'batchGetMetricDataResponse_errors' - A list of @MetricDataError@ encountered while processing your metric+-- data batch request.+--+-- 'results', 'batchGetMetricDataResponse_results' - A list of successfully retrieved @MetricDataResult@.+--+-- 'httpStatus', 'batchGetMetricDataResponse_httpStatus' - The response's http status code.+newBatchGetMetricDataResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  BatchGetMetricDataResponse+newBatchGetMetricDataResponse pHttpStatus_ =+  BatchGetMetricDataResponse'+    { errors =+        Prelude.Nothing,+      results = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of @MetricDataError@ encountered while processing your metric+-- data batch request.+batchGetMetricDataResponse_errors :: Lens.Lens' BatchGetMetricDataResponse (Prelude.Maybe [MetricDataError])+batchGetMetricDataResponse_errors = Lens.lens (\BatchGetMetricDataResponse' {errors} -> errors) (\s@BatchGetMetricDataResponse' {} a -> s {errors = a} :: BatchGetMetricDataResponse) Prelude.. Lens.mapping Lens.coerced++-- | A list of successfully retrieved @MetricDataResult@.+batchGetMetricDataResponse_results :: Lens.Lens' BatchGetMetricDataResponse (Prelude.Maybe [MetricDataResult])+batchGetMetricDataResponse_results = Lens.lens (\BatchGetMetricDataResponse' {results} -> results) (\s@BatchGetMetricDataResponse' {} a -> s {results = a} :: BatchGetMetricDataResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+batchGetMetricDataResponse_httpStatus :: Lens.Lens' BatchGetMetricDataResponse Prelude.Int+batchGetMetricDataResponse_httpStatus = Lens.lens (\BatchGetMetricDataResponse' {httpStatus} -> httpStatus) (\s@BatchGetMetricDataResponse' {} a -> s {httpStatus = a} :: BatchGetMetricDataResponse)++instance Prelude.NFData BatchGetMetricDataResponse where+  rnf BatchGetMetricDataResponse' {..} =+    Prelude.rnf errors+      `Prelude.seq` Prelude.rnf results+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateConfigurationSet.hs view
@@ -0,0 +1,293 @@+{-# 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.SESV2.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)+--+-- Create a configuration set. /Configuration sets/ are groups of rules+-- that you can apply to the emails that you send. You apply a+-- configuration set to an email by specifying the name of the+-- configuration set when you call the Amazon SES API v2. When you apply a+-- configuration set to an email, all of the rules in that configuration+-- set are applied to the email.+module Amazonka.SESV2.CreateConfigurationSet+  ( -- * Creating a Request+    CreateConfigurationSet (..),+    newCreateConfigurationSet,++    -- * Request Lenses+    createConfigurationSet_deliveryOptions,+    createConfigurationSet_reputationOptions,+    createConfigurationSet_sendingOptions,+    createConfigurationSet_suppressionOptions,+    createConfigurationSet_tags,+    createConfigurationSet_trackingOptions,+    createConfigurationSet_vdmOptions,+    createConfigurationSet_configurationSetName,++    -- * 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.SESV2.Types++-- | A request to create a configuration set.+--+-- /See:/ 'newCreateConfigurationSet' smart constructor.+data CreateConfigurationSet = CreateConfigurationSet'+  { -- | An object that defines the dedicated IP pool that is used to send emails+    -- that you send using the configuration set.+    deliveryOptions :: Prelude.Maybe DeliveryOptions,+    -- | An object that defines whether or not Amazon SES collects reputation+    -- metrics for the emails that you send that use the configuration set.+    reputationOptions :: Prelude.Maybe ReputationOptions,+    -- | An object that defines whether or not Amazon SES can send email that you+    -- send using the configuration set.+    sendingOptions :: Prelude.Maybe SendingOptions,+    suppressionOptions :: Prelude.Maybe SuppressionOptions,+    -- | An array of objects that define the tags (keys and values) to associate+    -- with the configuration set.+    tags :: Prelude.Maybe [Tag],+    -- | An object that defines the open and click tracking options for emails+    -- that you send using the configuration set.+    trackingOptions :: Prelude.Maybe TrackingOptions,+    -- | An object that defines the VDM options for emails that you send using+    -- the configuration set.+    vdmOptions :: Prelude.Maybe VdmOptions,+    -- | The name of the configuration set. The name can contain up to 64+    -- alphanumeric characters, including letters, numbers, hyphens (-) and+    -- underscores (_) only.+    configurationSetName :: Prelude.Text+  }+  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:+--+-- 'deliveryOptions', 'createConfigurationSet_deliveryOptions' - An object that defines the dedicated IP pool that is used to send emails+-- that you send using the configuration set.+--+-- 'reputationOptions', 'createConfigurationSet_reputationOptions' - An object that defines whether or not Amazon SES collects reputation+-- metrics for the emails that you send that use the configuration set.+--+-- 'sendingOptions', 'createConfigurationSet_sendingOptions' - An object that defines whether or not Amazon SES can send email that you+-- send using the configuration set.+--+-- 'suppressionOptions', 'createConfigurationSet_suppressionOptions' - Undocumented member.+--+-- 'tags', 'createConfigurationSet_tags' - An array of objects that define the tags (keys and values) to associate+-- with the configuration set.+--+-- 'trackingOptions', 'createConfigurationSet_trackingOptions' - An object that defines the open and click tracking options for emails+-- that you send using the configuration set.+--+-- 'vdmOptions', 'createConfigurationSet_vdmOptions' - An object that defines the VDM options for emails that you send using+-- the configuration set.+--+-- 'configurationSetName', 'createConfigurationSet_configurationSetName' - The name of the configuration set. The name can contain up to 64+-- alphanumeric characters, including letters, numbers, hyphens (-) and+-- underscores (_) only.+newCreateConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  CreateConfigurationSet+newCreateConfigurationSet pConfigurationSetName_ =+  CreateConfigurationSet'+    { deliveryOptions =+        Prelude.Nothing,+      reputationOptions = Prelude.Nothing,+      sendingOptions = Prelude.Nothing,+      suppressionOptions = Prelude.Nothing,+      tags = Prelude.Nothing,+      trackingOptions = Prelude.Nothing,+      vdmOptions = Prelude.Nothing,+      configurationSetName = pConfigurationSetName_+    }++-- | An object that defines the dedicated IP pool that is used to send emails+-- that you send using the configuration set.+createConfigurationSet_deliveryOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe DeliveryOptions)+createConfigurationSet_deliveryOptions = Lens.lens (\CreateConfigurationSet' {deliveryOptions} -> deliveryOptions) (\s@CreateConfigurationSet' {} a -> s {deliveryOptions = a} :: CreateConfigurationSet)++-- | An object that defines whether or not Amazon SES collects reputation+-- metrics for the emails that you send that use the configuration set.+createConfigurationSet_reputationOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe ReputationOptions)+createConfigurationSet_reputationOptions = Lens.lens (\CreateConfigurationSet' {reputationOptions} -> reputationOptions) (\s@CreateConfigurationSet' {} a -> s {reputationOptions = a} :: CreateConfigurationSet)++-- | An object that defines whether or not Amazon SES can send email that you+-- send using the configuration set.+createConfigurationSet_sendingOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe SendingOptions)+createConfigurationSet_sendingOptions = Lens.lens (\CreateConfigurationSet' {sendingOptions} -> sendingOptions) (\s@CreateConfigurationSet' {} a -> s {sendingOptions = a} :: CreateConfigurationSet)++-- | Undocumented member.+createConfigurationSet_suppressionOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe SuppressionOptions)+createConfigurationSet_suppressionOptions = Lens.lens (\CreateConfigurationSet' {suppressionOptions} -> suppressionOptions) (\s@CreateConfigurationSet' {} a -> s {suppressionOptions = a} :: CreateConfigurationSet)++-- | An array of objects that define the tags (keys and values) to associate+-- with the configuration set.+createConfigurationSet_tags :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe [Tag])+createConfigurationSet_tags = Lens.lens (\CreateConfigurationSet' {tags} -> tags) (\s@CreateConfigurationSet' {} a -> s {tags = a} :: CreateConfigurationSet) Prelude.. Lens.mapping Lens.coerced++-- | An object that defines the open and click tracking options for emails+-- that you send using the configuration set.+createConfigurationSet_trackingOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe TrackingOptions)+createConfigurationSet_trackingOptions = Lens.lens (\CreateConfigurationSet' {trackingOptions} -> trackingOptions) (\s@CreateConfigurationSet' {} a -> s {trackingOptions = a} :: CreateConfigurationSet)++-- | An object that defines the VDM options for emails that you send using+-- the configuration set.+createConfigurationSet_vdmOptions :: Lens.Lens' CreateConfigurationSet (Prelude.Maybe VdmOptions)+createConfigurationSet_vdmOptions = Lens.lens (\CreateConfigurationSet' {vdmOptions} -> vdmOptions) (\s@CreateConfigurationSet' {} a -> s {vdmOptions = a} :: CreateConfigurationSet)++-- | The name of the configuration set. The name can contain up to 64+-- alphanumeric characters, including letters, numbers, hyphens (-) and+-- underscores (_) only.+createConfigurationSet_configurationSetName :: Lens.Lens' CreateConfigurationSet Prelude.Text+createConfigurationSet_configurationSetName = Lens.lens (\CreateConfigurationSet' {configurationSetName} -> configurationSetName) (\s@CreateConfigurationSet' {} a -> s {configurationSetName = a} :: CreateConfigurationSet)++instance Core.AWSRequest CreateConfigurationSet where+  type+    AWSResponse CreateConfigurationSet =+      CreateConfigurationSetResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateConfigurationSetResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateConfigurationSet where+  hashWithSalt _salt CreateConfigurationSet' {..} =+    _salt+      `Prelude.hashWithSalt` deliveryOptions+      `Prelude.hashWithSalt` reputationOptions+      `Prelude.hashWithSalt` sendingOptions+      `Prelude.hashWithSalt` suppressionOptions+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` trackingOptions+      `Prelude.hashWithSalt` vdmOptions+      `Prelude.hashWithSalt` configurationSetName++instance Prelude.NFData CreateConfigurationSet where+  rnf CreateConfigurationSet' {..} =+    Prelude.rnf deliveryOptions+      `Prelude.seq` Prelude.rnf reputationOptions+      `Prelude.seq` Prelude.rnf sendingOptions+      `Prelude.seq` Prelude.rnf suppressionOptions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf trackingOptions+      `Prelude.seq` Prelude.rnf vdmOptions+      `Prelude.seq` Prelude.rnf configurationSetName++instance Data.ToHeaders CreateConfigurationSet where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateConfigurationSet where+  toJSON CreateConfigurationSet' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DeliveryOptions" Data..=)+              Prelude.<$> deliveryOptions,+            ("ReputationOptions" Data..=)+              Prelude.<$> reputationOptions,+            ("SendingOptions" Data..=)+              Prelude.<$> sendingOptions,+            ("SuppressionOptions" Data..=)+              Prelude.<$> suppressionOptions,+            ("Tags" Data..=) Prelude.<$> tags,+            ("TrackingOptions" Data..=)+              Prelude.<$> trackingOptions,+            ("VdmOptions" Data..=) Prelude.<$> vdmOptions,+            Prelude.Just+              ( "ConfigurationSetName"+                  Data..= configurationSetName+              )+          ]+      )++instance Data.ToPath CreateConfigurationSet where+  toPath = Prelude.const "/v2/email/configuration-sets"++instance Data.ToQuery CreateConfigurationSet where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /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
+ gen/Amazonka/SESV2/CreateConfigurationSetEventDestination.hs view
@@ -0,0 +1,245 @@+{-# 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.SESV2.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)+--+-- Create an event destination. /Events/ include message sends, deliveries,+-- opens, clicks, bounces, and complaints. /Event destinations/ are places+-- that you can send information about these events to. For example, you+-- can send event data to Amazon SNS to receive notifications when you+-- receive bounces or complaints, or you can use Amazon Kinesis Data+-- Firehose to stream data to Amazon S3 for long-term storage.+--+-- A single configuration set can include more than one event destination.+module Amazonka.SESV2.CreateConfigurationSetEventDestination+  ( -- * Creating a Request+    CreateConfigurationSetEventDestination (..),+    newCreateConfigurationSetEventDestination,++    -- * Request Lenses+    createConfigurationSetEventDestination_configurationSetName,+    createConfigurationSetEventDestination_eventDestinationName,+    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.SESV2.Types++-- | A request to add an event destination to a configuration set.+--+-- /See:/ 'newCreateConfigurationSetEventDestination' smart constructor.+data CreateConfigurationSetEventDestination = CreateConfigurationSetEventDestination'+  { -- | The name of the configuration set .+    configurationSetName :: Prelude.Text,+    -- | A name that identifies the event destination within the configuration+    -- set.+    eventDestinationName :: Prelude.Text,+    -- | An object that defines the event destination.+    eventDestination :: EventDestinationDefinition+  }+  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 .+--+-- 'eventDestinationName', 'createConfigurationSetEventDestination_eventDestinationName' - A name that identifies the event destination within the configuration+-- set.+--+-- 'eventDestination', 'createConfigurationSetEventDestination_eventDestination' - An object that defines the event destination.+newCreateConfigurationSetEventDestination ::+  -- | 'configurationSetName'+  Prelude.Text ->+  -- | 'eventDestinationName'+  Prelude.Text ->+  -- | 'eventDestination'+  EventDestinationDefinition ->+  CreateConfigurationSetEventDestination+newCreateConfigurationSetEventDestination+  pConfigurationSetName_+  pEventDestinationName_+  pEventDestination_ =+    CreateConfigurationSetEventDestination'+      { configurationSetName =+          pConfigurationSetName_,+        eventDestinationName =+          pEventDestinationName_,+        eventDestination =+          pEventDestination_+      }++-- | The name of the configuration set .+createConfigurationSetEventDestination_configurationSetName :: Lens.Lens' CreateConfigurationSetEventDestination Prelude.Text+createConfigurationSetEventDestination_configurationSetName = Lens.lens (\CreateConfigurationSetEventDestination' {configurationSetName} -> configurationSetName) (\s@CreateConfigurationSetEventDestination' {} a -> s {configurationSetName = a} :: CreateConfigurationSetEventDestination)++-- | A name that identifies the event destination within the configuration+-- set.+createConfigurationSetEventDestination_eventDestinationName :: Lens.Lens' CreateConfigurationSetEventDestination Prelude.Text+createConfigurationSetEventDestination_eventDestinationName = Lens.lens (\CreateConfigurationSetEventDestination' {eventDestinationName} -> eventDestinationName) (\s@CreateConfigurationSetEventDestination' {} a -> s {eventDestinationName = a} :: CreateConfigurationSetEventDestination)++-- | An object that defines the event destination.+createConfigurationSetEventDestination_eventDestination :: Lens.Lens' CreateConfigurationSetEventDestination EventDestinationDefinition+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.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateConfigurationSetEventDestinationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    CreateConfigurationSetEventDestination+  where+  hashWithSalt+    _salt+    CreateConfigurationSetEventDestination' {..} =+      _salt+        `Prelude.hashWithSalt` configurationSetName+        `Prelude.hashWithSalt` eventDestinationName+        `Prelude.hashWithSalt` eventDestination++instance+  Prelude.NFData+    CreateConfigurationSetEventDestination+  where+  rnf CreateConfigurationSetEventDestination' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf eventDestinationName+      `Prelude.seq` Prelude.rnf eventDestination++instance+  Data.ToHeaders+    CreateConfigurationSetEventDestination+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    CreateConfigurationSetEventDestination+  where+  toJSON CreateConfigurationSetEventDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "EventDestinationName"+                  Data..= eventDestinationName+              ),+            Prelude.Just+              ("EventDestination" Data..= eventDestination)+          ]+      )++instance+  Data.ToPath+    CreateConfigurationSetEventDestination+  where+  toPath CreateConfigurationSetEventDestination' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/event-destinations"+      ]++instance+  Data.ToQuery+    CreateConfigurationSetEventDestination+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /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
+ gen/Amazonka/SESV2/CreateContact.hs view
@@ -0,0 +1,219 @@+{-# 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.SESV2.CreateContact+-- 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 contact, which is an end-user who is receiving the email, and+-- adds them to a contact list.+module Amazonka.SESV2.CreateContact+  ( -- * Creating a Request+    CreateContact (..),+    newCreateContact,++    -- * Request Lenses+    createContact_attributesData,+    createContact_topicPreferences,+    createContact_unsubscribeAll,+    createContact_contactListName,+    createContact_emailAddress,++    -- * Destructuring the Response+    CreateContactResponse (..),+    newCreateContactResponse,++    -- * Response Lenses+    createContactResponse_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.SESV2.Types++-- | /See:/ 'newCreateContact' smart constructor.+data CreateContact = CreateContact'+  { -- | The attribute data attached to a contact.+    attributesData :: Prelude.Maybe Prelude.Text,+    -- | The contact\'s preferences for being opted-in to or opted-out of topics.+    topicPreferences :: Prelude.Maybe [TopicPreference],+    -- | A boolean value status noting if the contact is unsubscribed from all+    -- contact list topics.+    unsubscribeAll :: Prelude.Maybe Prelude.Bool,+    -- | The name of the contact list to which the contact should be added.+    contactListName :: Prelude.Text,+    -- | The contact\'s email address.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContact' 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:+--+-- 'attributesData', 'createContact_attributesData' - The attribute data attached to a contact.+--+-- 'topicPreferences', 'createContact_topicPreferences' - The contact\'s preferences for being opted-in to or opted-out of topics.+--+-- 'unsubscribeAll', 'createContact_unsubscribeAll' - A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+--+-- 'contactListName', 'createContact_contactListName' - The name of the contact list to which the contact should be added.+--+-- 'emailAddress', 'createContact_emailAddress' - The contact\'s email address.+newCreateContact ::+  -- | 'contactListName'+  Prelude.Text ->+  -- | 'emailAddress'+  Prelude.Text ->+  CreateContact+newCreateContact pContactListName_ pEmailAddress_ =+  CreateContact'+    { attributesData = Prelude.Nothing,+      topicPreferences = Prelude.Nothing,+      unsubscribeAll = Prelude.Nothing,+      contactListName = pContactListName_,+      emailAddress = pEmailAddress_+    }++-- | The attribute data attached to a contact.+createContact_attributesData :: Lens.Lens' CreateContact (Prelude.Maybe Prelude.Text)+createContact_attributesData = Lens.lens (\CreateContact' {attributesData} -> attributesData) (\s@CreateContact' {} a -> s {attributesData = a} :: CreateContact)++-- | The contact\'s preferences for being opted-in to or opted-out of topics.+createContact_topicPreferences :: Lens.Lens' CreateContact (Prelude.Maybe [TopicPreference])+createContact_topicPreferences = Lens.lens (\CreateContact' {topicPreferences} -> topicPreferences) (\s@CreateContact' {} a -> s {topicPreferences = a} :: CreateContact) Prelude.. Lens.mapping Lens.coerced++-- | A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+createContact_unsubscribeAll :: Lens.Lens' CreateContact (Prelude.Maybe Prelude.Bool)+createContact_unsubscribeAll = Lens.lens (\CreateContact' {unsubscribeAll} -> unsubscribeAll) (\s@CreateContact' {} a -> s {unsubscribeAll = a} :: CreateContact)++-- | The name of the contact list to which the contact should be added.+createContact_contactListName :: Lens.Lens' CreateContact Prelude.Text+createContact_contactListName = Lens.lens (\CreateContact' {contactListName} -> contactListName) (\s@CreateContact' {} a -> s {contactListName = a} :: CreateContact)++-- | The contact\'s email address.+createContact_emailAddress :: Lens.Lens' CreateContact Prelude.Text+createContact_emailAddress = Lens.lens (\CreateContact' {emailAddress} -> emailAddress) (\s@CreateContact' {} a -> s {emailAddress = a} :: CreateContact)++instance Core.AWSRequest CreateContact where+  type+    AWSResponse CreateContact =+      CreateContactResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateContactResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateContact where+  hashWithSalt _salt CreateContact' {..} =+    _salt+      `Prelude.hashWithSalt` attributesData+      `Prelude.hashWithSalt` topicPreferences+      `Prelude.hashWithSalt` unsubscribeAll+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData CreateContact where+  rnf CreateContact' {..} =+    Prelude.rnf attributesData+      `Prelude.seq` Prelude.rnf topicPreferences+      `Prelude.seq` Prelude.rnf unsubscribeAll+      `Prelude.seq` Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf emailAddress++instance Data.ToHeaders CreateContact where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateContact where+  toJSON CreateContact' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AttributesData" Data..=)+              Prelude.<$> attributesData,+            ("TopicPreferences" Data..=)+              Prelude.<$> topicPreferences,+            ("UnsubscribeAll" Data..=)+              Prelude.<$> unsubscribeAll,+            Prelude.Just ("EmailAddress" Data..= emailAddress)+          ]+      )++instance Data.ToPath CreateContact where+  toPath CreateContact' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName,+        "/contacts"+      ]++instance Data.ToQuery CreateContact where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateContactResponse' smart constructor.+data CreateContactResponse = CreateContactResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContactResponse' 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', 'createContactResponse_httpStatus' - The response's http status code.+newCreateContactResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateContactResponse+newCreateContactResponse pHttpStatus_ =+  CreateContactResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+createContactResponse_httpStatus :: Lens.Lens' CreateContactResponse Prelude.Int+createContactResponse_httpStatus = Lens.lens (\CreateContactResponse' {httpStatus} -> httpStatus) (\s@CreateContactResponse' {} a -> s {httpStatus = a} :: CreateContactResponse)++instance Prelude.NFData CreateContactResponse where+  rnf CreateContactResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateContactList.hs view
@@ -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.SESV2.CreateContactList+-- 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 contact list.+module Amazonka.SESV2.CreateContactList+  ( -- * Creating a Request+    CreateContactList (..),+    newCreateContactList,++    -- * Request Lenses+    createContactList_description,+    createContactList_tags,+    createContactList_topics,+    createContactList_contactListName,++    -- * Destructuring the Response+    CreateContactListResponse (..),+    newCreateContactListResponse,++    -- * Response Lenses+    createContactListResponse_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.SESV2.Types++-- | /See:/ 'newCreateContactList' smart constructor.+data CreateContactList = CreateContactList'+  { -- | A description of what the contact list is about.+    description :: Prelude.Maybe Prelude.Text,+    -- | The tags associated with a contact list.+    tags :: Prelude.Maybe [Tag],+    -- | An interest group, theme, or label within a list. A contact list can+    -- have multiple topics.+    topics :: Prelude.Maybe [Topic],+    -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContactList' 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:+--+-- 'description', 'createContactList_description' - A description of what the contact list is about.+--+-- 'tags', 'createContactList_tags' - The tags associated with a contact list.+--+-- 'topics', 'createContactList_topics' - An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+--+-- 'contactListName', 'createContactList_contactListName' - The name of the contact list.+newCreateContactList ::+  -- | 'contactListName'+  Prelude.Text ->+  CreateContactList+newCreateContactList pContactListName_ =+  CreateContactList'+    { description = Prelude.Nothing,+      tags = Prelude.Nothing,+      topics = Prelude.Nothing,+      contactListName = pContactListName_+    }++-- | A description of what the contact list is about.+createContactList_description :: Lens.Lens' CreateContactList (Prelude.Maybe Prelude.Text)+createContactList_description = Lens.lens (\CreateContactList' {description} -> description) (\s@CreateContactList' {} a -> s {description = a} :: CreateContactList)++-- | The tags associated with a contact list.+createContactList_tags :: Lens.Lens' CreateContactList (Prelude.Maybe [Tag])+createContactList_tags = Lens.lens (\CreateContactList' {tags} -> tags) (\s@CreateContactList' {} a -> s {tags = a} :: CreateContactList) Prelude.. Lens.mapping Lens.coerced++-- | An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+createContactList_topics :: Lens.Lens' CreateContactList (Prelude.Maybe [Topic])+createContactList_topics = Lens.lens (\CreateContactList' {topics} -> topics) (\s@CreateContactList' {} a -> s {topics = a} :: CreateContactList) Prelude.. Lens.mapping Lens.coerced++-- | The name of the contact list.+createContactList_contactListName :: Lens.Lens' CreateContactList Prelude.Text+createContactList_contactListName = Lens.lens (\CreateContactList' {contactListName} -> contactListName) (\s@CreateContactList' {} a -> s {contactListName = a} :: CreateContactList)++instance Core.AWSRequest CreateContactList where+  type+    AWSResponse CreateContactList =+      CreateContactListResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateContactListResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateContactList where+  hashWithSalt _salt CreateContactList' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` topics+      `Prelude.hashWithSalt` contactListName++instance Prelude.NFData CreateContactList where+  rnf CreateContactList' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf topics+      `Prelude.seq` Prelude.rnf contactListName++instance Data.ToHeaders CreateContactList where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateContactList where+  toJSON CreateContactList' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("Tags" Data..=) Prelude.<$> tags,+            ("Topics" Data..=) Prelude.<$> topics,+            Prelude.Just+              ("ContactListName" Data..= contactListName)+          ]+      )++instance Data.ToPath CreateContactList where+  toPath = Prelude.const "/v2/email/contact-lists"++instance Data.ToQuery CreateContactList where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newCreateContactListResponse' smart constructor.+data CreateContactListResponse = CreateContactListResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateContactListResponse' 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', 'createContactListResponse_httpStatus' - The response's http status code.+newCreateContactListResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateContactListResponse+newCreateContactListResponse pHttpStatus_ =+  CreateContactListResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+createContactListResponse_httpStatus :: Lens.Lens' CreateContactListResponse Prelude.Int+createContactListResponse_httpStatus = Lens.lens (\CreateContactListResponse' {httpStatus} -> httpStatus) (\s@CreateContactListResponse' {} a -> s {httpStatus = a} :: CreateContactListResponse)++instance Prelude.NFData CreateContactListResponse where+  rnf CreateContactListResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateCustomVerificationEmailTemplate.hs view
@@ -0,0 +1,311 @@+{-# 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.SESV2.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/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.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,++    -- * Response Lenses+    createCustomVerificationEmailTemplateResponse_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.SESV2.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/dg/creating-identities.html#send-email-verify-address-custom-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/dg/creating-identities.html#send-email-verify-address-custom-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/dg/creating-identities.html#send-email-verify-address-custom-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.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateCustomVerificationEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    CreateCustomVerificationEmailTemplate+  where+  toJSON CreateCustomVerificationEmailTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("TemplateName" Data..= templateName),+            Prelude.Just+              ("FromEmailAddress" Data..= fromEmailAddress),+            Prelude.Just+              ("TemplateSubject" Data..= templateSubject),+            Prelude.Just+              ("TemplateContent" Data..= templateContent),+            Prelude.Just+              ( "SuccessRedirectionURL"+                  Data..= successRedirectionURL+              ),+            Prelude.Just+              ( "FailureRedirectionURL"+                  Data..= failureRedirectionURL+              )+          ]+      )++instance+  Data.ToPath+    CreateCustomVerificationEmailTemplate+  where+  toPath =+    Prelude.const+      "/v2/email/custom-verification-email-templates"++instance+  Data.ToQuery+    CreateCustomVerificationEmailTemplate+  where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newCreateCustomVerificationEmailTemplateResponse' smart constructor.+data CreateCustomVerificationEmailTemplateResponse = CreateCustomVerificationEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  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.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'createCustomVerificationEmailTemplateResponse_httpStatus' - The response's http status code.+newCreateCustomVerificationEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateCustomVerificationEmailTemplateResponse+newCreateCustomVerificationEmailTemplateResponse+  pHttpStatus_ =+    CreateCustomVerificationEmailTemplateResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+createCustomVerificationEmailTemplateResponse_httpStatus :: Lens.Lens' CreateCustomVerificationEmailTemplateResponse Prelude.Int+createCustomVerificationEmailTemplateResponse_httpStatus = Lens.lens (\CreateCustomVerificationEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@CreateCustomVerificationEmailTemplateResponse' {} a -> s {httpStatus = a} :: CreateCustomVerificationEmailTemplateResponse)++instance+  Prelude.NFData+    CreateCustomVerificationEmailTemplateResponse+  where+  rnf+    CreateCustomVerificationEmailTemplateResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateDedicatedIpPool.hs view
@@ -0,0 +1,196 @@+{-# 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.SESV2.CreateDedicatedIpPool+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create a new pool of dedicated IP addresses. A pool can include one or+-- more dedicated IP addresses that are associated with your Amazon Web+-- Services account. You can associate a pool with a configuration set.+-- When you send an email that uses that configuration set, the message is+-- sent from one of the addresses in the associated pool.+module Amazonka.SESV2.CreateDedicatedIpPool+  ( -- * Creating a Request+    CreateDedicatedIpPool (..),+    newCreateDedicatedIpPool,++    -- * Request Lenses+    createDedicatedIpPool_scalingMode,+    createDedicatedIpPool_tags,+    createDedicatedIpPool_poolName,++    -- * Destructuring the Response+    CreateDedicatedIpPoolResponse (..),+    newCreateDedicatedIpPoolResponse,++    -- * Response Lenses+    createDedicatedIpPoolResponse_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.SESV2.Types++-- | A request to create a new dedicated IP pool.+--+-- /See:/ 'newCreateDedicatedIpPool' smart constructor.+data CreateDedicatedIpPool = CreateDedicatedIpPool'+  { -- | The type of scaling mode.+    scalingMode :: Prelude.Maybe ScalingMode,+    -- | An object that defines the tags (keys and values) that you want to+    -- associate with the pool.+    tags :: Prelude.Maybe [Tag],+    -- | The name of the dedicated IP pool.+    poolName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDedicatedIpPool' 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:+--+-- 'scalingMode', 'createDedicatedIpPool_scalingMode' - The type of scaling mode.+--+-- 'tags', 'createDedicatedIpPool_tags' - An object that defines the tags (keys and values) that you want to+-- associate with the pool.+--+-- 'poolName', 'createDedicatedIpPool_poolName' - The name of the dedicated IP pool.+newCreateDedicatedIpPool ::+  -- | 'poolName'+  Prelude.Text ->+  CreateDedicatedIpPool+newCreateDedicatedIpPool pPoolName_ =+  CreateDedicatedIpPool'+    { scalingMode =+        Prelude.Nothing,+      tags = Prelude.Nothing,+      poolName = pPoolName_+    }++-- | The type of scaling mode.+createDedicatedIpPool_scalingMode :: Lens.Lens' CreateDedicatedIpPool (Prelude.Maybe ScalingMode)+createDedicatedIpPool_scalingMode = Lens.lens (\CreateDedicatedIpPool' {scalingMode} -> scalingMode) (\s@CreateDedicatedIpPool' {} a -> s {scalingMode = a} :: CreateDedicatedIpPool)++-- | An object that defines the tags (keys and values) that you want to+-- associate with the pool.+createDedicatedIpPool_tags :: Lens.Lens' CreateDedicatedIpPool (Prelude.Maybe [Tag])+createDedicatedIpPool_tags = Lens.lens (\CreateDedicatedIpPool' {tags} -> tags) (\s@CreateDedicatedIpPool' {} a -> s {tags = a} :: CreateDedicatedIpPool) Prelude.. Lens.mapping Lens.coerced++-- | The name of the dedicated IP pool.+createDedicatedIpPool_poolName :: Lens.Lens' CreateDedicatedIpPool Prelude.Text+createDedicatedIpPool_poolName = Lens.lens (\CreateDedicatedIpPool' {poolName} -> poolName) (\s@CreateDedicatedIpPool' {} a -> s {poolName = a} :: CreateDedicatedIpPool)++instance Core.AWSRequest CreateDedicatedIpPool where+  type+    AWSResponse CreateDedicatedIpPool =+      CreateDedicatedIpPoolResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateDedicatedIpPoolResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateDedicatedIpPool where+  hashWithSalt _salt CreateDedicatedIpPool' {..} =+    _salt+      `Prelude.hashWithSalt` scalingMode+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` poolName++instance Prelude.NFData CreateDedicatedIpPool where+  rnf CreateDedicatedIpPool' {..} =+    Prelude.rnf scalingMode+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf poolName++instance Data.ToHeaders CreateDedicatedIpPool where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDedicatedIpPool where+  toJSON CreateDedicatedIpPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ScalingMode" Data..=) Prelude.<$> scalingMode,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("PoolName" Data..= poolName)+          ]+      )++instance Data.ToPath CreateDedicatedIpPool where+  toPath = Prelude.const "/v2/email/dedicated-ip-pools"++instance Data.ToQuery CreateDedicatedIpPool where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newCreateDedicatedIpPoolResponse' smart constructor.+data CreateDedicatedIpPoolResponse = CreateDedicatedIpPoolResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDedicatedIpPoolResponse' 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', 'createDedicatedIpPoolResponse_httpStatus' - The response's http status code.+newCreateDedicatedIpPoolResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateDedicatedIpPoolResponse+newCreateDedicatedIpPoolResponse pHttpStatus_ =+  CreateDedicatedIpPoolResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+createDedicatedIpPoolResponse_httpStatus :: Lens.Lens' CreateDedicatedIpPoolResponse Prelude.Int+createDedicatedIpPoolResponse_httpStatus = Lens.lens (\CreateDedicatedIpPoolResponse' {httpStatus} -> httpStatus) (\s@CreateDedicatedIpPoolResponse' {} a -> s {httpStatus = a} :: CreateDedicatedIpPoolResponse)++instance Prelude.NFData CreateDedicatedIpPoolResponse where+  rnf CreateDedicatedIpPoolResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateDeliverabilityTestReport.hs view
@@ -0,0 +1,300 @@+{-# 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.SESV2.CreateDeliverabilityTestReport+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Create a new predictive inbox placement test. Predictive inbox placement+-- tests can help you predict how your messages will be handled by various+-- email providers around the world. When you perform a predictive inbox+-- placement test, you provide a sample message that contains the content+-- that you plan to send to your customers. Amazon SES then sends that+-- message to special email addresses spread across several major email+-- providers. After about 24 hours, the test is complete, and you can use+-- the @GetDeliverabilityTestReport@ operation to view the results of the+-- test.+module Amazonka.SESV2.CreateDeliverabilityTestReport+  ( -- * Creating a Request+    CreateDeliverabilityTestReport (..),+    newCreateDeliverabilityTestReport,++    -- * Request Lenses+    createDeliverabilityTestReport_reportName,+    createDeliverabilityTestReport_tags,+    createDeliverabilityTestReport_fromEmailAddress,+    createDeliverabilityTestReport_content,++    -- * Destructuring the Response+    CreateDeliverabilityTestReportResponse (..),+    newCreateDeliverabilityTestReportResponse,++    -- * Response Lenses+    createDeliverabilityTestReportResponse_httpStatus,+    createDeliverabilityTestReportResponse_reportId,+    createDeliverabilityTestReportResponse_deliverabilityTestStatus,+  )+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.SESV2.Types++-- | A request to perform a predictive inbox placement test. Predictive inbox+-- placement tests can help you predict how your messages will be handled+-- by various email providers around the world. When you perform a+-- predictive inbox placement test, you provide a sample message that+-- contains the content that you plan to send to your customers. We send+-- that message to special email addresses spread across several major+-- email providers around the world. The test takes about 24 hours to+-- complete. When the test is complete, you can use the+-- @GetDeliverabilityTestReport@ operation to view the results of the test.+--+-- /See:/ 'newCreateDeliverabilityTestReport' smart constructor.+data CreateDeliverabilityTestReport = CreateDeliverabilityTestReport'+  { -- | A unique name that helps you to identify the predictive inbox placement+    -- test when you retrieve the results.+    reportName :: Prelude.Maybe Prelude.Text,+    -- | An array of objects that define the tags (keys and values) that you want+    -- to associate with the predictive inbox placement test.+    tags :: Prelude.Maybe [Tag],+    -- | The email address that the predictive inbox placement test email was+    -- sent from.+    fromEmailAddress :: Prelude.Text,+    -- | The HTML body of the message that you sent when you performed the+    -- predictive inbox placement test.+    content :: EmailContent+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDeliverabilityTestReport' 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:+--+-- 'reportName', 'createDeliverabilityTestReport_reportName' - A unique name that helps you to identify the predictive inbox placement+-- test when you retrieve the results.+--+-- 'tags', 'createDeliverabilityTestReport_tags' - An array of objects that define the tags (keys and values) that you want+-- to associate with the predictive inbox placement test.+--+-- 'fromEmailAddress', 'createDeliverabilityTestReport_fromEmailAddress' - The email address that the predictive inbox placement test email was+-- sent from.+--+-- 'content', 'createDeliverabilityTestReport_content' - The HTML body of the message that you sent when you performed the+-- predictive inbox placement test.+newCreateDeliverabilityTestReport ::+  -- | 'fromEmailAddress'+  Prelude.Text ->+  -- | 'content'+  EmailContent ->+  CreateDeliverabilityTestReport+newCreateDeliverabilityTestReport+  pFromEmailAddress_+  pContent_ =+    CreateDeliverabilityTestReport'+      { reportName =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        fromEmailAddress = pFromEmailAddress_,+        content = pContent_+      }++-- | A unique name that helps you to identify the predictive inbox placement+-- test when you retrieve the results.+createDeliverabilityTestReport_reportName :: Lens.Lens' CreateDeliverabilityTestReport (Prelude.Maybe Prelude.Text)+createDeliverabilityTestReport_reportName = Lens.lens (\CreateDeliverabilityTestReport' {reportName} -> reportName) (\s@CreateDeliverabilityTestReport' {} a -> s {reportName = a} :: CreateDeliverabilityTestReport)++-- | An array of objects that define the tags (keys and values) that you want+-- to associate with the predictive inbox placement test.+createDeliverabilityTestReport_tags :: Lens.Lens' CreateDeliverabilityTestReport (Prelude.Maybe [Tag])+createDeliverabilityTestReport_tags = Lens.lens (\CreateDeliverabilityTestReport' {tags} -> tags) (\s@CreateDeliverabilityTestReport' {} a -> s {tags = a} :: CreateDeliverabilityTestReport) Prelude.. Lens.mapping Lens.coerced++-- | The email address that the predictive inbox placement test email was+-- sent from.+createDeliverabilityTestReport_fromEmailAddress :: Lens.Lens' CreateDeliverabilityTestReport Prelude.Text+createDeliverabilityTestReport_fromEmailAddress = Lens.lens (\CreateDeliverabilityTestReport' {fromEmailAddress} -> fromEmailAddress) (\s@CreateDeliverabilityTestReport' {} a -> s {fromEmailAddress = a} :: CreateDeliverabilityTestReport)++-- | The HTML body of the message that you sent when you performed the+-- predictive inbox placement test.+createDeliverabilityTestReport_content :: Lens.Lens' CreateDeliverabilityTestReport EmailContent+createDeliverabilityTestReport_content = Lens.lens (\CreateDeliverabilityTestReport' {content} -> content) (\s@CreateDeliverabilityTestReport' {} a -> s {content = a} :: CreateDeliverabilityTestReport)++instance+  Core.AWSRequest+    CreateDeliverabilityTestReport+  where+  type+    AWSResponse CreateDeliverabilityTestReport =+      CreateDeliverabilityTestReportResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateDeliverabilityTestReportResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "ReportId")+            Prelude.<*> (x Data..:> "DeliverabilityTestStatus")+      )++instance+  Prelude.Hashable+    CreateDeliverabilityTestReport+  where+  hashWithSalt+    _salt+    CreateDeliverabilityTestReport' {..} =+      _salt+        `Prelude.hashWithSalt` reportName+        `Prelude.hashWithSalt` tags+        `Prelude.hashWithSalt` fromEmailAddress+        `Prelude.hashWithSalt` content++instance+  Prelude.NFData+    CreateDeliverabilityTestReport+  where+  rnf CreateDeliverabilityTestReport' {..} =+    Prelude.rnf reportName+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf content++instance+  Data.ToHeaders+    CreateDeliverabilityTestReport+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateDeliverabilityTestReport where+  toJSON CreateDeliverabilityTestReport' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ReportName" Data..=) Prelude.<$> reportName,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("FromEmailAddress" Data..= fromEmailAddress),+            Prelude.Just ("Content" Data..= content)+          ]+      )++instance Data.ToPath CreateDeliverabilityTestReport where+  toPath =+    Prelude.const+      "/v2/email/deliverability-dashboard/test"++instance Data.ToQuery CreateDeliverabilityTestReport where+  toQuery = Prelude.const Prelude.mempty++-- | Information about the predictive inbox placement test that you created.+--+-- /See:/ 'newCreateDeliverabilityTestReportResponse' smart constructor.+data CreateDeliverabilityTestReportResponse = CreateDeliverabilityTestReportResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | A unique string that identifies the predictive inbox placement test.+    reportId :: Prelude.Text,+    -- | The status of the predictive inbox placement test. If the status is+    -- @IN_PROGRESS@, then the predictive inbox placement test is currently+    -- running. Predictive inbox placement tests are usually complete within 24+    -- hours of creating the test. If the status is @COMPLETE@, then the test+    -- is finished, and you can use the @GetDeliverabilityTestReport@ to view+    -- the results of the test.+    deliverabilityTestStatus :: DeliverabilityTestStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateDeliverabilityTestReportResponse' 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', 'createDeliverabilityTestReportResponse_httpStatus' - The response's http status code.+--+-- 'reportId', 'createDeliverabilityTestReportResponse_reportId' - A unique string that identifies the predictive inbox placement test.+--+-- 'deliverabilityTestStatus', 'createDeliverabilityTestReportResponse_deliverabilityTestStatus' - The status of the predictive inbox placement test. If the status is+-- @IN_PROGRESS@, then the predictive inbox placement test is currently+-- running. Predictive inbox placement tests are usually complete within 24+-- hours of creating the test. If the status is @COMPLETE@, then the test+-- is finished, and you can use the @GetDeliverabilityTestReport@ to view+-- the results of the test.+newCreateDeliverabilityTestReportResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'reportId'+  Prelude.Text ->+  -- | 'deliverabilityTestStatus'+  DeliverabilityTestStatus ->+  CreateDeliverabilityTestReportResponse+newCreateDeliverabilityTestReportResponse+  pHttpStatus_+  pReportId_+  pDeliverabilityTestStatus_ =+    CreateDeliverabilityTestReportResponse'+      { httpStatus =+          pHttpStatus_,+        reportId = pReportId_,+        deliverabilityTestStatus =+          pDeliverabilityTestStatus_+      }++-- | The response's http status code.+createDeliverabilityTestReportResponse_httpStatus :: Lens.Lens' CreateDeliverabilityTestReportResponse Prelude.Int+createDeliverabilityTestReportResponse_httpStatus = Lens.lens (\CreateDeliverabilityTestReportResponse' {httpStatus} -> httpStatus) (\s@CreateDeliverabilityTestReportResponse' {} a -> s {httpStatus = a} :: CreateDeliverabilityTestReportResponse)++-- | A unique string that identifies the predictive inbox placement test.+createDeliverabilityTestReportResponse_reportId :: Lens.Lens' CreateDeliverabilityTestReportResponse Prelude.Text+createDeliverabilityTestReportResponse_reportId = Lens.lens (\CreateDeliverabilityTestReportResponse' {reportId} -> reportId) (\s@CreateDeliverabilityTestReportResponse' {} a -> s {reportId = a} :: CreateDeliverabilityTestReportResponse)++-- | The status of the predictive inbox placement test. If the status is+-- @IN_PROGRESS@, then the predictive inbox placement test is currently+-- running. Predictive inbox placement tests are usually complete within 24+-- hours of creating the test. If the status is @COMPLETE@, then the test+-- is finished, and you can use the @GetDeliverabilityTestReport@ to view+-- the results of the test.+createDeliverabilityTestReportResponse_deliverabilityTestStatus :: Lens.Lens' CreateDeliverabilityTestReportResponse DeliverabilityTestStatus+createDeliverabilityTestReportResponse_deliverabilityTestStatus = Lens.lens (\CreateDeliverabilityTestReportResponse' {deliverabilityTestStatus} -> deliverabilityTestStatus) (\s@CreateDeliverabilityTestReportResponse' {} a -> s {deliverabilityTestStatus = a} :: CreateDeliverabilityTestReportResponse)++instance+  Prelude.NFData+    CreateDeliverabilityTestReportResponse+  where+  rnf CreateDeliverabilityTestReportResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf reportId+      `Prelude.seq` Prelude.rnf deliverabilityTestStatus
+ gen/Amazonka/SESV2/CreateEmailIdentity.hs view
@@ -0,0 +1,321 @@+{-# 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.SESV2.CreateEmailIdentity+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Starts the process of verifying an email identity. An /identity/ is an+-- email address or domain that you use when you send email. Before you can+-- use an identity to send email, you first have to verify it. By verifying+-- an identity, you demonstrate that you\'re the owner of the identity, and+-- that you\'ve given Amazon SES API v2 permission to send email from the+-- identity.+--+-- When you verify an email address, Amazon SES sends an email to the+-- address. Your email address is verified as soon as you follow the link+-- in the verification email.+--+-- When you verify a domain without specifying the @DkimSigningAttributes@+-- object, this operation provides a set of DKIM tokens. You can convert+-- these tokens into CNAME records, which you then add to the DNS+-- configuration for your domain. Your domain is verified when Amazon SES+-- detects these records in the DNS configuration for your domain. This+-- verification method is known as+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- Alternatively, you can perform the verification process by providing+-- your own public-private key pair. This verification method is known as+-- Bring Your Own DKIM (BYODKIM). To use BYODKIM, your call to the+-- @CreateEmailIdentity@ operation has to include the+-- @DkimSigningAttributes@ object. When you specify this object, you+-- provide a selector (a component of the DNS record name that identifies+-- the public key to use for DKIM authentication) and a private key.+--+-- When you verify a domain, this operation provides a set of DKIM tokens,+-- which you can convert into CNAME tokens. You add these CNAME tokens to+-- the DNS configuration for your domain. Your domain is verified when+-- Amazon SES detects these records in the DNS configuration for your+-- domain. For some DNS providers, it can take 72 hours or more to complete+-- the domain verification process.+--+-- Additionally, you can associate an existing configuration set with the+-- email identity that you\'re verifying.+module Amazonka.SESV2.CreateEmailIdentity+  ( -- * Creating a Request+    CreateEmailIdentity (..),+    newCreateEmailIdentity,++    -- * Request Lenses+    createEmailIdentity_configurationSetName,+    createEmailIdentity_dkimSigningAttributes,+    createEmailIdentity_tags,+    createEmailIdentity_emailIdentity,++    -- * Destructuring the Response+    CreateEmailIdentityResponse (..),+    newCreateEmailIdentityResponse,++    -- * Response Lenses+    createEmailIdentityResponse_dkimAttributes,+    createEmailIdentityResponse_identityType,+    createEmailIdentityResponse_verifiedForSendingStatus,+    createEmailIdentityResponse_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.SESV2.Types++-- | A request to begin the verification process for an email identity (an+-- email address or domain).+--+-- /See:/ 'newCreateEmailIdentity' smart constructor.+data CreateEmailIdentity = CreateEmailIdentity'+  { -- | The configuration set to use by default when sending from this identity.+    -- Note that any configuration set defined in the email sending request+    -- takes precedence.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | If your request includes this object, Amazon SES configures the identity+    -- to use Bring Your Own DKIM (BYODKIM) for DKIM authentication purposes,+    -- or, configures the key length to be used for+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+    --+    -- You can only specify this object if the email identity is a domain, as+    -- opposed to an address.+    dkimSigningAttributes :: Prelude.Maybe DkimSigningAttributes,+    -- | An array of objects that define the tags (keys and values) to associate+    -- with the email identity.+    tags :: Prelude.Maybe [Tag],+    -- | The email address or domain to verify.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEmailIdentity' 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', 'createEmailIdentity_configurationSetName' - The configuration set to use by default when sending from this identity.+-- Note that any configuration set defined in the email sending request+-- takes precedence.+--+-- 'dkimSigningAttributes', 'createEmailIdentity_dkimSigningAttributes' - If your request includes this object, Amazon SES configures the identity+-- to use Bring Your Own DKIM (BYODKIM) for DKIM authentication purposes,+-- or, configures the key length to be used for+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- You can only specify this object if the email identity is a domain, as+-- opposed to an address.+--+-- 'tags', 'createEmailIdentity_tags' - An array of objects that define the tags (keys and values) to associate+-- with the email identity.+--+-- 'emailIdentity', 'createEmailIdentity_emailIdentity' - The email address or domain to verify.+newCreateEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  CreateEmailIdentity+newCreateEmailIdentity pEmailIdentity_ =+  CreateEmailIdentity'+    { configurationSetName =+        Prelude.Nothing,+      dkimSigningAttributes = Prelude.Nothing,+      tags = Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | The configuration set to use by default when sending from this identity.+-- Note that any configuration set defined in the email sending request+-- takes precedence.+createEmailIdentity_configurationSetName :: Lens.Lens' CreateEmailIdentity (Prelude.Maybe Prelude.Text)+createEmailIdentity_configurationSetName = Lens.lens (\CreateEmailIdentity' {configurationSetName} -> configurationSetName) (\s@CreateEmailIdentity' {} a -> s {configurationSetName = a} :: CreateEmailIdentity)++-- | If your request includes this object, Amazon SES configures the identity+-- to use Bring Your Own DKIM (BYODKIM) for DKIM authentication purposes,+-- or, configures the key length to be used for+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- You can only specify this object if the email identity is a domain, as+-- opposed to an address.+createEmailIdentity_dkimSigningAttributes :: Lens.Lens' CreateEmailIdentity (Prelude.Maybe DkimSigningAttributes)+createEmailIdentity_dkimSigningAttributes = Lens.lens (\CreateEmailIdentity' {dkimSigningAttributes} -> dkimSigningAttributes) (\s@CreateEmailIdentity' {} a -> s {dkimSigningAttributes = a} :: CreateEmailIdentity)++-- | An array of objects that define the tags (keys and values) to associate+-- with the email identity.+createEmailIdentity_tags :: Lens.Lens' CreateEmailIdentity (Prelude.Maybe [Tag])+createEmailIdentity_tags = Lens.lens (\CreateEmailIdentity' {tags} -> tags) (\s@CreateEmailIdentity' {} a -> s {tags = a} :: CreateEmailIdentity) Prelude.. Lens.mapping Lens.coerced++-- | The email address or domain to verify.+createEmailIdentity_emailIdentity :: Lens.Lens' CreateEmailIdentity Prelude.Text+createEmailIdentity_emailIdentity = Lens.lens (\CreateEmailIdentity' {emailIdentity} -> emailIdentity) (\s@CreateEmailIdentity' {} a -> s {emailIdentity = a} :: CreateEmailIdentity)++instance Core.AWSRequest CreateEmailIdentity where+  type+    AWSResponse CreateEmailIdentity =+      CreateEmailIdentityResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateEmailIdentityResponse'+            Prelude.<$> (x Data..?> "DkimAttributes")+            Prelude.<*> (x Data..?> "IdentityType")+            Prelude.<*> (x Data..?> "VerifiedForSendingStatus")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateEmailIdentity where+  hashWithSalt _salt CreateEmailIdentity' {..} =+    _salt+      `Prelude.hashWithSalt` configurationSetName+      `Prelude.hashWithSalt` dkimSigningAttributes+      `Prelude.hashWithSalt` tags+      `Prelude.hashWithSalt` emailIdentity++instance Prelude.NFData CreateEmailIdentity where+  rnf CreateEmailIdentity' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf dkimSigningAttributes+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf emailIdentity++instance Data.ToHeaders CreateEmailIdentity where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateEmailIdentity where+  toJSON CreateEmailIdentity' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConfigurationSetName" Data..=)+              Prelude.<$> configurationSetName,+            ("DkimSigningAttributes" Data..=)+              Prelude.<$> dkimSigningAttributes,+            ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("EmailIdentity" Data..= emailIdentity)+          ]+      )++instance Data.ToPath CreateEmailIdentity where+  toPath = Prelude.const "/v2/email/identities"++instance Data.ToQuery CreateEmailIdentity where+  toQuery = Prelude.const Prelude.mempty++-- | If the email identity is a domain, this object contains information+-- about the DKIM verification status for the domain.+--+-- If the email identity is an email address, this object is empty.+--+-- /See:/ 'newCreateEmailIdentityResponse' smart constructor.+data CreateEmailIdentityResponse = CreateEmailIdentityResponse'+  { -- | An object that contains information about the DKIM attributes for the+    -- identity.+    dkimAttributes :: Prelude.Maybe DkimAttributes,+    -- | The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+    -- supported.+    identityType :: Prelude.Maybe IdentityType,+    -- | Specifies whether or not the identity is verified. You can only send+    -- email from verified email addresses or domains. For more information+    -- about verifying identities, see the+    -- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+    verifiedForSendingStatus :: 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 'CreateEmailIdentityResponse' 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:+--+-- 'dkimAttributes', 'createEmailIdentityResponse_dkimAttributes' - An object that contains information about the DKIM attributes for the+-- identity.+--+-- 'identityType', 'createEmailIdentityResponse_identityType' - The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+-- supported.+--+-- 'verifiedForSendingStatus', 'createEmailIdentityResponse_verifiedForSendingStatus' - Specifies whether or not the identity is verified. You can only send+-- email from verified email addresses or domains. For more information+-- about verifying identities, see the+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+--+-- 'httpStatus', 'createEmailIdentityResponse_httpStatus' - The response's http status code.+newCreateEmailIdentityResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateEmailIdentityResponse+newCreateEmailIdentityResponse pHttpStatus_ =+  CreateEmailIdentityResponse'+    { dkimAttributes =+        Prelude.Nothing,+      identityType = Prelude.Nothing,+      verifiedForSendingStatus = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An object that contains information about the DKIM attributes for the+-- identity.+createEmailIdentityResponse_dkimAttributes :: Lens.Lens' CreateEmailIdentityResponse (Prelude.Maybe DkimAttributes)+createEmailIdentityResponse_dkimAttributes = Lens.lens (\CreateEmailIdentityResponse' {dkimAttributes} -> dkimAttributes) (\s@CreateEmailIdentityResponse' {} a -> s {dkimAttributes = a} :: CreateEmailIdentityResponse)++-- | The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+-- supported.+createEmailIdentityResponse_identityType :: Lens.Lens' CreateEmailIdentityResponse (Prelude.Maybe IdentityType)+createEmailIdentityResponse_identityType = Lens.lens (\CreateEmailIdentityResponse' {identityType} -> identityType) (\s@CreateEmailIdentityResponse' {} a -> s {identityType = a} :: CreateEmailIdentityResponse)++-- | Specifies whether or not the identity is verified. You can only send+-- email from verified email addresses or domains. For more information+-- about verifying identities, see the+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+createEmailIdentityResponse_verifiedForSendingStatus :: Lens.Lens' CreateEmailIdentityResponse (Prelude.Maybe Prelude.Bool)+createEmailIdentityResponse_verifiedForSendingStatus = Lens.lens (\CreateEmailIdentityResponse' {verifiedForSendingStatus} -> verifiedForSendingStatus) (\s@CreateEmailIdentityResponse' {} a -> s {verifiedForSendingStatus = a} :: CreateEmailIdentityResponse)++-- | The response's http status code.+createEmailIdentityResponse_httpStatus :: Lens.Lens' CreateEmailIdentityResponse Prelude.Int+createEmailIdentityResponse_httpStatus = Lens.lens (\CreateEmailIdentityResponse' {httpStatus} -> httpStatus) (\s@CreateEmailIdentityResponse' {} a -> s {httpStatus = a} :: CreateEmailIdentityResponse)++instance Prelude.NFData CreateEmailIdentityResponse where+  rnf CreateEmailIdentityResponse' {..} =+    Prelude.rnf dkimAttributes+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf verifiedForSendingStatus+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateEmailIdentityPolicy.hs view
@@ -0,0 +1,238 @@+{-# 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.SESV2.CreateEmailIdentityPolicy+-- 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 the specified sending authorization policy for the given+-- 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.SESV2.CreateEmailIdentityPolicy+  ( -- * Creating a Request+    CreateEmailIdentityPolicy (..),+    newCreateEmailIdentityPolicy,++    -- * Request Lenses+    createEmailIdentityPolicy_emailIdentity,+    createEmailIdentityPolicy_policyName,+    createEmailIdentityPolicy_policy,++    -- * Destructuring the Response+    CreateEmailIdentityPolicyResponse (..),+    newCreateEmailIdentityPolicyResponse,++    -- * Response Lenses+    createEmailIdentityPolicyResponse_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.SESV2.Types++-- | Represents a request to create 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-identity-owner-tasks-management.html Amazon SES Developer Guide>.+--+-- /See:/ 'newCreateEmailIdentityPolicy' smart constructor.+data CreateEmailIdentityPolicy = CreateEmailIdentityPolicy'+  { -- | The email identity.+    emailIdentity :: 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 'CreateEmailIdentityPolicy' 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:+--+-- 'emailIdentity', 'createEmailIdentityPolicy_emailIdentity' - The email identity.+--+-- 'policyName', 'createEmailIdentityPolicy_policyName' - The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+--+-- 'policy', 'createEmailIdentityPolicy_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>.+newCreateEmailIdentityPolicy ::+  -- | 'emailIdentity'+  Prelude.Text ->+  -- | 'policyName'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  CreateEmailIdentityPolicy+newCreateEmailIdentityPolicy+  pEmailIdentity_+  pPolicyName_+  pPolicy_ =+    CreateEmailIdentityPolicy'+      { emailIdentity =+          pEmailIdentity_,+        policyName = pPolicyName_,+        policy = pPolicy_+      }++-- | The email identity.+createEmailIdentityPolicy_emailIdentity :: Lens.Lens' CreateEmailIdentityPolicy Prelude.Text+createEmailIdentityPolicy_emailIdentity = Lens.lens (\CreateEmailIdentityPolicy' {emailIdentity} -> emailIdentity) (\s@CreateEmailIdentityPolicy' {} a -> s {emailIdentity = a} :: CreateEmailIdentityPolicy)++-- | The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+createEmailIdentityPolicy_policyName :: Lens.Lens' CreateEmailIdentityPolicy Prelude.Text+createEmailIdentityPolicy_policyName = Lens.lens (\CreateEmailIdentityPolicy' {policyName} -> policyName) (\s@CreateEmailIdentityPolicy' {} a -> s {policyName = a} :: CreateEmailIdentityPolicy)++-- | 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>.+createEmailIdentityPolicy_policy :: Lens.Lens' CreateEmailIdentityPolicy Prelude.Text+createEmailIdentityPolicy_policy = Lens.lens (\CreateEmailIdentityPolicy' {policy} -> policy) (\s@CreateEmailIdentityPolicy' {} a -> s {policy = a} :: CreateEmailIdentityPolicy)++instance Core.AWSRequest CreateEmailIdentityPolicy where+  type+    AWSResponse CreateEmailIdentityPolicy =+      CreateEmailIdentityPolicyResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateEmailIdentityPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateEmailIdentityPolicy where+  hashWithSalt _salt CreateEmailIdentityPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` emailIdentity+      `Prelude.hashWithSalt` policyName+      `Prelude.hashWithSalt` policy++instance Prelude.NFData CreateEmailIdentityPolicy where+  rnf CreateEmailIdentityPolicy' {..} =+    Prelude.rnf emailIdentity+      `Prelude.seq` Prelude.rnf policyName+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders CreateEmailIdentityPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateEmailIdentityPolicy where+  toJSON CreateEmailIdentityPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Policy" Data..= policy)]+      )++instance Data.ToPath CreateEmailIdentityPolicy where+  toPath CreateEmailIdentityPolicy' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/policies/",+        Data.toBS policyName+      ]++instance Data.ToQuery CreateEmailIdentityPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newCreateEmailIdentityPolicyResponse' smart constructor.+data CreateEmailIdentityPolicyResponse = CreateEmailIdentityPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEmailIdentityPolicyResponse' 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', 'createEmailIdentityPolicyResponse_httpStatus' - The response's http status code.+newCreateEmailIdentityPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateEmailIdentityPolicyResponse+newCreateEmailIdentityPolicyResponse pHttpStatus_ =+  CreateEmailIdentityPolicyResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+createEmailIdentityPolicyResponse_httpStatus :: Lens.Lens' CreateEmailIdentityPolicyResponse Prelude.Int+createEmailIdentityPolicyResponse_httpStatus = Lens.lens (\CreateEmailIdentityPolicyResponse' {httpStatus} -> httpStatus) (\s@CreateEmailIdentityPolicyResponse' {} a -> s {httpStatus = a} :: CreateEmailIdentityPolicyResponse)++instance+  Prelude.NFData+    CreateEmailIdentityPolicyResponse+  where+  rnf CreateEmailIdentityPolicyResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateEmailTemplate.hs view
@@ -0,0 +1,190 @@+{-# 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.SESV2.CreateEmailTemplate+-- 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.SESV2.CreateEmailTemplate+  ( -- * Creating a Request+    CreateEmailTemplate (..),+    newCreateEmailTemplate,++    -- * Request Lenses+    createEmailTemplate_templateName,+    createEmailTemplate_templateContent,++    -- * Destructuring the Response+    CreateEmailTemplateResponse (..),+    newCreateEmailTemplateResponse,++    -- * Response Lenses+    createEmailTemplateResponse_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.SESV2.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:/ 'newCreateEmailTemplate' smart constructor.+data CreateEmailTemplate = CreateEmailTemplate'+  { -- | The name of the template.+    templateName :: Prelude.Text,+    -- | The content of the email template, composed of a subject line, an HTML+    -- part, and a text-only part.+    templateContent :: EmailTemplateContent+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEmailTemplate' 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', 'createEmailTemplate_templateName' - The name of the template.+--+-- 'templateContent', 'createEmailTemplate_templateContent' - The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+newCreateEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  -- | 'templateContent'+  EmailTemplateContent ->+  CreateEmailTemplate+newCreateEmailTemplate+  pTemplateName_+  pTemplateContent_ =+    CreateEmailTemplate'+      { templateName = pTemplateName_,+        templateContent = pTemplateContent_+      }++-- | The name of the template.+createEmailTemplate_templateName :: Lens.Lens' CreateEmailTemplate Prelude.Text+createEmailTemplate_templateName = Lens.lens (\CreateEmailTemplate' {templateName} -> templateName) (\s@CreateEmailTemplate' {} a -> s {templateName = a} :: CreateEmailTemplate)++-- | The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+createEmailTemplate_templateContent :: Lens.Lens' CreateEmailTemplate EmailTemplateContent+createEmailTemplate_templateContent = Lens.lens (\CreateEmailTemplate' {templateContent} -> templateContent) (\s@CreateEmailTemplate' {} a -> s {templateContent = a} :: CreateEmailTemplate)++instance Core.AWSRequest CreateEmailTemplate where+  type+    AWSResponse CreateEmailTemplate =+      CreateEmailTemplateResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          CreateEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateEmailTemplate where+  hashWithSalt _salt CreateEmailTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` templateName+      `Prelude.hashWithSalt` templateContent++instance Prelude.NFData CreateEmailTemplate where+  rnf CreateEmailTemplate' {..} =+    Prelude.rnf templateName+      `Prelude.seq` Prelude.rnf templateContent++instance Data.ToHeaders CreateEmailTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateEmailTemplate where+  toJSON CreateEmailTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("TemplateName" Data..= templateName),+            Prelude.Just+              ("TemplateContent" Data..= templateContent)+          ]+      )++instance Data.ToPath CreateEmailTemplate where+  toPath = Prelude.const "/v2/email/templates"++instance Data.ToQuery CreateEmailTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newCreateEmailTemplateResponse' smart constructor.+data CreateEmailTemplateResponse = CreateEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateEmailTemplateResponse' 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', 'createEmailTemplateResponse_httpStatus' - The response's http status code.+newCreateEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateEmailTemplateResponse+newCreateEmailTemplateResponse pHttpStatus_ =+  CreateEmailTemplateResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+createEmailTemplateResponse_httpStatus :: Lens.Lens' CreateEmailTemplateResponse Prelude.Int+createEmailTemplateResponse_httpStatus = Lens.lens (\CreateEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@CreateEmailTemplateResponse' {} a -> s {httpStatus = a} :: CreateEmailTemplateResponse)++instance Prelude.NFData CreateEmailTemplateResponse where+  rnf CreateEmailTemplateResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/CreateImportJob.hs view
@@ -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.SESV2.CreateImportJob+-- 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 import job for a data destination.+module Amazonka.SESV2.CreateImportJob+  ( -- * Creating a Request+    CreateImportJob (..),+    newCreateImportJob,++    -- * Request Lenses+    createImportJob_importDestination,+    createImportJob_importDataSource,++    -- * Destructuring the Response+    CreateImportJobResponse (..),+    newCreateImportJobResponse,++    -- * Response Lenses+    createImportJobResponse_jobId,+    createImportJobResponse_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.SESV2.Types++-- | Represents a request to create an import job from a data source for a+-- data destination.+--+-- /See:/ 'newCreateImportJob' smart constructor.+data CreateImportJob = CreateImportJob'+  { -- | The destination for the import job.+    importDestination :: ImportDestination,+    -- | The data source for the import job.+    importDataSource :: ImportDataSource+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'CreateImportJob' 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:+--+-- 'importDestination', 'createImportJob_importDestination' - The destination for the import job.+--+-- 'importDataSource', 'createImportJob_importDataSource' - The data source for the import job.+newCreateImportJob ::+  -- | 'importDestination'+  ImportDestination ->+  -- | 'importDataSource'+  ImportDataSource ->+  CreateImportJob+newCreateImportJob+  pImportDestination_+  pImportDataSource_ =+    CreateImportJob'+      { importDestination =+          pImportDestination_,+        importDataSource = pImportDataSource_+      }++-- | The destination for the import job.+createImportJob_importDestination :: Lens.Lens' CreateImportJob ImportDestination+createImportJob_importDestination = Lens.lens (\CreateImportJob' {importDestination} -> importDestination) (\s@CreateImportJob' {} a -> s {importDestination = a} :: CreateImportJob)++-- | The data source for the import job.+createImportJob_importDataSource :: Lens.Lens' CreateImportJob ImportDataSource+createImportJob_importDataSource = Lens.lens (\CreateImportJob' {importDataSource} -> importDataSource) (\s@CreateImportJob' {} a -> s {importDataSource = a} :: CreateImportJob)++instance Core.AWSRequest CreateImportJob where+  type+    AWSResponse CreateImportJob =+      CreateImportJobResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          CreateImportJobResponse'+            Prelude.<$> (x Data..?> "JobId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable CreateImportJob where+  hashWithSalt _salt CreateImportJob' {..} =+    _salt+      `Prelude.hashWithSalt` importDestination+      `Prelude.hashWithSalt` importDataSource++instance Prelude.NFData CreateImportJob where+  rnf CreateImportJob' {..} =+    Prelude.rnf importDestination+      `Prelude.seq` Prelude.rnf importDataSource++instance Data.ToHeaders CreateImportJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON CreateImportJob where+  toJSON CreateImportJob' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ImportDestination" Data..= importDestination),+            Prelude.Just+              ("ImportDataSource" Data..= importDataSource)+          ]+      )++instance Data.ToPath CreateImportJob where+  toPath = Prelude.const "/v2/email/import-jobs"++instance Data.ToQuery CreateImportJob where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newCreateImportJobResponse' smart constructor.+data CreateImportJobResponse = CreateImportJobResponse'+  { -- | A string that represents the import job ID.+    jobId :: 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 'CreateImportJobResponse' 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:+--+-- 'jobId', 'createImportJobResponse_jobId' - A string that represents the import job ID.+--+-- 'httpStatus', 'createImportJobResponse_httpStatus' - The response's http status code.+newCreateImportJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  CreateImportJobResponse+newCreateImportJobResponse pHttpStatus_ =+  CreateImportJobResponse'+    { jobId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A string that represents the import job ID.+createImportJobResponse_jobId :: Lens.Lens' CreateImportJobResponse (Prelude.Maybe Prelude.Text)+createImportJobResponse_jobId = Lens.lens (\CreateImportJobResponse' {jobId} -> jobId) (\s@CreateImportJobResponse' {} a -> s {jobId = a} :: CreateImportJobResponse)++-- | The response's http status code.+createImportJobResponse_httpStatus :: Lens.Lens' CreateImportJobResponse Prelude.Int+createImportJobResponse_httpStatus = Lens.lens (\CreateImportJobResponse' {httpStatus} -> httpStatus) (\s@CreateImportJobResponse' {} a -> s {httpStatus = a} :: CreateImportJobResponse)++instance Prelude.NFData CreateImportJobResponse where+  rnf CreateImportJobResponse' {..} =+    Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteConfigurationSet.hs view
@@ -0,0 +1,167 @@+{-# 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.SESV2.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)+--+-- Delete an existing configuration set.+--+-- /Configuration sets/ are groups of rules that you can apply to the+-- emails you send. You apply a configuration set to an email by including+-- a reference to the configuration set in the headers of the email. When+-- you apply a configuration set to an email, all of the rules in that+-- configuration set are applied to the email.+module Amazonka.SESV2.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.SESV2.Types++-- | A request to delete a configuration set.+--+-- /See:/ 'newDeleteConfigurationSet' smart constructor.+data DeleteConfigurationSet = DeleteConfigurationSet'+  { -- | The name of the configuration set.+    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.+newDeleteConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  DeleteConfigurationSet+newDeleteConfigurationSet pConfigurationSetName_ =+  DeleteConfigurationSet'+    { configurationSetName =+        pConfigurationSetName_+    }++-- | The name of the configuration set.+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.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteConfigurationSet where+  toPath DeleteConfigurationSet' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName+      ]++instance Data.ToQuery DeleteConfigurationSet where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /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
+ gen/Amazonka/SESV2/DeleteConfigurationSetEventDestination.hs view
@@ -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.SESV2.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)+--+-- Delete an event destination.+--+-- /Events/ include message sends, deliveries, opens, clicks, bounces, and+-- complaints. /Event destinations/ are places that you can send+-- information about these events to. For example, you can send event data+-- to Amazon SNS to receive notifications when you receive bounces or+-- complaints, or you can use Amazon Kinesis Data Firehose to stream data+-- to Amazon S3 for long-term storage.+module Amazonka.SESV2.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.SESV2.Types++-- | A request to delete an event destination from a configuration set.+--+-- /See:/ 'newDeleteConfigurationSetEventDestination' smart constructor.+data DeleteConfigurationSetEventDestination = DeleteConfigurationSetEventDestination'+  { -- | The name of the configuration set that contains the event destination to+    -- delete.+    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 that contains the event destination to+-- delete.+--+-- '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 that contains the event destination to+-- delete.+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.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    DeleteConfigurationSetEventDestination+  where+  toPath DeleteConfigurationSetEventDestination' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/event-destinations/",+        Data.toBS eventDestinationName+      ]++instance+  Data.ToQuery+    DeleteConfigurationSetEventDestination+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /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
+ gen/Amazonka/SESV2/DeleteContact.hs view
@@ -0,0 +1,166 @@+{-# 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.SESV2.DeleteContact+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes a contact from a contact list.+module Amazonka.SESV2.DeleteContact+  ( -- * Creating a Request+    DeleteContact (..),+    newDeleteContact,++    -- * Request Lenses+    deleteContact_contactListName,+    deleteContact_emailAddress,++    -- * Destructuring the Response+    DeleteContactResponse (..),+    newDeleteContactResponse,++    -- * Response Lenses+    deleteContactResponse_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.SESV2.Types++-- | /See:/ 'newDeleteContact' smart constructor.+data DeleteContact = DeleteContact'+  { -- | The name of the contact list from which the contact should be removed.+    contactListName :: Prelude.Text,+    -- | The contact\'s email address.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContact' 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:+--+-- 'contactListName', 'deleteContact_contactListName' - The name of the contact list from which the contact should be removed.+--+-- 'emailAddress', 'deleteContact_emailAddress' - The contact\'s email address.+newDeleteContact ::+  -- | 'contactListName'+  Prelude.Text ->+  -- | 'emailAddress'+  Prelude.Text ->+  DeleteContact+newDeleteContact pContactListName_ pEmailAddress_ =+  DeleteContact'+    { contactListName = pContactListName_,+      emailAddress = pEmailAddress_+    }++-- | The name of the contact list from which the contact should be removed.+deleteContact_contactListName :: Lens.Lens' DeleteContact Prelude.Text+deleteContact_contactListName = Lens.lens (\DeleteContact' {contactListName} -> contactListName) (\s@DeleteContact' {} a -> s {contactListName = a} :: DeleteContact)++-- | The contact\'s email address.+deleteContact_emailAddress :: Lens.Lens' DeleteContact Prelude.Text+deleteContact_emailAddress = Lens.lens (\DeleteContact' {emailAddress} -> emailAddress) (\s@DeleteContact' {} a -> s {emailAddress = a} :: DeleteContact)++instance Core.AWSRequest DeleteContact where+  type+    AWSResponse DeleteContact =+      DeleteContactResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteContactResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteContact where+  hashWithSalt _salt DeleteContact' {..} =+    _salt+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData DeleteContact where+  rnf DeleteContact' {..} =+    Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf emailAddress++instance Data.ToHeaders DeleteContact where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteContact where+  toPath DeleteContact' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName,+        "/contacts/",+        Data.toBS emailAddress+      ]++instance Data.ToQuery DeleteContact where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteContactResponse' smart constructor.+data DeleteContactResponse = DeleteContactResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContactResponse' 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', 'deleteContactResponse_httpStatus' - The response's http status code.+newDeleteContactResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteContactResponse+newDeleteContactResponse pHttpStatus_ =+  DeleteContactResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+deleteContactResponse_httpStatus :: Lens.Lens' DeleteContactResponse Prelude.Int+deleteContactResponse_httpStatus = Lens.lens (\DeleteContactResponse' {httpStatus} -> httpStatus) (\s@DeleteContactResponse' {} a -> s {httpStatus = a} :: DeleteContactResponse)++instance Prelude.NFData DeleteContactResponse where+  rnf DeleteContactResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteContactList.hs view
@@ -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.SESV2.DeleteContactList+-- 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 contact list and all of the contacts on that list.+module Amazonka.SESV2.DeleteContactList+  ( -- * Creating a Request+    DeleteContactList (..),+    newDeleteContactList,++    -- * Request Lenses+    deleteContactList_contactListName,++    -- * Destructuring the Response+    DeleteContactListResponse (..),+    newDeleteContactListResponse,++    -- * Response Lenses+    deleteContactListResponse_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.SESV2.Types++-- | /See:/ 'newDeleteContactList' smart constructor.+data DeleteContactList = DeleteContactList'+  { -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContactList' 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:+--+-- 'contactListName', 'deleteContactList_contactListName' - The name of the contact list.+newDeleteContactList ::+  -- | 'contactListName'+  Prelude.Text ->+  DeleteContactList+newDeleteContactList pContactListName_ =+  DeleteContactList'+    { contactListName =+        pContactListName_+    }++-- | The name of the contact list.+deleteContactList_contactListName :: Lens.Lens' DeleteContactList Prelude.Text+deleteContactList_contactListName = Lens.lens (\DeleteContactList' {contactListName} -> contactListName) (\s@DeleteContactList' {} a -> s {contactListName = a} :: DeleteContactList)++instance Core.AWSRequest DeleteContactList where+  type+    AWSResponse DeleteContactList =+      DeleteContactListResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteContactListResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteContactList where+  hashWithSalt _salt DeleteContactList' {..} =+    _salt `Prelude.hashWithSalt` contactListName++instance Prelude.NFData DeleteContactList where+  rnf DeleteContactList' {..} =+    Prelude.rnf contactListName++instance Data.ToHeaders DeleteContactList where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteContactList where+  toPath DeleteContactList' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName+      ]++instance Data.ToQuery DeleteContactList where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newDeleteContactListResponse' smart constructor.+data DeleteContactListResponse = DeleteContactListResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteContactListResponse' 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', 'deleteContactListResponse_httpStatus' - The response's http status code.+newDeleteContactListResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteContactListResponse+newDeleteContactListResponse pHttpStatus_ =+  DeleteContactListResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteContactListResponse_httpStatus :: Lens.Lens' DeleteContactListResponse Prelude.Int+deleteContactListResponse_httpStatus = Lens.lens (\DeleteContactListResponse' {httpStatus} -> httpStatus) (\s@DeleteContactListResponse' {} a -> s {httpStatus = a} :: DeleteContactListResponse)++instance Prelude.NFData DeleteContactListResponse where+  rnf DeleteContactListResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteCustomVerificationEmailTemplate.hs view
@@ -0,0 +1,195 @@+{-# 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.SESV2.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/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.DeleteCustomVerificationEmailTemplate+  ( -- * Creating a Request+    DeleteCustomVerificationEmailTemplate (..),+    newDeleteCustomVerificationEmailTemplate,++    -- * Request Lenses+    deleteCustomVerificationEmailTemplate_templateName,++    -- * Destructuring the Response+    DeleteCustomVerificationEmailTemplateResponse (..),+    newDeleteCustomVerificationEmailTemplateResponse,++    -- * Response Lenses+    deleteCustomVerificationEmailTemplateResponse_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.SESV2.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.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteCustomVerificationEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    DeleteCustomVerificationEmailTemplate+  where+  toPath DeleteCustomVerificationEmailTemplate' {..} =+    Prelude.mconcat+      [ "/v2/email/custom-verification-email-templates/",+        Data.toBS templateName+      ]++instance+  Data.ToQuery+    DeleteCustomVerificationEmailTemplate+  where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newDeleteCustomVerificationEmailTemplateResponse' smart constructor.+data DeleteCustomVerificationEmailTemplateResponse = DeleteCustomVerificationEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  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.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'deleteCustomVerificationEmailTemplateResponse_httpStatus' - The response's http status code.+newDeleteCustomVerificationEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteCustomVerificationEmailTemplateResponse+newDeleteCustomVerificationEmailTemplateResponse+  pHttpStatus_ =+    DeleteCustomVerificationEmailTemplateResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+deleteCustomVerificationEmailTemplateResponse_httpStatus :: Lens.Lens' DeleteCustomVerificationEmailTemplateResponse Prelude.Int+deleteCustomVerificationEmailTemplateResponse_httpStatus = Lens.lens (\DeleteCustomVerificationEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteCustomVerificationEmailTemplateResponse' {} a -> s {httpStatus = a} :: DeleteCustomVerificationEmailTemplateResponse)++instance+  Prelude.NFData+    DeleteCustomVerificationEmailTemplateResponse+  where+  rnf+    DeleteCustomVerificationEmailTemplateResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteDedicatedIpPool.hs view
@@ -0,0 +1,152 @@+{-# 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.SESV2.DeleteDedicatedIpPool+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Delete a dedicated IP pool.+module Amazonka.SESV2.DeleteDedicatedIpPool+  ( -- * Creating a Request+    DeleteDedicatedIpPool (..),+    newDeleteDedicatedIpPool,++    -- * Request Lenses+    deleteDedicatedIpPool_poolName,++    -- * Destructuring the Response+    DeleteDedicatedIpPoolResponse (..),+    newDeleteDedicatedIpPoolResponse,++    -- * Response Lenses+    deleteDedicatedIpPoolResponse_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.SESV2.Types++-- | A request to delete a dedicated IP pool.+--+-- /See:/ 'newDeleteDedicatedIpPool' smart constructor.+data DeleteDedicatedIpPool = DeleteDedicatedIpPool'+  { -- | The name of the dedicated IP pool that you want to delete.+    poolName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDedicatedIpPool' 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:+--+-- 'poolName', 'deleteDedicatedIpPool_poolName' - The name of the dedicated IP pool that you want to delete.+newDeleteDedicatedIpPool ::+  -- | 'poolName'+  Prelude.Text ->+  DeleteDedicatedIpPool+newDeleteDedicatedIpPool pPoolName_ =+  DeleteDedicatedIpPool' {poolName = pPoolName_}++-- | The name of the dedicated IP pool that you want to delete.+deleteDedicatedIpPool_poolName :: Lens.Lens' DeleteDedicatedIpPool Prelude.Text+deleteDedicatedIpPool_poolName = Lens.lens (\DeleteDedicatedIpPool' {poolName} -> poolName) (\s@DeleteDedicatedIpPool' {} a -> s {poolName = a} :: DeleteDedicatedIpPool)++instance Core.AWSRequest DeleteDedicatedIpPool where+  type+    AWSResponse DeleteDedicatedIpPool =+      DeleteDedicatedIpPoolResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteDedicatedIpPoolResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteDedicatedIpPool where+  hashWithSalt _salt DeleteDedicatedIpPool' {..} =+    _salt `Prelude.hashWithSalt` poolName++instance Prelude.NFData DeleteDedicatedIpPool where+  rnf DeleteDedicatedIpPool' {..} = Prelude.rnf poolName++instance Data.ToHeaders DeleteDedicatedIpPool where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteDedicatedIpPool where+  toPath DeleteDedicatedIpPool' {..} =+    Prelude.mconcat+      ["/v2/email/dedicated-ip-pools/", Data.toBS poolName]++instance Data.ToQuery DeleteDedicatedIpPool where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newDeleteDedicatedIpPoolResponse' smart constructor.+data DeleteDedicatedIpPoolResponse = DeleteDedicatedIpPoolResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteDedicatedIpPoolResponse' 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', 'deleteDedicatedIpPoolResponse_httpStatus' - The response's http status code.+newDeleteDedicatedIpPoolResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteDedicatedIpPoolResponse+newDeleteDedicatedIpPoolResponse pHttpStatus_ =+  DeleteDedicatedIpPoolResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteDedicatedIpPoolResponse_httpStatus :: Lens.Lens' DeleteDedicatedIpPoolResponse Prelude.Int+deleteDedicatedIpPoolResponse_httpStatus = Lens.lens (\DeleteDedicatedIpPoolResponse' {httpStatus} -> httpStatus) (\s@DeleteDedicatedIpPoolResponse' {} a -> s {httpStatus = a} :: DeleteDedicatedIpPoolResponse)++instance Prelude.NFData DeleteDedicatedIpPoolResponse where+  rnf DeleteDedicatedIpPoolResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteEmailIdentity.hs view
@@ -0,0 +1,160 @@+{-# 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.SESV2.DeleteEmailIdentity+-- 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 identity. An identity can be either an email address or+-- a domain name.+module Amazonka.SESV2.DeleteEmailIdentity+  ( -- * Creating a Request+    DeleteEmailIdentity (..),+    newDeleteEmailIdentity,++    -- * Request Lenses+    deleteEmailIdentity_emailIdentity,++    -- * Destructuring the Response+    DeleteEmailIdentityResponse (..),+    newDeleteEmailIdentityResponse,++    -- * Response Lenses+    deleteEmailIdentityResponse_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.SESV2.Types++-- | A request to delete an existing email identity. When you delete an+-- identity, you lose the ability to send email from that identity. You can+-- restore your ability to send email by completing the verification+-- process for the identity again.+--+-- /See:/ 'newDeleteEmailIdentity' smart constructor.+data DeleteEmailIdentity = DeleteEmailIdentity'+  { -- | The identity (that is, the email address or domain) to delete.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailIdentity' 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:+--+-- 'emailIdentity', 'deleteEmailIdentity_emailIdentity' - The identity (that is, the email address or domain) to delete.+newDeleteEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  DeleteEmailIdentity+newDeleteEmailIdentity pEmailIdentity_ =+  DeleteEmailIdentity'+    { emailIdentity =+        pEmailIdentity_+    }++-- | The identity (that is, the email address or domain) to delete.+deleteEmailIdentity_emailIdentity :: Lens.Lens' DeleteEmailIdentity Prelude.Text+deleteEmailIdentity_emailIdentity = Lens.lens (\DeleteEmailIdentity' {emailIdentity} -> emailIdentity) (\s@DeleteEmailIdentity' {} a -> s {emailIdentity = a} :: DeleteEmailIdentity)++instance Core.AWSRequest DeleteEmailIdentity where+  type+    AWSResponse DeleteEmailIdentity =+      DeleteEmailIdentityResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteEmailIdentityResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteEmailIdentity where+  hashWithSalt _salt DeleteEmailIdentity' {..} =+    _salt `Prelude.hashWithSalt` emailIdentity++instance Prelude.NFData DeleteEmailIdentity where+  rnf DeleteEmailIdentity' {..} =+    Prelude.rnf emailIdentity++instance Data.ToHeaders DeleteEmailIdentity where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteEmailIdentity where+  toPath DeleteEmailIdentity' {..} =+    Prelude.mconcat+      ["/v2/email/identities/", Data.toBS emailIdentity]++instance Data.ToQuery DeleteEmailIdentity where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newDeleteEmailIdentityResponse' smart constructor.+data DeleteEmailIdentityResponse = DeleteEmailIdentityResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailIdentityResponse' 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', 'deleteEmailIdentityResponse_httpStatus' - The response's http status code.+newDeleteEmailIdentityResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteEmailIdentityResponse+newDeleteEmailIdentityResponse pHttpStatus_ =+  DeleteEmailIdentityResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteEmailIdentityResponse_httpStatus :: Lens.Lens' DeleteEmailIdentityResponse Prelude.Int+deleteEmailIdentityResponse_httpStatus = Lens.lens (\DeleteEmailIdentityResponse' {httpStatus} -> httpStatus) (\s@DeleteEmailIdentityResponse' {} a -> s {httpStatus = a} :: DeleteEmailIdentityResponse)++instance Prelude.NFData DeleteEmailIdentityResponse where+  rnf DeleteEmailIdentityResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteEmailIdentityPolicy.hs view
@@ -0,0 +1,205 @@+{-# 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.SESV2.DeleteEmailIdentityPolicy+-- 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.SESV2.DeleteEmailIdentityPolicy+  ( -- * Creating a Request+    DeleteEmailIdentityPolicy (..),+    newDeleteEmailIdentityPolicy,++    -- * Request Lenses+    deleteEmailIdentityPolicy_emailIdentity,+    deleteEmailIdentityPolicy_policyName,++    -- * Destructuring the Response+    DeleteEmailIdentityPolicyResponse (..),+    newDeleteEmailIdentityPolicyResponse,++    -- * Response Lenses+    deleteEmailIdentityPolicyResponse_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.SESV2.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-identity-owner-tasks-management.html Amazon SES Developer Guide>.+--+-- /See:/ 'newDeleteEmailIdentityPolicy' smart constructor.+data DeleteEmailIdentityPolicy = DeleteEmailIdentityPolicy'+  { -- | The email identity.+    emailIdentity :: 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailIdentityPolicy' 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:+--+-- 'emailIdentity', 'deleteEmailIdentityPolicy_emailIdentity' - The email identity.+--+-- 'policyName', 'deleteEmailIdentityPolicy_policyName' - The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+newDeleteEmailIdentityPolicy ::+  -- | 'emailIdentity'+  Prelude.Text ->+  -- | 'policyName'+  Prelude.Text ->+  DeleteEmailIdentityPolicy+newDeleteEmailIdentityPolicy+  pEmailIdentity_+  pPolicyName_ =+    DeleteEmailIdentityPolicy'+      { emailIdentity =+          pEmailIdentity_,+        policyName = pPolicyName_+      }++-- | The email identity.+deleteEmailIdentityPolicy_emailIdentity :: Lens.Lens' DeleteEmailIdentityPolicy Prelude.Text+deleteEmailIdentityPolicy_emailIdentity = Lens.lens (\DeleteEmailIdentityPolicy' {emailIdentity} -> emailIdentity) (\s@DeleteEmailIdentityPolicy' {} a -> s {emailIdentity = a} :: DeleteEmailIdentityPolicy)++-- | The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+deleteEmailIdentityPolicy_policyName :: Lens.Lens' DeleteEmailIdentityPolicy Prelude.Text+deleteEmailIdentityPolicy_policyName = Lens.lens (\DeleteEmailIdentityPolicy' {policyName} -> policyName) (\s@DeleteEmailIdentityPolicy' {} a -> s {policyName = a} :: DeleteEmailIdentityPolicy)++instance Core.AWSRequest DeleteEmailIdentityPolicy where+  type+    AWSResponse DeleteEmailIdentityPolicy =+      DeleteEmailIdentityPolicyResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteEmailIdentityPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteEmailIdentityPolicy where+  hashWithSalt _salt DeleteEmailIdentityPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` emailIdentity+      `Prelude.hashWithSalt` policyName++instance Prelude.NFData DeleteEmailIdentityPolicy where+  rnf DeleteEmailIdentityPolicy' {..} =+    Prelude.rnf emailIdentity+      `Prelude.seq` Prelude.rnf policyName++instance Data.ToHeaders DeleteEmailIdentityPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteEmailIdentityPolicy where+  toPath DeleteEmailIdentityPolicy' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/policies/",+        Data.toBS policyName+      ]++instance Data.ToQuery DeleteEmailIdentityPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newDeleteEmailIdentityPolicyResponse' smart constructor.+data DeleteEmailIdentityPolicyResponse = DeleteEmailIdentityPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailIdentityPolicyResponse' 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', 'deleteEmailIdentityPolicyResponse_httpStatus' - The response's http status code.+newDeleteEmailIdentityPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteEmailIdentityPolicyResponse+newDeleteEmailIdentityPolicyResponse pHttpStatus_ =+  DeleteEmailIdentityPolicyResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteEmailIdentityPolicyResponse_httpStatus :: Lens.Lens' DeleteEmailIdentityPolicyResponse Prelude.Int+deleteEmailIdentityPolicyResponse_httpStatus = Lens.lens (\DeleteEmailIdentityPolicyResponse' {httpStatus} -> httpStatus) (\s@DeleteEmailIdentityPolicyResponse' {} a -> s {httpStatus = a} :: DeleteEmailIdentityPolicyResponse)++instance+  Prelude.NFData+    DeleteEmailIdentityPolicyResponse+  where+  rnf DeleteEmailIdentityPolicyResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteEmailTemplate.hs view
@@ -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.SESV2.DeleteEmailTemplate+-- 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.SESV2.DeleteEmailTemplate+  ( -- * Creating a Request+    DeleteEmailTemplate (..),+    newDeleteEmailTemplate,++    -- * Request Lenses+    deleteEmailTemplate_templateName,++    -- * Destructuring the Response+    DeleteEmailTemplateResponse (..),+    newDeleteEmailTemplateResponse,++    -- * Response Lenses+    deleteEmailTemplateResponse_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.SESV2.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:/ 'newDeleteEmailTemplate' smart constructor.+data DeleteEmailTemplate = DeleteEmailTemplate'+  { -- | The name of the template to be deleted.+    templateName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailTemplate' 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', 'deleteEmailTemplate_templateName' - The name of the template to be deleted.+newDeleteEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  DeleteEmailTemplate+newDeleteEmailTemplate pTemplateName_ =+  DeleteEmailTemplate' {templateName = pTemplateName_}++-- | The name of the template to be deleted.+deleteEmailTemplate_templateName :: Lens.Lens' DeleteEmailTemplate Prelude.Text+deleteEmailTemplate_templateName = Lens.lens (\DeleteEmailTemplate' {templateName} -> templateName) (\s@DeleteEmailTemplate' {} a -> s {templateName = a} :: DeleteEmailTemplate)++instance Core.AWSRequest DeleteEmailTemplate where+  type+    AWSResponse DeleteEmailTemplate =+      DeleteEmailTemplateResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteEmailTemplate where+  hashWithSalt _salt DeleteEmailTemplate' {..} =+    _salt `Prelude.hashWithSalt` templateName++instance Prelude.NFData DeleteEmailTemplate where+  rnf DeleteEmailTemplate' {..} =+    Prelude.rnf templateName++instance Data.ToHeaders DeleteEmailTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteEmailTemplate where+  toPath DeleteEmailTemplate' {..} =+    Prelude.mconcat+      ["/v2/email/templates/", Data.toBS templateName]++instance Data.ToQuery DeleteEmailTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newDeleteEmailTemplateResponse' smart constructor.+data DeleteEmailTemplateResponse = DeleteEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteEmailTemplateResponse' 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', 'deleteEmailTemplateResponse_httpStatus' - The response's http status code.+newDeleteEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteEmailTemplateResponse+newDeleteEmailTemplateResponse pHttpStatus_ =+  DeleteEmailTemplateResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteEmailTemplateResponse_httpStatus :: Lens.Lens' DeleteEmailTemplateResponse Prelude.Int+deleteEmailTemplateResponse_httpStatus = Lens.lens (\DeleteEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@DeleteEmailTemplateResponse' {} a -> s {httpStatus = a} :: DeleteEmailTemplateResponse)++instance Prelude.NFData DeleteEmailTemplateResponse where+  rnf DeleteEmailTemplateResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/DeleteSuppressedDestination.hs view
@@ -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.SESV2.DeleteSuppressedDestination+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Removes an email address from the suppression list for your account.+module Amazonka.SESV2.DeleteSuppressedDestination+  ( -- * Creating a Request+    DeleteSuppressedDestination (..),+    newDeleteSuppressedDestination,++    -- * Request Lenses+    deleteSuppressedDestination_emailAddress,++    -- * Destructuring the Response+    DeleteSuppressedDestinationResponse (..),+    newDeleteSuppressedDestinationResponse,++    -- * Response Lenses+    deleteSuppressedDestinationResponse_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.SESV2.Types++-- | A request to remove an email address from the suppression list for your+-- account.+--+-- /See:/ 'newDeleteSuppressedDestination' smart constructor.+data DeleteSuppressedDestination = DeleteSuppressedDestination'+  { -- | The suppressed email destination to remove from the account suppression+    -- list.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSuppressedDestination' 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', 'deleteSuppressedDestination_emailAddress' - The suppressed email destination to remove from the account suppression+-- list.+newDeleteSuppressedDestination ::+  -- | 'emailAddress'+  Prelude.Text ->+  DeleteSuppressedDestination+newDeleteSuppressedDestination pEmailAddress_ =+  DeleteSuppressedDestination'+    { emailAddress =+        pEmailAddress_+    }++-- | The suppressed email destination to remove from the account suppression+-- list.+deleteSuppressedDestination_emailAddress :: Lens.Lens' DeleteSuppressedDestination Prelude.Text+deleteSuppressedDestination_emailAddress = Lens.lens (\DeleteSuppressedDestination' {emailAddress} -> emailAddress) (\s@DeleteSuppressedDestination' {} a -> s {emailAddress = a} :: DeleteSuppressedDestination)++instance Core.AWSRequest DeleteSuppressedDestination where+  type+    AWSResponse DeleteSuppressedDestination =+      DeleteSuppressedDestinationResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          DeleteSuppressedDestinationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable DeleteSuppressedDestination where+  hashWithSalt _salt DeleteSuppressedDestination' {..} =+    _salt `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData DeleteSuppressedDestination where+  rnf DeleteSuppressedDestination' {..} =+    Prelude.rnf emailAddress++instance Data.ToHeaders DeleteSuppressedDestination where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath DeleteSuppressedDestination where+  toPath DeleteSuppressedDestination' {..} =+    Prelude.mconcat+      [ "/v2/email/suppression/addresses/",+        Data.toBS emailAddress+      ]++instance Data.ToQuery DeleteSuppressedDestination where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newDeleteSuppressedDestinationResponse' smart constructor.+data DeleteSuppressedDestinationResponse = DeleteSuppressedDestinationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteSuppressedDestinationResponse' 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', 'deleteSuppressedDestinationResponse_httpStatus' - The response's http status code.+newDeleteSuppressedDestinationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  DeleteSuppressedDestinationResponse+newDeleteSuppressedDestinationResponse pHttpStatus_ =+  DeleteSuppressedDestinationResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+deleteSuppressedDestinationResponse_httpStatus :: Lens.Lens' DeleteSuppressedDestinationResponse Prelude.Int+deleteSuppressedDestinationResponse_httpStatus = Lens.lens (\DeleteSuppressedDestinationResponse' {httpStatus} -> httpStatus) (\s@DeleteSuppressedDestinationResponse' {} a -> s {httpStatus = a} :: DeleteSuppressedDestinationResponse)++instance+  Prelude.NFData+    DeleteSuppressedDestinationResponse+  where+  rnf DeleteSuppressedDestinationResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetAccount.hs view
@@ -0,0 +1,320 @@+{-# 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.SESV2.GetAccount+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Obtain information about the email-sending status and capabilities of+-- your Amazon SES account in the current Amazon Web Services Region.+module Amazonka.SESV2.GetAccount+  ( -- * Creating a Request+    GetAccount (..),+    newGetAccount,++    -- * Destructuring the Response+    GetAccountResponse (..),+    newGetAccountResponse,++    -- * Response Lenses+    getAccountResponse_dedicatedIpAutoWarmupEnabled,+    getAccountResponse_details,+    getAccountResponse_enforcementStatus,+    getAccountResponse_productionAccessEnabled,+    getAccountResponse_sendQuota,+    getAccountResponse_sendingEnabled,+    getAccountResponse_suppressionAttributes,+    getAccountResponse_vdmAttributes,+    getAccountResponse_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.SESV2.Types++-- | A request to obtain information about the email-sending capabilities of+-- your Amazon SES account.+--+-- /See:/ 'newGetAccount' smart constructor.+data GetAccount = GetAccount'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAccount' 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.+newGetAccount ::+  GetAccount+newGetAccount = GetAccount'++instance Core.AWSRequest GetAccount where+  type AWSResponse GetAccount = GetAccountResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetAccountResponse'+            Prelude.<$> (x Data..?> "DedicatedIpAutoWarmupEnabled")+            Prelude.<*> (x Data..?> "Details")+            Prelude.<*> (x Data..?> "EnforcementStatus")+            Prelude.<*> (x Data..?> "ProductionAccessEnabled")+            Prelude.<*> (x Data..?> "SendQuota")+            Prelude.<*> (x Data..?> "SendingEnabled")+            Prelude.<*> (x Data..?> "SuppressionAttributes")+            Prelude.<*> (x Data..?> "VdmAttributes")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetAccount where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance Prelude.NFData GetAccount where+  rnf _ = ()++instance Data.ToHeaders GetAccount where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetAccount where+  toPath = Prelude.const "/v2/email/account"++instance Data.ToQuery GetAccount where+  toQuery = Prelude.const Prelude.mempty++-- | A list of details about the email-sending capabilities of your Amazon+-- SES account in the current Amazon Web Services Region.+--+-- /See:/ 'newGetAccountResponse' smart constructor.+data GetAccountResponse = GetAccountResponse'+  { -- | Indicates whether or not the automatic warm-up feature is enabled for+    -- dedicated IP addresses that are associated with your account.+    dedicatedIpAutoWarmupEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An object that defines your account details.+    details :: Prelude.Maybe AccountDetails,+    -- | The reputation status of your Amazon SES account. The status can be one+    -- of the following:+    --+    -- -   @HEALTHY@ – There are no reputation-related issues that currently+    --     impact your account.+    --+    -- -   @PROBATION@ – We\'ve identified potential issues with your Amazon+    --     SES account. We\'re placing your account under review while you work+    --     on correcting these issues.+    --+    -- -   @SHUTDOWN@ – Your account\'s ability to send email is currently+    --     paused because of an issue with the email sent from your account.+    --     When you correct the issue, you can contact us and request that your+    --     account\'s ability to send email is resumed.+    enforcementStatus :: Prelude.Maybe Prelude.Text,+    -- | Indicates whether or not your account has production access in the+    -- current Amazon Web Services Region.+    --+    -- If the value is @false@, then your account is in the /sandbox/. When+    -- your account is in the sandbox, you can only send email to verified+    -- identities. Additionally, the maximum number of emails you can send in a+    -- 24-hour period (your sending quota) is 200, and the maximum number of+    -- emails you can send per second (your maximum sending rate) is 1.+    --+    -- If the value is @true@, then your account has production access. When+    -- your account has production access, you can send email to any address.+    -- The sending quota and maximum sending rate for your account vary based+    -- on your specific use case.+    productionAccessEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An object that contains information about the per-day and per-second+    -- sending limits for your Amazon SES account in the current Amazon Web+    -- Services Region.+    sendQuota :: Prelude.Maybe SendQuota,+    -- | Indicates whether or not email sending is enabled for your Amazon SES+    -- account in the current Amazon Web Services Region.+    sendingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | An object that contains information about the email address suppression+    -- preferences for your account in the current Amazon Web Services Region.+    suppressionAttributes :: Prelude.Maybe SuppressionAttributes,+    -- | The VDM attributes that apply to your Amazon SES account.+    vdmAttributes :: Prelude.Maybe VdmAttributes,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetAccountResponse' 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:+--+-- 'dedicatedIpAutoWarmupEnabled', 'getAccountResponse_dedicatedIpAutoWarmupEnabled' - Indicates whether or not the automatic warm-up feature is enabled for+-- dedicated IP addresses that are associated with your account.+--+-- 'details', 'getAccountResponse_details' - An object that defines your account details.+--+-- 'enforcementStatus', 'getAccountResponse_enforcementStatus' - The reputation status of your Amazon SES account. The status can be one+-- of the following:+--+-- -   @HEALTHY@ – There are no reputation-related issues that currently+--     impact your account.+--+-- -   @PROBATION@ – We\'ve identified potential issues with your Amazon+--     SES account. We\'re placing your account under review while you work+--     on correcting these issues.+--+-- -   @SHUTDOWN@ – Your account\'s ability to send email is currently+--     paused because of an issue with the email sent from your account.+--     When you correct the issue, you can contact us and request that your+--     account\'s ability to send email is resumed.+--+-- 'productionAccessEnabled', 'getAccountResponse_productionAccessEnabled' - Indicates whether or not your account has production access in the+-- current Amazon Web Services Region.+--+-- If the value is @false@, then your account is in the /sandbox/. When+-- your account is in the sandbox, you can only send email to verified+-- identities. Additionally, the maximum number of emails you can send in a+-- 24-hour period (your sending quota) is 200, and the maximum number of+-- emails you can send per second (your maximum sending rate) is 1.+--+-- If the value is @true@, then your account has production access. When+-- your account has production access, you can send email to any address.+-- The sending quota and maximum sending rate for your account vary based+-- on your specific use case.+--+-- 'sendQuota', 'getAccountResponse_sendQuota' - An object that contains information about the per-day and per-second+-- sending limits for your Amazon SES account in the current Amazon Web+-- Services Region.+--+-- 'sendingEnabled', 'getAccountResponse_sendingEnabled' - Indicates whether or not email sending is enabled for your Amazon SES+-- account in the current Amazon Web Services Region.+--+-- 'suppressionAttributes', 'getAccountResponse_suppressionAttributes' - An object that contains information about the email address suppression+-- preferences for your account in the current Amazon Web Services Region.+--+-- 'vdmAttributes', 'getAccountResponse_vdmAttributes' - The VDM attributes that apply to your Amazon SES account.+--+-- 'httpStatus', 'getAccountResponse_httpStatus' - The response's http status code.+newGetAccountResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAccountResponse+newGetAccountResponse pHttpStatus_ =+  GetAccountResponse'+    { dedicatedIpAutoWarmupEnabled =+        Prelude.Nothing,+      details = Prelude.Nothing,+      enforcementStatus = Prelude.Nothing,+      productionAccessEnabled = Prelude.Nothing,+      sendQuota = Prelude.Nothing,+      sendingEnabled = Prelude.Nothing,+      suppressionAttributes = Prelude.Nothing,+      vdmAttributes = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | Indicates whether or not the automatic warm-up feature is enabled for+-- dedicated IP addresses that are associated with your account.+getAccountResponse_dedicatedIpAutoWarmupEnabled :: Lens.Lens' GetAccountResponse (Prelude.Maybe Prelude.Bool)+getAccountResponse_dedicatedIpAutoWarmupEnabled = Lens.lens (\GetAccountResponse' {dedicatedIpAutoWarmupEnabled} -> dedicatedIpAutoWarmupEnabled) (\s@GetAccountResponse' {} a -> s {dedicatedIpAutoWarmupEnabled = a} :: GetAccountResponse)++-- | An object that defines your account details.+getAccountResponse_details :: Lens.Lens' GetAccountResponse (Prelude.Maybe AccountDetails)+getAccountResponse_details = Lens.lens (\GetAccountResponse' {details} -> details) (\s@GetAccountResponse' {} a -> s {details = a} :: GetAccountResponse)++-- | The reputation status of your Amazon SES account. The status can be one+-- of the following:+--+-- -   @HEALTHY@ – There are no reputation-related issues that currently+--     impact your account.+--+-- -   @PROBATION@ – We\'ve identified potential issues with your Amazon+--     SES account. We\'re placing your account under review while you work+--     on correcting these issues.+--+-- -   @SHUTDOWN@ – Your account\'s ability to send email is currently+--     paused because of an issue with the email sent from your account.+--     When you correct the issue, you can contact us and request that your+--     account\'s ability to send email is resumed.+getAccountResponse_enforcementStatus :: Lens.Lens' GetAccountResponse (Prelude.Maybe Prelude.Text)+getAccountResponse_enforcementStatus = Lens.lens (\GetAccountResponse' {enforcementStatus} -> enforcementStatus) (\s@GetAccountResponse' {} a -> s {enforcementStatus = a} :: GetAccountResponse)++-- | Indicates whether or not your account has production access in the+-- current Amazon Web Services Region.+--+-- If the value is @false@, then your account is in the /sandbox/. When+-- your account is in the sandbox, you can only send email to verified+-- identities. Additionally, the maximum number of emails you can send in a+-- 24-hour period (your sending quota) is 200, and the maximum number of+-- emails you can send per second (your maximum sending rate) is 1.+--+-- If the value is @true@, then your account has production access. When+-- your account has production access, you can send email to any address.+-- The sending quota and maximum sending rate for your account vary based+-- on your specific use case.+getAccountResponse_productionAccessEnabled :: Lens.Lens' GetAccountResponse (Prelude.Maybe Prelude.Bool)+getAccountResponse_productionAccessEnabled = Lens.lens (\GetAccountResponse' {productionAccessEnabled} -> productionAccessEnabled) (\s@GetAccountResponse' {} a -> s {productionAccessEnabled = a} :: GetAccountResponse)++-- | An object that contains information about the per-day and per-second+-- sending limits for your Amazon SES account in the current Amazon Web+-- Services Region.+getAccountResponse_sendQuota :: Lens.Lens' GetAccountResponse (Prelude.Maybe SendQuota)+getAccountResponse_sendQuota = Lens.lens (\GetAccountResponse' {sendQuota} -> sendQuota) (\s@GetAccountResponse' {} a -> s {sendQuota = a} :: GetAccountResponse)++-- | Indicates whether or not email sending is enabled for your Amazon SES+-- account in the current Amazon Web Services Region.+getAccountResponse_sendingEnabled :: Lens.Lens' GetAccountResponse (Prelude.Maybe Prelude.Bool)+getAccountResponse_sendingEnabled = Lens.lens (\GetAccountResponse' {sendingEnabled} -> sendingEnabled) (\s@GetAccountResponse' {} a -> s {sendingEnabled = a} :: GetAccountResponse)++-- | An object that contains information about the email address suppression+-- preferences for your account in the current Amazon Web Services Region.+getAccountResponse_suppressionAttributes :: Lens.Lens' GetAccountResponse (Prelude.Maybe SuppressionAttributes)+getAccountResponse_suppressionAttributes = Lens.lens (\GetAccountResponse' {suppressionAttributes} -> suppressionAttributes) (\s@GetAccountResponse' {} a -> s {suppressionAttributes = a} :: GetAccountResponse)++-- | The VDM attributes that apply to your Amazon SES account.+getAccountResponse_vdmAttributes :: Lens.Lens' GetAccountResponse (Prelude.Maybe VdmAttributes)+getAccountResponse_vdmAttributes = Lens.lens (\GetAccountResponse' {vdmAttributes} -> vdmAttributes) (\s@GetAccountResponse' {} a -> s {vdmAttributes = a} :: GetAccountResponse)++-- | The response's http status code.+getAccountResponse_httpStatus :: Lens.Lens' GetAccountResponse Prelude.Int+getAccountResponse_httpStatus = Lens.lens (\GetAccountResponse' {httpStatus} -> httpStatus) (\s@GetAccountResponse' {} a -> s {httpStatus = a} :: GetAccountResponse)++instance Prelude.NFData GetAccountResponse where+  rnf GetAccountResponse' {..} =+    Prelude.rnf dedicatedIpAutoWarmupEnabled+      `Prelude.seq` Prelude.rnf details+      `Prelude.seq` Prelude.rnf enforcementStatus+      `Prelude.seq` Prelude.rnf productionAccessEnabled+      `Prelude.seq` Prelude.rnf sendQuota+      `Prelude.seq` Prelude.rnf sendingEnabled+      `Prelude.seq` Prelude.rnf suppressionAttributes+      `Prelude.seq` Prelude.rnf vdmAttributes+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetBlacklistReports.hs view
@@ -0,0 +1,183 @@+{-# 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.SESV2.GetBlacklistReports+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve a list of the blacklists that your dedicated IP addresses+-- appear on.+module Amazonka.SESV2.GetBlacklistReports+  ( -- * Creating a Request+    GetBlacklistReports (..),+    newGetBlacklistReports,++    -- * Request Lenses+    getBlacklistReports_blacklistItemNames,++    -- * Destructuring the Response+    GetBlacklistReportsResponse (..),+    newGetBlacklistReportsResponse,++    -- * Response Lenses+    getBlacklistReportsResponse_httpStatus,+    getBlacklistReportsResponse_blacklistReport,+  )+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.SESV2.Types++-- | A request to retrieve a list of the blacklists that your dedicated IP+-- addresses appear on.+--+-- /See:/ 'newGetBlacklistReports' smart constructor.+data GetBlacklistReports = GetBlacklistReports'+  { -- | A list of IP addresses that you want to retrieve blacklist information+    -- about. You can only specify the dedicated IP addresses that you use to+    -- send email using Amazon SES or Amazon Pinpoint.+    blacklistItemNames :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetBlacklistReports' 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:+--+-- 'blacklistItemNames', 'getBlacklistReports_blacklistItemNames' - A list of IP addresses that you want to retrieve blacklist information+-- about. You can only specify the dedicated IP addresses that you use to+-- send email using Amazon SES or Amazon Pinpoint.+newGetBlacklistReports ::+  GetBlacklistReports+newGetBlacklistReports =+  GetBlacklistReports'+    { blacklistItemNames =+        Prelude.mempty+    }++-- | A list of IP addresses that you want to retrieve blacklist information+-- about. You can only specify the dedicated IP addresses that you use to+-- send email using Amazon SES or Amazon Pinpoint.+getBlacklistReports_blacklistItemNames :: Lens.Lens' GetBlacklistReports [Prelude.Text]+getBlacklistReports_blacklistItemNames = Lens.lens (\GetBlacklistReports' {blacklistItemNames} -> blacklistItemNames) (\s@GetBlacklistReports' {} a -> s {blacklistItemNames = a} :: GetBlacklistReports) Prelude.. Lens.coerced++instance Core.AWSRequest GetBlacklistReports where+  type+    AWSResponse GetBlacklistReports =+      GetBlacklistReportsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetBlacklistReportsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "BlacklistReport"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable GetBlacklistReports where+  hashWithSalt _salt GetBlacklistReports' {..} =+    _salt `Prelude.hashWithSalt` blacklistItemNames++instance Prelude.NFData GetBlacklistReports where+  rnf GetBlacklistReports' {..} =+    Prelude.rnf blacklistItemNames++instance Data.ToHeaders GetBlacklistReports where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetBlacklistReports where+  toPath =+    Prelude.const+      "/v2/email/deliverability-dashboard/blacklist-report"++instance Data.ToQuery GetBlacklistReports where+  toQuery GetBlacklistReports' {..} =+    Prelude.mconcat+      [ "BlacklistItemNames"+          Data.=: Data.toQueryList "member" blacklistItemNames+      ]++-- | An object that contains information about blacklist events.+--+-- /See:/ 'newGetBlacklistReportsResponse' smart constructor.+data GetBlacklistReportsResponse = GetBlacklistReportsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object that contains information about a blacklist that one of your+    -- dedicated IP addresses appears on.+    blacklistReport :: Prelude.HashMap Prelude.Text [BlacklistEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetBlacklistReportsResponse' 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', 'getBlacklistReportsResponse_httpStatus' - The response's http status code.+--+-- 'blacklistReport', 'getBlacklistReportsResponse_blacklistReport' - An object that contains information about a blacklist that one of your+-- dedicated IP addresses appears on.+newGetBlacklistReportsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetBlacklistReportsResponse+newGetBlacklistReportsResponse pHttpStatus_ =+  GetBlacklistReportsResponse'+    { httpStatus =+        pHttpStatus_,+      blacklistReport = Prelude.mempty+    }++-- | The response's http status code.+getBlacklistReportsResponse_httpStatus :: Lens.Lens' GetBlacklistReportsResponse Prelude.Int+getBlacklistReportsResponse_httpStatus = Lens.lens (\GetBlacklistReportsResponse' {httpStatus} -> httpStatus) (\s@GetBlacklistReportsResponse' {} a -> s {httpStatus = a} :: GetBlacklistReportsResponse)++-- | An object that contains information about a blacklist that one of your+-- dedicated IP addresses appears on.+getBlacklistReportsResponse_blacklistReport :: Lens.Lens' GetBlacklistReportsResponse (Prelude.HashMap Prelude.Text [BlacklistEntry])+getBlacklistReportsResponse_blacklistReport = Lens.lens (\GetBlacklistReportsResponse' {blacklistReport} -> blacklistReport) (\s@GetBlacklistReportsResponse' {} a -> s {blacklistReport = a} :: GetBlacklistReportsResponse) Prelude.. Lens.coerced++instance Prelude.NFData GetBlacklistReportsResponse where+  rnf GetBlacklistReportsResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf blacklistReport
+ gen/Amazonka/SESV2/GetConfigurationSet.hs view
@@ -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.SESV2.GetConfigurationSet+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get information about an existing configuration set, including the+-- dedicated IP pool that it\'s associated with, whether or not it\'s+-- enabled for sending email, and more.+--+-- /Configuration sets/ are groups of rules that you can apply to the+-- emails you send. You apply a configuration set to an email by including+-- a reference to the configuration set in the headers of the email. When+-- you apply a configuration set to an email, all of the rules in that+-- configuration set are applied to the email.+module Amazonka.SESV2.GetConfigurationSet+  ( -- * Creating a Request+    GetConfigurationSet (..),+    newGetConfigurationSet,++    -- * Request Lenses+    getConfigurationSet_configurationSetName,++    -- * Destructuring the Response+    GetConfigurationSetResponse (..),+    newGetConfigurationSetResponse,++    -- * Response Lenses+    getConfigurationSetResponse_configurationSetName,+    getConfigurationSetResponse_deliveryOptions,+    getConfigurationSetResponse_reputationOptions,+    getConfigurationSetResponse_sendingOptions,+    getConfigurationSetResponse_suppressionOptions,+    getConfigurationSetResponse_tags,+    getConfigurationSetResponse_trackingOptions,+    getConfigurationSetResponse_vdmOptions,+    getConfigurationSetResponse_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.SESV2.Types++-- | A request to obtain information about a configuration set.+--+-- /See:/ 'newGetConfigurationSet' smart constructor.+data GetConfigurationSet = GetConfigurationSet'+  { -- | The name of the configuration set.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConfigurationSet' 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', 'getConfigurationSet_configurationSetName' - The name of the configuration set.+newGetConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  GetConfigurationSet+newGetConfigurationSet pConfigurationSetName_ =+  GetConfigurationSet'+    { configurationSetName =+        pConfigurationSetName_+    }++-- | The name of the configuration set.+getConfigurationSet_configurationSetName :: Lens.Lens' GetConfigurationSet Prelude.Text+getConfigurationSet_configurationSetName = Lens.lens (\GetConfigurationSet' {configurationSetName} -> configurationSetName) (\s@GetConfigurationSet' {} a -> s {configurationSetName = a} :: GetConfigurationSet)++instance Core.AWSRequest GetConfigurationSet where+  type+    AWSResponse GetConfigurationSet =+      GetConfigurationSetResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetConfigurationSetResponse'+            Prelude.<$> (x Data..?> "ConfigurationSetName")+            Prelude.<*> (x Data..?> "DeliveryOptions")+            Prelude.<*> (x Data..?> "ReputationOptions")+            Prelude.<*> (x Data..?> "SendingOptions")+            Prelude.<*> (x Data..?> "SuppressionOptions")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "TrackingOptions")+            Prelude.<*> (x Data..?> "VdmOptions")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetConfigurationSet where+  hashWithSalt _salt GetConfigurationSet' {..} =+    _salt `Prelude.hashWithSalt` configurationSetName++instance Prelude.NFData GetConfigurationSet where+  rnf GetConfigurationSet' {..} =+    Prelude.rnf configurationSetName++instance Data.ToHeaders GetConfigurationSet where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetConfigurationSet where+  toPath GetConfigurationSet' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName+      ]++instance Data.ToQuery GetConfigurationSet where+  toQuery = Prelude.const Prelude.mempty++-- | Information about a configuration set.+--+-- /See:/ 'newGetConfigurationSetResponse' smart constructor.+data GetConfigurationSetResponse = GetConfigurationSetResponse'+  { -- | The name of the configuration set.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | An object that defines the dedicated IP pool that is used to send emails+    -- that you send using the configuration set.+    deliveryOptions :: Prelude.Maybe DeliveryOptions,+    -- | An object that defines whether or not Amazon SES collects reputation+    -- metrics for the emails that you send that use the configuration set.+    reputationOptions :: Prelude.Maybe ReputationOptions,+    -- | An object that defines whether or not Amazon SES can send email that you+    -- send using the configuration set.+    sendingOptions :: Prelude.Maybe SendingOptions,+    -- | An object that contains information about the suppression list+    -- preferences for your account.+    suppressionOptions :: Prelude.Maybe SuppressionOptions,+    -- | An array of objects that define the tags (keys and values) that are+    -- associated with the configuration set.+    tags :: Prelude.Maybe [Tag],+    -- | An object that defines the open and click tracking options for emails+    -- that you send using the configuration set.+    trackingOptions :: Prelude.Maybe TrackingOptions,+    -- | An object that contains information about the VDM preferences for your+    -- configuration set.+    vdmOptions :: Prelude.Maybe VdmOptions,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConfigurationSetResponse' 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', 'getConfigurationSetResponse_configurationSetName' - The name of the configuration set.+--+-- 'deliveryOptions', 'getConfigurationSetResponse_deliveryOptions' - An object that defines the dedicated IP pool that is used to send emails+-- that you send using the configuration set.+--+-- 'reputationOptions', 'getConfigurationSetResponse_reputationOptions' - An object that defines whether or not Amazon SES collects reputation+-- metrics for the emails that you send that use the configuration set.+--+-- 'sendingOptions', 'getConfigurationSetResponse_sendingOptions' - An object that defines whether or not Amazon SES can send email that you+-- send using the configuration set.+--+-- 'suppressionOptions', 'getConfigurationSetResponse_suppressionOptions' - An object that contains information about the suppression list+-- preferences for your account.+--+-- 'tags', 'getConfigurationSetResponse_tags' - An array of objects that define the tags (keys and values) that are+-- associated with the configuration set.+--+-- 'trackingOptions', 'getConfigurationSetResponse_trackingOptions' - An object that defines the open and click tracking options for emails+-- that you send using the configuration set.+--+-- 'vdmOptions', 'getConfigurationSetResponse_vdmOptions' - An object that contains information about the VDM preferences for your+-- configuration set.+--+-- 'httpStatus', 'getConfigurationSetResponse_httpStatus' - The response's http status code.+newGetConfigurationSetResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetConfigurationSetResponse+newGetConfigurationSetResponse pHttpStatus_ =+  GetConfigurationSetResponse'+    { configurationSetName =+        Prelude.Nothing,+      deliveryOptions = Prelude.Nothing,+      reputationOptions = Prelude.Nothing,+      sendingOptions = Prelude.Nothing,+      suppressionOptions = Prelude.Nothing,+      tags = Prelude.Nothing,+      trackingOptions = Prelude.Nothing,+      vdmOptions = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The name of the configuration set.+getConfigurationSetResponse_configurationSetName :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe Prelude.Text)+getConfigurationSetResponse_configurationSetName = Lens.lens (\GetConfigurationSetResponse' {configurationSetName} -> configurationSetName) (\s@GetConfigurationSetResponse' {} a -> s {configurationSetName = a} :: GetConfigurationSetResponse)++-- | An object that defines the dedicated IP pool that is used to send emails+-- that you send using the configuration set.+getConfigurationSetResponse_deliveryOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe DeliveryOptions)+getConfigurationSetResponse_deliveryOptions = Lens.lens (\GetConfigurationSetResponse' {deliveryOptions} -> deliveryOptions) (\s@GetConfigurationSetResponse' {} a -> s {deliveryOptions = a} :: GetConfigurationSetResponse)++-- | An object that defines whether or not Amazon SES collects reputation+-- metrics for the emails that you send that use the configuration set.+getConfigurationSetResponse_reputationOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe ReputationOptions)+getConfigurationSetResponse_reputationOptions = Lens.lens (\GetConfigurationSetResponse' {reputationOptions} -> reputationOptions) (\s@GetConfigurationSetResponse' {} a -> s {reputationOptions = a} :: GetConfigurationSetResponse)++-- | An object that defines whether or not Amazon SES can send email that you+-- send using the configuration set.+getConfigurationSetResponse_sendingOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe SendingOptions)+getConfigurationSetResponse_sendingOptions = Lens.lens (\GetConfigurationSetResponse' {sendingOptions} -> sendingOptions) (\s@GetConfigurationSetResponse' {} a -> s {sendingOptions = a} :: GetConfigurationSetResponse)++-- | An object that contains information about the suppression list+-- preferences for your account.+getConfigurationSetResponse_suppressionOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe SuppressionOptions)+getConfigurationSetResponse_suppressionOptions = Lens.lens (\GetConfigurationSetResponse' {suppressionOptions} -> suppressionOptions) (\s@GetConfigurationSetResponse' {} a -> s {suppressionOptions = a} :: GetConfigurationSetResponse)++-- | An array of objects that define the tags (keys and values) that are+-- associated with the configuration set.+getConfigurationSetResponse_tags :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe [Tag])+getConfigurationSetResponse_tags = Lens.lens (\GetConfigurationSetResponse' {tags} -> tags) (\s@GetConfigurationSetResponse' {} a -> s {tags = a} :: GetConfigurationSetResponse) Prelude.. Lens.mapping Lens.coerced++-- | An object that defines the open and click tracking options for emails+-- that you send using the configuration set.+getConfigurationSetResponse_trackingOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe TrackingOptions)+getConfigurationSetResponse_trackingOptions = Lens.lens (\GetConfigurationSetResponse' {trackingOptions} -> trackingOptions) (\s@GetConfigurationSetResponse' {} a -> s {trackingOptions = a} :: GetConfigurationSetResponse)++-- | An object that contains information about the VDM preferences for your+-- configuration set.+getConfigurationSetResponse_vdmOptions :: Lens.Lens' GetConfigurationSetResponse (Prelude.Maybe VdmOptions)+getConfigurationSetResponse_vdmOptions = Lens.lens (\GetConfigurationSetResponse' {vdmOptions} -> vdmOptions) (\s@GetConfigurationSetResponse' {} a -> s {vdmOptions = a} :: GetConfigurationSetResponse)++-- | The response's http status code.+getConfigurationSetResponse_httpStatus :: Lens.Lens' GetConfigurationSetResponse Prelude.Int+getConfigurationSetResponse_httpStatus = Lens.lens (\GetConfigurationSetResponse' {httpStatus} -> httpStatus) (\s@GetConfigurationSetResponse' {} a -> s {httpStatus = a} :: GetConfigurationSetResponse)++instance Prelude.NFData GetConfigurationSetResponse where+  rnf GetConfigurationSetResponse' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf deliveryOptions+      `Prelude.seq` Prelude.rnf reputationOptions+      `Prelude.seq` Prelude.rnf sendingOptions+      `Prelude.seq` Prelude.rnf suppressionOptions+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf trackingOptions+      `Prelude.seq` Prelude.rnf vdmOptions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetConfigurationSetEventDestinations.hs view
@@ -0,0 +1,210 @@+{-# 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.SESV2.GetConfigurationSetEventDestinations+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve a list of event destinations that are associated with a+-- configuration set.+--+-- /Events/ include message sends, deliveries, opens, clicks, bounces, and+-- complaints. /Event destinations/ are places that you can send+-- information about these events to. For example, you can send event data+-- to Amazon SNS to receive notifications when you receive bounces or+-- complaints, or you can use Amazon Kinesis Data Firehose to stream data+-- to Amazon S3 for long-term storage.+module Amazonka.SESV2.GetConfigurationSetEventDestinations+  ( -- * Creating a Request+    GetConfigurationSetEventDestinations (..),+    newGetConfigurationSetEventDestinations,++    -- * Request Lenses+    getConfigurationSetEventDestinations_configurationSetName,++    -- * Destructuring the Response+    GetConfigurationSetEventDestinationsResponse (..),+    newGetConfigurationSetEventDestinationsResponse,++    -- * Response Lenses+    getConfigurationSetEventDestinationsResponse_eventDestinations,+    getConfigurationSetEventDestinationsResponse_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.SESV2.Types++-- | A request to obtain information about the event destinations for a+-- configuration set.+--+-- /See:/ 'newGetConfigurationSetEventDestinations' smart constructor.+data GetConfigurationSetEventDestinations = GetConfigurationSetEventDestinations'+  { -- | The name of the configuration set that contains the event destination.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConfigurationSetEventDestinations' 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', 'getConfigurationSetEventDestinations_configurationSetName' - The name of the configuration set that contains the event destination.+newGetConfigurationSetEventDestinations ::+  -- | 'configurationSetName'+  Prelude.Text ->+  GetConfigurationSetEventDestinations+newGetConfigurationSetEventDestinations+  pConfigurationSetName_ =+    GetConfigurationSetEventDestinations'+      { configurationSetName =+          pConfigurationSetName_+      }++-- | The name of the configuration set that contains the event destination.+getConfigurationSetEventDestinations_configurationSetName :: Lens.Lens' GetConfigurationSetEventDestinations Prelude.Text+getConfigurationSetEventDestinations_configurationSetName = Lens.lens (\GetConfigurationSetEventDestinations' {configurationSetName} -> configurationSetName) (\s@GetConfigurationSetEventDestinations' {} a -> s {configurationSetName = a} :: GetConfigurationSetEventDestinations)++instance+  Core.AWSRequest+    GetConfigurationSetEventDestinations+  where+  type+    AWSResponse GetConfigurationSetEventDestinations =+      GetConfigurationSetEventDestinationsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetConfigurationSetEventDestinationsResponse'+            Prelude.<$> ( x+                            Data..?> "EventDestinations"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    GetConfigurationSetEventDestinations+  where+  hashWithSalt+    _salt+    GetConfigurationSetEventDestinations' {..} =+      _salt `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    GetConfigurationSetEventDestinations+  where+  rnf GetConfigurationSetEventDestinations' {..} =+    Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    GetConfigurationSetEventDestinations+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    GetConfigurationSetEventDestinations+  where+  toPath GetConfigurationSetEventDestinations' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/event-destinations"+      ]++instance+  Data.ToQuery+    GetConfigurationSetEventDestinations+  where+  toQuery = Prelude.const Prelude.mempty++-- | Information about an event destination for a configuration set.+--+-- /See:/ 'newGetConfigurationSetEventDestinationsResponse' smart constructor.+data GetConfigurationSetEventDestinationsResponse = GetConfigurationSetEventDestinationsResponse'+  { -- | An array that includes all of the events destinations that have been+    -- configured for the configuration set.+    eventDestinations :: Prelude.Maybe [EventDestination],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetConfigurationSetEventDestinationsResponse' 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:+--+-- 'eventDestinations', 'getConfigurationSetEventDestinationsResponse_eventDestinations' - An array that includes all of the events destinations that have been+-- configured for the configuration set.+--+-- 'httpStatus', 'getConfigurationSetEventDestinationsResponse_httpStatus' - The response's http status code.+newGetConfigurationSetEventDestinationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetConfigurationSetEventDestinationsResponse+newGetConfigurationSetEventDestinationsResponse+  pHttpStatus_ =+    GetConfigurationSetEventDestinationsResponse'+      { eventDestinations =+          Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | An array that includes all of the events destinations that have been+-- configured for the configuration set.+getConfigurationSetEventDestinationsResponse_eventDestinations :: Lens.Lens' GetConfigurationSetEventDestinationsResponse (Prelude.Maybe [EventDestination])+getConfigurationSetEventDestinationsResponse_eventDestinations = Lens.lens (\GetConfigurationSetEventDestinationsResponse' {eventDestinations} -> eventDestinations) (\s@GetConfigurationSetEventDestinationsResponse' {} a -> s {eventDestinations = a} :: GetConfigurationSetEventDestinationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getConfigurationSetEventDestinationsResponse_httpStatus :: Lens.Lens' GetConfigurationSetEventDestinationsResponse Prelude.Int+getConfigurationSetEventDestinationsResponse_httpStatus = Lens.lens (\GetConfigurationSetEventDestinationsResponse' {httpStatus} -> httpStatus) (\s@GetConfigurationSetEventDestinationsResponse' {} a -> s {httpStatus = a} :: GetConfigurationSetEventDestinationsResponse)++instance+  Prelude.NFData+    GetConfigurationSetEventDestinationsResponse+  where+  rnf GetConfigurationSetEventDestinationsResponse' {..} =+    Prelude.rnf eventDestinations+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetContact.hs view
@@ -0,0 +1,275 @@+{-# 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.SESV2.GetContact+-- 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 contact from a contact list.+module Amazonka.SESV2.GetContact+  ( -- * Creating a Request+    GetContact (..),+    newGetContact,++    -- * Request Lenses+    getContact_contactListName,+    getContact_emailAddress,++    -- * Destructuring the Response+    GetContactResponse (..),+    newGetContactResponse,++    -- * Response Lenses+    getContactResponse_attributesData,+    getContactResponse_contactListName,+    getContactResponse_createdTimestamp,+    getContactResponse_emailAddress,+    getContactResponse_lastUpdatedTimestamp,+    getContactResponse_topicDefaultPreferences,+    getContactResponse_topicPreferences,+    getContactResponse_unsubscribeAll,+    getContactResponse_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.SESV2.Types++-- | /See:/ 'newGetContact' smart constructor.+data GetContact = GetContact'+  { -- | The name of the contact list to which the contact belongs.+    contactListName :: Prelude.Text,+    -- | The contact\'s email addres.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContact' 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:+--+-- 'contactListName', 'getContact_contactListName' - The name of the contact list to which the contact belongs.+--+-- 'emailAddress', 'getContact_emailAddress' - The contact\'s email addres.+newGetContact ::+  -- | 'contactListName'+  Prelude.Text ->+  -- | 'emailAddress'+  Prelude.Text ->+  GetContact+newGetContact pContactListName_ pEmailAddress_ =+  GetContact'+    { contactListName = pContactListName_,+      emailAddress = pEmailAddress_+    }++-- | The name of the contact list to which the contact belongs.+getContact_contactListName :: Lens.Lens' GetContact Prelude.Text+getContact_contactListName = Lens.lens (\GetContact' {contactListName} -> contactListName) (\s@GetContact' {} a -> s {contactListName = a} :: GetContact)++-- | The contact\'s email addres.+getContact_emailAddress :: Lens.Lens' GetContact Prelude.Text+getContact_emailAddress = Lens.lens (\GetContact' {emailAddress} -> emailAddress) (\s@GetContact' {} a -> s {emailAddress = a} :: GetContact)++instance Core.AWSRequest GetContact where+  type AWSResponse GetContact = GetContactResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetContactResponse'+            Prelude.<$> (x Data..?> "AttributesData")+            Prelude.<*> (x Data..?> "ContactListName")+            Prelude.<*> (x Data..?> "CreatedTimestamp")+            Prelude.<*> (x Data..?> "EmailAddress")+            Prelude.<*> (x Data..?> "LastUpdatedTimestamp")+            Prelude.<*> ( x+                            Data..?> "TopicDefaultPreferences"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "TopicPreferences"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "UnsubscribeAll")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetContact where+  hashWithSalt _salt GetContact' {..} =+    _salt+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData GetContact where+  rnf GetContact' {..} =+    Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf emailAddress++instance Data.ToHeaders GetContact where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetContact where+  toPath GetContact' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName,+        "/contacts/",+        Data.toBS emailAddress+      ]++instance Data.ToQuery GetContact where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetContactResponse' smart constructor.+data GetContactResponse = GetContactResponse'+  { -- | The attribute data attached to a contact.+    attributesData :: Prelude.Maybe Prelude.Text,+    -- | The name of the contact list to which the contact belongs.+    contactListName :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting when the contact was created.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The contact\'s email addres.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting the last time the contact\'s information was updated.+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The default topic preferences applied to the contact.+    topicDefaultPreferences :: Prelude.Maybe [TopicPreference],+    -- | The contact\'s preference for being opted-in to or opted-out of a+    -- topic.>+    topicPreferences :: Prelude.Maybe [TopicPreference],+    -- | A boolean value status noting if the contact is unsubscribed from all+    -- contact list topics.+    unsubscribeAll :: 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 'GetContactResponse' 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:+--+-- 'attributesData', 'getContactResponse_attributesData' - The attribute data attached to a contact.+--+-- 'contactListName', 'getContactResponse_contactListName' - The name of the contact list to which the contact belongs.+--+-- 'createdTimestamp', 'getContactResponse_createdTimestamp' - A timestamp noting when the contact was created.+--+-- 'emailAddress', 'getContactResponse_emailAddress' - The contact\'s email addres.+--+-- 'lastUpdatedTimestamp', 'getContactResponse_lastUpdatedTimestamp' - A timestamp noting the last time the contact\'s information was updated.+--+-- 'topicDefaultPreferences', 'getContactResponse_topicDefaultPreferences' - The default topic preferences applied to the contact.+--+-- 'topicPreferences', 'getContactResponse_topicPreferences' - The contact\'s preference for being opted-in to or opted-out of a+-- topic.>+--+-- 'unsubscribeAll', 'getContactResponse_unsubscribeAll' - A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+--+-- 'httpStatus', 'getContactResponse_httpStatus' - The response's http status code.+newGetContactResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetContactResponse+newGetContactResponse pHttpStatus_ =+  GetContactResponse'+    { attributesData =+        Prelude.Nothing,+      contactListName = Prelude.Nothing,+      createdTimestamp = Prelude.Nothing,+      emailAddress = Prelude.Nothing,+      lastUpdatedTimestamp = Prelude.Nothing,+      topicDefaultPreferences = Prelude.Nothing,+      topicPreferences = Prelude.Nothing,+      unsubscribeAll = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The attribute data attached to a contact.+getContactResponse_attributesData :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.Text)+getContactResponse_attributesData = Lens.lens (\GetContactResponse' {attributesData} -> attributesData) (\s@GetContactResponse' {} a -> s {attributesData = a} :: GetContactResponse)++-- | The name of the contact list to which the contact belongs.+getContactResponse_contactListName :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.Text)+getContactResponse_contactListName = Lens.lens (\GetContactResponse' {contactListName} -> contactListName) (\s@GetContactResponse' {} a -> s {contactListName = a} :: GetContactResponse)++-- | A timestamp noting when the contact was created.+getContactResponse_createdTimestamp :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.UTCTime)+getContactResponse_createdTimestamp = Lens.lens (\GetContactResponse' {createdTimestamp} -> createdTimestamp) (\s@GetContactResponse' {} a -> s {createdTimestamp = a} :: GetContactResponse) Prelude.. Lens.mapping Data._Time++-- | The contact\'s email addres.+getContactResponse_emailAddress :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.Text)+getContactResponse_emailAddress = Lens.lens (\GetContactResponse' {emailAddress} -> emailAddress) (\s@GetContactResponse' {} a -> s {emailAddress = a} :: GetContactResponse)++-- | A timestamp noting the last time the contact\'s information was updated.+getContactResponse_lastUpdatedTimestamp :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.UTCTime)+getContactResponse_lastUpdatedTimestamp = Lens.lens (\GetContactResponse' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@GetContactResponse' {} a -> s {lastUpdatedTimestamp = a} :: GetContactResponse) Prelude.. Lens.mapping Data._Time++-- | The default topic preferences applied to the contact.+getContactResponse_topicDefaultPreferences :: Lens.Lens' GetContactResponse (Prelude.Maybe [TopicPreference])+getContactResponse_topicDefaultPreferences = Lens.lens (\GetContactResponse' {topicDefaultPreferences} -> topicDefaultPreferences) (\s@GetContactResponse' {} a -> s {topicDefaultPreferences = a} :: GetContactResponse) Prelude.. Lens.mapping Lens.coerced++-- | The contact\'s preference for being opted-in to or opted-out of a+-- topic.>+getContactResponse_topicPreferences :: Lens.Lens' GetContactResponse (Prelude.Maybe [TopicPreference])+getContactResponse_topicPreferences = Lens.lens (\GetContactResponse' {topicPreferences} -> topicPreferences) (\s@GetContactResponse' {} a -> s {topicPreferences = a} :: GetContactResponse) Prelude.. Lens.mapping Lens.coerced++-- | A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+getContactResponse_unsubscribeAll :: Lens.Lens' GetContactResponse (Prelude.Maybe Prelude.Bool)+getContactResponse_unsubscribeAll = Lens.lens (\GetContactResponse' {unsubscribeAll} -> unsubscribeAll) (\s@GetContactResponse' {} a -> s {unsubscribeAll = a} :: GetContactResponse)++-- | The response's http status code.+getContactResponse_httpStatus :: Lens.Lens' GetContactResponse Prelude.Int+getContactResponse_httpStatus = Lens.lens (\GetContactResponse' {httpStatus} -> httpStatus) (\s@GetContactResponse' {} a -> s {httpStatus = a} :: GetContactResponse)++instance Prelude.NFData GetContactResponse where+  rnf GetContactResponse' {..} =+    Prelude.rnf attributesData+      `Prelude.seq` Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp+      `Prelude.seq` Prelude.rnf topicDefaultPreferences+      `Prelude.seq` Prelude.rnf topicPreferences+      `Prelude.seq` Prelude.rnf unsubscribeAll+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetContactList.hs view
@@ -0,0 +1,228 @@+{-# 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.SESV2.GetContactList+-- 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 contact list metadata. It does not return any information about+-- the contacts present in the list.+module Amazonka.SESV2.GetContactList+  ( -- * Creating a Request+    GetContactList (..),+    newGetContactList,++    -- * Request Lenses+    getContactList_contactListName,++    -- * Destructuring the Response+    GetContactListResponse (..),+    newGetContactListResponse,++    -- * Response Lenses+    getContactListResponse_contactListName,+    getContactListResponse_createdTimestamp,+    getContactListResponse_description,+    getContactListResponse_lastUpdatedTimestamp,+    getContactListResponse_tags,+    getContactListResponse_topics,+    getContactListResponse_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.SESV2.Types++-- | /See:/ 'newGetContactList' smart constructor.+data GetContactList = GetContactList'+  { -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContactList' 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:+--+-- 'contactListName', 'getContactList_contactListName' - The name of the contact list.+newGetContactList ::+  -- | 'contactListName'+  Prelude.Text ->+  GetContactList+newGetContactList pContactListName_ =+  GetContactList'+    { contactListName =+        pContactListName_+    }++-- | The name of the contact list.+getContactList_contactListName :: Lens.Lens' GetContactList Prelude.Text+getContactList_contactListName = Lens.lens (\GetContactList' {contactListName} -> contactListName) (\s@GetContactList' {} a -> s {contactListName = a} :: GetContactList)++instance Core.AWSRequest GetContactList where+  type+    AWSResponse GetContactList =+      GetContactListResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetContactListResponse'+            Prelude.<$> (x Data..?> "ContactListName")+            Prelude.<*> (x Data..?> "CreatedTimestamp")+            Prelude.<*> (x Data..?> "Description")+            Prelude.<*> (x Data..?> "LastUpdatedTimestamp")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Topics" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetContactList where+  hashWithSalt _salt GetContactList' {..} =+    _salt `Prelude.hashWithSalt` contactListName++instance Prelude.NFData GetContactList where+  rnf GetContactList' {..} = Prelude.rnf contactListName++instance Data.ToHeaders GetContactList where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetContactList where+  toPath GetContactList' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName+      ]++instance Data.ToQuery GetContactList where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newGetContactListResponse' smart constructor.+data GetContactListResponse = GetContactListResponse'+  { -- | The name of the contact list.+    contactListName :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting when the contact list was created.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | A description of what the contact list is about.+    description :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting the last time the contact list was updated.+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The tags associated with a contact list.+    tags :: Prelude.Maybe [Tag],+    -- | An interest group, theme, or label within a list. A contact list can+    -- have multiple topics.+    topics :: Prelude.Maybe [Topic],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetContactListResponse' 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:+--+-- 'contactListName', 'getContactListResponse_contactListName' - The name of the contact list.+--+-- 'createdTimestamp', 'getContactListResponse_createdTimestamp' - A timestamp noting when the contact list was created.+--+-- 'description', 'getContactListResponse_description' - A description of what the contact list is about.+--+-- 'lastUpdatedTimestamp', 'getContactListResponse_lastUpdatedTimestamp' - A timestamp noting the last time the contact list was updated.+--+-- 'tags', 'getContactListResponse_tags' - The tags associated with a contact list.+--+-- 'topics', 'getContactListResponse_topics' - An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+--+-- 'httpStatus', 'getContactListResponse_httpStatus' - The response's http status code.+newGetContactListResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetContactListResponse+newGetContactListResponse pHttpStatus_ =+  GetContactListResponse'+    { contactListName =+        Prelude.Nothing,+      createdTimestamp = Prelude.Nothing,+      description = Prelude.Nothing,+      lastUpdatedTimestamp = Prelude.Nothing,+      tags = Prelude.Nothing,+      topics = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The name of the contact list.+getContactListResponse_contactListName :: Lens.Lens' GetContactListResponse (Prelude.Maybe Prelude.Text)+getContactListResponse_contactListName = Lens.lens (\GetContactListResponse' {contactListName} -> contactListName) (\s@GetContactListResponse' {} a -> s {contactListName = a} :: GetContactListResponse)++-- | A timestamp noting when the contact list was created.+getContactListResponse_createdTimestamp :: Lens.Lens' GetContactListResponse (Prelude.Maybe Prelude.UTCTime)+getContactListResponse_createdTimestamp = Lens.lens (\GetContactListResponse' {createdTimestamp} -> createdTimestamp) (\s@GetContactListResponse' {} a -> s {createdTimestamp = a} :: GetContactListResponse) Prelude.. Lens.mapping Data._Time++-- | A description of what the contact list is about.+getContactListResponse_description :: Lens.Lens' GetContactListResponse (Prelude.Maybe Prelude.Text)+getContactListResponse_description = Lens.lens (\GetContactListResponse' {description} -> description) (\s@GetContactListResponse' {} a -> s {description = a} :: GetContactListResponse)++-- | A timestamp noting the last time the contact list was updated.+getContactListResponse_lastUpdatedTimestamp :: Lens.Lens' GetContactListResponse (Prelude.Maybe Prelude.UTCTime)+getContactListResponse_lastUpdatedTimestamp = Lens.lens (\GetContactListResponse' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@GetContactListResponse' {} a -> s {lastUpdatedTimestamp = a} :: GetContactListResponse) Prelude.. Lens.mapping Data._Time++-- | The tags associated with a contact list.+getContactListResponse_tags :: Lens.Lens' GetContactListResponse (Prelude.Maybe [Tag])+getContactListResponse_tags = Lens.lens (\GetContactListResponse' {tags} -> tags) (\s@GetContactListResponse' {} a -> s {tags = a} :: GetContactListResponse) Prelude.. Lens.mapping Lens.coerced++-- | An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+getContactListResponse_topics :: Lens.Lens' GetContactListResponse (Prelude.Maybe [Topic])+getContactListResponse_topics = Lens.lens (\GetContactListResponse' {topics} -> topics) (\s@GetContactListResponse' {} a -> s {topics = a} :: GetContactListResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getContactListResponse_httpStatus :: Lens.Lens' GetContactListResponse Prelude.Int+getContactListResponse_httpStatus = Lens.lens (\GetContactListResponse' {httpStatus} -> httpStatus) (\s@GetContactListResponse' {} a -> s {httpStatus = a} :: GetContactListResponse)++instance Prelude.NFData GetContactListResponse where+  rnf GetContactListResponse' {..} =+    Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf topics+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetCustomVerificationEmailTemplate.hs view
@@ -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.SESV2.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/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.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.SESV2.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.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    GetCustomVerificationEmailTemplate+  where+  toPath GetCustomVerificationEmailTemplate' {..} =+    Prelude.mconcat+      [ "/v2/email/custom-verification-email-templates/",+        Data.toBS templateName+      ]++instance+  Data.ToQuery+    GetCustomVerificationEmailTemplate+  where+  toQuery = Prelude.const Prelude.mempty++-- | The following elements are returned by the service.+--+-- /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
+ gen/Amazonka/SESV2/GetDedicatedIp.hs view
@@ -0,0 +1,170 @@+{-# 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.SESV2.GetDedicatedIp+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Get information about a dedicated IP address, including the name of the+-- dedicated IP pool that it\'s associated with, as well information about+-- the automatic warm-up process for the address.+module Amazonka.SESV2.GetDedicatedIp+  ( -- * Creating a Request+    GetDedicatedIp (..),+    newGetDedicatedIp,++    -- * Request Lenses+    getDedicatedIp_ip,++    -- * Destructuring the Response+    GetDedicatedIpResponse (..),+    newGetDedicatedIpResponse,++    -- * Response Lenses+    getDedicatedIpResponse_dedicatedIp,+    getDedicatedIpResponse_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.SESV2.Types++-- | A request to obtain more information about a dedicated IP address.+--+-- /See:/ 'newGetDedicatedIp' smart constructor.+data GetDedicatedIp = GetDedicatedIp'+  { -- | The IP address that you want to obtain more information about. The value+    -- you specify has to be a dedicated IP address that\'s assocaited with+    -- your Amazon Web Services account.+    ip :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDedicatedIp' 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:+--+-- 'ip', 'getDedicatedIp_ip' - The IP address that you want to obtain more information about. The value+-- you specify has to be a dedicated IP address that\'s assocaited with+-- your Amazon Web Services account.+newGetDedicatedIp ::+  -- | 'ip'+  Prelude.Text ->+  GetDedicatedIp+newGetDedicatedIp pIp_ = GetDedicatedIp' {ip = pIp_}++-- | The IP address that you want to obtain more information about. The value+-- you specify has to be a dedicated IP address that\'s assocaited with+-- your Amazon Web Services account.+getDedicatedIp_ip :: Lens.Lens' GetDedicatedIp Prelude.Text+getDedicatedIp_ip = Lens.lens (\GetDedicatedIp' {ip} -> ip) (\s@GetDedicatedIp' {} a -> s {ip = a} :: GetDedicatedIp)++instance Core.AWSRequest GetDedicatedIp where+  type+    AWSResponse GetDedicatedIp =+      GetDedicatedIpResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDedicatedIpResponse'+            Prelude.<$> (x Data..?> "DedicatedIp")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDedicatedIp where+  hashWithSalt _salt GetDedicatedIp' {..} =+    _salt `Prelude.hashWithSalt` ip++instance Prelude.NFData GetDedicatedIp where+  rnf GetDedicatedIp' {..} = Prelude.rnf ip++instance Data.ToHeaders GetDedicatedIp where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDedicatedIp where+  toPath GetDedicatedIp' {..} =+    Prelude.mconcat+      ["/v2/email/dedicated-ips/", Data.toBS ip]++instance Data.ToQuery GetDedicatedIp where+  toQuery = Prelude.const Prelude.mempty++-- | Information about a dedicated IP address.+--+-- /See:/ 'newGetDedicatedIpResponse' smart constructor.+data GetDedicatedIpResponse = GetDedicatedIpResponse'+  { -- | An object that contains information about a dedicated IP address.+    dedicatedIp :: Prelude.Maybe DedicatedIp,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDedicatedIpResponse' 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:+--+-- 'dedicatedIp', 'getDedicatedIpResponse_dedicatedIp' - An object that contains information about a dedicated IP address.+--+-- 'httpStatus', 'getDedicatedIpResponse_httpStatus' - The response's http status code.+newGetDedicatedIpResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDedicatedIpResponse+newGetDedicatedIpResponse pHttpStatus_ =+  GetDedicatedIpResponse'+    { dedicatedIp =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An object that contains information about a dedicated IP address.+getDedicatedIpResponse_dedicatedIp :: Lens.Lens' GetDedicatedIpResponse (Prelude.Maybe DedicatedIp)+getDedicatedIpResponse_dedicatedIp = Lens.lens (\GetDedicatedIpResponse' {dedicatedIp} -> dedicatedIp) (\s@GetDedicatedIpResponse' {} a -> s {dedicatedIp = a} :: GetDedicatedIpResponse)++-- | The response's http status code.+getDedicatedIpResponse_httpStatus :: Lens.Lens' GetDedicatedIpResponse Prelude.Int+getDedicatedIpResponse_httpStatus = Lens.lens (\GetDedicatedIpResponse' {httpStatus} -> httpStatus) (\s@GetDedicatedIpResponse' {} a -> s {httpStatus = a} :: GetDedicatedIpResponse)++instance Prelude.NFData GetDedicatedIpResponse where+  rnf GetDedicatedIpResponse' {..} =+    Prelude.rnf dedicatedIp+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetDedicatedIpPool.hs view
@@ -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.SESV2.GetDedicatedIpPool+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve information about the dedicated pool.+module Amazonka.SESV2.GetDedicatedIpPool+  ( -- * Creating a Request+    GetDedicatedIpPool (..),+    newGetDedicatedIpPool,++    -- * Request Lenses+    getDedicatedIpPool_poolName,++    -- * Destructuring the Response+    GetDedicatedIpPoolResponse (..),+    newGetDedicatedIpPoolResponse,++    -- * Response Lenses+    getDedicatedIpPoolResponse_dedicatedIpPool,+    getDedicatedIpPoolResponse_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.SESV2.Types++-- | A request to obtain more information about a dedicated IP pool.+--+-- /See:/ 'newGetDedicatedIpPool' smart constructor.+data GetDedicatedIpPool = GetDedicatedIpPool'+  { -- | The name of the dedicated IP pool to retrieve.+    poolName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDedicatedIpPool' 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:+--+-- 'poolName', 'getDedicatedIpPool_poolName' - The name of the dedicated IP pool to retrieve.+newGetDedicatedIpPool ::+  -- | 'poolName'+  Prelude.Text ->+  GetDedicatedIpPool+newGetDedicatedIpPool pPoolName_ =+  GetDedicatedIpPool' {poolName = pPoolName_}++-- | The name of the dedicated IP pool to retrieve.+getDedicatedIpPool_poolName :: Lens.Lens' GetDedicatedIpPool Prelude.Text+getDedicatedIpPool_poolName = Lens.lens (\GetDedicatedIpPool' {poolName} -> poolName) (\s@GetDedicatedIpPool' {} a -> s {poolName = a} :: GetDedicatedIpPool)++instance Core.AWSRequest GetDedicatedIpPool where+  type+    AWSResponse GetDedicatedIpPool =+      GetDedicatedIpPoolResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDedicatedIpPoolResponse'+            Prelude.<$> (x Data..?> "DedicatedIpPool")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDedicatedIpPool where+  hashWithSalt _salt GetDedicatedIpPool' {..} =+    _salt `Prelude.hashWithSalt` poolName++instance Prelude.NFData GetDedicatedIpPool where+  rnf GetDedicatedIpPool' {..} = Prelude.rnf poolName++instance Data.ToHeaders GetDedicatedIpPool where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDedicatedIpPool where+  toPath GetDedicatedIpPool' {..} =+    Prelude.mconcat+      ["/v2/email/dedicated-ip-pools/", Data.toBS poolName]++instance Data.ToQuery GetDedicatedIpPool where+  toQuery = Prelude.const Prelude.mempty++-- | The following element is returned by the service.+--+-- /See:/ 'newGetDedicatedIpPoolResponse' smart constructor.+data GetDedicatedIpPoolResponse = GetDedicatedIpPoolResponse'+  { -- | An object that contains information about a dedicated IP pool.+    dedicatedIpPool :: Prelude.Maybe DedicatedIpPool,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDedicatedIpPoolResponse' 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:+--+-- 'dedicatedIpPool', 'getDedicatedIpPoolResponse_dedicatedIpPool' - An object that contains information about a dedicated IP pool.+--+-- 'httpStatus', 'getDedicatedIpPoolResponse_httpStatus' - The response's http status code.+newGetDedicatedIpPoolResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDedicatedIpPoolResponse+newGetDedicatedIpPoolResponse pHttpStatus_ =+  GetDedicatedIpPoolResponse'+    { dedicatedIpPool =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An object that contains information about a dedicated IP pool.+getDedicatedIpPoolResponse_dedicatedIpPool :: Lens.Lens' GetDedicatedIpPoolResponse (Prelude.Maybe DedicatedIpPool)+getDedicatedIpPoolResponse_dedicatedIpPool = Lens.lens (\GetDedicatedIpPoolResponse' {dedicatedIpPool} -> dedicatedIpPool) (\s@GetDedicatedIpPoolResponse' {} a -> s {dedicatedIpPool = a} :: GetDedicatedIpPoolResponse)++-- | The response's http status code.+getDedicatedIpPoolResponse_httpStatus :: Lens.Lens' GetDedicatedIpPoolResponse Prelude.Int+getDedicatedIpPoolResponse_httpStatus = Lens.lens (\GetDedicatedIpPoolResponse' {httpStatus} -> httpStatus) (\s@GetDedicatedIpPoolResponse' {} a -> s {httpStatus = a} :: GetDedicatedIpPoolResponse)++instance Prelude.NFData GetDedicatedIpPoolResponse where+  rnf GetDedicatedIpPoolResponse' {..} =+    Prelude.rnf dedicatedIpPool+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetDedicatedIps.hs view
@@ -0,0 +1,230 @@+{-# 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.SESV2.GetDedicatedIps+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List the dedicated IP addresses that are associated with your Amazon Web+-- Services account.+module Amazonka.SESV2.GetDedicatedIps+  ( -- * Creating a Request+    GetDedicatedIps (..),+    newGetDedicatedIps,++    -- * Request Lenses+    getDedicatedIps_nextToken,+    getDedicatedIps_pageSize,+    getDedicatedIps_poolName,++    -- * Destructuring the Response+    GetDedicatedIpsResponse (..),+    newGetDedicatedIpsResponse,++    -- * Response Lenses+    getDedicatedIpsResponse_dedicatedIps,+    getDedicatedIpsResponse_nextToken,+    getDedicatedIpsResponse_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.SESV2.Types++-- | A request to obtain more information about dedicated IP pools.+--+-- /See:/ 'newGetDedicatedIps' smart constructor.+data GetDedicatedIps = GetDedicatedIps'+  { -- | A token returned from a previous call to @GetDedicatedIps@ to indicate+    -- the position of the dedicated IP pool in the list of IP pools.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @GetDedicatedIpsRequest@. If the number of results is larger than the+    -- number you specified in this parameter, then the response includes a+    -- @NextToken@ element, which you can use to obtain additional results.+    pageSize :: Prelude.Maybe Prelude.Int,+    -- | The name of the IP pool that the dedicated IP address is associated+    -- with.+    poolName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDedicatedIps' 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', 'getDedicatedIps_nextToken' - A token returned from a previous call to @GetDedicatedIps@ to indicate+-- the position of the dedicated IP pool in the list of IP pools.+--+-- 'pageSize', 'getDedicatedIps_pageSize' - The number of results to show in a single call to+-- @GetDedicatedIpsRequest@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+--+-- 'poolName', 'getDedicatedIps_poolName' - The name of the IP pool that the dedicated IP address is associated+-- with.+newGetDedicatedIps ::+  GetDedicatedIps+newGetDedicatedIps =+  GetDedicatedIps'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing,+      poolName = Prelude.Nothing+    }++-- | A token returned from a previous call to @GetDedicatedIps@ to indicate+-- the position of the dedicated IP pool in the list of IP pools.+getDedicatedIps_nextToken :: Lens.Lens' GetDedicatedIps (Prelude.Maybe Prelude.Text)+getDedicatedIps_nextToken = Lens.lens (\GetDedicatedIps' {nextToken} -> nextToken) (\s@GetDedicatedIps' {} a -> s {nextToken = a} :: GetDedicatedIps)++-- | The number of results to show in a single call to+-- @GetDedicatedIpsRequest@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+getDedicatedIps_pageSize :: Lens.Lens' GetDedicatedIps (Prelude.Maybe Prelude.Int)+getDedicatedIps_pageSize = Lens.lens (\GetDedicatedIps' {pageSize} -> pageSize) (\s@GetDedicatedIps' {} a -> s {pageSize = a} :: GetDedicatedIps)++-- | The name of the IP pool that the dedicated IP address is associated+-- with.+getDedicatedIps_poolName :: Lens.Lens' GetDedicatedIps (Prelude.Maybe Prelude.Text)+getDedicatedIps_poolName = Lens.lens (\GetDedicatedIps' {poolName} -> poolName) (\s@GetDedicatedIps' {} a -> s {poolName = a} :: GetDedicatedIps)++instance Core.AWSRequest GetDedicatedIps where+  type+    AWSResponse GetDedicatedIps =+      GetDedicatedIpsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDedicatedIpsResponse'+            Prelude.<$> (x Data..?> "DedicatedIps" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetDedicatedIps where+  hashWithSalt _salt GetDedicatedIps' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize+      `Prelude.hashWithSalt` poolName++instance Prelude.NFData GetDedicatedIps where+  rnf GetDedicatedIps' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize+      `Prelude.seq` Prelude.rnf poolName++instance Data.ToHeaders GetDedicatedIps where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDedicatedIps where+  toPath = Prelude.const "/v2/email/dedicated-ips"++instance Data.ToQuery GetDedicatedIps where+  toQuery GetDedicatedIps' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize,+        "PoolName" Data.=: poolName+      ]++-- | Information about the dedicated IP addresses that are associated with+-- your Amazon Web Services account.+--+-- /See:/ 'newGetDedicatedIpsResponse' smart constructor.+data GetDedicatedIpsResponse = GetDedicatedIpsResponse'+  { -- | A list of dedicated IP addresses that are associated with your Amazon+    -- Web Services account.+    dedicatedIps :: Prelude.Maybe [DedicatedIp],+    -- | A token that indicates that there are additional dedicated IP addresses+    -- to list. To view additional addresses, issue another request to+    -- @GetDedicatedIps@, passing this token in the @NextToken@ parameter.+    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 'GetDedicatedIpsResponse' 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:+--+-- 'dedicatedIps', 'getDedicatedIpsResponse_dedicatedIps' - A list of dedicated IP addresses that are associated with your Amazon+-- Web Services account.+--+-- 'nextToken', 'getDedicatedIpsResponse_nextToken' - A token that indicates that there are additional dedicated IP addresses+-- to list. To view additional addresses, issue another request to+-- @GetDedicatedIps@, passing this token in the @NextToken@ parameter.+--+-- 'httpStatus', 'getDedicatedIpsResponse_httpStatus' - The response's http status code.+newGetDedicatedIpsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetDedicatedIpsResponse+newGetDedicatedIpsResponse pHttpStatus_ =+  GetDedicatedIpsResponse'+    { dedicatedIps =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of dedicated IP addresses that are associated with your Amazon+-- Web Services account.+getDedicatedIpsResponse_dedicatedIps :: Lens.Lens' GetDedicatedIpsResponse (Prelude.Maybe [DedicatedIp])+getDedicatedIpsResponse_dedicatedIps = Lens.lens (\GetDedicatedIpsResponse' {dedicatedIps} -> dedicatedIps) (\s@GetDedicatedIpsResponse' {} a -> s {dedicatedIps = a} :: GetDedicatedIpsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A token that indicates that there are additional dedicated IP addresses+-- to list. To view additional addresses, issue another request to+-- @GetDedicatedIps@, passing this token in the @NextToken@ parameter.+getDedicatedIpsResponse_nextToken :: Lens.Lens' GetDedicatedIpsResponse (Prelude.Maybe Prelude.Text)+getDedicatedIpsResponse_nextToken = Lens.lens (\GetDedicatedIpsResponse' {nextToken} -> nextToken) (\s@GetDedicatedIpsResponse' {} a -> s {nextToken = a} :: GetDedicatedIpsResponse)++-- | The response's http status code.+getDedicatedIpsResponse_httpStatus :: Lens.Lens' GetDedicatedIpsResponse Prelude.Int+getDedicatedIpsResponse_httpStatus = Lens.lens (\GetDedicatedIpsResponse' {httpStatus} -> httpStatus) (\s@GetDedicatedIpsResponse' {} a -> s {httpStatus = a} :: GetDedicatedIpsResponse)++instance Prelude.NFData GetDedicatedIpsResponse where+  rnf GetDedicatedIpsResponse' {..} =+    Prelude.rnf dedicatedIps+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetDeliverabilityDashboardOptions.hs view
@@ -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.SESV2.GetDeliverabilityDashboardOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve information about the status of the Deliverability dashboard+-- for your account. When the Deliverability dashboard is enabled, you gain+-- access to reputation, deliverability, and other metrics for the domains+-- that you use to send email. You also gain the ability to perform+-- predictive inbox placement tests.+--+-- When you use the Deliverability dashboard, you pay a monthly+-- subscription charge, in addition to any other fees that you accrue by+-- using Amazon SES and other Amazon Web Services services. For more+-- information about the features and cost of a Deliverability dashboard+-- subscription, see+-- <http://aws.amazon.com/ses/pricing/ Amazon SES Pricing>.+module Amazonka.SESV2.GetDeliverabilityDashboardOptions+  ( -- * Creating a Request+    GetDeliverabilityDashboardOptions (..),+    newGetDeliverabilityDashboardOptions,++    -- * Destructuring the Response+    GetDeliverabilityDashboardOptionsResponse (..),+    newGetDeliverabilityDashboardOptionsResponse,++    -- * Response Lenses+    getDeliverabilityDashboardOptionsResponse_accountStatus,+    getDeliverabilityDashboardOptionsResponse_activeSubscribedDomains,+    getDeliverabilityDashboardOptionsResponse_pendingExpirationSubscribedDomains,+    getDeliverabilityDashboardOptionsResponse_subscriptionExpiryDate,+    getDeliverabilityDashboardOptionsResponse_httpStatus,+    getDeliverabilityDashboardOptionsResponse_dashboardEnabled,+  )+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.SESV2.Types++-- | Retrieve information about the status of the Deliverability dashboard+-- for your Amazon Web Services account. When the Deliverability dashboard+-- is enabled, you gain access to reputation, deliverability, and other+-- metrics for your domains. You also gain the ability to perform+-- predictive inbox placement tests.+--+-- When you use the Deliverability dashboard, you pay a monthly+-- subscription charge, in addition to any other fees that you accrue by+-- using Amazon SES and other Amazon Web Services services. For more+-- information about the features and cost of a Deliverability dashboard+-- subscription, see+-- <http://aws.amazon.com/pinpoint/pricing/ Amazon Pinpoint Pricing>.+--+-- /See:/ 'newGetDeliverabilityDashboardOptions' smart constructor.+data GetDeliverabilityDashboardOptions = GetDeliverabilityDashboardOptions'+  {+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeliverabilityDashboardOptions' 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.+newGetDeliverabilityDashboardOptions ::+  GetDeliverabilityDashboardOptions+newGetDeliverabilityDashboardOptions =+  GetDeliverabilityDashboardOptions'++instance+  Core.AWSRequest+    GetDeliverabilityDashboardOptions+  where+  type+    AWSResponse GetDeliverabilityDashboardOptions =+      GetDeliverabilityDashboardOptionsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDeliverabilityDashboardOptionsResponse'+            Prelude.<$> (x Data..?> "AccountStatus")+            Prelude.<*> ( x+                            Data..?> "ActiveSubscribedDomains"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..?> "PendingExpirationSubscribedDomains"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "SubscriptionExpiryDate")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DashboardEnabled")+      )++instance+  Prelude.Hashable+    GetDeliverabilityDashboardOptions+  where+  hashWithSalt _salt _ =+    _salt `Prelude.hashWithSalt` ()++instance+  Prelude.NFData+    GetDeliverabilityDashboardOptions+  where+  rnf _ = ()++instance+  Data.ToHeaders+    GetDeliverabilityDashboardOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    GetDeliverabilityDashboardOptions+  where+  toPath =+    Prelude.const "/v2/email/deliverability-dashboard"++instance+  Data.ToQuery+    GetDeliverabilityDashboardOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An object that shows the status of the Deliverability dashboard.+--+-- /See:/ 'newGetDeliverabilityDashboardOptionsResponse' smart constructor.+data GetDeliverabilityDashboardOptionsResponse = GetDeliverabilityDashboardOptionsResponse'+  { -- | The current status of your Deliverability dashboard subscription. If+    -- this value is @PENDING_EXPIRATION@, your subscription is scheduled to+    -- expire at the end of the current calendar month.+    accountStatus :: Prelude.Maybe DeliverabilityDashboardAccountStatus,+    -- | An array of objects, one for each verified domain that you use to send+    -- email and currently has an active Deliverability dashboard subscription+    -- that isn’t scheduled to expire at the end of the current calendar month.+    activeSubscribedDomains :: Prelude.Maybe [DomainDeliverabilityTrackingOption],+    -- | An array of objects, one for each verified domain that you use to send+    -- email and currently has an active Deliverability dashboard subscription+    -- that\'s scheduled to expire at the end of the current calendar month.+    pendingExpirationSubscribedDomains :: Prelude.Maybe [DomainDeliverabilityTrackingOption],+    -- | The date when your current subscription to the Deliverability dashboard+    -- is scheduled to expire, if your subscription is scheduled to expire at+    -- the end of the current calendar month. This value is null if you have an+    -- active subscription that isn’t due to expire at the end of the month.+    subscriptionExpiryDate :: Prelude.Maybe Data.POSIX,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | Specifies whether the Deliverability dashboard is enabled. If this value+    -- is @true@, the dashboard is enabled.+    dashboardEnabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeliverabilityDashboardOptionsResponse' 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:+--+-- 'accountStatus', 'getDeliverabilityDashboardOptionsResponse_accountStatus' - The current status of your Deliverability dashboard subscription. If+-- this value is @PENDING_EXPIRATION@, your subscription is scheduled to+-- expire at the end of the current calendar month.+--+-- 'activeSubscribedDomains', 'getDeliverabilityDashboardOptionsResponse_activeSubscribedDomains' - An array of objects, one for each verified domain that you use to send+-- email and currently has an active Deliverability dashboard subscription+-- that isn’t scheduled to expire at the end of the current calendar month.+--+-- 'pendingExpirationSubscribedDomains', 'getDeliverabilityDashboardOptionsResponse_pendingExpirationSubscribedDomains' - An array of objects, one for each verified domain that you use to send+-- email and currently has an active Deliverability dashboard subscription+-- that\'s scheduled to expire at the end of the current calendar month.+--+-- 'subscriptionExpiryDate', 'getDeliverabilityDashboardOptionsResponse_subscriptionExpiryDate' - The date when your current subscription to the Deliverability dashboard+-- is scheduled to expire, if your subscription is scheduled to expire at+-- the end of the current calendar month. This value is null if you have an+-- active subscription that isn’t due to expire at the end of the month.+--+-- 'httpStatus', 'getDeliverabilityDashboardOptionsResponse_httpStatus' - The response's http status code.+--+-- 'dashboardEnabled', 'getDeliverabilityDashboardOptionsResponse_dashboardEnabled' - Specifies whether the Deliverability dashboard is enabled. If this value+-- is @true@, the dashboard is enabled.+newGetDeliverabilityDashboardOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'dashboardEnabled'+  Prelude.Bool ->+  GetDeliverabilityDashboardOptionsResponse+newGetDeliverabilityDashboardOptionsResponse+  pHttpStatus_+  pDashboardEnabled_ =+    GetDeliverabilityDashboardOptionsResponse'+      { accountStatus =+          Prelude.Nothing,+        activeSubscribedDomains =+          Prelude.Nothing,+        pendingExpirationSubscribedDomains =+          Prelude.Nothing,+        subscriptionExpiryDate =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        dashboardEnabled =+          pDashboardEnabled_+      }++-- | The current status of your Deliverability dashboard subscription. If+-- this value is @PENDING_EXPIRATION@, your subscription is scheduled to+-- expire at the end of the current calendar month.+getDeliverabilityDashboardOptionsResponse_accountStatus :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse (Prelude.Maybe DeliverabilityDashboardAccountStatus)+getDeliverabilityDashboardOptionsResponse_accountStatus = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {accountStatus} -> accountStatus) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {accountStatus = a} :: GetDeliverabilityDashboardOptionsResponse)++-- | An array of objects, one for each verified domain that you use to send+-- email and currently has an active Deliverability dashboard subscription+-- that isn’t scheduled to expire at the end of the current calendar month.+getDeliverabilityDashboardOptionsResponse_activeSubscribedDomains :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse (Prelude.Maybe [DomainDeliverabilityTrackingOption])+getDeliverabilityDashboardOptionsResponse_activeSubscribedDomains = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {activeSubscribedDomains} -> activeSubscribedDomains) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {activeSubscribedDomains = a} :: GetDeliverabilityDashboardOptionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | An array of objects, one for each verified domain that you use to send+-- email and currently has an active Deliverability dashboard subscription+-- that\'s scheduled to expire at the end of the current calendar month.+getDeliverabilityDashboardOptionsResponse_pendingExpirationSubscribedDomains :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse (Prelude.Maybe [DomainDeliverabilityTrackingOption])+getDeliverabilityDashboardOptionsResponse_pendingExpirationSubscribedDomains = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {pendingExpirationSubscribedDomains} -> pendingExpirationSubscribedDomains) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {pendingExpirationSubscribedDomains = a} :: GetDeliverabilityDashboardOptionsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The date when your current subscription to the Deliverability dashboard+-- is scheduled to expire, if your subscription is scheduled to expire at+-- the end of the current calendar month. This value is null if you have an+-- active subscription that isn’t due to expire at the end of the month.+getDeliverabilityDashboardOptionsResponse_subscriptionExpiryDate :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse (Prelude.Maybe Prelude.UTCTime)+getDeliverabilityDashboardOptionsResponse_subscriptionExpiryDate = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {subscriptionExpiryDate} -> subscriptionExpiryDate) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {subscriptionExpiryDate = a} :: GetDeliverabilityDashboardOptionsResponse) Prelude.. Lens.mapping Data._Time++-- | The response's http status code.+getDeliverabilityDashboardOptionsResponse_httpStatus :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse Prelude.Int+getDeliverabilityDashboardOptionsResponse_httpStatus = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {httpStatus} -> httpStatus) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {httpStatus = a} :: GetDeliverabilityDashboardOptionsResponse)++-- | Specifies whether the Deliverability dashboard is enabled. If this value+-- is @true@, the dashboard is enabled.+getDeliverabilityDashboardOptionsResponse_dashboardEnabled :: Lens.Lens' GetDeliverabilityDashboardOptionsResponse Prelude.Bool+getDeliverabilityDashboardOptionsResponse_dashboardEnabled = Lens.lens (\GetDeliverabilityDashboardOptionsResponse' {dashboardEnabled} -> dashboardEnabled) (\s@GetDeliverabilityDashboardOptionsResponse' {} a -> s {dashboardEnabled = a} :: GetDeliverabilityDashboardOptionsResponse)++instance+  Prelude.NFData+    GetDeliverabilityDashboardOptionsResponse+  where+  rnf GetDeliverabilityDashboardOptionsResponse' {..} =+    Prelude.rnf accountStatus+      `Prelude.seq` Prelude.rnf activeSubscribedDomains+      `Prelude.seq` Prelude.rnf pendingExpirationSubscribedDomains+      `Prelude.seq` Prelude.rnf subscriptionExpiryDate+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf dashboardEnabled
+ gen/Amazonka/SESV2/GetDeliverabilityTestReport.hs view
@@ -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.SESV2.GetDeliverabilityTestReport+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve the results of a predictive inbox placement test.+module Amazonka.SESV2.GetDeliverabilityTestReport+  ( -- * Creating a Request+    GetDeliverabilityTestReport (..),+    newGetDeliverabilityTestReport,++    -- * Request Lenses+    getDeliverabilityTestReport_reportId,++    -- * Destructuring the Response+    GetDeliverabilityTestReportResponse (..),+    newGetDeliverabilityTestReportResponse,++    -- * Response Lenses+    getDeliverabilityTestReportResponse_message,+    getDeliverabilityTestReportResponse_tags,+    getDeliverabilityTestReportResponse_httpStatus,+    getDeliverabilityTestReportResponse_deliverabilityTestReport,+    getDeliverabilityTestReportResponse_overallPlacement,+    getDeliverabilityTestReportResponse_ispPlacements,+  )+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.SESV2.Types++-- | A request to retrieve the results of a predictive inbox placement test.+--+-- /See:/ 'newGetDeliverabilityTestReport' smart constructor.+data GetDeliverabilityTestReport = GetDeliverabilityTestReport'+  { -- | A unique string that identifies the predictive inbox placement test.+    reportId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeliverabilityTestReport' 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:+--+-- 'reportId', 'getDeliverabilityTestReport_reportId' - A unique string that identifies the predictive inbox placement test.+newGetDeliverabilityTestReport ::+  -- | 'reportId'+  Prelude.Text ->+  GetDeliverabilityTestReport+newGetDeliverabilityTestReport pReportId_ =+  GetDeliverabilityTestReport' {reportId = pReportId_}++-- | A unique string that identifies the predictive inbox placement test.+getDeliverabilityTestReport_reportId :: Lens.Lens' GetDeliverabilityTestReport Prelude.Text+getDeliverabilityTestReport_reportId = Lens.lens (\GetDeliverabilityTestReport' {reportId} -> reportId) (\s@GetDeliverabilityTestReport' {} a -> s {reportId = a} :: GetDeliverabilityTestReport)++instance Core.AWSRequest GetDeliverabilityTestReport where+  type+    AWSResponse GetDeliverabilityTestReport =+      GetDeliverabilityTestReportResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDeliverabilityTestReportResponse'+            Prelude.<$> (x Data..?> "Message")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DeliverabilityTestReport")+            Prelude.<*> (x Data..:> "OverallPlacement")+            Prelude.<*> (x Data..?> "IspPlacements" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable GetDeliverabilityTestReport where+  hashWithSalt _salt GetDeliverabilityTestReport' {..} =+    _salt `Prelude.hashWithSalt` reportId++instance Prelude.NFData GetDeliverabilityTestReport where+  rnf GetDeliverabilityTestReport' {..} =+    Prelude.rnf reportId++instance Data.ToHeaders GetDeliverabilityTestReport where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDeliverabilityTestReport where+  toPath GetDeliverabilityTestReport' {..} =+    Prelude.mconcat+      [ "/v2/email/deliverability-dashboard/test-reports/",+        Data.toBS reportId+      ]++instance Data.ToQuery GetDeliverabilityTestReport where+  toQuery = Prelude.const Prelude.mempty++-- | The results of the predictive inbox placement test.+--+-- /See:/ 'newGetDeliverabilityTestReportResponse' smart constructor.+data GetDeliverabilityTestReportResponse = GetDeliverabilityTestReportResponse'+  { -- | An object that contains the message that you sent when you performed+    -- this predictive inbox placement test.+    message :: Prelude.Maybe Prelude.Text,+    -- | An array of objects that define the tags (keys and values) that are+    -- associated with the predictive inbox placement test.+    tags :: Prelude.Maybe [Tag],+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object that contains the results of the predictive inbox placement+    -- test.+    deliverabilityTestReport :: DeliverabilityTestReport,+    -- | An object that specifies how many test messages that were sent during+    -- the predictive inbox placement test were delivered to recipients\'+    -- inboxes, how many were sent to recipients\' spam folders, and how many+    -- weren\'t delivered.+    overallPlacement :: PlacementStatistics,+    -- | An object that describes how the test email was handled by several email+    -- providers, including Gmail, Hotmail, Yahoo, AOL, and others.+    ispPlacements :: [IspPlacement]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDeliverabilityTestReportResponse' 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:+--+-- 'message', 'getDeliverabilityTestReportResponse_message' - An object that contains the message that you sent when you performed+-- this predictive inbox placement test.+--+-- 'tags', 'getDeliverabilityTestReportResponse_tags' - An array of objects that define the tags (keys and values) that are+-- associated with the predictive inbox placement test.+--+-- 'httpStatus', 'getDeliverabilityTestReportResponse_httpStatus' - The response's http status code.+--+-- 'deliverabilityTestReport', 'getDeliverabilityTestReportResponse_deliverabilityTestReport' - An object that contains the results of the predictive inbox placement+-- test.+--+-- 'overallPlacement', 'getDeliverabilityTestReportResponse_overallPlacement' - An object that specifies how many test messages that were sent during+-- the predictive inbox placement test were delivered to recipients\'+-- inboxes, how many were sent to recipients\' spam folders, and how many+-- weren\'t delivered.+--+-- 'ispPlacements', 'getDeliverabilityTestReportResponse_ispPlacements' - An object that describes how the test email was handled by several email+-- providers, including Gmail, Hotmail, Yahoo, AOL, and others.+newGetDeliverabilityTestReportResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'deliverabilityTestReport'+  DeliverabilityTestReport ->+  -- | 'overallPlacement'+  PlacementStatistics ->+  GetDeliverabilityTestReportResponse+newGetDeliverabilityTestReportResponse+  pHttpStatus_+  pDeliverabilityTestReport_+  pOverallPlacement_ =+    GetDeliverabilityTestReportResponse'+      { message =+          Prelude.Nothing,+        tags = Prelude.Nothing,+        httpStatus = pHttpStatus_,+        deliverabilityTestReport =+          pDeliverabilityTestReport_,+        overallPlacement = pOverallPlacement_,+        ispPlacements = Prelude.mempty+      }++-- | An object that contains the message that you sent when you performed+-- this predictive inbox placement test.+getDeliverabilityTestReportResponse_message :: Lens.Lens' GetDeliverabilityTestReportResponse (Prelude.Maybe Prelude.Text)+getDeliverabilityTestReportResponse_message = Lens.lens (\GetDeliverabilityTestReportResponse' {message} -> message) (\s@GetDeliverabilityTestReportResponse' {} a -> s {message = a} :: GetDeliverabilityTestReportResponse)++-- | An array of objects that define the tags (keys and values) that are+-- associated with the predictive inbox placement test.+getDeliverabilityTestReportResponse_tags :: Lens.Lens' GetDeliverabilityTestReportResponse (Prelude.Maybe [Tag])+getDeliverabilityTestReportResponse_tags = Lens.lens (\GetDeliverabilityTestReportResponse' {tags} -> tags) (\s@GetDeliverabilityTestReportResponse' {} a -> s {tags = a} :: GetDeliverabilityTestReportResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getDeliverabilityTestReportResponse_httpStatus :: Lens.Lens' GetDeliverabilityTestReportResponse Prelude.Int+getDeliverabilityTestReportResponse_httpStatus = Lens.lens (\GetDeliverabilityTestReportResponse' {httpStatus} -> httpStatus) (\s@GetDeliverabilityTestReportResponse' {} a -> s {httpStatus = a} :: GetDeliverabilityTestReportResponse)++-- | An object that contains the results of the predictive inbox placement+-- test.+getDeliverabilityTestReportResponse_deliverabilityTestReport :: Lens.Lens' GetDeliverabilityTestReportResponse DeliverabilityTestReport+getDeliverabilityTestReportResponse_deliverabilityTestReport = Lens.lens (\GetDeliverabilityTestReportResponse' {deliverabilityTestReport} -> deliverabilityTestReport) (\s@GetDeliverabilityTestReportResponse' {} a -> s {deliverabilityTestReport = a} :: GetDeliverabilityTestReportResponse)++-- | An object that specifies how many test messages that were sent during+-- the predictive inbox placement test were delivered to recipients\'+-- inboxes, how many were sent to recipients\' spam folders, and how many+-- weren\'t delivered.+getDeliverabilityTestReportResponse_overallPlacement :: Lens.Lens' GetDeliverabilityTestReportResponse PlacementStatistics+getDeliverabilityTestReportResponse_overallPlacement = Lens.lens (\GetDeliverabilityTestReportResponse' {overallPlacement} -> overallPlacement) (\s@GetDeliverabilityTestReportResponse' {} a -> s {overallPlacement = a} :: GetDeliverabilityTestReportResponse)++-- | An object that describes how the test email was handled by several email+-- providers, including Gmail, Hotmail, Yahoo, AOL, and others.+getDeliverabilityTestReportResponse_ispPlacements :: Lens.Lens' GetDeliverabilityTestReportResponse [IspPlacement]+getDeliverabilityTestReportResponse_ispPlacements = Lens.lens (\GetDeliverabilityTestReportResponse' {ispPlacements} -> ispPlacements) (\s@GetDeliverabilityTestReportResponse' {} a -> s {ispPlacements = a} :: GetDeliverabilityTestReportResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetDeliverabilityTestReportResponse+  where+  rnf GetDeliverabilityTestReportResponse' {..} =+    Prelude.rnf message+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf deliverabilityTestReport+      `Prelude.seq` Prelude.rnf overallPlacement+      `Prelude.seq` Prelude.rnf ispPlacements
+ gen/Amazonka/SESV2/GetDomainDeliverabilityCampaign.hs view
@@ -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.SESV2.GetDomainDeliverabilityCampaign+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve all the deliverability data for a specific campaign. This data+-- is available for a campaign only if the campaign sent email by using a+-- domain that the Deliverability dashboard is enabled for.+module Amazonka.SESV2.GetDomainDeliverabilityCampaign+  ( -- * Creating a Request+    GetDomainDeliverabilityCampaign (..),+    newGetDomainDeliverabilityCampaign,++    -- * Request Lenses+    getDomainDeliverabilityCampaign_campaignId,++    -- * Destructuring the Response+    GetDomainDeliverabilityCampaignResponse (..),+    newGetDomainDeliverabilityCampaignResponse,++    -- * Response Lenses+    getDomainDeliverabilityCampaignResponse_httpStatus,+    getDomainDeliverabilityCampaignResponse_domainDeliverabilityCampaign,+  )+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.SESV2.Types++-- | Retrieve all the deliverability data for a specific campaign. This data+-- is available for a campaign only if the campaign sent email by using a+-- domain that the Deliverability dashboard is enabled for+-- (@PutDeliverabilityDashboardOption@ operation).+--+-- /See:/ 'newGetDomainDeliverabilityCampaign' smart constructor.+data GetDomainDeliverabilityCampaign = GetDomainDeliverabilityCampaign'+  { -- | The unique identifier for the campaign. The Deliverability dashboard+    -- automatically generates and assigns this identifier to a campaign.+    campaignId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomainDeliverabilityCampaign' 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:+--+-- 'campaignId', 'getDomainDeliverabilityCampaign_campaignId' - The unique identifier for the campaign. The Deliverability dashboard+-- automatically generates and assigns this identifier to a campaign.+newGetDomainDeliverabilityCampaign ::+  -- | 'campaignId'+  Prelude.Text ->+  GetDomainDeliverabilityCampaign+newGetDomainDeliverabilityCampaign pCampaignId_ =+  GetDomainDeliverabilityCampaign'+    { campaignId =+        pCampaignId_+    }++-- | The unique identifier for the campaign. The Deliverability dashboard+-- automatically generates and assigns this identifier to a campaign.+getDomainDeliverabilityCampaign_campaignId :: Lens.Lens' GetDomainDeliverabilityCampaign Prelude.Text+getDomainDeliverabilityCampaign_campaignId = Lens.lens (\GetDomainDeliverabilityCampaign' {campaignId} -> campaignId) (\s@GetDomainDeliverabilityCampaign' {} a -> s {campaignId = a} :: GetDomainDeliverabilityCampaign)++instance+  Core.AWSRequest+    GetDomainDeliverabilityCampaign+  where+  type+    AWSResponse GetDomainDeliverabilityCampaign =+      GetDomainDeliverabilityCampaignResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDomainDeliverabilityCampaignResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "DomainDeliverabilityCampaign")+      )++instance+  Prelude.Hashable+    GetDomainDeliverabilityCampaign+  where+  hashWithSalt+    _salt+    GetDomainDeliverabilityCampaign' {..} =+      _salt `Prelude.hashWithSalt` campaignId++instance+  Prelude.NFData+    GetDomainDeliverabilityCampaign+  where+  rnf GetDomainDeliverabilityCampaign' {..} =+    Prelude.rnf campaignId++instance+  Data.ToHeaders+    GetDomainDeliverabilityCampaign+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDomainDeliverabilityCampaign where+  toPath GetDomainDeliverabilityCampaign' {..} =+    Prelude.mconcat+      [ "/v2/email/deliverability-dashboard/campaigns/",+        Data.toBS campaignId+      ]++instance Data.ToQuery GetDomainDeliverabilityCampaign where+  toQuery = Prelude.const Prelude.mempty++-- | An object that contains all the deliverability data for a specific+-- campaign. This data is available for a campaign only if the campaign+-- sent email by using a domain that the Deliverability dashboard is+-- enabled for.+--+-- /See:/ 'newGetDomainDeliverabilityCampaignResponse' smart constructor.+data GetDomainDeliverabilityCampaignResponse = GetDomainDeliverabilityCampaignResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object that contains the deliverability data for the campaign.+    domainDeliverabilityCampaign :: DomainDeliverabilityCampaign+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomainDeliverabilityCampaignResponse' 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', 'getDomainDeliverabilityCampaignResponse_httpStatus' - The response's http status code.+--+-- 'domainDeliverabilityCampaign', 'getDomainDeliverabilityCampaignResponse_domainDeliverabilityCampaign' - An object that contains the deliverability data for the campaign.+newGetDomainDeliverabilityCampaignResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'domainDeliverabilityCampaign'+  DomainDeliverabilityCampaign ->+  GetDomainDeliverabilityCampaignResponse+newGetDomainDeliverabilityCampaignResponse+  pHttpStatus_+  pDomainDeliverabilityCampaign_ =+    GetDomainDeliverabilityCampaignResponse'+      { httpStatus =+          pHttpStatus_,+        domainDeliverabilityCampaign =+          pDomainDeliverabilityCampaign_+      }++-- | The response's http status code.+getDomainDeliverabilityCampaignResponse_httpStatus :: Lens.Lens' GetDomainDeliverabilityCampaignResponse Prelude.Int+getDomainDeliverabilityCampaignResponse_httpStatus = Lens.lens (\GetDomainDeliverabilityCampaignResponse' {httpStatus} -> httpStatus) (\s@GetDomainDeliverabilityCampaignResponse' {} a -> s {httpStatus = a} :: GetDomainDeliverabilityCampaignResponse)++-- | An object that contains the deliverability data for the campaign.+getDomainDeliverabilityCampaignResponse_domainDeliverabilityCampaign :: Lens.Lens' GetDomainDeliverabilityCampaignResponse DomainDeliverabilityCampaign+getDomainDeliverabilityCampaignResponse_domainDeliverabilityCampaign = Lens.lens (\GetDomainDeliverabilityCampaignResponse' {domainDeliverabilityCampaign} -> domainDeliverabilityCampaign) (\s@GetDomainDeliverabilityCampaignResponse' {} a -> s {domainDeliverabilityCampaign = a} :: GetDomainDeliverabilityCampaignResponse)++instance+  Prelude.NFData+    GetDomainDeliverabilityCampaignResponse+  where+  rnf GetDomainDeliverabilityCampaignResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainDeliverabilityCampaign
+ gen/Amazonka/SESV2/GetDomainStatisticsReport.hs view
@@ -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.SESV2.GetDomainStatisticsReport+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve inbox placement and engagement rates for the domains that you+-- use to send email.+module Amazonka.SESV2.GetDomainStatisticsReport+  ( -- * Creating a Request+    GetDomainStatisticsReport (..),+    newGetDomainStatisticsReport,++    -- * Request Lenses+    getDomainStatisticsReport_domain,+    getDomainStatisticsReport_startDate,+    getDomainStatisticsReport_endDate,++    -- * Destructuring the Response+    GetDomainStatisticsReportResponse (..),+    newGetDomainStatisticsReportResponse,++    -- * Response Lenses+    getDomainStatisticsReportResponse_httpStatus,+    getDomainStatisticsReportResponse_overallVolume,+    getDomainStatisticsReportResponse_dailyVolumes,+  )+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.SESV2.Types++-- | A request to obtain deliverability metrics for a domain.+--+-- /See:/ 'newGetDomainStatisticsReport' smart constructor.+data GetDomainStatisticsReport = GetDomainStatisticsReport'+  { -- | The domain that you want to obtain deliverability metrics for.+    domain :: Prelude.Text,+    -- | The first day (in Unix time) that you want to obtain domain+    -- deliverability metrics for.+    startDate :: Data.POSIX,+    -- | The last day (in Unix time) that you want to obtain domain+    -- deliverability metrics for. The @EndDate@ that you specify has to be+    -- less than or equal to 30 days after the @StartDate@.+    endDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomainStatisticsReport' 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', 'getDomainStatisticsReport_domain' - The domain that you want to obtain deliverability metrics for.+--+-- 'startDate', 'getDomainStatisticsReport_startDate' - The first day (in Unix time) that you want to obtain domain+-- deliverability metrics for.+--+-- 'endDate', 'getDomainStatisticsReport_endDate' - The last day (in Unix time) that you want to obtain domain+-- deliverability metrics for. The @EndDate@ that you specify has to be+-- less than or equal to 30 days after the @StartDate@.+newGetDomainStatisticsReport ::+  -- | 'domain'+  Prelude.Text ->+  -- | 'startDate'+  Prelude.UTCTime ->+  -- | 'endDate'+  Prelude.UTCTime ->+  GetDomainStatisticsReport+newGetDomainStatisticsReport+  pDomain_+  pStartDate_+  pEndDate_ =+    GetDomainStatisticsReport'+      { domain = pDomain_,+        startDate = Data._Time Lens.# pStartDate_,+        endDate = Data._Time Lens.# pEndDate_+      }++-- | The domain that you want to obtain deliverability metrics for.+getDomainStatisticsReport_domain :: Lens.Lens' GetDomainStatisticsReport Prelude.Text+getDomainStatisticsReport_domain = Lens.lens (\GetDomainStatisticsReport' {domain} -> domain) (\s@GetDomainStatisticsReport' {} a -> s {domain = a} :: GetDomainStatisticsReport)++-- | The first day (in Unix time) that you want to obtain domain+-- deliverability metrics for.+getDomainStatisticsReport_startDate :: Lens.Lens' GetDomainStatisticsReport Prelude.UTCTime+getDomainStatisticsReport_startDate = Lens.lens (\GetDomainStatisticsReport' {startDate} -> startDate) (\s@GetDomainStatisticsReport' {} a -> s {startDate = a} :: GetDomainStatisticsReport) Prelude.. Data._Time++-- | The last day (in Unix time) that you want to obtain domain+-- deliverability metrics for. The @EndDate@ that you specify has to be+-- less than or equal to 30 days after the @StartDate@.+getDomainStatisticsReport_endDate :: Lens.Lens' GetDomainStatisticsReport Prelude.UTCTime+getDomainStatisticsReport_endDate = Lens.lens (\GetDomainStatisticsReport' {endDate} -> endDate) (\s@GetDomainStatisticsReport' {} a -> s {endDate = a} :: GetDomainStatisticsReport) Prelude.. Data._Time++instance Core.AWSRequest GetDomainStatisticsReport where+  type+    AWSResponse GetDomainStatisticsReport =+      GetDomainStatisticsReportResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetDomainStatisticsReportResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "OverallVolume")+            Prelude.<*> (x Data..?> "DailyVolumes" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable GetDomainStatisticsReport where+  hashWithSalt _salt GetDomainStatisticsReport' {..} =+    _salt+      `Prelude.hashWithSalt` domain+      `Prelude.hashWithSalt` startDate+      `Prelude.hashWithSalt` endDate++instance Prelude.NFData GetDomainStatisticsReport where+  rnf GetDomainStatisticsReport' {..} =+    Prelude.rnf domain+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf endDate++instance Data.ToHeaders GetDomainStatisticsReport where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetDomainStatisticsReport where+  toPath GetDomainStatisticsReport' {..} =+    Prelude.mconcat+      [ "/v2/email/deliverability-dashboard/statistics-report/",+        Data.toBS domain+      ]++instance Data.ToQuery GetDomainStatisticsReport where+  toQuery GetDomainStatisticsReport' {..} =+    Prelude.mconcat+      [ "StartDate" Data.=: startDate,+        "EndDate" Data.=: endDate+      ]++-- | An object that includes statistics that are related to the domain that+-- you specified.+--+-- /See:/ 'newGetDomainStatisticsReportResponse' smart constructor.+data GetDomainStatisticsReportResponse = GetDomainStatisticsReportResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object that contains deliverability metrics for the domain that you+    -- specified. The data in this object is a summary of all of the data that+    -- was collected from the @StartDate@ to the @EndDate@.+    overallVolume :: OverallVolume,+    -- | An object that contains deliverability metrics for the domain that you+    -- specified. This object contains data for each day, starting on the+    -- @StartDate@ and ending on the @EndDate@.+    dailyVolumes :: [DailyVolume]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetDomainStatisticsReportResponse' 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', 'getDomainStatisticsReportResponse_httpStatus' - The response's http status code.+--+-- 'overallVolume', 'getDomainStatisticsReportResponse_overallVolume' - An object that contains deliverability metrics for the domain that you+-- specified. The data in this object is a summary of all of the data that+-- was collected from the @StartDate@ to the @EndDate@.+--+-- 'dailyVolumes', 'getDomainStatisticsReportResponse_dailyVolumes' - An object that contains deliverability metrics for the domain that you+-- specified. This object contains data for each day, starting on the+-- @StartDate@ and ending on the @EndDate@.+newGetDomainStatisticsReportResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'overallVolume'+  OverallVolume ->+  GetDomainStatisticsReportResponse+newGetDomainStatisticsReportResponse+  pHttpStatus_+  pOverallVolume_ =+    GetDomainStatisticsReportResponse'+      { httpStatus =+          pHttpStatus_,+        overallVolume = pOverallVolume_,+        dailyVolumes = Prelude.mempty+      }++-- | The response's http status code.+getDomainStatisticsReportResponse_httpStatus :: Lens.Lens' GetDomainStatisticsReportResponse Prelude.Int+getDomainStatisticsReportResponse_httpStatus = Lens.lens (\GetDomainStatisticsReportResponse' {httpStatus} -> httpStatus) (\s@GetDomainStatisticsReportResponse' {} a -> s {httpStatus = a} :: GetDomainStatisticsReportResponse)++-- | An object that contains deliverability metrics for the domain that you+-- specified. The data in this object is a summary of all of the data that+-- was collected from the @StartDate@ to the @EndDate@.+getDomainStatisticsReportResponse_overallVolume :: Lens.Lens' GetDomainStatisticsReportResponse OverallVolume+getDomainStatisticsReportResponse_overallVolume = Lens.lens (\GetDomainStatisticsReportResponse' {overallVolume} -> overallVolume) (\s@GetDomainStatisticsReportResponse' {} a -> s {overallVolume = a} :: GetDomainStatisticsReportResponse)++-- | An object that contains deliverability metrics for the domain that you+-- specified. This object contains data for each day, starting on the+-- @StartDate@ and ending on the @EndDate@.+getDomainStatisticsReportResponse_dailyVolumes :: Lens.Lens' GetDomainStatisticsReportResponse [DailyVolume]+getDomainStatisticsReportResponse_dailyVolumes = Lens.lens (\GetDomainStatisticsReportResponse' {dailyVolumes} -> dailyVolumes) (\s@GetDomainStatisticsReportResponse' {} a -> s {dailyVolumes = a} :: GetDomainStatisticsReportResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    GetDomainStatisticsReportResponse+  where+  rnf GetDomainStatisticsReportResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf overallVolume+      `Prelude.seq` Prelude.rnf dailyVolumes
+ gen/Amazonka/SESV2/GetEmailIdentity.hs view
@@ -0,0 +1,354 @@+{-# 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.SESV2.GetEmailIdentity+-- 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 information about a specific identity, including the+-- identity\'s verification status, sending authorization policies, its+-- DKIM authentication status, and its custom Mail-From settings.+module Amazonka.SESV2.GetEmailIdentity+  ( -- * Creating a Request+    GetEmailIdentity (..),+    newGetEmailIdentity,++    -- * Request Lenses+    getEmailIdentity_emailIdentity,++    -- * Destructuring the Response+    GetEmailIdentityResponse (..),+    newGetEmailIdentityResponse,++    -- * Response Lenses+    getEmailIdentityResponse_configurationSetName,+    getEmailIdentityResponse_dkimAttributes,+    getEmailIdentityResponse_feedbackForwardingStatus,+    getEmailIdentityResponse_identityType,+    getEmailIdentityResponse_mailFromAttributes,+    getEmailIdentityResponse_policies,+    getEmailIdentityResponse_tags,+    getEmailIdentityResponse_verificationStatus,+    getEmailIdentityResponse_verifiedForSendingStatus,+    getEmailIdentityResponse_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.SESV2.Types++-- | A request to return details about an email identity.+--+-- /See:/ 'newGetEmailIdentity' smart constructor.+data GetEmailIdentity = GetEmailIdentity'+  { -- | The email identity.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEmailIdentity' 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:+--+-- 'emailIdentity', 'getEmailIdentity_emailIdentity' - The email identity.+newGetEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  GetEmailIdentity+newGetEmailIdentity pEmailIdentity_ =+  GetEmailIdentity' {emailIdentity = pEmailIdentity_}++-- | The email identity.+getEmailIdentity_emailIdentity :: Lens.Lens' GetEmailIdentity Prelude.Text+getEmailIdentity_emailIdentity = Lens.lens (\GetEmailIdentity' {emailIdentity} -> emailIdentity) (\s@GetEmailIdentity' {} a -> s {emailIdentity = a} :: GetEmailIdentity)++instance Core.AWSRequest GetEmailIdentity where+  type+    AWSResponse GetEmailIdentity =+      GetEmailIdentityResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetEmailIdentityResponse'+            Prelude.<$> (x Data..?> "ConfigurationSetName")+            Prelude.<*> (x Data..?> "DkimAttributes")+            Prelude.<*> (x Data..?> "FeedbackForwardingStatus")+            Prelude.<*> (x Data..?> "IdentityType")+            Prelude.<*> (x Data..?> "MailFromAttributes")+            Prelude.<*> (x Data..?> "Policies" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "VerificationStatus")+            Prelude.<*> (x Data..?> "VerifiedForSendingStatus")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetEmailIdentity where+  hashWithSalt _salt GetEmailIdentity' {..} =+    _salt `Prelude.hashWithSalt` emailIdentity++instance Prelude.NFData GetEmailIdentity where+  rnf GetEmailIdentity' {..} = Prelude.rnf emailIdentity++instance Data.ToHeaders GetEmailIdentity where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetEmailIdentity where+  toPath GetEmailIdentity' {..} =+    Prelude.mconcat+      ["/v2/email/identities/", Data.toBS emailIdentity]++instance Data.ToQuery GetEmailIdentity where+  toQuery = Prelude.const Prelude.mempty++-- | Details about an email identity.+--+-- /See:/ 'newGetEmailIdentityResponse' smart constructor.+data GetEmailIdentityResponse = GetEmailIdentityResponse'+  { -- | The configuration set used by default when sending from this identity.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | An object that contains information about the DKIM attributes for the+    -- identity.+    dkimAttributes :: Prelude.Maybe DkimAttributes,+    -- | The feedback forwarding configuration for the identity.+    --+    -- If the value is @true@, you receive email notifications when bounce or+    -- complaint events occur. These notifications are sent to the address that+    -- you specified in the @Return-Path@ header of the original email.+    --+    -- You\'re required to have a method of tracking bounces and complaints. If+    -- you haven\'t set up another mechanism for receiving bounce or complaint+    -- notifications (for example, by setting up an event destination), you+    -- receive an email notification when these events occur (even if this+    -- setting is disabled).+    feedbackForwardingStatus :: Prelude.Maybe Prelude.Bool,+    -- | The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+    -- supported.+    identityType :: Prelude.Maybe IdentityType,+    -- | An object that contains information about the Mail-From attributes for+    -- the email identity.+    mailFromAttributes :: Prelude.Maybe MailFromAttributes,+    -- | A map of policy names to policies.+    policies :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | An array of objects that define the tags (keys and values) that are+    -- associated with the email identity.+    tags :: Prelude.Maybe [Tag],+    -- | The verification status of the identity. The status can be one of the+    -- following:+    --+    -- -   @PENDING@ – The verification process was initiated, but Amazon SES+    --     hasn\'t yet been able to verify the identity.+    --+    -- -   @SUCCESS@ – The verification process completed successfully.+    --+    -- -   @FAILED@ – The verification process failed.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+    --     from determining the verification status of the identity.+    --+    -- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+    --     the identity.+    verificationStatus :: Prelude.Maybe VerificationStatus,+    -- | Specifies whether or not the identity is verified. You can only send+    -- email from verified email addresses or domains. For more information+    -- about verifying identities, see the+    -- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+    verifiedForSendingStatus :: 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 'GetEmailIdentityResponse' 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', 'getEmailIdentityResponse_configurationSetName' - The configuration set used by default when sending from this identity.+--+-- 'dkimAttributes', 'getEmailIdentityResponse_dkimAttributes' - An object that contains information about the DKIM attributes for the+-- identity.+--+-- 'feedbackForwardingStatus', 'getEmailIdentityResponse_feedbackForwardingStatus' - The feedback forwarding configuration for the identity.+--+-- If the value is @true@, you receive email notifications when bounce or+-- complaint events occur. These notifications are sent to the address that+-- you specified in the @Return-Path@ header of the original email.+--+-- You\'re required to have a method of tracking bounces and complaints. If+-- you haven\'t set up another mechanism for receiving bounce or complaint+-- notifications (for example, by setting up an event destination), you+-- receive an email notification when these events occur (even if this+-- setting is disabled).+--+-- 'identityType', 'getEmailIdentityResponse_identityType' - The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+-- supported.+--+-- 'mailFromAttributes', 'getEmailIdentityResponse_mailFromAttributes' - An object that contains information about the Mail-From attributes for+-- the email identity.+--+-- 'policies', 'getEmailIdentityResponse_policies' - A map of policy names to policies.+--+-- 'tags', 'getEmailIdentityResponse_tags' - An array of objects that define the tags (keys and values) that are+-- associated with the email identity.+--+-- 'verificationStatus', 'getEmailIdentityResponse_verificationStatus' - The verification status of the identity. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet been able to verify the identity.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the verification status of the identity.+--+-- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+--     the identity.+--+-- 'verifiedForSendingStatus', 'getEmailIdentityResponse_verifiedForSendingStatus' - Specifies whether or not the identity is verified. You can only send+-- email from verified email addresses or domains. For more information+-- about verifying identities, see the+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+--+-- 'httpStatus', 'getEmailIdentityResponse_httpStatus' - The response's http status code.+newGetEmailIdentityResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetEmailIdentityResponse+newGetEmailIdentityResponse pHttpStatus_ =+  GetEmailIdentityResponse'+    { configurationSetName =+        Prelude.Nothing,+      dkimAttributes = Prelude.Nothing,+      feedbackForwardingStatus = Prelude.Nothing,+      identityType = Prelude.Nothing,+      mailFromAttributes = Prelude.Nothing,+      policies = Prelude.Nothing,+      tags = Prelude.Nothing,+      verificationStatus = Prelude.Nothing,+      verifiedForSendingStatus = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The configuration set used by default when sending from this identity.+getEmailIdentityResponse_configurationSetName :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe Prelude.Text)+getEmailIdentityResponse_configurationSetName = Lens.lens (\GetEmailIdentityResponse' {configurationSetName} -> configurationSetName) (\s@GetEmailIdentityResponse' {} a -> s {configurationSetName = a} :: GetEmailIdentityResponse)++-- | An object that contains information about the DKIM attributes for the+-- identity.+getEmailIdentityResponse_dkimAttributes :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe DkimAttributes)+getEmailIdentityResponse_dkimAttributes = Lens.lens (\GetEmailIdentityResponse' {dkimAttributes} -> dkimAttributes) (\s@GetEmailIdentityResponse' {} a -> s {dkimAttributes = a} :: GetEmailIdentityResponse)++-- | The feedback forwarding configuration for the identity.+--+-- If the value is @true@, you receive email notifications when bounce or+-- complaint events occur. These notifications are sent to the address that+-- you specified in the @Return-Path@ header of the original email.+--+-- You\'re required to have a method of tracking bounces and complaints. If+-- you haven\'t set up another mechanism for receiving bounce or complaint+-- notifications (for example, by setting up an event destination), you+-- receive an email notification when these events occur (even if this+-- setting is disabled).+getEmailIdentityResponse_feedbackForwardingStatus :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe Prelude.Bool)+getEmailIdentityResponse_feedbackForwardingStatus = Lens.lens (\GetEmailIdentityResponse' {feedbackForwardingStatus} -> feedbackForwardingStatus) (\s@GetEmailIdentityResponse' {} a -> s {feedbackForwardingStatus = a} :: GetEmailIdentityResponse)++-- | The email identity type. Note: the @MANAGED_DOMAIN@ identity type is not+-- supported.+getEmailIdentityResponse_identityType :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe IdentityType)+getEmailIdentityResponse_identityType = Lens.lens (\GetEmailIdentityResponse' {identityType} -> identityType) (\s@GetEmailIdentityResponse' {} a -> s {identityType = a} :: GetEmailIdentityResponse)++-- | An object that contains information about the Mail-From attributes for+-- the email identity.+getEmailIdentityResponse_mailFromAttributes :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe MailFromAttributes)+getEmailIdentityResponse_mailFromAttributes = Lens.lens (\GetEmailIdentityResponse' {mailFromAttributes} -> mailFromAttributes) (\s@GetEmailIdentityResponse' {} a -> s {mailFromAttributes = a} :: GetEmailIdentityResponse)++-- | A map of policy names to policies.+getEmailIdentityResponse_policies :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getEmailIdentityResponse_policies = Lens.lens (\GetEmailIdentityResponse' {policies} -> policies) (\s@GetEmailIdentityResponse' {} a -> s {policies = a} :: GetEmailIdentityResponse) Prelude.. Lens.mapping Lens.coerced++-- | An array of objects that define the tags (keys and values) that are+-- associated with the email identity.+getEmailIdentityResponse_tags :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe [Tag])+getEmailIdentityResponse_tags = Lens.lens (\GetEmailIdentityResponse' {tags} -> tags) (\s@GetEmailIdentityResponse' {} a -> s {tags = a} :: GetEmailIdentityResponse) Prelude.. Lens.mapping Lens.coerced++-- | The verification status of the identity. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet been able to verify the identity.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the verification status of the identity.+--+-- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+--     the identity.+getEmailIdentityResponse_verificationStatus :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe VerificationStatus)+getEmailIdentityResponse_verificationStatus = Lens.lens (\GetEmailIdentityResponse' {verificationStatus} -> verificationStatus) (\s@GetEmailIdentityResponse' {} a -> s {verificationStatus = a} :: GetEmailIdentityResponse)++-- | Specifies whether or not the identity is verified. You can only send+-- email from verified email addresses or domains. For more information+-- about verifying identities, see the+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/channels-email-manage-verify.html Amazon Pinpoint User Guide>.+getEmailIdentityResponse_verifiedForSendingStatus :: Lens.Lens' GetEmailIdentityResponse (Prelude.Maybe Prelude.Bool)+getEmailIdentityResponse_verifiedForSendingStatus = Lens.lens (\GetEmailIdentityResponse' {verifiedForSendingStatus} -> verifiedForSendingStatus) (\s@GetEmailIdentityResponse' {} a -> s {verifiedForSendingStatus = a} :: GetEmailIdentityResponse)++-- | The response's http status code.+getEmailIdentityResponse_httpStatus :: Lens.Lens' GetEmailIdentityResponse Prelude.Int+getEmailIdentityResponse_httpStatus = Lens.lens (\GetEmailIdentityResponse' {httpStatus} -> httpStatus) (\s@GetEmailIdentityResponse' {} a -> s {httpStatus = a} :: GetEmailIdentityResponse)++instance Prelude.NFData GetEmailIdentityResponse where+  rnf GetEmailIdentityResponse' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf dkimAttributes+      `Prelude.seq` Prelude.rnf feedbackForwardingStatus+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf mailFromAttributes+      `Prelude.seq` Prelude.rnf policies+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf verificationStatus+      `Prelude.seq` Prelude.rnf verifiedForSendingStatus+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetEmailIdentityPolicies.hs view
@@ -0,0 +1,186 @@+{-# 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.SESV2.GetEmailIdentityPolicies+-- 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.SESV2.GetEmailIdentityPolicies+  ( -- * Creating a Request+    GetEmailIdentityPolicies (..),+    newGetEmailIdentityPolicies,++    -- * Request Lenses+    getEmailIdentityPolicies_emailIdentity,++    -- * Destructuring the Response+    GetEmailIdentityPoliciesResponse (..),+    newGetEmailIdentityPoliciesResponse,++    -- * Response Lenses+    getEmailIdentityPoliciesResponse_policies,+    getEmailIdentityPoliciesResponse_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.SESV2.Types++-- | A request to return the policies of an email identity.+--+-- /See:/ 'newGetEmailIdentityPolicies' smart constructor.+data GetEmailIdentityPolicies = GetEmailIdentityPolicies'+  { -- | The email identity.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEmailIdentityPolicies' 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:+--+-- 'emailIdentity', 'getEmailIdentityPolicies_emailIdentity' - The email identity.+newGetEmailIdentityPolicies ::+  -- | 'emailIdentity'+  Prelude.Text ->+  GetEmailIdentityPolicies+newGetEmailIdentityPolicies pEmailIdentity_ =+  GetEmailIdentityPolicies'+    { emailIdentity =+        pEmailIdentity_+    }++-- | The email identity.+getEmailIdentityPolicies_emailIdentity :: Lens.Lens' GetEmailIdentityPolicies Prelude.Text+getEmailIdentityPolicies_emailIdentity = Lens.lens (\GetEmailIdentityPolicies' {emailIdentity} -> emailIdentity) (\s@GetEmailIdentityPolicies' {} a -> s {emailIdentity = a} :: GetEmailIdentityPolicies)++instance Core.AWSRequest GetEmailIdentityPolicies where+  type+    AWSResponse GetEmailIdentityPolicies =+      GetEmailIdentityPoliciesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetEmailIdentityPoliciesResponse'+            Prelude.<$> (x Data..?> "Policies" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetEmailIdentityPolicies where+  hashWithSalt _salt GetEmailIdentityPolicies' {..} =+    _salt `Prelude.hashWithSalt` emailIdentity++instance Prelude.NFData GetEmailIdentityPolicies where+  rnf GetEmailIdentityPolicies' {..} =+    Prelude.rnf emailIdentity++instance Data.ToHeaders GetEmailIdentityPolicies where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetEmailIdentityPolicies where+  toPath GetEmailIdentityPolicies' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/policies"+      ]++instance Data.ToQuery GetEmailIdentityPolicies where+  toQuery = Prelude.const Prelude.mempty++-- | Identity policies associated with email identity.+--+-- /See:/ 'newGetEmailIdentityPoliciesResponse' smart constructor.+data GetEmailIdentityPoliciesResponse = GetEmailIdentityPoliciesResponse'+  { -- | A map of policy names to policies.+    policies :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEmailIdentityPoliciesResponse' 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:+--+-- 'policies', 'getEmailIdentityPoliciesResponse_policies' - A map of policy names to policies.+--+-- 'httpStatus', 'getEmailIdentityPoliciesResponse_httpStatus' - The response's http status code.+newGetEmailIdentityPoliciesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetEmailIdentityPoliciesResponse+newGetEmailIdentityPoliciesResponse pHttpStatus_ =+  GetEmailIdentityPoliciesResponse'+    { policies =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A map of policy names to policies.+getEmailIdentityPoliciesResponse_policies :: Lens.Lens' GetEmailIdentityPoliciesResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))+getEmailIdentityPoliciesResponse_policies = Lens.lens (\GetEmailIdentityPoliciesResponse' {policies} -> policies) (\s@GetEmailIdentityPoliciesResponse' {} a -> s {policies = a} :: GetEmailIdentityPoliciesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+getEmailIdentityPoliciesResponse_httpStatus :: Lens.Lens' GetEmailIdentityPoliciesResponse Prelude.Int+getEmailIdentityPoliciesResponse_httpStatus = Lens.lens (\GetEmailIdentityPoliciesResponse' {httpStatus} -> httpStatus) (\s@GetEmailIdentityPoliciesResponse' {} a -> s {httpStatus = a} :: GetEmailIdentityPoliciesResponse)++instance+  Prelude.NFData+    GetEmailIdentityPoliciesResponse+  where+  rnf GetEmailIdentityPoliciesResponse' {..} =+    Prelude.rnf policies+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetEmailTemplate.hs view
@@ -0,0 +1,189 @@+{-# 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.SESV2.GetEmailTemplate+-- 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.SESV2.GetEmailTemplate+  ( -- * Creating a Request+    GetEmailTemplate (..),+    newGetEmailTemplate,++    -- * Request Lenses+    getEmailTemplate_templateName,++    -- * Destructuring the Response+    GetEmailTemplateResponse (..),+    newGetEmailTemplateResponse,++    -- * Response Lenses+    getEmailTemplateResponse_httpStatus,+    getEmailTemplateResponse_templateName,+    getEmailTemplateResponse_templateContent,+  )+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.SESV2.Types++-- | Represents a request to display the template object (which includes the+-- subject line, HTML part and text part) for the template you specify.+--+-- /See:/ 'newGetEmailTemplate' smart constructor.+data GetEmailTemplate = GetEmailTemplate'+  { -- | The name of the template.+    templateName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEmailTemplate' 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', 'getEmailTemplate_templateName' - The name of the template.+newGetEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  GetEmailTemplate+newGetEmailTemplate pTemplateName_ =+  GetEmailTemplate' {templateName = pTemplateName_}++-- | The name of the template.+getEmailTemplate_templateName :: Lens.Lens' GetEmailTemplate Prelude.Text+getEmailTemplate_templateName = Lens.lens (\GetEmailTemplate' {templateName} -> templateName) (\s@GetEmailTemplate' {} a -> s {templateName = a} :: GetEmailTemplate)++instance Core.AWSRequest GetEmailTemplate where+  type+    AWSResponse GetEmailTemplate =+      GetEmailTemplateResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "TemplateName")+            Prelude.<*> (x Data..:> "TemplateContent")+      )++instance Prelude.Hashable GetEmailTemplate where+  hashWithSalt _salt GetEmailTemplate' {..} =+    _salt `Prelude.hashWithSalt` templateName++instance Prelude.NFData GetEmailTemplate where+  rnf GetEmailTemplate' {..} = Prelude.rnf templateName++instance Data.ToHeaders GetEmailTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetEmailTemplate where+  toPath GetEmailTemplate' {..} =+    Prelude.mconcat+      ["/v2/email/templates/", Data.toBS templateName]++instance Data.ToQuery GetEmailTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | The following element is returned by the service.+--+-- /See:/ 'newGetEmailTemplateResponse' smart constructor.+data GetEmailTemplateResponse = GetEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The name of the template.+    templateName :: Prelude.Text,+    -- | The content of the email template, composed of a subject line, an HTML+    -- part, and a text-only part.+    templateContent :: EmailTemplateContent+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetEmailTemplateResponse' 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', 'getEmailTemplateResponse_httpStatus' - The response's http status code.+--+-- 'templateName', 'getEmailTemplateResponse_templateName' - The name of the template.+--+-- 'templateContent', 'getEmailTemplateResponse_templateContent' - The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+newGetEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'templateName'+  Prelude.Text ->+  -- | 'templateContent'+  EmailTemplateContent ->+  GetEmailTemplateResponse+newGetEmailTemplateResponse+  pHttpStatus_+  pTemplateName_+  pTemplateContent_ =+    GetEmailTemplateResponse'+      { httpStatus =+          pHttpStatus_,+        templateName = pTemplateName_,+        templateContent = pTemplateContent_+      }++-- | The response's http status code.+getEmailTemplateResponse_httpStatus :: Lens.Lens' GetEmailTemplateResponse Prelude.Int+getEmailTemplateResponse_httpStatus = Lens.lens (\GetEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@GetEmailTemplateResponse' {} a -> s {httpStatus = a} :: GetEmailTemplateResponse)++-- | The name of the template.+getEmailTemplateResponse_templateName :: Lens.Lens' GetEmailTemplateResponse Prelude.Text+getEmailTemplateResponse_templateName = Lens.lens (\GetEmailTemplateResponse' {templateName} -> templateName) (\s@GetEmailTemplateResponse' {} a -> s {templateName = a} :: GetEmailTemplateResponse)++-- | The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+getEmailTemplateResponse_templateContent :: Lens.Lens' GetEmailTemplateResponse EmailTemplateContent+getEmailTemplateResponse_templateContent = Lens.lens (\GetEmailTemplateResponse' {templateContent} -> templateContent) (\s@GetEmailTemplateResponse' {} a -> s {templateContent = a} :: GetEmailTemplateResponse)++instance Prelude.NFData GetEmailTemplateResponse where+  rnf GetEmailTemplateResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf templateName+      `Prelude.seq` Prelude.rnf templateContent
+ gen/Amazonka/SESV2/GetImportJob.hs view
@@ -0,0 +1,262 @@+{-# 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.SESV2.GetImportJob+-- 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 information about an import job.+module Amazonka.SESV2.GetImportJob+  ( -- * Creating a Request+    GetImportJob (..),+    newGetImportJob,++    -- * Request Lenses+    getImportJob_jobId,++    -- * Destructuring the Response+    GetImportJobResponse (..),+    newGetImportJobResponse,++    -- * Response Lenses+    getImportJobResponse_completedTimestamp,+    getImportJobResponse_createdTimestamp,+    getImportJobResponse_failedRecordsCount,+    getImportJobResponse_failureInfo,+    getImportJobResponse_importDataSource,+    getImportJobResponse_importDestination,+    getImportJobResponse_jobId,+    getImportJobResponse_jobStatus,+    getImportJobResponse_processedRecordsCount,+    getImportJobResponse_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.SESV2.Types++-- | Represents a request for information about an import job using the+-- import job ID.+--+-- /See:/ 'newGetImportJob' smart constructor.+data GetImportJob = GetImportJob'+  { -- | The ID of the import job.+    jobId :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImportJob' 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:+--+-- 'jobId', 'getImportJob_jobId' - The ID of the import job.+newGetImportJob ::+  -- | 'jobId'+  Prelude.Text ->+  GetImportJob+newGetImportJob pJobId_ =+  GetImportJob' {jobId = pJobId_}++-- | The ID of the import job.+getImportJob_jobId :: Lens.Lens' GetImportJob Prelude.Text+getImportJob_jobId = Lens.lens (\GetImportJob' {jobId} -> jobId) (\s@GetImportJob' {} a -> s {jobId = a} :: GetImportJob)++instance Core.AWSRequest GetImportJob where+  type AWSResponse GetImportJob = GetImportJobResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetImportJobResponse'+            Prelude.<$> (x Data..?> "CompletedTimestamp")+            Prelude.<*> (x Data..?> "CreatedTimestamp")+            Prelude.<*> (x Data..?> "FailedRecordsCount")+            Prelude.<*> (x Data..?> "FailureInfo")+            Prelude.<*> (x Data..?> "ImportDataSource")+            Prelude.<*> (x Data..?> "ImportDestination")+            Prelude.<*> (x Data..?> "JobId")+            Prelude.<*> (x Data..?> "JobStatus")+            Prelude.<*> (x Data..?> "ProcessedRecordsCount")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable GetImportJob where+  hashWithSalt _salt GetImportJob' {..} =+    _salt `Prelude.hashWithSalt` jobId++instance Prelude.NFData GetImportJob where+  rnf GetImportJob' {..} = Prelude.rnf jobId++instance Data.ToHeaders GetImportJob where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetImportJob where+  toPath GetImportJob' {..} =+    Prelude.mconcat+      ["/v2/email/import-jobs/", Data.toBS jobId]++instance Data.ToQuery GetImportJob where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newGetImportJobResponse' smart constructor.+data GetImportJobResponse = GetImportJobResponse'+  { -- | The time stamp of when the import job was completed.+    completedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The time stamp of when the import job was created.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The number of records that failed processing because of invalid input or+    -- other reasons.+    failedRecordsCount :: Prelude.Maybe Prelude.Int,+    -- | The failure details about an import job.+    failureInfo :: Prelude.Maybe FailureInfo,+    -- | The data source of the import job.+    importDataSource :: Prelude.Maybe ImportDataSource,+    -- | The destination of the import job.+    importDestination :: Prelude.Maybe ImportDestination,+    -- | A string that represents the import job ID.+    jobId :: Prelude.Maybe Prelude.Text,+    -- | The status of the import job.+    jobStatus :: Prelude.Maybe JobStatus,+    -- | The current number of records processed.+    processedRecordsCount :: Prelude.Maybe Prelude.Int,+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetImportJobResponse' 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:+--+-- 'completedTimestamp', 'getImportJobResponse_completedTimestamp' - The time stamp of when the import job was completed.+--+-- 'createdTimestamp', 'getImportJobResponse_createdTimestamp' - The time stamp of when the import job was created.+--+-- 'failedRecordsCount', 'getImportJobResponse_failedRecordsCount' - The number of records that failed processing because of invalid input or+-- other reasons.+--+-- 'failureInfo', 'getImportJobResponse_failureInfo' - The failure details about an import job.+--+-- 'importDataSource', 'getImportJobResponse_importDataSource' - The data source of the import job.+--+-- 'importDestination', 'getImportJobResponse_importDestination' - The destination of the import job.+--+-- 'jobId', 'getImportJobResponse_jobId' - A string that represents the import job ID.+--+-- 'jobStatus', 'getImportJobResponse_jobStatus' - The status of the import job.+--+-- 'processedRecordsCount', 'getImportJobResponse_processedRecordsCount' - The current number of records processed.+--+-- 'httpStatus', 'getImportJobResponse_httpStatus' - The response's http status code.+newGetImportJobResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetImportJobResponse+newGetImportJobResponse pHttpStatus_ =+  GetImportJobResponse'+    { completedTimestamp =+        Prelude.Nothing,+      createdTimestamp = Prelude.Nothing,+      failedRecordsCount = Prelude.Nothing,+      failureInfo = Prelude.Nothing,+      importDataSource = Prelude.Nothing,+      importDestination = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      processedRecordsCount = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The time stamp of when the import job was completed.+getImportJobResponse_completedTimestamp :: Lens.Lens' GetImportJobResponse (Prelude.Maybe Prelude.UTCTime)+getImportJobResponse_completedTimestamp = Lens.lens (\GetImportJobResponse' {completedTimestamp} -> completedTimestamp) (\s@GetImportJobResponse' {} a -> s {completedTimestamp = a} :: GetImportJobResponse) Prelude.. Lens.mapping Data._Time++-- | The time stamp of when the import job was created.+getImportJobResponse_createdTimestamp :: Lens.Lens' GetImportJobResponse (Prelude.Maybe Prelude.UTCTime)+getImportJobResponse_createdTimestamp = Lens.lens (\GetImportJobResponse' {createdTimestamp} -> createdTimestamp) (\s@GetImportJobResponse' {} a -> s {createdTimestamp = a} :: GetImportJobResponse) Prelude.. Lens.mapping Data._Time++-- | The number of records that failed processing because of invalid input or+-- other reasons.+getImportJobResponse_failedRecordsCount :: Lens.Lens' GetImportJobResponse (Prelude.Maybe Prelude.Int)+getImportJobResponse_failedRecordsCount = Lens.lens (\GetImportJobResponse' {failedRecordsCount} -> failedRecordsCount) (\s@GetImportJobResponse' {} a -> s {failedRecordsCount = a} :: GetImportJobResponse)++-- | The failure details about an import job.+getImportJobResponse_failureInfo :: Lens.Lens' GetImportJobResponse (Prelude.Maybe FailureInfo)+getImportJobResponse_failureInfo = Lens.lens (\GetImportJobResponse' {failureInfo} -> failureInfo) (\s@GetImportJobResponse' {} a -> s {failureInfo = a} :: GetImportJobResponse)++-- | The data source of the import job.+getImportJobResponse_importDataSource :: Lens.Lens' GetImportJobResponse (Prelude.Maybe ImportDataSource)+getImportJobResponse_importDataSource = Lens.lens (\GetImportJobResponse' {importDataSource} -> importDataSource) (\s@GetImportJobResponse' {} a -> s {importDataSource = a} :: GetImportJobResponse)++-- | The destination of the import job.+getImportJobResponse_importDestination :: Lens.Lens' GetImportJobResponse (Prelude.Maybe ImportDestination)+getImportJobResponse_importDestination = Lens.lens (\GetImportJobResponse' {importDestination} -> importDestination) (\s@GetImportJobResponse' {} a -> s {importDestination = a} :: GetImportJobResponse)++-- | A string that represents the import job ID.+getImportJobResponse_jobId :: Lens.Lens' GetImportJobResponse (Prelude.Maybe Prelude.Text)+getImportJobResponse_jobId = Lens.lens (\GetImportJobResponse' {jobId} -> jobId) (\s@GetImportJobResponse' {} a -> s {jobId = a} :: GetImportJobResponse)++-- | The status of the import job.+getImportJobResponse_jobStatus :: Lens.Lens' GetImportJobResponse (Prelude.Maybe JobStatus)+getImportJobResponse_jobStatus = Lens.lens (\GetImportJobResponse' {jobStatus} -> jobStatus) (\s@GetImportJobResponse' {} a -> s {jobStatus = a} :: GetImportJobResponse)++-- | The current number of records processed.+getImportJobResponse_processedRecordsCount :: Lens.Lens' GetImportJobResponse (Prelude.Maybe Prelude.Int)+getImportJobResponse_processedRecordsCount = Lens.lens (\GetImportJobResponse' {processedRecordsCount} -> processedRecordsCount) (\s@GetImportJobResponse' {} a -> s {processedRecordsCount = a} :: GetImportJobResponse)++-- | The response's http status code.+getImportJobResponse_httpStatus :: Lens.Lens' GetImportJobResponse Prelude.Int+getImportJobResponse_httpStatus = Lens.lens (\GetImportJobResponse' {httpStatus} -> httpStatus) (\s@GetImportJobResponse' {} a -> s {httpStatus = a} :: GetImportJobResponse)++instance Prelude.NFData GetImportJobResponse where+  rnf GetImportJobResponse' {..} =+    Prelude.rnf completedTimestamp+      `Prelude.seq` Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf failedRecordsCount+      `Prelude.seq` Prelude.rnf failureInfo+      `Prelude.seq` Prelude.rnf importDataSource+      `Prelude.seq` Prelude.rnf importDestination+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf processedRecordsCount+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/GetSuppressedDestination.hs view
@@ -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.SESV2.GetSuppressedDestination+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves information about a specific email address that\'s on the+-- suppression list for your account.+module Amazonka.SESV2.GetSuppressedDestination+  ( -- * Creating a Request+    GetSuppressedDestination (..),+    newGetSuppressedDestination,++    -- * Request Lenses+    getSuppressedDestination_emailAddress,++    -- * Destructuring the Response+    GetSuppressedDestinationResponse (..),+    newGetSuppressedDestinationResponse,++    -- * Response Lenses+    getSuppressedDestinationResponse_httpStatus,+    getSuppressedDestinationResponse_suppressedDestination,+  )+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.SESV2.Types++-- | A request to retrieve information about an email address that\'s on the+-- suppression list for your account.+--+-- /See:/ 'newGetSuppressedDestination' smart constructor.+data GetSuppressedDestination = GetSuppressedDestination'+  { -- | The email address that\'s on the account suppression list.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetSuppressedDestination' 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', 'getSuppressedDestination_emailAddress' - The email address that\'s on the account suppression list.+newGetSuppressedDestination ::+  -- | 'emailAddress'+  Prelude.Text ->+  GetSuppressedDestination+newGetSuppressedDestination pEmailAddress_ =+  GetSuppressedDestination'+    { emailAddress =+        pEmailAddress_+    }++-- | The email address that\'s on the account suppression list.+getSuppressedDestination_emailAddress :: Lens.Lens' GetSuppressedDestination Prelude.Text+getSuppressedDestination_emailAddress = Lens.lens (\GetSuppressedDestination' {emailAddress} -> emailAddress) (\s@GetSuppressedDestination' {} a -> s {emailAddress = a} :: GetSuppressedDestination)++instance Core.AWSRequest GetSuppressedDestination where+  type+    AWSResponse GetSuppressedDestination =+      GetSuppressedDestinationResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          GetSuppressedDestinationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "SuppressedDestination")+      )++instance Prelude.Hashable GetSuppressedDestination where+  hashWithSalt _salt GetSuppressedDestination' {..} =+    _salt `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData GetSuppressedDestination where+  rnf GetSuppressedDestination' {..} =+    Prelude.rnf emailAddress++instance Data.ToHeaders GetSuppressedDestination where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath GetSuppressedDestination where+  toPath GetSuppressedDestination' {..} =+    Prelude.mconcat+      [ "/v2/email/suppression/addresses/",+        Data.toBS emailAddress+      ]++instance Data.ToQuery GetSuppressedDestination where+  toQuery = Prelude.const Prelude.mempty++-- | Information about the suppressed email address.+--+-- /See:/ 'newGetSuppressedDestinationResponse' smart constructor.+data GetSuppressedDestinationResponse = GetSuppressedDestinationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object containing information about the suppressed email address.+    suppressedDestination :: SuppressedDestination+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GetSuppressedDestinationResponse' 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', 'getSuppressedDestinationResponse_httpStatus' - The response's http status code.+--+-- 'suppressedDestination', 'getSuppressedDestinationResponse_suppressedDestination' - An object containing information about the suppressed email address.+newGetSuppressedDestinationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'suppressedDestination'+  SuppressedDestination ->+  GetSuppressedDestinationResponse+newGetSuppressedDestinationResponse+  pHttpStatus_+  pSuppressedDestination_ =+    GetSuppressedDestinationResponse'+      { httpStatus =+          pHttpStatus_,+        suppressedDestination =+          pSuppressedDestination_+      }++-- | The response's http status code.+getSuppressedDestinationResponse_httpStatus :: Lens.Lens' GetSuppressedDestinationResponse Prelude.Int+getSuppressedDestinationResponse_httpStatus = Lens.lens (\GetSuppressedDestinationResponse' {httpStatus} -> httpStatus) (\s@GetSuppressedDestinationResponse' {} a -> s {httpStatus = a} :: GetSuppressedDestinationResponse)++-- | An object containing information about the suppressed email address.+getSuppressedDestinationResponse_suppressedDestination :: Lens.Lens' GetSuppressedDestinationResponse SuppressedDestination+getSuppressedDestinationResponse_suppressedDestination = Lens.lens (\GetSuppressedDestinationResponse' {suppressedDestination} -> suppressedDestination) (\s@GetSuppressedDestinationResponse' {} a -> s {suppressedDestination = a} :: GetSuppressedDestinationResponse)++instance+  Prelude.NFData+    GetSuppressedDestinationResponse+  where+  rnf GetSuppressedDestinationResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf suppressedDestination
+ gen/Amazonka/SESV2/Lens.hs view
@@ -0,0 +1,1139 @@+{-# 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.SESV2.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.SESV2.Lens+  ( -- * Operations++    -- ** BatchGetMetricData+    batchGetMetricData_queries,+    batchGetMetricDataResponse_errors,+    batchGetMetricDataResponse_results,+    batchGetMetricDataResponse_httpStatus,++    -- ** CreateConfigurationSet+    createConfigurationSet_deliveryOptions,+    createConfigurationSet_reputationOptions,+    createConfigurationSet_sendingOptions,+    createConfigurationSet_suppressionOptions,+    createConfigurationSet_tags,+    createConfigurationSet_trackingOptions,+    createConfigurationSet_vdmOptions,+    createConfigurationSet_configurationSetName,+    createConfigurationSetResponse_httpStatus,++    -- ** CreateConfigurationSetEventDestination+    createConfigurationSetEventDestination_configurationSetName,+    createConfigurationSetEventDestination_eventDestinationName,+    createConfigurationSetEventDestination_eventDestination,+    createConfigurationSetEventDestinationResponse_httpStatus,++    -- ** CreateContact+    createContact_attributesData,+    createContact_topicPreferences,+    createContact_unsubscribeAll,+    createContact_contactListName,+    createContact_emailAddress,+    createContactResponse_httpStatus,++    -- ** CreateContactList+    createContactList_description,+    createContactList_tags,+    createContactList_topics,+    createContactList_contactListName,+    createContactListResponse_httpStatus,++    -- ** CreateCustomVerificationEmailTemplate+    createCustomVerificationEmailTemplate_templateName,+    createCustomVerificationEmailTemplate_fromEmailAddress,+    createCustomVerificationEmailTemplate_templateSubject,+    createCustomVerificationEmailTemplate_templateContent,+    createCustomVerificationEmailTemplate_successRedirectionURL,+    createCustomVerificationEmailTemplate_failureRedirectionURL,+    createCustomVerificationEmailTemplateResponse_httpStatus,++    -- ** CreateDedicatedIpPool+    createDedicatedIpPool_scalingMode,+    createDedicatedIpPool_tags,+    createDedicatedIpPool_poolName,+    createDedicatedIpPoolResponse_httpStatus,++    -- ** CreateDeliverabilityTestReport+    createDeliverabilityTestReport_reportName,+    createDeliverabilityTestReport_tags,+    createDeliverabilityTestReport_fromEmailAddress,+    createDeliverabilityTestReport_content,+    createDeliverabilityTestReportResponse_httpStatus,+    createDeliverabilityTestReportResponse_reportId,+    createDeliverabilityTestReportResponse_deliverabilityTestStatus,++    -- ** CreateEmailIdentity+    createEmailIdentity_configurationSetName,+    createEmailIdentity_dkimSigningAttributes,+    createEmailIdentity_tags,+    createEmailIdentity_emailIdentity,+    createEmailIdentityResponse_dkimAttributes,+    createEmailIdentityResponse_identityType,+    createEmailIdentityResponse_verifiedForSendingStatus,+    createEmailIdentityResponse_httpStatus,++    -- ** CreateEmailIdentityPolicy+    createEmailIdentityPolicy_emailIdentity,+    createEmailIdentityPolicy_policyName,+    createEmailIdentityPolicy_policy,+    createEmailIdentityPolicyResponse_httpStatus,++    -- ** CreateEmailTemplate+    createEmailTemplate_templateName,+    createEmailTemplate_templateContent,+    createEmailTemplateResponse_httpStatus,++    -- ** CreateImportJob+    createImportJob_importDestination,+    createImportJob_importDataSource,+    createImportJobResponse_jobId,+    createImportJobResponse_httpStatus,++    -- ** DeleteConfigurationSet+    deleteConfigurationSet_configurationSetName,+    deleteConfigurationSetResponse_httpStatus,++    -- ** DeleteConfigurationSetEventDestination+    deleteConfigurationSetEventDestination_configurationSetName,+    deleteConfigurationSetEventDestination_eventDestinationName,+    deleteConfigurationSetEventDestinationResponse_httpStatus,++    -- ** DeleteContact+    deleteContact_contactListName,+    deleteContact_emailAddress,+    deleteContactResponse_httpStatus,++    -- ** DeleteContactList+    deleteContactList_contactListName,+    deleteContactListResponse_httpStatus,++    -- ** DeleteCustomVerificationEmailTemplate+    deleteCustomVerificationEmailTemplate_templateName,+    deleteCustomVerificationEmailTemplateResponse_httpStatus,++    -- ** DeleteDedicatedIpPool+    deleteDedicatedIpPool_poolName,+    deleteDedicatedIpPoolResponse_httpStatus,++    -- ** DeleteEmailIdentity+    deleteEmailIdentity_emailIdentity,+    deleteEmailIdentityResponse_httpStatus,++    -- ** DeleteEmailIdentityPolicy+    deleteEmailIdentityPolicy_emailIdentity,+    deleteEmailIdentityPolicy_policyName,+    deleteEmailIdentityPolicyResponse_httpStatus,++    -- ** DeleteEmailTemplate+    deleteEmailTemplate_templateName,+    deleteEmailTemplateResponse_httpStatus,++    -- ** DeleteSuppressedDestination+    deleteSuppressedDestination_emailAddress,+    deleteSuppressedDestinationResponse_httpStatus,++    -- ** GetAccount+    getAccountResponse_dedicatedIpAutoWarmupEnabled,+    getAccountResponse_details,+    getAccountResponse_enforcementStatus,+    getAccountResponse_productionAccessEnabled,+    getAccountResponse_sendQuota,+    getAccountResponse_sendingEnabled,+    getAccountResponse_suppressionAttributes,+    getAccountResponse_vdmAttributes,+    getAccountResponse_httpStatus,++    -- ** GetBlacklistReports+    getBlacklistReports_blacklistItemNames,+    getBlacklistReportsResponse_httpStatus,+    getBlacklistReportsResponse_blacklistReport,++    -- ** GetConfigurationSet+    getConfigurationSet_configurationSetName,+    getConfigurationSetResponse_configurationSetName,+    getConfigurationSetResponse_deliveryOptions,+    getConfigurationSetResponse_reputationOptions,+    getConfigurationSetResponse_sendingOptions,+    getConfigurationSetResponse_suppressionOptions,+    getConfigurationSetResponse_tags,+    getConfigurationSetResponse_trackingOptions,+    getConfigurationSetResponse_vdmOptions,+    getConfigurationSetResponse_httpStatus,++    -- ** GetConfigurationSetEventDestinations+    getConfigurationSetEventDestinations_configurationSetName,+    getConfigurationSetEventDestinationsResponse_eventDestinations,+    getConfigurationSetEventDestinationsResponse_httpStatus,++    -- ** GetContact+    getContact_contactListName,+    getContact_emailAddress,+    getContactResponse_attributesData,+    getContactResponse_contactListName,+    getContactResponse_createdTimestamp,+    getContactResponse_emailAddress,+    getContactResponse_lastUpdatedTimestamp,+    getContactResponse_topicDefaultPreferences,+    getContactResponse_topicPreferences,+    getContactResponse_unsubscribeAll,+    getContactResponse_httpStatus,++    -- ** GetContactList+    getContactList_contactListName,+    getContactListResponse_contactListName,+    getContactListResponse_createdTimestamp,+    getContactListResponse_description,+    getContactListResponse_lastUpdatedTimestamp,+    getContactListResponse_tags,+    getContactListResponse_topics,+    getContactListResponse_httpStatus,++    -- ** GetCustomVerificationEmailTemplate+    getCustomVerificationEmailTemplate_templateName,+    getCustomVerificationEmailTemplateResponse_failureRedirectionURL,+    getCustomVerificationEmailTemplateResponse_fromEmailAddress,+    getCustomVerificationEmailTemplateResponse_successRedirectionURL,+    getCustomVerificationEmailTemplateResponse_templateContent,+    getCustomVerificationEmailTemplateResponse_templateName,+    getCustomVerificationEmailTemplateResponse_templateSubject,+    getCustomVerificationEmailTemplateResponse_httpStatus,++    -- ** GetDedicatedIp+    getDedicatedIp_ip,+    getDedicatedIpResponse_dedicatedIp,+    getDedicatedIpResponse_httpStatus,++    -- ** GetDedicatedIpPool+    getDedicatedIpPool_poolName,+    getDedicatedIpPoolResponse_dedicatedIpPool,+    getDedicatedIpPoolResponse_httpStatus,++    -- ** GetDedicatedIps+    getDedicatedIps_nextToken,+    getDedicatedIps_pageSize,+    getDedicatedIps_poolName,+    getDedicatedIpsResponse_dedicatedIps,+    getDedicatedIpsResponse_nextToken,+    getDedicatedIpsResponse_httpStatus,++    -- ** GetDeliverabilityDashboardOptions+    getDeliverabilityDashboardOptionsResponse_accountStatus,+    getDeliverabilityDashboardOptionsResponse_activeSubscribedDomains,+    getDeliverabilityDashboardOptionsResponse_pendingExpirationSubscribedDomains,+    getDeliverabilityDashboardOptionsResponse_subscriptionExpiryDate,+    getDeliverabilityDashboardOptionsResponse_httpStatus,+    getDeliverabilityDashboardOptionsResponse_dashboardEnabled,++    -- ** GetDeliverabilityTestReport+    getDeliverabilityTestReport_reportId,+    getDeliverabilityTestReportResponse_message,+    getDeliverabilityTestReportResponse_tags,+    getDeliverabilityTestReportResponse_httpStatus,+    getDeliverabilityTestReportResponse_deliverabilityTestReport,+    getDeliverabilityTestReportResponse_overallPlacement,+    getDeliverabilityTestReportResponse_ispPlacements,++    -- ** GetDomainDeliverabilityCampaign+    getDomainDeliverabilityCampaign_campaignId,+    getDomainDeliverabilityCampaignResponse_httpStatus,+    getDomainDeliverabilityCampaignResponse_domainDeliverabilityCampaign,++    -- ** GetDomainStatisticsReport+    getDomainStatisticsReport_domain,+    getDomainStatisticsReport_startDate,+    getDomainStatisticsReport_endDate,+    getDomainStatisticsReportResponse_httpStatus,+    getDomainStatisticsReportResponse_overallVolume,+    getDomainStatisticsReportResponse_dailyVolumes,++    -- ** GetEmailIdentity+    getEmailIdentity_emailIdentity,+    getEmailIdentityResponse_configurationSetName,+    getEmailIdentityResponse_dkimAttributes,+    getEmailIdentityResponse_feedbackForwardingStatus,+    getEmailIdentityResponse_identityType,+    getEmailIdentityResponse_mailFromAttributes,+    getEmailIdentityResponse_policies,+    getEmailIdentityResponse_tags,+    getEmailIdentityResponse_verificationStatus,+    getEmailIdentityResponse_verifiedForSendingStatus,+    getEmailIdentityResponse_httpStatus,++    -- ** GetEmailIdentityPolicies+    getEmailIdentityPolicies_emailIdentity,+    getEmailIdentityPoliciesResponse_policies,+    getEmailIdentityPoliciesResponse_httpStatus,++    -- ** GetEmailTemplate+    getEmailTemplate_templateName,+    getEmailTemplateResponse_httpStatus,+    getEmailTemplateResponse_templateName,+    getEmailTemplateResponse_templateContent,++    -- ** GetImportJob+    getImportJob_jobId,+    getImportJobResponse_completedTimestamp,+    getImportJobResponse_createdTimestamp,+    getImportJobResponse_failedRecordsCount,+    getImportJobResponse_failureInfo,+    getImportJobResponse_importDataSource,+    getImportJobResponse_importDestination,+    getImportJobResponse_jobId,+    getImportJobResponse_jobStatus,+    getImportJobResponse_processedRecordsCount,+    getImportJobResponse_httpStatus,++    -- ** GetSuppressedDestination+    getSuppressedDestination_emailAddress,+    getSuppressedDestinationResponse_httpStatus,+    getSuppressedDestinationResponse_suppressedDestination,++    -- ** ListConfigurationSets+    listConfigurationSets_nextToken,+    listConfigurationSets_pageSize,+    listConfigurationSetsResponse_configurationSets,+    listConfigurationSetsResponse_nextToken,+    listConfigurationSetsResponse_httpStatus,++    -- ** ListContactLists+    listContactLists_nextToken,+    listContactLists_pageSize,+    listContactListsResponse_contactLists,+    listContactListsResponse_nextToken,+    listContactListsResponse_httpStatus,++    -- ** ListContacts+    listContacts_filter,+    listContacts_nextToken,+    listContacts_pageSize,+    listContacts_contactListName,+    listContactsResponse_contacts,+    listContactsResponse_nextToken,+    listContactsResponse_httpStatus,++    -- ** ListCustomVerificationEmailTemplates+    listCustomVerificationEmailTemplates_nextToken,+    listCustomVerificationEmailTemplates_pageSize,+    listCustomVerificationEmailTemplatesResponse_customVerificationEmailTemplates,+    listCustomVerificationEmailTemplatesResponse_nextToken,+    listCustomVerificationEmailTemplatesResponse_httpStatus,++    -- ** ListDedicatedIpPools+    listDedicatedIpPools_nextToken,+    listDedicatedIpPools_pageSize,+    listDedicatedIpPoolsResponse_dedicatedIpPools,+    listDedicatedIpPoolsResponse_nextToken,+    listDedicatedIpPoolsResponse_httpStatus,++    -- ** ListDeliverabilityTestReports+    listDeliverabilityTestReports_nextToken,+    listDeliverabilityTestReports_pageSize,+    listDeliverabilityTestReportsResponse_nextToken,+    listDeliverabilityTestReportsResponse_httpStatus,+    listDeliverabilityTestReportsResponse_deliverabilityTestReports,++    -- ** ListDomainDeliverabilityCampaigns+    listDomainDeliverabilityCampaigns_nextToken,+    listDomainDeliverabilityCampaigns_pageSize,+    listDomainDeliverabilityCampaigns_startDate,+    listDomainDeliverabilityCampaigns_endDate,+    listDomainDeliverabilityCampaigns_subscribedDomain,+    listDomainDeliverabilityCampaignsResponse_nextToken,+    listDomainDeliverabilityCampaignsResponse_httpStatus,+    listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns,++    -- ** ListEmailIdentities+    listEmailIdentities_nextToken,+    listEmailIdentities_pageSize,+    listEmailIdentitiesResponse_emailIdentities,+    listEmailIdentitiesResponse_nextToken,+    listEmailIdentitiesResponse_httpStatus,++    -- ** ListEmailTemplates+    listEmailTemplates_nextToken,+    listEmailTemplates_pageSize,+    listEmailTemplatesResponse_nextToken,+    listEmailTemplatesResponse_templatesMetadata,+    listEmailTemplatesResponse_httpStatus,++    -- ** ListImportJobs+    listImportJobs_importDestinationType,+    listImportJobs_nextToken,+    listImportJobs_pageSize,+    listImportJobsResponse_importJobs,+    listImportJobsResponse_nextToken,+    listImportJobsResponse_httpStatus,++    -- ** ListRecommendations+    listRecommendations_filter,+    listRecommendations_nextToken,+    listRecommendations_pageSize,+    listRecommendationsResponse_nextToken,+    listRecommendationsResponse_recommendations,+    listRecommendationsResponse_httpStatus,++    -- ** ListSuppressedDestinations+    listSuppressedDestinations_endDate,+    listSuppressedDestinations_nextToken,+    listSuppressedDestinations_pageSize,+    listSuppressedDestinations_reasons,+    listSuppressedDestinations_startDate,+    listSuppressedDestinationsResponse_nextToken,+    listSuppressedDestinationsResponse_suppressedDestinationSummaries,+    listSuppressedDestinationsResponse_httpStatus,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,++    -- ** PutAccountDedicatedIpWarmupAttributes+    putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled,+    putAccountDedicatedIpWarmupAttributesResponse_httpStatus,++    -- ** PutAccountDetails+    putAccountDetails_additionalContactEmailAddresses,+    putAccountDetails_contactLanguage,+    putAccountDetails_productionAccessEnabled,+    putAccountDetails_mailType,+    putAccountDetails_websiteURL,+    putAccountDetails_useCaseDescription,+    putAccountDetailsResponse_httpStatus,++    -- ** PutAccountSendingAttributes+    putAccountSendingAttributes_sendingEnabled,+    putAccountSendingAttributesResponse_httpStatus,++    -- ** PutAccountSuppressionAttributes+    putAccountSuppressionAttributes_suppressedReasons,+    putAccountSuppressionAttributesResponse_httpStatus,++    -- ** PutAccountVdmAttributes+    putAccountVdmAttributes_vdmAttributes,+    putAccountVdmAttributesResponse_httpStatus,++    -- ** PutConfigurationSetDeliveryOptions+    putConfigurationSetDeliveryOptions_sendingPoolName,+    putConfigurationSetDeliveryOptions_tlsPolicy,+    putConfigurationSetDeliveryOptions_configurationSetName,+    putConfigurationSetDeliveryOptionsResponse_httpStatus,++    -- ** PutConfigurationSetReputationOptions+    putConfigurationSetReputationOptions_reputationMetricsEnabled,+    putConfigurationSetReputationOptions_configurationSetName,+    putConfigurationSetReputationOptionsResponse_httpStatus,++    -- ** PutConfigurationSetSendingOptions+    putConfigurationSetSendingOptions_sendingEnabled,+    putConfigurationSetSendingOptions_configurationSetName,+    putConfigurationSetSendingOptionsResponse_httpStatus,++    -- ** PutConfigurationSetSuppressionOptions+    putConfigurationSetSuppressionOptions_suppressedReasons,+    putConfigurationSetSuppressionOptions_configurationSetName,+    putConfigurationSetSuppressionOptionsResponse_httpStatus,++    -- ** PutConfigurationSetTrackingOptions+    putConfigurationSetTrackingOptions_customRedirectDomain,+    putConfigurationSetTrackingOptions_configurationSetName,+    putConfigurationSetTrackingOptionsResponse_httpStatus,++    -- ** PutConfigurationSetVdmOptions+    putConfigurationSetVdmOptions_vdmOptions,+    putConfigurationSetVdmOptions_configurationSetName,+    putConfigurationSetVdmOptionsResponse_httpStatus,++    -- ** PutDedicatedIpInPool+    putDedicatedIpInPool_ip,+    putDedicatedIpInPool_destinationPoolName,+    putDedicatedIpInPoolResponse_httpStatus,++    -- ** PutDedicatedIpWarmupAttributes+    putDedicatedIpWarmupAttributes_ip,+    putDedicatedIpWarmupAttributes_warmupPercentage,+    putDedicatedIpWarmupAttributesResponse_httpStatus,++    -- ** PutDeliverabilityDashboardOption+    putDeliverabilityDashboardOption_subscribedDomains,+    putDeliverabilityDashboardOption_dashboardEnabled,+    putDeliverabilityDashboardOptionResponse_httpStatus,++    -- ** PutEmailIdentityConfigurationSetAttributes+    putEmailIdentityConfigurationSetAttributes_configurationSetName,+    putEmailIdentityConfigurationSetAttributes_emailIdentity,+    putEmailIdentityConfigurationSetAttributesResponse_httpStatus,++    -- ** PutEmailIdentityDkimAttributes+    putEmailIdentityDkimAttributes_signingEnabled,+    putEmailIdentityDkimAttributes_emailIdentity,+    putEmailIdentityDkimAttributesResponse_httpStatus,++    -- ** PutEmailIdentityDkimSigningAttributes+    putEmailIdentityDkimSigningAttributes_signingAttributes,+    putEmailIdentityDkimSigningAttributes_emailIdentity,+    putEmailIdentityDkimSigningAttributes_signingAttributesOrigin,+    putEmailIdentityDkimSigningAttributesResponse_dkimStatus,+    putEmailIdentityDkimSigningAttributesResponse_dkimTokens,+    putEmailIdentityDkimSigningAttributesResponse_httpStatus,++    -- ** PutEmailIdentityFeedbackAttributes+    putEmailIdentityFeedbackAttributes_emailForwardingEnabled,+    putEmailIdentityFeedbackAttributes_emailIdentity,+    putEmailIdentityFeedbackAttributesResponse_httpStatus,++    -- ** PutEmailIdentityMailFromAttributes+    putEmailIdentityMailFromAttributes_behaviorOnMxFailure,+    putEmailIdentityMailFromAttributes_mailFromDomain,+    putEmailIdentityMailFromAttributes_emailIdentity,+    putEmailIdentityMailFromAttributesResponse_httpStatus,++    -- ** PutSuppressedDestination+    putSuppressedDestination_emailAddress,+    putSuppressedDestination_reason,+    putSuppressedDestinationResponse_httpStatus,++    -- ** SendBulkEmail+    sendBulkEmail_configurationSetName,+    sendBulkEmail_defaultEmailTags,+    sendBulkEmail_feedbackForwardingEmailAddress,+    sendBulkEmail_feedbackForwardingEmailAddressIdentityArn,+    sendBulkEmail_fromEmailAddress,+    sendBulkEmail_fromEmailAddressIdentityArn,+    sendBulkEmail_replyToAddresses,+    sendBulkEmail_defaultContent,+    sendBulkEmail_bulkEmailEntries,+    sendBulkEmailResponse_httpStatus,+    sendBulkEmailResponse_bulkEmailEntryResults,++    -- ** SendCustomVerificationEmail+    sendCustomVerificationEmail_configurationSetName,+    sendCustomVerificationEmail_emailAddress,+    sendCustomVerificationEmail_templateName,+    sendCustomVerificationEmailResponse_messageId,+    sendCustomVerificationEmailResponse_httpStatus,++    -- ** SendEmail+    sendEmail_configurationSetName,+    sendEmail_destination,+    sendEmail_emailTags,+    sendEmail_feedbackForwardingEmailAddress,+    sendEmail_feedbackForwardingEmailAddressIdentityArn,+    sendEmail_fromEmailAddress,+    sendEmail_fromEmailAddressIdentityArn,+    sendEmail_listManagementOptions,+    sendEmail_replyToAddresses,+    sendEmail_content,+    sendEmailResponse_messageId,+    sendEmailResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** TestRenderEmailTemplate+    testRenderEmailTemplate_templateName,+    testRenderEmailTemplate_templateData,+    testRenderEmailTemplateResponse_httpStatus,+    testRenderEmailTemplateResponse_renderedTemplate,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateConfigurationSetEventDestination+    updateConfigurationSetEventDestination_configurationSetName,+    updateConfigurationSetEventDestination_eventDestinationName,+    updateConfigurationSetEventDestination_eventDestination,+    updateConfigurationSetEventDestinationResponse_httpStatus,++    -- ** UpdateContact+    updateContact_attributesData,+    updateContact_topicPreferences,+    updateContact_unsubscribeAll,+    updateContact_contactListName,+    updateContact_emailAddress,+    updateContactResponse_httpStatus,++    -- ** UpdateContactList+    updateContactList_description,+    updateContactList_topics,+    updateContactList_contactListName,+    updateContactListResponse_httpStatus,++    -- ** UpdateCustomVerificationEmailTemplate+    updateCustomVerificationEmailTemplate_templateName,+    updateCustomVerificationEmailTemplate_fromEmailAddress,+    updateCustomVerificationEmailTemplate_templateSubject,+    updateCustomVerificationEmailTemplate_templateContent,+    updateCustomVerificationEmailTemplate_successRedirectionURL,+    updateCustomVerificationEmailTemplate_failureRedirectionURL,+    updateCustomVerificationEmailTemplateResponse_httpStatus,++    -- ** UpdateEmailIdentityPolicy+    updateEmailIdentityPolicy_emailIdentity,+    updateEmailIdentityPolicy_policyName,+    updateEmailIdentityPolicy_policy,+    updateEmailIdentityPolicyResponse_httpStatus,++    -- ** UpdateEmailTemplate+    updateEmailTemplate_templateName,+    updateEmailTemplate_templateContent,+    updateEmailTemplateResponse_httpStatus,++    -- * Types++    -- ** AccountDetails+    accountDetails_additionalContactEmailAddresses,+    accountDetails_contactLanguage,+    accountDetails_mailType,+    accountDetails_reviewDetails,+    accountDetails_useCaseDescription,+    accountDetails_websiteURL,++    -- ** BatchGetMetricDataQuery+    batchGetMetricDataQuery_dimensions,+    batchGetMetricDataQuery_id,+    batchGetMetricDataQuery_namespace,+    batchGetMetricDataQuery_metric,+    batchGetMetricDataQuery_startDate,+    batchGetMetricDataQuery_endDate,++    -- ** BlacklistEntry+    blacklistEntry_description,+    blacklistEntry_listingTime,+    blacklistEntry_rblName,++    -- ** Body+    body_html,+    body_text,++    -- ** BulkEmailContent+    bulkEmailContent_template,++    -- ** BulkEmailEntry+    bulkEmailEntry_replacementEmailContent,+    bulkEmailEntry_replacementTags,+    bulkEmailEntry_destination,++    -- ** BulkEmailEntryResult+    bulkEmailEntryResult_error,+    bulkEmailEntryResult_messageId,+    bulkEmailEntryResult_status,++    -- ** CloudWatchDestination+    cloudWatchDestination_dimensionConfigurations,++    -- ** CloudWatchDimensionConfiguration+    cloudWatchDimensionConfiguration_dimensionName,+    cloudWatchDimensionConfiguration_dimensionValueSource,+    cloudWatchDimensionConfiguration_defaultDimensionValue,++    -- ** Contact+    contact_emailAddress,+    contact_lastUpdatedTimestamp,+    contact_topicDefaultPreferences,+    contact_topicPreferences,+    contact_unsubscribeAll,++    -- ** ContactList+    contactList_contactListName,+    contactList_lastUpdatedTimestamp,++    -- ** ContactListDestination+    contactListDestination_contactListName,+    contactListDestination_contactListImportAction,++    -- ** Content+    content_charset,+    content_data,++    -- ** CustomVerificationEmailTemplateMetadata+    customVerificationEmailTemplateMetadata_failureRedirectionURL,+    customVerificationEmailTemplateMetadata_fromEmailAddress,+    customVerificationEmailTemplateMetadata_successRedirectionURL,+    customVerificationEmailTemplateMetadata_templateName,+    customVerificationEmailTemplateMetadata_templateSubject,++    -- ** DailyVolume+    dailyVolume_domainIspPlacements,+    dailyVolume_startDate,+    dailyVolume_volumeStatistics,++    -- ** DashboardAttributes+    dashboardAttributes_engagementMetrics,++    -- ** DashboardOptions+    dashboardOptions_engagementMetrics,++    -- ** DedicatedIp+    dedicatedIp_poolName,+    dedicatedIp_ip,+    dedicatedIp_warmupStatus,+    dedicatedIp_warmupPercentage,++    -- ** DedicatedIpPool+    dedicatedIpPool_poolName,+    dedicatedIpPool_scalingMode,++    -- ** DeliverabilityTestReport+    deliverabilityTestReport_createDate,+    deliverabilityTestReport_deliverabilityTestStatus,+    deliverabilityTestReport_fromEmailAddress,+    deliverabilityTestReport_reportId,+    deliverabilityTestReport_reportName,+    deliverabilityTestReport_subject,++    -- ** DeliveryOptions+    deliveryOptions_sendingPoolName,+    deliveryOptions_tlsPolicy,++    -- ** Destination+    destination_bccAddresses,+    destination_ccAddresses,+    destination_toAddresses,++    -- ** DkimAttributes+    dkimAttributes_currentSigningKeyLength,+    dkimAttributes_lastKeyGenerationTimestamp,+    dkimAttributes_nextSigningKeyLength,+    dkimAttributes_signingAttributesOrigin,+    dkimAttributes_signingEnabled,+    dkimAttributes_status,+    dkimAttributes_tokens,++    -- ** DkimSigningAttributes+    dkimSigningAttributes_domainSigningPrivateKey,+    dkimSigningAttributes_domainSigningSelector,+    dkimSigningAttributes_nextSigningKeyLength,++    -- ** DomainDeliverabilityCampaign+    domainDeliverabilityCampaign_campaignId,+    domainDeliverabilityCampaign_deleteRate,+    domainDeliverabilityCampaign_esps,+    domainDeliverabilityCampaign_firstSeenDateTime,+    domainDeliverabilityCampaign_fromAddress,+    domainDeliverabilityCampaign_imageUrl,+    domainDeliverabilityCampaign_inboxCount,+    domainDeliverabilityCampaign_lastSeenDateTime,+    domainDeliverabilityCampaign_projectedVolume,+    domainDeliverabilityCampaign_readDeleteRate,+    domainDeliverabilityCampaign_readRate,+    domainDeliverabilityCampaign_sendingIps,+    domainDeliverabilityCampaign_spamCount,+    domainDeliverabilityCampaign_subject,++    -- ** DomainDeliverabilityTrackingOption+    domainDeliverabilityTrackingOption_domain,+    domainDeliverabilityTrackingOption_inboxPlacementTrackingOption,+    domainDeliverabilityTrackingOption_subscriptionStartDate,++    -- ** DomainIspPlacement+    domainIspPlacement_inboxPercentage,+    domainIspPlacement_inboxRawCount,+    domainIspPlacement_ispName,+    domainIspPlacement_spamPercentage,+    domainIspPlacement_spamRawCount,++    -- ** EmailContent+    emailContent_raw,+    emailContent_simple,+    emailContent_template,++    -- ** EmailTemplateContent+    emailTemplateContent_html,+    emailTemplateContent_subject,+    emailTemplateContent_text,++    -- ** EmailTemplateMetadata+    emailTemplateMetadata_createdTimestamp,+    emailTemplateMetadata_templateName,++    -- ** EventDestination+    eventDestination_cloudWatchDestination,+    eventDestination_enabled,+    eventDestination_kinesisFirehoseDestination,+    eventDestination_pinpointDestination,+    eventDestination_snsDestination,+    eventDestination_name,+    eventDestination_matchingEventTypes,++    -- ** EventDestinationDefinition+    eventDestinationDefinition_cloudWatchDestination,+    eventDestinationDefinition_enabled,+    eventDestinationDefinition_kinesisFirehoseDestination,+    eventDestinationDefinition_matchingEventTypes,+    eventDestinationDefinition_pinpointDestination,+    eventDestinationDefinition_snsDestination,++    -- ** FailureInfo+    failureInfo_errorMessage,+    failureInfo_failedRecordsS3Url,++    -- ** GuardianAttributes+    guardianAttributes_optimizedSharedDelivery,++    -- ** GuardianOptions+    guardianOptions_optimizedSharedDelivery,++    -- ** IdentityInfo+    identityInfo_identityName,+    identityInfo_identityType,+    identityInfo_sendingEnabled,+    identityInfo_verificationStatus,++    -- ** ImportDataSource+    importDataSource_s3Url,+    importDataSource_dataFormat,++    -- ** ImportDestination+    importDestination_contactListDestination,+    importDestination_suppressionListDestination,++    -- ** ImportJobSummary+    importJobSummary_createdTimestamp,+    importJobSummary_failedRecordsCount,+    importJobSummary_importDestination,+    importJobSummary_jobId,+    importJobSummary_jobStatus,+    importJobSummary_processedRecordsCount,++    -- ** InboxPlacementTrackingOption+    inboxPlacementTrackingOption_global,+    inboxPlacementTrackingOption_trackedIsps,++    -- ** IspPlacement+    ispPlacement_ispName,+    ispPlacement_placementStatistics,++    -- ** KinesisFirehoseDestination+    kinesisFirehoseDestination_iamRoleArn,+    kinesisFirehoseDestination_deliveryStreamArn,++    -- ** ListContactsFilter+    listContactsFilter_filteredStatus,+    listContactsFilter_topicFilter,++    -- ** ListManagementOptions+    listManagementOptions_topicName,+    listManagementOptions_contactListName,++    -- ** MailFromAttributes+    mailFromAttributes_mailFromDomain,+    mailFromAttributes_mailFromDomainStatus,+    mailFromAttributes_behaviorOnMxFailure,++    -- ** Message+    message_subject,+    message_body,++    -- ** MessageTag+    messageTag_name,+    messageTag_value,++    -- ** MetricDataError+    metricDataError_code,+    metricDataError_id,+    metricDataError_message,++    -- ** MetricDataResult+    metricDataResult_id,+    metricDataResult_timestamps,+    metricDataResult_values,++    -- ** OverallVolume+    overallVolume_domainIspPlacements,+    overallVolume_readRatePercent,+    overallVolume_volumeStatistics,++    -- ** PinpointDestination+    pinpointDestination_applicationArn,++    -- ** PlacementStatistics+    placementStatistics_dkimPercentage,+    placementStatistics_inboxPercentage,+    placementStatistics_missingPercentage,+    placementStatistics_spamPercentage,+    placementStatistics_spfPercentage,++    -- ** RawMessage+    rawMessage_data,++    -- ** Recommendation+    recommendation_createdTimestamp,+    recommendation_description,+    recommendation_impact,+    recommendation_lastUpdatedTimestamp,+    recommendation_resourceArn,+    recommendation_status,+    recommendation_type,++    -- ** ReplacementEmailContent+    replacementEmailContent_replacementTemplate,++    -- ** ReplacementTemplate+    replacementTemplate_replacementTemplateData,++    -- ** ReputationOptions+    reputationOptions_lastFreshStart,+    reputationOptions_reputationMetricsEnabled,++    -- ** ReviewDetails+    reviewDetails_caseId,+    reviewDetails_status,++    -- ** SendQuota+    sendQuota_max24HourSend,+    sendQuota_maxSendRate,+    sendQuota_sentLast24Hours,++    -- ** SendingOptions+    sendingOptions_sendingEnabled,++    -- ** SnsDestination+    snsDestination_topicArn,++    -- ** SuppressedDestination+    suppressedDestination_attributes,+    suppressedDestination_emailAddress,+    suppressedDestination_reason,+    suppressedDestination_lastUpdateTime,++    -- ** SuppressedDestinationAttributes+    suppressedDestinationAttributes_feedbackId,+    suppressedDestinationAttributes_messageId,++    -- ** SuppressedDestinationSummary+    suppressedDestinationSummary_emailAddress,+    suppressedDestinationSummary_reason,+    suppressedDestinationSummary_lastUpdateTime,++    -- ** SuppressionAttributes+    suppressionAttributes_suppressedReasons,++    -- ** SuppressionListDestination+    suppressionListDestination_suppressionListImportAction,++    -- ** SuppressionOptions+    suppressionOptions_suppressedReasons,++    -- ** Tag+    tag_key,+    tag_value,++    -- ** Template+    template_templateArn,+    template_templateData,+    template_templateName,++    -- ** Topic+    topic_description,+    topic_topicName,+    topic_displayName,+    topic_defaultSubscriptionStatus,++    -- ** TopicFilter+    topicFilter_topicName,+    topicFilter_useDefaultIfPreferenceUnavailable,++    -- ** TopicPreference+    topicPreference_topicName,+    topicPreference_subscriptionStatus,++    -- ** TrackingOptions+    trackingOptions_customRedirectDomain,++    -- ** VdmAttributes+    vdmAttributes_dashboardAttributes,+    vdmAttributes_guardianAttributes,+    vdmAttributes_vdmEnabled,++    -- ** VdmOptions+    vdmOptions_dashboardOptions,+    vdmOptions_guardianOptions,++    -- ** VolumeStatistics+    volumeStatistics_inboxRawCount,+    volumeStatistics_projectedInbox,+    volumeStatistics_projectedSpam,+    volumeStatistics_spamRawCount,+  )+where++import Amazonka.SESV2.BatchGetMetricData+import Amazonka.SESV2.CreateConfigurationSet+import Amazonka.SESV2.CreateConfigurationSetEventDestination+import Amazonka.SESV2.CreateContact+import Amazonka.SESV2.CreateContactList+import Amazonka.SESV2.CreateCustomVerificationEmailTemplate+import Amazonka.SESV2.CreateDedicatedIpPool+import Amazonka.SESV2.CreateDeliverabilityTestReport+import Amazonka.SESV2.CreateEmailIdentity+import Amazonka.SESV2.CreateEmailIdentityPolicy+import Amazonka.SESV2.CreateEmailTemplate+import Amazonka.SESV2.CreateImportJob+import Amazonka.SESV2.DeleteConfigurationSet+import Amazonka.SESV2.DeleteConfigurationSetEventDestination+import Amazonka.SESV2.DeleteContact+import Amazonka.SESV2.DeleteContactList+import Amazonka.SESV2.DeleteCustomVerificationEmailTemplate+import Amazonka.SESV2.DeleteDedicatedIpPool+import Amazonka.SESV2.DeleteEmailIdentity+import Amazonka.SESV2.DeleteEmailIdentityPolicy+import Amazonka.SESV2.DeleteEmailTemplate+import Amazonka.SESV2.DeleteSuppressedDestination+import Amazonka.SESV2.GetAccount+import Amazonka.SESV2.GetBlacklistReports+import Amazonka.SESV2.GetConfigurationSet+import Amazonka.SESV2.GetConfigurationSetEventDestinations+import Amazonka.SESV2.GetContact+import Amazonka.SESV2.GetContactList+import Amazonka.SESV2.GetCustomVerificationEmailTemplate+import Amazonka.SESV2.GetDedicatedIp+import Amazonka.SESV2.GetDedicatedIpPool+import Amazonka.SESV2.GetDedicatedIps+import Amazonka.SESV2.GetDeliverabilityDashboardOptions+import Amazonka.SESV2.GetDeliverabilityTestReport+import Amazonka.SESV2.GetDomainDeliverabilityCampaign+import Amazonka.SESV2.GetDomainStatisticsReport+import Amazonka.SESV2.GetEmailIdentity+import Amazonka.SESV2.GetEmailIdentityPolicies+import Amazonka.SESV2.GetEmailTemplate+import Amazonka.SESV2.GetImportJob+import Amazonka.SESV2.GetSuppressedDestination+import Amazonka.SESV2.ListConfigurationSets+import Amazonka.SESV2.ListContactLists+import Amazonka.SESV2.ListContacts+import Amazonka.SESV2.ListCustomVerificationEmailTemplates+import Amazonka.SESV2.ListDedicatedIpPools+import Amazonka.SESV2.ListDeliverabilityTestReports+import Amazonka.SESV2.ListDomainDeliverabilityCampaigns+import Amazonka.SESV2.ListEmailIdentities+import Amazonka.SESV2.ListEmailTemplates+import Amazonka.SESV2.ListImportJobs+import Amazonka.SESV2.ListRecommendations+import Amazonka.SESV2.ListSuppressedDestinations+import Amazonka.SESV2.ListTagsForResource+import Amazonka.SESV2.PutAccountDedicatedIpWarmupAttributes+import Amazonka.SESV2.PutAccountDetails+import Amazonka.SESV2.PutAccountSendingAttributes+import Amazonka.SESV2.PutAccountSuppressionAttributes+import Amazonka.SESV2.PutAccountVdmAttributes+import Amazonka.SESV2.PutConfigurationSetDeliveryOptions+import Amazonka.SESV2.PutConfigurationSetReputationOptions+import Amazonka.SESV2.PutConfigurationSetSendingOptions+import Amazonka.SESV2.PutConfigurationSetSuppressionOptions+import Amazonka.SESV2.PutConfigurationSetTrackingOptions+import Amazonka.SESV2.PutConfigurationSetVdmOptions+import Amazonka.SESV2.PutDedicatedIpInPool+import Amazonka.SESV2.PutDedicatedIpWarmupAttributes+import Amazonka.SESV2.PutDeliverabilityDashboardOption+import Amazonka.SESV2.PutEmailIdentityConfigurationSetAttributes+import Amazonka.SESV2.PutEmailIdentityDkimAttributes+import Amazonka.SESV2.PutEmailIdentityDkimSigningAttributes+import Amazonka.SESV2.PutEmailIdentityFeedbackAttributes+import Amazonka.SESV2.PutEmailIdentityMailFromAttributes+import Amazonka.SESV2.PutSuppressedDestination+import Amazonka.SESV2.SendBulkEmail+import Amazonka.SESV2.SendCustomVerificationEmail+import Amazonka.SESV2.SendEmail+import Amazonka.SESV2.TagResource+import Amazonka.SESV2.TestRenderEmailTemplate+import Amazonka.SESV2.Types.AccountDetails+import Amazonka.SESV2.Types.BatchGetMetricDataQuery+import Amazonka.SESV2.Types.BlacklistEntry+import Amazonka.SESV2.Types.Body+import Amazonka.SESV2.Types.BulkEmailContent+import Amazonka.SESV2.Types.BulkEmailEntry+import Amazonka.SESV2.Types.BulkEmailEntryResult+import Amazonka.SESV2.Types.CloudWatchDestination+import Amazonka.SESV2.Types.CloudWatchDimensionConfiguration+import Amazonka.SESV2.Types.Contact+import Amazonka.SESV2.Types.ContactList+import Amazonka.SESV2.Types.ContactListDestination+import Amazonka.SESV2.Types.Content+import Amazonka.SESV2.Types.CustomVerificationEmailTemplateMetadata+import Amazonka.SESV2.Types.DailyVolume+import Amazonka.SESV2.Types.DashboardAttributes+import Amazonka.SESV2.Types.DashboardOptions+import Amazonka.SESV2.Types.DedicatedIp+import Amazonka.SESV2.Types.DedicatedIpPool+import Amazonka.SESV2.Types.DeliverabilityTestReport+import Amazonka.SESV2.Types.DeliveryOptions+import Amazonka.SESV2.Types.Destination+import Amazonka.SESV2.Types.DkimAttributes+import Amazonka.SESV2.Types.DkimSigningAttributes+import Amazonka.SESV2.Types.DomainDeliverabilityCampaign+import Amazonka.SESV2.Types.DomainDeliverabilityTrackingOption+import Amazonka.SESV2.Types.DomainIspPlacement+import Amazonka.SESV2.Types.EmailContent+import Amazonka.SESV2.Types.EmailTemplateContent+import Amazonka.SESV2.Types.EmailTemplateMetadata+import Amazonka.SESV2.Types.EventDestination+import Amazonka.SESV2.Types.EventDestinationDefinition+import Amazonka.SESV2.Types.FailureInfo+import Amazonka.SESV2.Types.GuardianAttributes+import Amazonka.SESV2.Types.GuardianOptions+import Amazonka.SESV2.Types.IdentityInfo+import Amazonka.SESV2.Types.ImportDataSource+import Amazonka.SESV2.Types.ImportDestination+import Amazonka.SESV2.Types.ImportJobSummary+import Amazonka.SESV2.Types.InboxPlacementTrackingOption+import Amazonka.SESV2.Types.IspPlacement+import Amazonka.SESV2.Types.KinesisFirehoseDestination+import Amazonka.SESV2.Types.ListContactsFilter+import Amazonka.SESV2.Types.ListManagementOptions+import Amazonka.SESV2.Types.MailFromAttributes+import Amazonka.SESV2.Types.Message+import Amazonka.SESV2.Types.MessageTag+import Amazonka.SESV2.Types.MetricDataError+import Amazonka.SESV2.Types.MetricDataResult+import Amazonka.SESV2.Types.OverallVolume+import Amazonka.SESV2.Types.PinpointDestination+import Amazonka.SESV2.Types.PlacementStatistics+import Amazonka.SESV2.Types.RawMessage+import Amazonka.SESV2.Types.Recommendation+import Amazonka.SESV2.Types.ReplacementEmailContent+import Amazonka.SESV2.Types.ReplacementTemplate+import Amazonka.SESV2.Types.ReputationOptions+import Amazonka.SESV2.Types.ReviewDetails+import Amazonka.SESV2.Types.SendQuota+import Amazonka.SESV2.Types.SendingOptions+import Amazonka.SESV2.Types.SnsDestination+import Amazonka.SESV2.Types.SuppressedDestination+import Amazonka.SESV2.Types.SuppressedDestinationAttributes+import Amazonka.SESV2.Types.SuppressedDestinationSummary+import Amazonka.SESV2.Types.SuppressionAttributes+import Amazonka.SESV2.Types.SuppressionListDestination+import Amazonka.SESV2.Types.SuppressionOptions+import Amazonka.SESV2.Types.Tag+import Amazonka.SESV2.Types.Template+import Amazonka.SESV2.Types.Topic+import Amazonka.SESV2.Types.TopicFilter+import Amazonka.SESV2.Types.TopicPreference+import Amazonka.SESV2.Types.TrackingOptions+import Amazonka.SESV2.Types.VdmAttributes+import Amazonka.SESV2.Types.VdmOptions+import Amazonka.SESV2.Types.VolumeStatistics+import Amazonka.SESV2.UntagResource+import Amazonka.SESV2.UpdateConfigurationSetEventDestination+import Amazonka.SESV2.UpdateContact+import Amazonka.SESV2.UpdateContactList+import Amazonka.SESV2.UpdateCustomVerificationEmailTemplate+import Amazonka.SESV2.UpdateEmailIdentityPolicy+import Amazonka.SESV2.UpdateEmailTemplate
+ gen/Amazonka/SESV2/ListConfigurationSets.hs view
@@ -0,0 +1,227 @@+{-# 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.SESV2.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)+--+-- List all of the configuration sets associated with your account in the+-- current region.+--+-- /Configuration sets/ are groups of rules that you can apply to the+-- emails you send. You apply a configuration set to an email by including+-- a reference to the configuration set in the headers of the email. When+-- you apply a configuration set to an email, all of the rules in that+-- configuration set are applied to the email.+module Amazonka.SESV2.ListConfigurationSets+  ( -- * Creating a Request+    ListConfigurationSets (..),+    newListConfigurationSets,++    -- * Request Lenses+    listConfigurationSets_nextToken,+    listConfigurationSets_pageSize,++    -- * 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.SESV2.Types++-- | A request to obtain a list of configuration sets for your Amazon SES+-- account in the current Amazon Web Services Region.+--+-- /See:/ 'newListConfigurationSets' smart constructor.+data ListConfigurationSets = ListConfigurationSets'+  { -- | A token returned from a previous call to @ListConfigurationSets@ to+    -- indicate the position in the list of configuration sets.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @ListConfigurationSets@. If the number of results is larger than the+    -- number you specified in this parameter, then the response includes a+    -- @NextToken@ element, which you can use to obtain additional results.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  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:+--+-- 'nextToken', 'listConfigurationSets_nextToken' - A token returned from a previous call to @ListConfigurationSets@ to+-- indicate the position in the list of configuration sets.+--+-- 'pageSize', 'listConfigurationSets_pageSize' - The number of results to show in a single call to+-- @ListConfigurationSets@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+newListConfigurationSets ::+  ListConfigurationSets+newListConfigurationSets =+  ListConfigurationSets'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to @ListConfigurationSets@ to+-- indicate the position in the list of configuration sets.+listConfigurationSets_nextToken :: Lens.Lens' ListConfigurationSets (Prelude.Maybe Prelude.Text)+listConfigurationSets_nextToken = Lens.lens (\ListConfigurationSets' {nextToken} -> nextToken) (\s@ListConfigurationSets' {} a -> s {nextToken = a} :: ListConfigurationSets)++-- | The number of results to show in a single call to+-- @ListConfigurationSets@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+listConfigurationSets_pageSize :: Lens.Lens' ListConfigurationSets (Prelude.Maybe Prelude.Int)+listConfigurationSets_pageSize = Lens.lens (\ListConfigurationSets' {pageSize} -> pageSize) (\s@ListConfigurationSets' {} a -> s {pageSize = a} :: ListConfigurationSets)++instance Core.AWSRequest ListConfigurationSets where+  type+    AWSResponse ListConfigurationSets =+      ListConfigurationSetsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListConfigurationSetsResponse'+            Prelude.<$> ( x+                            Data..?> "ConfigurationSets"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListConfigurationSets where+  hashWithSalt _salt ListConfigurationSets' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListConfigurationSets where+  rnf ListConfigurationSets' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListConfigurationSets where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListConfigurationSets where+  toPath = Prelude.const "/v2/email/configuration-sets"++instance Data.ToQuery ListConfigurationSets where+  toQuery ListConfigurationSets' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | A list of configuration sets in your Amazon SES account in the current+-- Amazon Web Services Region.+--+-- /See:/ 'newListConfigurationSetsResponse' smart constructor.+data ListConfigurationSetsResponse = ListConfigurationSetsResponse'+  { -- | An array that contains all of the configuration sets in your Amazon SES+    -- account in the current Amazon Web Services Region.+    configurationSets :: Prelude.Maybe [Prelude.Text],+    -- | A token that indicates that there are additional configuration sets to+    -- list. To view additional configuration sets, issue another request to+    -- @ListConfigurationSets@, and pass this token in the @NextToken@+    -- parameter.+    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' - An array that contains all of the configuration sets in your Amazon SES+-- account in the current Amazon Web Services Region.+--+-- 'nextToken', 'listConfigurationSetsResponse_nextToken' - A token that indicates that there are additional configuration sets to+-- list. To view additional configuration sets, issue another request to+-- @ListConfigurationSets@, and pass this token in the @NextToken@+-- parameter.+--+-- '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_+    }++-- | An array that contains all of the configuration sets in your Amazon SES+-- account in the current Amazon Web Services Region.+listConfigurationSetsResponse_configurationSets :: Lens.Lens' ListConfigurationSetsResponse (Prelude.Maybe [Prelude.Text])+listConfigurationSetsResponse_configurationSets = Lens.lens (\ListConfigurationSetsResponse' {configurationSets} -> configurationSets) (\s@ListConfigurationSetsResponse' {} a -> s {configurationSets = a} :: ListConfigurationSetsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A token that indicates that there are additional configuration sets to+-- list. To view additional configuration sets, issue another request to+-- @ListConfigurationSets@, and pass this token in the @NextToken@+-- parameter.+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
+ gen/Amazonka/SESV2/ListContactLists.hs view
@@ -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.SESV2.ListContactLists+-- 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 all of the contact lists available.+module Amazonka.SESV2.ListContactLists+  ( -- * Creating a Request+    ListContactLists (..),+    newListContactLists,++    -- * Request Lenses+    listContactLists_nextToken,+    listContactLists_pageSize,++    -- * Destructuring the Response+    ListContactListsResponse (..),+    newListContactListsResponse,++    -- * Response Lenses+    listContactListsResponse_contactLists,+    listContactListsResponse_nextToken,+    listContactListsResponse_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.SESV2.Types++-- | /See:/ 'newListContactLists' smart constructor.+data ListContactLists = ListContactLists'+  { -- | A string token indicating that there might be additional contact lists+    -- available to be listed. Use the token provided in the Response to use in+    -- the subsequent call to ListContactLists with the same parameters to+    -- retrieve the next page of contact lists.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Maximum number of contact lists to return at once. Use this parameter to+    -- paginate results. If additional contact lists exist beyond the specified+    -- limit, the @NextToken@ element is sent in the response. Use the+    -- @NextToken@ value in subsequent requests to retrieve additional lists.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListContactLists' 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', 'listContactLists_nextToken' - A string token indicating that there might be additional contact lists+-- available to be listed. Use the token provided in the Response to use in+-- the subsequent call to ListContactLists with the same parameters to+-- retrieve the next page of contact lists.+--+-- 'pageSize', 'listContactLists_pageSize' - Maximum number of contact lists to return at once. Use this parameter to+-- paginate results. If additional contact lists exist beyond the specified+-- limit, the @NextToken@ element is sent in the response. Use the+-- @NextToken@ value in subsequent requests to retrieve additional lists.+newListContactLists ::+  ListContactLists+newListContactLists =+  ListContactLists'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A string token indicating that there might be additional contact lists+-- available to be listed. Use the token provided in the Response to use in+-- the subsequent call to ListContactLists with the same parameters to+-- retrieve the next page of contact lists.+listContactLists_nextToken :: Lens.Lens' ListContactLists (Prelude.Maybe Prelude.Text)+listContactLists_nextToken = Lens.lens (\ListContactLists' {nextToken} -> nextToken) (\s@ListContactLists' {} a -> s {nextToken = a} :: ListContactLists)++-- | Maximum number of contact lists to return at once. Use this parameter to+-- paginate results. If additional contact lists exist beyond the specified+-- limit, the @NextToken@ element is sent in the response. Use the+-- @NextToken@ value in subsequent requests to retrieve additional lists.+listContactLists_pageSize :: Lens.Lens' ListContactLists (Prelude.Maybe Prelude.Int)+listContactLists_pageSize = Lens.lens (\ListContactLists' {pageSize} -> pageSize) (\s@ListContactLists' {} a -> s {pageSize = a} :: ListContactLists)++instance Core.AWSRequest ListContactLists where+  type+    AWSResponse ListContactLists =+      ListContactListsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListContactListsResponse'+            Prelude.<$> (x Data..?> "ContactLists" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListContactLists where+  hashWithSalt _salt ListContactLists' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListContactLists where+  rnf ListContactLists' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListContactLists where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListContactLists where+  toPath = Prelude.const "/v2/email/contact-lists"++instance Data.ToQuery ListContactLists where+  toQuery ListContactLists' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | /See:/ 'newListContactListsResponse' smart constructor.+data ListContactListsResponse = ListContactListsResponse'+  { -- | The available contact lists.+    contactLists :: Prelude.Maybe [ContactList],+    -- | A string token indicating that there might be additional contact lists+    -- available to be listed. Copy this token to a subsequent call to+    -- @ListContactLists@ with the same parameters to retrieve the next page of+    -- contact lists.+    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 'ListContactListsResponse' 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:+--+-- 'contactLists', 'listContactListsResponse_contactLists' - The available contact lists.+--+-- 'nextToken', 'listContactListsResponse_nextToken' - A string token indicating that there might be additional contact lists+-- available to be listed. Copy this token to a subsequent call to+-- @ListContactLists@ with the same parameters to retrieve the next page of+-- contact lists.+--+-- 'httpStatus', 'listContactListsResponse_httpStatus' - The response's http status code.+newListContactListsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListContactListsResponse+newListContactListsResponse pHttpStatus_ =+  ListContactListsResponse'+    { contactLists =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The available contact lists.+listContactListsResponse_contactLists :: Lens.Lens' ListContactListsResponse (Prelude.Maybe [ContactList])+listContactListsResponse_contactLists = Lens.lens (\ListContactListsResponse' {contactLists} -> contactLists) (\s@ListContactListsResponse' {} a -> s {contactLists = a} :: ListContactListsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A string token indicating that there might be additional contact lists+-- available to be listed. Copy this token to a subsequent call to+-- @ListContactLists@ with the same parameters to retrieve the next page of+-- contact lists.+listContactListsResponse_nextToken :: Lens.Lens' ListContactListsResponse (Prelude.Maybe Prelude.Text)+listContactListsResponse_nextToken = Lens.lens (\ListContactListsResponse' {nextToken} -> nextToken) (\s@ListContactListsResponse' {} a -> s {nextToken = a} :: ListContactListsResponse)++-- | The response's http status code.+listContactListsResponse_httpStatus :: Lens.Lens' ListContactListsResponse Prelude.Int+listContactListsResponse_httpStatus = Lens.lens (\ListContactListsResponse' {httpStatus} -> httpStatus) (\s@ListContactListsResponse' {} a -> s {httpStatus = a} :: ListContactListsResponse)++instance Prelude.NFData ListContactListsResponse where+  rnf ListContactListsResponse' {..} =+    Prelude.rnf contactLists+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListContacts.hs view
@@ -0,0 +1,248 @@+{-# 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.SESV2.ListContacts+-- 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 contacts present in a specific contact list.+module Amazonka.SESV2.ListContacts+  ( -- * Creating a Request+    ListContacts (..),+    newListContacts,++    -- * Request Lenses+    listContacts_filter,+    listContacts_nextToken,+    listContacts_pageSize,+    listContacts_contactListName,++    -- * Destructuring the Response+    ListContactsResponse (..),+    newListContactsResponse,++    -- * Response Lenses+    listContactsResponse_contacts,+    listContactsResponse_nextToken,+    listContactsResponse_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.SESV2.Types++-- | /See:/ 'newListContacts' smart constructor.+data ListContacts = ListContacts'+  { -- | A filter that can be applied to a list of contacts.+    filter' :: Prelude.Maybe ListContactsFilter,+    -- | A string token indicating that there might be additional contacts+    -- available to be listed. Use the token provided in the Response to use in+    -- the subsequent call to ListContacts with the same parameters to retrieve+    -- the next page of contacts.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of contacts that may be returned at once, which is dependent+    -- on if there are more or less contacts than the value of the PageSize.+    -- Use this parameter to paginate results. If additional contacts exist+    -- beyond the specified limit, the @NextToken@ element is sent in the+    -- response. Use the @NextToken@ value in subsequent requests to retrieve+    -- additional contacts.+    pageSize :: Prelude.Maybe Prelude.Int,+    -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListContacts' 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'', 'listContacts_filter' - A filter that can be applied to a list of contacts.+--+-- 'nextToken', 'listContacts_nextToken' - A string token indicating that there might be additional contacts+-- available to be listed. Use the token provided in the Response to use in+-- the subsequent call to ListContacts with the same parameters to retrieve+-- the next page of contacts.+--+-- 'pageSize', 'listContacts_pageSize' - The number of contacts that may be returned at once, which is dependent+-- on if there are more or less contacts than the value of the PageSize.+-- Use this parameter to paginate results. If additional contacts exist+-- beyond the specified limit, the @NextToken@ element is sent in the+-- response. Use the @NextToken@ value in subsequent requests to retrieve+-- additional contacts.+--+-- 'contactListName', 'listContacts_contactListName' - The name of the contact list.+newListContacts ::+  -- | 'contactListName'+  Prelude.Text ->+  ListContacts+newListContacts pContactListName_ =+  ListContacts'+    { filter' = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing,+      contactListName = pContactListName_+    }++-- | A filter that can be applied to a list of contacts.+listContacts_filter :: Lens.Lens' ListContacts (Prelude.Maybe ListContactsFilter)+listContacts_filter = Lens.lens (\ListContacts' {filter'} -> filter') (\s@ListContacts' {} a -> s {filter' = a} :: ListContacts)++-- | A string token indicating that there might be additional contacts+-- available to be listed. Use the token provided in the Response to use in+-- the subsequent call to ListContacts with the same parameters to retrieve+-- the next page of contacts.+listContacts_nextToken :: Lens.Lens' ListContacts (Prelude.Maybe Prelude.Text)+listContacts_nextToken = Lens.lens (\ListContacts' {nextToken} -> nextToken) (\s@ListContacts' {} a -> s {nextToken = a} :: ListContacts)++-- | The number of contacts that may be returned at once, which is dependent+-- on if there are more or less contacts than the value of the PageSize.+-- Use this parameter to paginate results. If additional contacts exist+-- beyond the specified limit, the @NextToken@ element is sent in the+-- response. Use the @NextToken@ value in subsequent requests to retrieve+-- additional contacts.+listContacts_pageSize :: Lens.Lens' ListContacts (Prelude.Maybe Prelude.Int)+listContacts_pageSize = Lens.lens (\ListContacts' {pageSize} -> pageSize) (\s@ListContacts' {} a -> s {pageSize = a} :: ListContacts)++-- | The name of the contact list.+listContacts_contactListName :: Lens.Lens' ListContacts Prelude.Text+listContacts_contactListName = Lens.lens (\ListContacts' {contactListName} -> contactListName) (\s@ListContacts' {} a -> s {contactListName = a} :: ListContacts)++instance Core.AWSRequest ListContacts where+  type AWSResponse ListContacts = ListContactsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListContactsResponse'+            Prelude.<$> (x Data..?> "Contacts" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListContacts where+  hashWithSalt _salt ListContacts' {..} =+    _salt+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize+      `Prelude.hashWithSalt` contactListName++instance Prelude.NFData ListContacts where+  rnf ListContacts' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize+      `Prelude.seq` Prelude.rnf contactListName++instance Data.ToHeaders ListContacts where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListContacts where+  toPath ListContacts' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName,+        "/contacts"+      ]++instance Data.ToQuery ListContacts where+  toQuery ListContacts' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | /See:/ 'newListContactsResponse' smart constructor.+data ListContactsResponse = ListContactsResponse'+  { -- | The contacts present in a specific contact list.+    contacts :: Prelude.Maybe [Contact],+    -- | A string token indicating that there might be additional contacts+    -- available to be listed. Copy this token to a subsequent call to+    -- @ListContacts@ with the same parameters to retrieve the next page of+    -- contacts.+    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 'ListContactsResponse' 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:+--+-- 'contacts', 'listContactsResponse_contacts' - The contacts present in a specific contact list.+--+-- 'nextToken', 'listContactsResponse_nextToken' - A string token indicating that there might be additional contacts+-- available to be listed. Copy this token to a subsequent call to+-- @ListContacts@ with the same parameters to retrieve the next page of+-- contacts.+--+-- 'httpStatus', 'listContactsResponse_httpStatus' - The response's http status code.+newListContactsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListContactsResponse+newListContactsResponse pHttpStatus_ =+  ListContactsResponse'+    { contacts = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | The contacts present in a specific contact list.+listContactsResponse_contacts :: Lens.Lens' ListContactsResponse (Prelude.Maybe [Contact])+listContactsResponse_contacts = Lens.lens (\ListContactsResponse' {contacts} -> contacts) (\s@ListContactsResponse' {} a -> s {contacts = a} :: ListContactsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A string token indicating that there might be additional contacts+-- available to be listed. Copy this token to a subsequent call to+-- @ListContacts@ with the same parameters to retrieve the next page of+-- contacts.+listContactsResponse_nextToken :: Lens.Lens' ListContactsResponse (Prelude.Maybe Prelude.Text)+listContactsResponse_nextToken = Lens.lens (\ListContactsResponse' {nextToken} -> nextToken) (\s@ListContactsResponse' {} a -> s {nextToken = a} :: ListContactsResponse)++-- | The response's http status code.+listContactsResponse_httpStatus :: Lens.Lens' ListContactsResponse Prelude.Int+listContactsResponse_httpStatus = Lens.lens (\ListContactsResponse' {httpStatus} -> httpStatus) (\s@ListContactsResponse' {} a -> s {httpStatus = a} :: ListContactsResponse)++instance Prelude.NFData ListContactsResponse where+  rnf ListContactsResponse' {..} =+    Prelude.rnf contacts+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListCustomVerificationEmailTemplates.hs view
@@ -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.SESV2.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 Amazon Web Services Region.+--+-- For more information about custom verification email templates, see+-- <https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.ListCustomVerificationEmailTemplates+  ( -- * Creating a Request+    ListCustomVerificationEmailTemplates (..),+    newListCustomVerificationEmailTemplates,++    -- * Request Lenses+    listCustomVerificationEmailTemplates_nextToken,+    listCustomVerificationEmailTemplates_pageSize,++    -- * 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.SESV2.Types++-- | Represents a request to list the existing custom verification email+-- templates for your account.+--+-- /See:/ 'newListCustomVerificationEmailTemplates' smart constructor.+data ListCustomVerificationEmailTemplates = ListCustomVerificationEmailTemplates'+  { -- | A token returned from a previous call to+    -- @ListCustomVerificationEmailTemplates@ to indicate the position in the+    -- list of custom verification email templates.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @ListCustomVerificationEmailTemplates@. If the number of results is+    -- larger than the number you specified in this parameter, then the+    -- response includes a @NextToken@ element, which you can use to obtain+    -- additional results.+    --+    -- The value you specify has to be at least 1, and can be no more than 50.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  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:+--+-- 'nextToken', 'listCustomVerificationEmailTemplates_nextToken' - A token returned from a previous call to+-- @ListCustomVerificationEmailTemplates@ to indicate the position in the+-- list of custom verification email templates.+--+-- 'pageSize', 'listCustomVerificationEmailTemplates_pageSize' - The number of results to show in a single call to+-- @ListCustomVerificationEmailTemplates@. If the number of results is+-- larger than the number you specified in this parameter, then the+-- response includes a @NextToken@ element, which you can use to obtain+-- additional results.+--+-- The value you specify has to be at least 1, and can be no more than 50.+newListCustomVerificationEmailTemplates ::+  ListCustomVerificationEmailTemplates+newListCustomVerificationEmailTemplates =+  ListCustomVerificationEmailTemplates'+    { nextToken =+        Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to+-- @ListCustomVerificationEmailTemplates@ to indicate the position in the+-- list of custom verification email templates.+listCustomVerificationEmailTemplates_nextToken :: Lens.Lens' ListCustomVerificationEmailTemplates (Prelude.Maybe Prelude.Text)+listCustomVerificationEmailTemplates_nextToken = Lens.lens (\ListCustomVerificationEmailTemplates' {nextToken} -> nextToken) (\s@ListCustomVerificationEmailTemplates' {} a -> s {nextToken = a} :: ListCustomVerificationEmailTemplates)++-- | The number of results to show in a single call to+-- @ListCustomVerificationEmailTemplates@. If the number of results is+-- larger than the number you specified in this parameter, then the+-- response includes a @NextToken@ element, which you can use to obtain+-- additional results.+--+-- The value you specify has to be at least 1, and can be no more than 50.+listCustomVerificationEmailTemplates_pageSize :: Lens.Lens' ListCustomVerificationEmailTemplates (Prelude.Maybe Prelude.Int)+listCustomVerificationEmailTemplates_pageSize = Lens.lens (\ListCustomVerificationEmailTemplates' {pageSize} -> pageSize) (\s@ListCustomVerificationEmailTemplates' {} a -> s {pageSize = a} :: ListCustomVerificationEmailTemplates)++instance+  Core.AWSRequest+    ListCustomVerificationEmailTemplates+  where+  type+    AWSResponse ListCustomVerificationEmailTemplates =+      ListCustomVerificationEmailTemplatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListCustomVerificationEmailTemplatesResponse'+            Prelude.<$> ( x+                            Data..?> "CustomVerificationEmailTemplates"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    ListCustomVerificationEmailTemplates+  where+  hashWithSalt+    _salt+    ListCustomVerificationEmailTemplates' {..} =+      _salt+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` pageSize++instance+  Prelude.NFData+    ListCustomVerificationEmailTemplates+  where+  rnf ListCustomVerificationEmailTemplates' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance+  Data.ToHeaders+    ListCustomVerificationEmailTemplates+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    ListCustomVerificationEmailTemplates+  where+  toPath =+    Prelude.const+      "/v2/email/custom-verification-email-templates"++instance+  Data.ToQuery+    ListCustomVerificationEmailTemplates+  where+  toQuery ListCustomVerificationEmailTemplates' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | The following elements are returned by the service.+--+-- /See:/ 'newListCustomVerificationEmailTemplatesResponse' smart constructor.+data ListCustomVerificationEmailTemplatesResponse = ListCustomVerificationEmailTemplatesResponse'+  { -- | A list of the custom verification email templates that exist in your+    -- account.+    customVerificationEmailTemplates :: Prelude.Maybe [CustomVerificationEmailTemplateMetadata],+    -- | A token indicating that there are additional custom verification email+    -- templates available to be listed. Pass this token to a subsequent call+    -- to @ListCustomVerificationEmailTemplates@ 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 @ListCustomVerificationEmailTemplates@ 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 [CustomVerificationEmailTemplateMetadata])+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 @ListCustomVerificationEmailTemplates@ 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
+ gen/Amazonka/SESV2/ListDedicatedIpPools.hs view
@@ -0,0 +1,216 @@+{-# 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.SESV2.ListDedicatedIpPools+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- List all of the dedicated IP pools that exist in your Amazon Web+-- Services account in the current Region.+module Amazonka.SESV2.ListDedicatedIpPools+  ( -- * Creating a Request+    ListDedicatedIpPools (..),+    newListDedicatedIpPools,++    -- * Request Lenses+    listDedicatedIpPools_nextToken,+    listDedicatedIpPools_pageSize,++    -- * Destructuring the Response+    ListDedicatedIpPoolsResponse (..),+    newListDedicatedIpPoolsResponse,++    -- * Response Lenses+    listDedicatedIpPoolsResponse_dedicatedIpPools,+    listDedicatedIpPoolsResponse_nextToken,+    listDedicatedIpPoolsResponse_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.SESV2.Types++-- | A request to obtain a list of dedicated IP pools.+--+-- /See:/ 'newListDedicatedIpPools' smart constructor.+data ListDedicatedIpPools = ListDedicatedIpPools'+  { -- | A token returned from a previous call to @ListDedicatedIpPools@ to+    -- indicate the position in the list of dedicated IP pools.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @ListDedicatedIpPools@. If the number of results is larger than the+    -- number you specified in this parameter, then the response includes a+    -- @NextToken@ element, which you can use to obtain additional results.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDedicatedIpPools' 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', 'listDedicatedIpPools_nextToken' - A token returned from a previous call to @ListDedicatedIpPools@ to+-- indicate the position in the list of dedicated IP pools.+--+-- 'pageSize', 'listDedicatedIpPools_pageSize' - The number of results to show in a single call to+-- @ListDedicatedIpPools@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+newListDedicatedIpPools ::+  ListDedicatedIpPools+newListDedicatedIpPools =+  ListDedicatedIpPools'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to @ListDedicatedIpPools@ to+-- indicate the position in the list of dedicated IP pools.+listDedicatedIpPools_nextToken :: Lens.Lens' ListDedicatedIpPools (Prelude.Maybe Prelude.Text)+listDedicatedIpPools_nextToken = Lens.lens (\ListDedicatedIpPools' {nextToken} -> nextToken) (\s@ListDedicatedIpPools' {} a -> s {nextToken = a} :: ListDedicatedIpPools)++-- | The number of results to show in a single call to+-- @ListDedicatedIpPools@. If the number of results is larger than the+-- number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+listDedicatedIpPools_pageSize :: Lens.Lens' ListDedicatedIpPools (Prelude.Maybe Prelude.Int)+listDedicatedIpPools_pageSize = Lens.lens (\ListDedicatedIpPools' {pageSize} -> pageSize) (\s@ListDedicatedIpPools' {} a -> s {pageSize = a} :: ListDedicatedIpPools)++instance Core.AWSRequest ListDedicatedIpPools where+  type+    AWSResponse ListDedicatedIpPools =+      ListDedicatedIpPoolsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDedicatedIpPoolsResponse'+            Prelude.<$> ( x+                            Data..?> "DedicatedIpPools"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListDedicatedIpPools where+  hashWithSalt _salt ListDedicatedIpPools' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListDedicatedIpPools where+  rnf ListDedicatedIpPools' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListDedicatedIpPools where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListDedicatedIpPools where+  toPath = Prelude.const "/v2/email/dedicated-ip-pools"++instance Data.ToQuery ListDedicatedIpPools where+  toQuery ListDedicatedIpPools' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | A list of dedicated IP pools.+--+-- /See:/ 'newListDedicatedIpPoolsResponse' smart constructor.+data ListDedicatedIpPoolsResponse = ListDedicatedIpPoolsResponse'+  { -- | A list of all of the dedicated IP pools that are associated with your+    -- Amazon Web Services account in the current Region.+    dedicatedIpPools :: Prelude.Maybe [Prelude.Text],+    -- | A token that indicates that there are additional IP pools to list. To+    -- view additional IP pools, issue another request to+    -- @ListDedicatedIpPools@, passing this token in the @NextToken@ parameter.+    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 'ListDedicatedIpPoolsResponse' 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:+--+-- 'dedicatedIpPools', 'listDedicatedIpPoolsResponse_dedicatedIpPools' - A list of all of the dedicated IP pools that are associated with your+-- Amazon Web Services account in the current Region.+--+-- 'nextToken', 'listDedicatedIpPoolsResponse_nextToken' - A token that indicates that there are additional IP pools to list. To+-- view additional IP pools, issue another request to+-- @ListDedicatedIpPools@, passing this token in the @NextToken@ parameter.+--+-- 'httpStatus', 'listDedicatedIpPoolsResponse_httpStatus' - The response's http status code.+newListDedicatedIpPoolsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDedicatedIpPoolsResponse+newListDedicatedIpPoolsResponse pHttpStatus_ =+  ListDedicatedIpPoolsResponse'+    { dedicatedIpPools =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of all of the dedicated IP pools that are associated with your+-- Amazon Web Services account in the current Region.+listDedicatedIpPoolsResponse_dedicatedIpPools :: Lens.Lens' ListDedicatedIpPoolsResponse (Prelude.Maybe [Prelude.Text])+listDedicatedIpPoolsResponse_dedicatedIpPools = Lens.lens (\ListDedicatedIpPoolsResponse' {dedicatedIpPools} -> dedicatedIpPools) (\s@ListDedicatedIpPoolsResponse' {} a -> s {dedicatedIpPools = a} :: ListDedicatedIpPoolsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A token that indicates that there are additional IP pools to list. To+-- view additional IP pools, issue another request to+-- @ListDedicatedIpPools@, passing this token in the @NextToken@ parameter.+listDedicatedIpPoolsResponse_nextToken :: Lens.Lens' ListDedicatedIpPoolsResponse (Prelude.Maybe Prelude.Text)+listDedicatedIpPoolsResponse_nextToken = Lens.lens (\ListDedicatedIpPoolsResponse' {nextToken} -> nextToken) (\s@ListDedicatedIpPoolsResponse' {} a -> s {nextToken = a} :: ListDedicatedIpPoolsResponse)++-- | The response's http status code.+listDedicatedIpPoolsResponse_httpStatus :: Lens.Lens' ListDedicatedIpPoolsResponse Prelude.Int+listDedicatedIpPoolsResponse_httpStatus = Lens.lens (\ListDedicatedIpPoolsResponse' {httpStatus} -> httpStatus) (\s@ListDedicatedIpPoolsResponse' {} a -> s {httpStatus = a} :: ListDedicatedIpPoolsResponse)++instance Prelude.NFData ListDedicatedIpPoolsResponse where+  rnf ListDedicatedIpPoolsResponse' {..} =+    Prelude.rnf dedicatedIpPools+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListDeliverabilityTestReports.hs view
@@ -0,0 +1,248 @@+{-# 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.SESV2.ListDeliverabilityTestReports+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Show a list of the predictive inbox placement tests that you\'ve+-- performed, regardless of their statuses. For predictive inbox placement+-- tests that are complete, you can use the @GetDeliverabilityTestReport@+-- operation to view the results.+module Amazonka.SESV2.ListDeliverabilityTestReports+  ( -- * Creating a Request+    ListDeliverabilityTestReports (..),+    newListDeliverabilityTestReports,++    -- * Request Lenses+    listDeliverabilityTestReports_nextToken,+    listDeliverabilityTestReports_pageSize,++    -- * Destructuring the Response+    ListDeliverabilityTestReportsResponse (..),+    newListDeliverabilityTestReportsResponse,++    -- * Response Lenses+    listDeliverabilityTestReportsResponse_nextToken,+    listDeliverabilityTestReportsResponse_httpStatus,+    listDeliverabilityTestReportsResponse_deliverabilityTestReports,+  )+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.SESV2.Types++-- | A request to list all of the predictive inbox placement tests that+-- you\'ve performed.+--+-- /See:/ 'newListDeliverabilityTestReports' smart constructor.+data ListDeliverabilityTestReports = ListDeliverabilityTestReports'+  { -- | A token returned from a previous call to @ListDeliverabilityTestReports@+    -- to indicate the position in the list of predictive inbox placement+    -- tests.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @ListDeliverabilityTestReports@. If the number of results is larger than+    -- the number you specified in this parameter, then the response includes a+    -- @NextToken@ element, which you can use to obtain additional results.+    --+    -- The value you specify has to be at least 0, and can be no more than+    -- 1000.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDeliverabilityTestReports' 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', 'listDeliverabilityTestReports_nextToken' - A token returned from a previous call to @ListDeliverabilityTestReports@+-- to indicate the position in the list of predictive inbox placement+-- tests.+--+-- 'pageSize', 'listDeliverabilityTestReports_pageSize' - The number of results to show in a single call to+-- @ListDeliverabilityTestReports@. If the number of results is larger than+-- the number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+--+-- The value you specify has to be at least 0, and can be no more than+-- 1000.+newListDeliverabilityTestReports ::+  ListDeliverabilityTestReports+newListDeliverabilityTestReports =+  ListDeliverabilityTestReports'+    { nextToken =+        Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to @ListDeliverabilityTestReports@+-- to indicate the position in the list of predictive inbox placement+-- tests.+listDeliverabilityTestReports_nextToken :: Lens.Lens' ListDeliverabilityTestReports (Prelude.Maybe Prelude.Text)+listDeliverabilityTestReports_nextToken = Lens.lens (\ListDeliverabilityTestReports' {nextToken} -> nextToken) (\s@ListDeliverabilityTestReports' {} a -> s {nextToken = a} :: ListDeliverabilityTestReports)++-- | The number of results to show in a single call to+-- @ListDeliverabilityTestReports@. If the number of results is larger than+-- the number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+--+-- The value you specify has to be at least 0, and can be no more than+-- 1000.+listDeliverabilityTestReports_pageSize :: Lens.Lens' ListDeliverabilityTestReports (Prelude.Maybe Prelude.Int)+listDeliverabilityTestReports_pageSize = Lens.lens (\ListDeliverabilityTestReports' {pageSize} -> pageSize) (\s@ListDeliverabilityTestReports' {} a -> s {pageSize = a} :: ListDeliverabilityTestReports)++instance+  Core.AWSRequest+    ListDeliverabilityTestReports+  where+  type+    AWSResponse ListDeliverabilityTestReports =+      ListDeliverabilityTestReportsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDeliverabilityTestReportsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "DeliverabilityTestReports"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    ListDeliverabilityTestReports+  where+  hashWithSalt _salt ListDeliverabilityTestReports' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListDeliverabilityTestReports where+  rnf ListDeliverabilityTestReports' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListDeliverabilityTestReports where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListDeliverabilityTestReports where+  toPath =+    Prelude.const+      "/v2/email/deliverability-dashboard/test-reports"++instance Data.ToQuery ListDeliverabilityTestReports where+  toQuery ListDeliverabilityTestReports' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | A list of the predictive inbox placement test reports that are available+-- for your account, regardless of whether or not those tests are complete.+--+-- /See:/ 'newListDeliverabilityTestReportsResponse' smart constructor.+data ListDeliverabilityTestReportsResponse = ListDeliverabilityTestReportsResponse'+  { -- | A token that indicates that there are additional predictive inbox+    -- placement tests to list. To view additional predictive inbox placement+    -- tests, issue another request to @ListDeliverabilityTestReports@, and+    -- pass this token in the @NextToken@ parameter.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An object that contains a lists of predictive inbox placement tests that+    -- you\'ve performed.+    deliverabilityTestReports :: [DeliverabilityTestReport]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDeliverabilityTestReportsResponse' 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', 'listDeliverabilityTestReportsResponse_nextToken' - A token that indicates that there are additional predictive inbox+-- placement tests to list. To view additional predictive inbox placement+-- tests, issue another request to @ListDeliverabilityTestReports@, and+-- pass this token in the @NextToken@ parameter.+--+-- 'httpStatus', 'listDeliverabilityTestReportsResponse_httpStatus' - The response's http status code.+--+-- 'deliverabilityTestReports', 'listDeliverabilityTestReportsResponse_deliverabilityTestReports' - An object that contains a lists of predictive inbox placement tests that+-- you\'ve performed.+newListDeliverabilityTestReportsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDeliverabilityTestReportsResponse+newListDeliverabilityTestReportsResponse pHttpStatus_ =+  ListDeliverabilityTestReportsResponse'+    { nextToken =+        Prelude.Nothing,+      httpStatus = pHttpStatus_,+      deliverabilityTestReports =+        Prelude.mempty+    }++-- | A token that indicates that there are additional predictive inbox+-- placement tests to list. To view additional predictive inbox placement+-- tests, issue another request to @ListDeliverabilityTestReports@, and+-- pass this token in the @NextToken@ parameter.+listDeliverabilityTestReportsResponse_nextToken :: Lens.Lens' ListDeliverabilityTestReportsResponse (Prelude.Maybe Prelude.Text)+listDeliverabilityTestReportsResponse_nextToken = Lens.lens (\ListDeliverabilityTestReportsResponse' {nextToken} -> nextToken) (\s@ListDeliverabilityTestReportsResponse' {} a -> s {nextToken = a} :: ListDeliverabilityTestReportsResponse)++-- | The response's http status code.+listDeliverabilityTestReportsResponse_httpStatus :: Lens.Lens' ListDeliverabilityTestReportsResponse Prelude.Int+listDeliverabilityTestReportsResponse_httpStatus = Lens.lens (\ListDeliverabilityTestReportsResponse' {httpStatus} -> httpStatus) (\s@ListDeliverabilityTestReportsResponse' {} a -> s {httpStatus = a} :: ListDeliverabilityTestReportsResponse)++-- | An object that contains a lists of predictive inbox placement tests that+-- you\'ve performed.+listDeliverabilityTestReportsResponse_deliverabilityTestReports :: Lens.Lens' ListDeliverabilityTestReportsResponse [DeliverabilityTestReport]+listDeliverabilityTestReportsResponse_deliverabilityTestReports = Lens.lens (\ListDeliverabilityTestReportsResponse' {deliverabilityTestReports} -> deliverabilityTestReports) (\s@ListDeliverabilityTestReportsResponse' {} a -> s {deliverabilityTestReports = a} :: ListDeliverabilityTestReportsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListDeliverabilityTestReportsResponse+  where+  rnf ListDeliverabilityTestReportsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf deliverabilityTestReports
+ gen/Amazonka/SESV2/ListDomainDeliverabilityCampaigns.hs view
@@ -0,0 +1,314 @@+{-# 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.SESV2.ListDomainDeliverabilityCampaigns+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve deliverability data for all the campaigns that used a specific+-- domain to send email during a specified time range. This data is+-- available for a domain only if you enabled the Deliverability dashboard+-- for the domain.+module Amazonka.SESV2.ListDomainDeliverabilityCampaigns+  ( -- * Creating a Request+    ListDomainDeliverabilityCampaigns (..),+    newListDomainDeliverabilityCampaigns,++    -- * Request Lenses+    listDomainDeliverabilityCampaigns_nextToken,+    listDomainDeliverabilityCampaigns_pageSize,+    listDomainDeliverabilityCampaigns_startDate,+    listDomainDeliverabilityCampaigns_endDate,+    listDomainDeliverabilityCampaigns_subscribedDomain,++    -- * Destructuring the Response+    ListDomainDeliverabilityCampaignsResponse (..),+    newListDomainDeliverabilityCampaignsResponse,++    -- * Response Lenses+    listDomainDeliverabilityCampaignsResponse_nextToken,+    listDomainDeliverabilityCampaignsResponse_httpStatus,+    listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns,+  )+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.SESV2.Types++-- | Retrieve deliverability data for all the campaigns that used a specific+-- domain to send email during a specified time range. This data is+-- available for a domain only if you enabled the Deliverability dashboard.+--+-- /See:/ 'newListDomainDeliverabilityCampaigns' smart constructor.+data ListDomainDeliverabilityCampaigns = ListDomainDeliverabilityCampaigns'+  { -- | A token that’s returned from a previous call to the+    -- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+    -- position of a campaign in the list of campaigns.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The maximum number of results to include in response to a single call to+    -- the @ListDomainDeliverabilityCampaigns@ operation. If the number of+    -- results is larger than the number that you specify in this parameter,+    -- the response includes a @NextToken@ element, which you can use to obtain+    -- additional results.+    pageSize :: Prelude.Maybe Prelude.Int,+    -- | The first day that you want to obtain deliverability data for.+    startDate :: Data.POSIX,+    -- | The last day that you want to obtain deliverability data for. This value+    -- has to be less than or equal to 30 days after the value of the+    -- @StartDate@ parameter.+    endDate :: Data.POSIX,+    -- | The domain to obtain deliverability data for.+    subscribedDomain :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomainDeliverabilityCampaigns' 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', 'listDomainDeliverabilityCampaigns_nextToken' - A token that’s returned from a previous call to the+-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+-- position of a campaign in the list of campaigns.+--+-- 'pageSize', 'listDomainDeliverabilityCampaigns_pageSize' - The maximum number of results to include in response to a single call to+-- the @ListDomainDeliverabilityCampaigns@ operation. If the number of+-- results is larger than the number that you specify in this parameter,+-- the response includes a @NextToken@ element, which you can use to obtain+-- additional results.+--+-- 'startDate', 'listDomainDeliverabilityCampaigns_startDate' - The first day that you want to obtain deliverability data for.+--+-- 'endDate', 'listDomainDeliverabilityCampaigns_endDate' - The last day that you want to obtain deliverability data for. This value+-- has to be less than or equal to 30 days after the value of the+-- @StartDate@ parameter.+--+-- 'subscribedDomain', 'listDomainDeliverabilityCampaigns_subscribedDomain' - The domain to obtain deliverability data for.+newListDomainDeliverabilityCampaigns ::+  -- | 'startDate'+  Prelude.UTCTime ->+  -- | 'endDate'+  Prelude.UTCTime ->+  -- | 'subscribedDomain'+  Prelude.Text ->+  ListDomainDeliverabilityCampaigns+newListDomainDeliverabilityCampaigns+  pStartDate_+  pEndDate_+  pSubscribedDomain_ =+    ListDomainDeliverabilityCampaigns'+      { nextToken =+          Prelude.Nothing,+        pageSize = Prelude.Nothing,+        startDate =+          Data._Time Lens.# pStartDate_,+        endDate = Data._Time Lens.# pEndDate_,+        subscribedDomain = pSubscribedDomain_+      }++-- | A token that’s returned from a previous call to the+-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+-- position of a campaign in the list of campaigns.+listDomainDeliverabilityCampaigns_nextToken :: Lens.Lens' ListDomainDeliverabilityCampaigns (Prelude.Maybe Prelude.Text)+listDomainDeliverabilityCampaigns_nextToken = Lens.lens (\ListDomainDeliverabilityCampaigns' {nextToken} -> nextToken) (\s@ListDomainDeliverabilityCampaigns' {} a -> s {nextToken = a} :: ListDomainDeliverabilityCampaigns)++-- | The maximum number of results to include in response to a single call to+-- the @ListDomainDeliverabilityCampaigns@ operation. If the number of+-- results is larger than the number that you specify in this parameter,+-- the response includes a @NextToken@ element, which you can use to obtain+-- additional results.+listDomainDeliverabilityCampaigns_pageSize :: Lens.Lens' ListDomainDeliverabilityCampaigns (Prelude.Maybe Prelude.Int)+listDomainDeliverabilityCampaigns_pageSize = Lens.lens (\ListDomainDeliverabilityCampaigns' {pageSize} -> pageSize) (\s@ListDomainDeliverabilityCampaigns' {} a -> s {pageSize = a} :: ListDomainDeliverabilityCampaigns)++-- | The first day that you want to obtain deliverability data for.+listDomainDeliverabilityCampaigns_startDate :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.UTCTime+listDomainDeliverabilityCampaigns_startDate = Lens.lens (\ListDomainDeliverabilityCampaigns' {startDate} -> startDate) (\s@ListDomainDeliverabilityCampaigns' {} a -> s {startDate = a} :: ListDomainDeliverabilityCampaigns) Prelude.. Data._Time++-- | The last day that you want to obtain deliverability data for. This value+-- has to be less than or equal to 30 days after the value of the+-- @StartDate@ parameter.+listDomainDeliverabilityCampaigns_endDate :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.UTCTime+listDomainDeliverabilityCampaigns_endDate = Lens.lens (\ListDomainDeliverabilityCampaigns' {endDate} -> endDate) (\s@ListDomainDeliverabilityCampaigns' {} a -> s {endDate = a} :: ListDomainDeliverabilityCampaigns) Prelude.. Data._Time++-- | The domain to obtain deliverability data for.+listDomainDeliverabilityCampaigns_subscribedDomain :: Lens.Lens' ListDomainDeliverabilityCampaigns Prelude.Text+listDomainDeliverabilityCampaigns_subscribedDomain = Lens.lens (\ListDomainDeliverabilityCampaigns' {subscribedDomain} -> subscribedDomain) (\s@ListDomainDeliverabilityCampaigns' {} a -> s {subscribedDomain = a} :: ListDomainDeliverabilityCampaigns)++instance+  Core.AWSRequest+    ListDomainDeliverabilityCampaigns+  where+  type+    AWSResponse ListDomainDeliverabilityCampaigns =+      ListDomainDeliverabilityCampaignsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListDomainDeliverabilityCampaignsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "DomainDeliverabilityCampaigns"+                            Core..!@ Prelude.mempty+                        )+      )++instance+  Prelude.Hashable+    ListDomainDeliverabilityCampaigns+  where+  hashWithSalt+    _salt+    ListDomainDeliverabilityCampaigns' {..} =+      _salt+        `Prelude.hashWithSalt` nextToken+        `Prelude.hashWithSalt` pageSize+        `Prelude.hashWithSalt` startDate+        `Prelude.hashWithSalt` endDate+        `Prelude.hashWithSalt` subscribedDomain++instance+  Prelude.NFData+    ListDomainDeliverabilityCampaigns+  where+  rnf ListDomainDeliverabilityCampaigns' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf endDate+      `Prelude.seq` Prelude.rnf subscribedDomain++instance+  Data.ToHeaders+    ListDomainDeliverabilityCampaigns+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToPath+    ListDomainDeliverabilityCampaigns+  where+  toPath ListDomainDeliverabilityCampaigns' {..} =+    Prelude.mconcat+      [ "/v2/email/deliverability-dashboard/domains/",+        Data.toBS subscribedDomain,+        "/campaigns"+      ]++instance+  Data.ToQuery+    ListDomainDeliverabilityCampaigns+  where+  toQuery ListDomainDeliverabilityCampaigns' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize,+        "StartDate" Data.=: startDate,+        "EndDate" Data.=: endDate+      ]++-- | An array of objects that provide deliverability data for all the+-- campaigns that used a specific domain to send email during a specified+-- time range. This data is available for a domain only if you enabled the+-- Deliverability dashboard for the domain.+--+-- /See:/ 'newListDomainDeliverabilityCampaignsResponse' smart constructor.+data ListDomainDeliverabilityCampaignsResponse = ListDomainDeliverabilityCampaignsResponse'+  { -- | A token that’s returned from a previous call to the+    -- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+    -- position of the campaign in the list of campaigns.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An array of responses, one for each campaign that used the domain to+    -- send email during the specified time range.+    domainDeliverabilityCampaigns :: [DomainDeliverabilityCampaign]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListDomainDeliverabilityCampaignsResponse' 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', 'listDomainDeliverabilityCampaignsResponse_nextToken' - A token that’s returned from a previous call to the+-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+-- position of the campaign in the list of campaigns.+--+-- 'httpStatus', 'listDomainDeliverabilityCampaignsResponse_httpStatus' - The response's http status code.+--+-- 'domainDeliverabilityCampaigns', 'listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns' - An array of responses, one for each campaign that used the domain to+-- send email during the specified time range.+newListDomainDeliverabilityCampaignsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListDomainDeliverabilityCampaignsResponse+newListDomainDeliverabilityCampaignsResponse+  pHttpStatus_ =+    ListDomainDeliverabilityCampaignsResponse'+      { nextToken =+          Prelude.Nothing,+        httpStatus = pHttpStatus_,+        domainDeliverabilityCampaigns =+          Prelude.mempty+      }++-- | A token that’s returned from a previous call to the+-- @ListDomainDeliverabilityCampaigns@ operation. This token indicates the+-- position of the campaign in the list of campaigns.+listDomainDeliverabilityCampaignsResponse_nextToken :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse (Prelude.Maybe Prelude.Text)+listDomainDeliverabilityCampaignsResponse_nextToken = Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {nextToken} -> nextToken) (\s@ListDomainDeliverabilityCampaignsResponse' {} a -> s {nextToken = a} :: ListDomainDeliverabilityCampaignsResponse)++-- | The response's http status code.+listDomainDeliverabilityCampaignsResponse_httpStatus :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse Prelude.Int+listDomainDeliverabilityCampaignsResponse_httpStatus = Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {httpStatus} -> httpStatus) (\s@ListDomainDeliverabilityCampaignsResponse' {} a -> s {httpStatus = a} :: ListDomainDeliverabilityCampaignsResponse)++-- | An array of responses, one for each campaign that used the domain to+-- send email during the specified time range.+listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns :: Lens.Lens' ListDomainDeliverabilityCampaignsResponse [DomainDeliverabilityCampaign]+listDomainDeliverabilityCampaignsResponse_domainDeliverabilityCampaigns = Lens.lens (\ListDomainDeliverabilityCampaignsResponse' {domainDeliverabilityCampaigns} -> domainDeliverabilityCampaigns) (\s@ListDomainDeliverabilityCampaignsResponse' {} a -> s {domainDeliverabilityCampaigns = a} :: ListDomainDeliverabilityCampaignsResponse) Prelude.. Lens.coerced++instance+  Prelude.NFData+    ListDomainDeliverabilityCampaignsResponse+  where+  rnf ListDomainDeliverabilityCampaignsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf domainDeliverabilityCampaigns
+ gen/Amazonka/SESV2/ListEmailIdentities.hs view
@@ -0,0 +1,233 @@+{-# 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.SESV2.ListEmailIdentities+-- 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 all of the email identities that are associated with+-- your Amazon Web Services account. An identity can be either an email+-- address or a domain. This operation returns identities that are verified+-- as well as those that aren\'t. This operation returns identities that+-- are associated with Amazon SES and Amazon Pinpoint.+module Amazonka.SESV2.ListEmailIdentities+  ( -- * Creating a Request+    ListEmailIdentities (..),+    newListEmailIdentities,++    -- * Request Lenses+    listEmailIdentities_nextToken,+    listEmailIdentities_pageSize,++    -- * Destructuring the Response+    ListEmailIdentitiesResponse (..),+    newListEmailIdentitiesResponse,++    -- * Response Lenses+    listEmailIdentitiesResponse_emailIdentities,+    listEmailIdentitiesResponse_nextToken,+    listEmailIdentitiesResponse_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.SESV2.Types++-- | A request to list all of the email identities associated with your+-- Amazon Web Services account. This list includes identities that you\'ve+-- already verified, identities that are unverified, and identities that+-- were verified in the past, but are no longer verified.+--+-- /See:/ 'newListEmailIdentities' smart constructor.+data ListEmailIdentities = ListEmailIdentities'+  { -- | A token returned from a previous call to @ListEmailIdentities@ to+    -- indicate the position in the list of identities.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to @ListEmailIdentities@.+    -- If the number of results is larger than the number you specified in this+    -- parameter, then the response includes a @NextToken@ element, which you+    -- can use to obtain additional results.+    --+    -- The value you specify has to be at least 0, and can be no more than+    -- 1000.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEmailIdentities' 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', 'listEmailIdentities_nextToken' - A token returned from a previous call to @ListEmailIdentities@ to+-- indicate the position in the list of identities.+--+-- 'pageSize', 'listEmailIdentities_pageSize' - The number of results to show in a single call to @ListEmailIdentities@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 0, and can be no more than+-- 1000.+newListEmailIdentities ::+  ListEmailIdentities+newListEmailIdentities =+  ListEmailIdentities'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to @ListEmailIdentities@ to+-- indicate the position in the list of identities.+listEmailIdentities_nextToken :: Lens.Lens' ListEmailIdentities (Prelude.Maybe Prelude.Text)+listEmailIdentities_nextToken = Lens.lens (\ListEmailIdentities' {nextToken} -> nextToken) (\s@ListEmailIdentities' {} a -> s {nextToken = a} :: ListEmailIdentities)++-- | The number of results to show in a single call to @ListEmailIdentities@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 0, and can be no more than+-- 1000.+listEmailIdentities_pageSize :: Lens.Lens' ListEmailIdentities (Prelude.Maybe Prelude.Int)+listEmailIdentities_pageSize = Lens.lens (\ListEmailIdentities' {pageSize} -> pageSize) (\s@ListEmailIdentities' {} a -> s {pageSize = a} :: ListEmailIdentities)++instance Core.AWSRequest ListEmailIdentities where+  type+    AWSResponse ListEmailIdentities =+      ListEmailIdentitiesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListEmailIdentitiesResponse'+            Prelude.<$> ( x+                            Data..?> "EmailIdentities"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListEmailIdentities where+  hashWithSalt _salt ListEmailIdentities' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListEmailIdentities where+  rnf ListEmailIdentities' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListEmailIdentities where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListEmailIdentities where+  toPath = Prelude.const "/v2/email/identities"++instance Data.ToQuery ListEmailIdentities where+  toQuery ListEmailIdentities' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | A list of all of the identities that you\'ve attempted to verify,+-- regardless of whether or not those identities were successfully+-- verified.+--+-- /See:/ 'newListEmailIdentitiesResponse' smart constructor.+data ListEmailIdentitiesResponse = ListEmailIdentitiesResponse'+  { -- | An array that includes all of the email identities associated with your+    -- Amazon Web Services account.+    emailIdentities :: Prelude.Maybe [IdentityInfo],+    -- | A token that indicates that there are additional configuration sets to+    -- list. To view additional configuration sets, issue another request to+    -- @ListEmailIdentities@, and pass this token in the @NextToken@ parameter.+    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 'ListEmailIdentitiesResponse' 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:+--+-- 'emailIdentities', 'listEmailIdentitiesResponse_emailIdentities' - An array that includes all of the email identities associated with your+-- Amazon Web Services account.+--+-- 'nextToken', 'listEmailIdentitiesResponse_nextToken' - A token that indicates that there are additional configuration sets to+-- list. To view additional configuration sets, issue another request to+-- @ListEmailIdentities@, and pass this token in the @NextToken@ parameter.+--+-- 'httpStatus', 'listEmailIdentitiesResponse_httpStatus' - The response's http status code.+newListEmailIdentitiesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListEmailIdentitiesResponse+newListEmailIdentitiesResponse pHttpStatus_ =+  ListEmailIdentitiesResponse'+    { emailIdentities =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An array that includes all of the email identities associated with your+-- Amazon Web Services account.+listEmailIdentitiesResponse_emailIdentities :: Lens.Lens' ListEmailIdentitiesResponse (Prelude.Maybe [IdentityInfo])+listEmailIdentitiesResponse_emailIdentities = Lens.lens (\ListEmailIdentitiesResponse' {emailIdentities} -> emailIdentities) (\s@ListEmailIdentitiesResponse' {} a -> s {emailIdentities = a} :: ListEmailIdentitiesResponse) Prelude.. Lens.mapping Lens.coerced++-- | A token that indicates that there are additional configuration sets to+-- list. To view additional configuration sets, issue another request to+-- @ListEmailIdentities@, and pass this token in the @NextToken@ parameter.+listEmailIdentitiesResponse_nextToken :: Lens.Lens' ListEmailIdentitiesResponse (Prelude.Maybe Prelude.Text)+listEmailIdentitiesResponse_nextToken = Lens.lens (\ListEmailIdentitiesResponse' {nextToken} -> nextToken) (\s@ListEmailIdentitiesResponse' {} a -> s {nextToken = a} :: ListEmailIdentitiesResponse)++-- | The response's http status code.+listEmailIdentitiesResponse_httpStatus :: Lens.Lens' ListEmailIdentitiesResponse Prelude.Int+listEmailIdentitiesResponse_httpStatus = Lens.lens (\ListEmailIdentitiesResponse' {httpStatus} -> httpStatus) (\s@ListEmailIdentitiesResponse' {} a -> s {httpStatus = a} :: ListEmailIdentitiesResponse)++instance Prelude.NFData ListEmailIdentitiesResponse where+  rnf ListEmailIdentitiesResponse' {..} =+    Prelude.rnf emailIdentities+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListEmailTemplates.hs view
@@ -0,0 +1,227 @@+{-# 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.SESV2.ListEmailTemplates+-- 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 Amazon Web Services Region.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.ListEmailTemplates+  ( -- * Creating a Request+    ListEmailTemplates (..),+    newListEmailTemplates,++    -- * Request Lenses+    listEmailTemplates_nextToken,+    listEmailTemplates_pageSize,++    -- * Destructuring the Response+    ListEmailTemplatesResponse (..),+    newListEmailTemplatesResponse,++    -- * Response Lenses+    listEmailTemplatesResponse_nextToken,+    listEmailTemplatesResponse_templatesMetadata,+    listEmailTemplatesResponse_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.SESV2.Types++-- | Represents a request to list the email templates present in your Amazon+-- SES account in the current Amazon Web Services Region. For more+-- information, see the+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-personalized-email-api.html Amazon SES Developer Guide>.+--+-- /See:/ 'newListEmailTemplates' smart constructor.+data ListEmailTemplates = ListEmailTemplates'+  { -- | A token returned from a previous call to @ListEmailTemplates@ to+    -- indicate the position in the list of email templates.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to @ListEmailTemplates@.+    -- If the number of results is larger than the number you specified in this+    -- parameter, then the response includes a @NextToken@ element, which you+    -- can use to obtain additional results.+    --+    -- The value you specify has to be at least 1, and can be no more than 10.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEmailTemplates' 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', 'listEmailTemplates_nextToken' - A token returned from a previous call to @ListEmailTemplates@ to+-- indicate the position in the list of email templates.+--+-- 'pageSize', 'listEmailTemplates_pageSize' - The number of results to show in a single call to @ListEmailTemplates@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 1, and can be no more than 10.+newListEmailTemplates ::+  ListEmailTemplates+newListEmailTemplates =+  ListEmailTemplates'+    { nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | A token returned from a previous call to @ListEmailTemplates@ to+-- indicate the position in the list of email templates.+listEmailTemplates_nextToken :: Lens.Lens' ListEmailTemplates (Prelude.Maybe Prelude.Text)+listEmailTemplates_nextToken = Lens.lens (\ListEmailTemplates' {nextToken} -> nextToken) (\s@ListEmailTemplates' {} a -> s {nextToken = a} :: ListEmailTemplates)++-- | The number of results to show in a single call to @ListEmailTemplates@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 1, and can be no more than 10.+listEmailTemplates_pageSize :: Lens.Lens' ListEmailTemplates (Prelude.Maybe Prelude.Int)+listEmailTemplates_pageSize = Lens.lens (\ListEmailTemplates' {pageSize} -> pageSize) (\s@ListEmailTemplates' {} a -> s {pageSize = a} :: ListEmailTemplates)++instance Core.AWSRequest ListEmailTemplates where+  type+    AWSResponse ListEmailTemplates =+      ListEmailTemplatesResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListEmailTemplatesResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "TemplatesMetadata"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListEmailTemplates where+  hashWithSalt _salt ListEmailTemplates' {..} =+    _salt+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListEmailTemplates where+  rnf ListEmailTemplates' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListEmailTemplates where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListEmailTemplates where+  toPath = Prelude.const "/v2/email/templates"++instance Data.ToQuery ListEmailTemplates where+  toQuery ListEmailTemplates' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | The following elements are returned by the service.+--+-- /See:/ 'newListEmailTemplatesResponse' smart constructor.+data ListEmailTemplatesResponse = ListEmailTemplatesResponse'+  { -- | A token indicating that there are additional email templates available+    -- to be listed. Pass this token to a subsequent @ListEmailTemplates@ call+    -- to retrieve the next 10 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 [EmailTemplateMetadata],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListEmailTemplatesResponse' 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', 'listEmailTemplatesResponse_nextToken' - A token indicating that there are additional email templates available+-- to be listed. Pass this token to a subsequent @ListEmailTemplates@ call+-- to retrieve the next 10 email templates.+--+-- 'templatesMetadata', 'listEmailTemplatesResponse_templatesMetadata' - An array the contains the name and creation time stamp for each template+-- in your Amazon SES account.+--+-- 'httpStatus', 'listEmailTemplatesResponse_httpStatus' - The response's http status code.+newListEmailTemplatesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListEmailTemplatesResponse+newListEmailTemplatesResponse pHttpStatus_ =+  ListEmailTemplatesResponse'+    { 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 @ListEmailTemplates@ call+-- to retrieve the next 10 email templates.+listEmailTemplatesResponse_nextToken :: Lens.Lens' ListEmailTemplatesResponse (Prelude.Maybe Prelude.Text)+listEmailTemplatesResponse_nextToken = Lens.lens (\ListEmailTemplatesResponse' {nextToken} -> nextToken) (\s@ListEmailTemplatesResponse' {} a -> s {nextToken = a} :: ListEmailTemplatesResponse)++-- | An array the contains the name and creation time stamp for each template+-- in your Amazon SES account.+listEmailTemplatesResponse_templatesMetadata :: Lens.Lens' ListEmailTemplatesResponse (Prelude.Maybe [EmailTemplateMetadata])+listEmailTemplatesResponse_templatesMetadata = Lens.lens (\ListEmailTemplatesResponse' {templatesMetadata} -> templatesMetadata) (\s@ListEmailTemplatesResponse' {} a -> s {templatesMetadata = a} :: ListEmailTemplatesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listEmailTemplatesResponse_httpStatus :: Lens.Lens' ListEmailTemplatesResponse Prelude.Int+listEmailTemplatesResponse_httpStatus = Lens.lens (\ListEmailTemplatesResponse' {httpStatus} -> httpStatus) (\s@ListEmailTemplatesResponse' {} a -> s {httpStatus = a} :: ListEmailTemplatesResponse)++instance Prelude.NFData ListEmailTemplatesResponse where+  rnf ListEmailTemplatesResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf templatesMetadata+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListImportJobs.hs view
@@ -0,0 +1,239 @@+{-# 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.SESV2.ListImportJobs+-- 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 all of the import jobs.+module Amazonka.SESV2.ListImportJobs+  ( -- * Creating a Request+    ListImportJobs (..),+    newListImportJobs,++    -- * Request Lenses+    listImportJobs_importDestinationType,+    listImportJobs_nextToken,+    listImportJobs_pageSize,++    -- * Destructuring the Response+    ListImportJobsResponse (..),+    newListImportJobsResponse,++    -- * Response Lenses+    listImportJobsResponse_importJobs,+    listImportJobsResponse_nextToken,+    listImportJobsResponse_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.SESV2.Types++-- | Represents a request to list all of the import jobs for a data+-- destination within the specified maximum number of import jobs.+--+-- /See:/ 'newListImportJobs' smart constructor.+data ListImportJobs = ListImportJobs'+  { -- | The destination of the import job, which can be used to list import jobs+    -- that have a certain @ImportDestinationType@.+    importDestinationType :: Prelude.Maybe ImportDestinationType,+    -- | A string token indicating that there might be additional import jobs+    -- available to be listed. Copy this token to a subsequent call to+    -- @ListImportJobs@ with the same parameters to retrieve the next page of+    -- import jobs.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | Maximum number of import jobs to return at once. Use this parameter to+    -- paginate results. If additional import jobs exist beyond the specified+    -- limit, the @NextToken@ element is sent in the response. Use the+    -- @NextToken@ value in subsequent requests to retrieve additional+    -- addresses.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListImportJobs' 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:+--+-- 'importDestinationType', 'listImportJobs_importDestinationType' - The destination of the import job, which can be used to list import jobs+-- that have a certain @ImportDestinationType@.+--+-- 'nextToken', 'listImportJobs_nextToken' - A string token indicating that there might be additional import jobs+-- available to be listed. Copy this token to a subsequent call to+-- @ListImportJobs@ with the same parameters to retrieve the next page of+-- import jobs.+--+-- 'pageSize', 'listImportJobs_pageSize' - Maximum number of import jobs to return at once. Use this parameter to+-- paginate results. If additional import jobs exist beyond the specified+-- limit, the @NextToken@ element is sent in the response. Use the+-- @NextToken@ value in subsequent requests to retrieve additional+-- addresses.+newListImportJobs ::+  ListImportJobs+newListImportJobs =+  ListImportJobs'+    { importDestinationType =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | The destination of the import job, which can be used to list import jobs+-- that have a certain @ImportDestinationType@.+listImportJobs_importDestinationType :: Lens.Lens' ListImportJobs (Prelude.Maybe ImportDestinationType)+listImportJobs_importDestinationType = Lens.lens (\ListImportJobs' {importDestinationType} -> importDestinationType) (\s@ListImportJobs' {} a -> s {importDestinationType = a} :: ListImportJobs)++-- | A string token indicating that there might be additional import jobs+-- available to be listed. Copy this token to a subsequent call to+-- @ListImportJobs@ with the same parameters to retrieve the next page of+-- import jobs.+listImportJobs_nextToken :: Lens.Lens' ListImportJobs (Prelude.Maybe Prelude.Text)+listImportJobs_nextToken = Lens.lens (\ListImportJobs' {nextToken} -> nextToken) (\s@ListImportJobs' {} a -> s {nextToken = a} :: ListImportJobs)++-- | Maximum number of import jobs to return at once. Use this parameter to+-- paginate results. If additional import jobs exist beyond the specified+-- limit, the @NextToken@ element is sent in the response. Use the+-- @NextToken@ value in subsequent requests to retrieve additional+-- addresses.+listImportJobs_pageSize :: Lens.Lens' ListImportJobs (Prelude.Maybe Prelude.Int)+listImportJobs_pageSize = Lens.lens (\ListImportJobs' {pageSize} -> pageSize) (\s@ListImportJobs' {} a -> s {pageSize = a} :: ListImportJobs)++instance Core.AWSRequest ListImportJobs where+  type+    AWSResponse ListImportJobs =+      ListImportJobsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListImportJobsResponse'+            Prelude.<$> (x Data..?> "ImportJobs" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "NextToken")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListImportJobs where+  hashWithSalt _salt ListImportJobs' {..} =+    _salt+      `Prelude.hashWithSalt` importDestinationType+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListImportJobs where+  rnf ListImportJobs' {..} =+    Prelude.rnf importDestinationType+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListImportJobs where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListImportJobs where+  toPath = Prelude.const "/v2/email/import-jobs"++instance Data.ToQuery ListImportJobs where+  toQuery ListImportJobs' {..} =+    Prelude.mconcat+      [ "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize+      ]++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newListImportJobsResponse' smart constructor.+data ListImportJobsResponse = ListImportJobsResponse'+  { -- | A list of the import job summaries.+    importJobs :: Prelude.Maybe [ImportJobSummary],+    -- | A string token indicating that there might be additional import jobs+    -- available to be listed. Copy this token to a subsequent call to+    -- @ListImportJobs@ with the same parameters to retrieve the next page of+    -- import jobs.+    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 'ListImportJobsResponse' 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:+--+-- 'importJobs', 'listImportJobsResponse_importJobs' - A list of the import job summaries.+--+-- 'nextToken', 'listImportJobsResponse_nextToken' - A string token indicating that there might be additional import jobs+-- available to be listed. Copy this token to a subsequent call to+-- @ListImportJobs@ with the same parameters to retrieve the next page of+-- import jobs.+--+-- 'httpStatus', 'listImportJobsResponse_httpStatus' - The response's http status code.+newListImportJobsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListImportJobsResponse+newListImportJobsResponse pHttpStatus_ =+  ListImportJobsResponse'+    { importJobs =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A list of the import job summaries.+listImportJobsResponse_importJobs :: Lens.Lens' ListImportJobsResponse (Prelude.Maybe [ImportJobSummary])+listImportJobsResponse_importJobs = Lens.lens (\ListImportJobsResponse' {importJobs} -> importJobs) (\s@ListImportJobsResponse' {} a -> s {importJobs = a} :: ListImportJobsResponse) Prelude.. Lens.mapping Lens.coerced++-- | A string token indicating that there might be additional import jobs+-- available to be listed. Copy this token to a subsequent call to+-- @ListImportJobs@ with the same parameters to retrieve the next page of+-- import jobs.+listImportJobsResponse_nextToken :: Lens.Lens' ListImportJobsResponse (Prelude.Maybe Prelude.Text)+listImportJobsResponse_nextToken = Lens.lens (\ListImportJobsResponse' {nextToken} -> nextToken) (\s@ListImportJobsResponse' {} a -> s {nextToken = a} :: ListImportJobsResponse)++-- | The response's http status code.+listImportJobsResponse_httpStatus :: Lens.Lens' ListImportJobsResponse Prelude.Int+listImportJobsResponse_httpStatus = Lens.lens (\ListImportJobsResponse' {httpStatus} -> httpStatus) (\s@ListImportJobsResponse' {} a -> s {httpStatus = a} :: ListImportJobsResponse)++instance Prelude.NFData ListImportJobsResponse where+  rnf ListImportJobsResponse' {..} =+    Prelude.rnf importJobs+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListRecommendations.hs view
@@ -0,0 +1,254 @@+{-# 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.SESV2.ListRecommendations+-- 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 recommendations present in your Amazon SES account in the+-- current Amazon Web Services Region.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.ListRecommendations+  ( -- * Creating a Request+    ListRecommendations (..),+    newListRecommendations,++    -- * Request Lenses+    listRecommendations_filter,+    listRecommendations_nextToken,+    listRecommendations_pageSize,++    -- * Destructuring the Response+    ListRecommendationsResponse (..),+    newListRecommendationsResponse,++    -- * Response Lenses+    listRecommendationsResponse_nextToken,+    listRecommendationsResponse_recommendations,+    listRecommendationsResponse_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.SESV2.Types++-- | Represents a request to list the existing recommendations for your+-- account.+--+-- /See:/ 'newListRecommendations' smart constructor.+data ListRecommendations = ListRecommendations'+  { -- | Filters applied when retrieving recommendations. Can eiter be an+    -- individual filter, or combinations of @STATUS@ and @IMPACT@ or @STATUS@+    -- and @TYPE@+    filter' :: Prelude.Maybe (Prelude.HashMap ListRecommendationsFilterKey Prelude.Text),+    -- | A token returned from a previous call to @ListRecommendations@ to+    -- indicate the position in the list of recommendations.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to @ListRecommendations@.+    -- If the number of results is larger than the number you specified in this+    -- parameter, then the response includes a @NextToken@ element, which you+    -- can use to obtain additional results.+    --+    -- The value you specify has to be at least 1, and can be no more than 100.+    pageSize :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecommendations' 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'', 'listRecommendations_filter' - Filters applied when retrieving recommendations. Can eiter be an+-- individual filter, or combinations of @STATUS@ and @IMPACT@ or @STATUS@+-- and @TYPE@+--+-- 'nextToken', 'listRecommendations_nextToken' - A token returned from a previous call to @ListRecommendations@ to+-- indicate the position in the list of recommendations.+--+-- 'pageSize', 'listRecommendations_pageSize' - The number of results to show in a single call to @ListRecommendations@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 1, and can be no more than 100.+newListRecommendations ::+  ListRecommendations+newListRecommendations =+  ListRecommendations'+    { filter' = Prelude.Nothing,+      nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing+    }++-- | Filters applied when retrieving recommendations. Can eiter be an+-- individual filter, or combinations of @STATUS@ and @IMPACT@ or @STATUS@+-- and @TYPE@+listRecommendations_filter :: Lens.Lens' ListRecommendations (Prelude.Maybe (Prelude.HashMap ListRecommendationsFilterKey Prelude.Text))+listRecommendations_filter = Lens.lens (\ListRecommendations' {filter'} -> filter') (\s@ListRecommendations' {} a -> s {filter' = a} :: ListRecommendations) Prelude.. Lens.mapping Lens.coerced++-- | A token returned from a previous call to @ListRecommendations@ to+-- indicate the position in the list of recommendations.+listRecommendations_nextToken :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Text)+listRecommendations_nextToken = Lens.lens (\ListRecommendations' {nextToken} -> nextToken) (\s@ListRecommendations' {} a -> s {nextToken = a} :: ListRecommendations)++-- | The number of results to show in a single call to @ListRecommendations@.+-- If the number of results is larger than the number you specified in this+-- parameter, then the response includes a @NextToken@ element, which you+-- can use to obtain additional results.+--+-- The value you specify has to be at least 1, and can be no more than 100.+listRecommendations_pageSize :: Lens.Lens' ListRecommendations (Prelude.Maybe Prelude.Int)+listRecommendations_pageSize = Lens.lens (\ListRecommendations' {pageSize} -> pageSize) (\s@ListRecommendations' {} a -> s {pageSize = a} :: ListRecommendations)++instance Core.AWSRequest ListRecommendations where+  type+    AWSResponse ListRecommendations =+      ListRecommendationsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListRecommendationsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "Recommendations"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListRecommendations where+  hashWithSalt _salt ListRecommendations' {..} =+    _salt+      `Prelude.hashWithSalt` filter'+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize++instance Prelude.NFData ListRecommendations where+  rnf ListRecommendations' {..} =+    Prelude.rnf filter'+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize++instance Data.ToHeaders ListRecommendations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON ListRecommendations where+  toJSON ListRecommendations' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Filter" Data..=) Prelude.<$> filter',+            ("NextToken" Data..=) Prelude.<$> nextToken,+            ("PageSize" Data..=) Prelude.<$> pageSize+          ]+      )++instance Data.ToPath ListRecommendations where+  toPath =+    Prelude.const "/v2/email/vdm/recommendations"++instance Data.ToQuery ListRecommendations where+  toQuery = Prelude.const Prelude.mempty++-- | Contains the response to your request to retrieve the list of+-- recommendations for your account.+--+-- /See:/ 'newListRecommendationsResponse' smart constructor.+data ListRecommendationsResponse = ListRecommendationsResponse'+  { -- | A string token indicating that there might be additional recommendations+    -- available to be listed. Use the token provided in the+    -- @ListRecommendationsResponse@ to use in the subsequent call to+    -- @ListRecommendations@ with the same parameters to retrieve the next page+    -- of recommendations.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The recommendations applicable to your account.+    recommendations :: Prelude.Maybe [Recommendation],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListRecommendationsResponse' 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', 'listRecommendationsResponse_nextToken' - A string token indicating that there might be additional recommendations+-- available to be listed. Use the token provided in the+-- @ListRecommendationsResponse@ to use in the subsequent call to+-- @ListRecommendations@ with the same parameters to retrieve the next page+-- of recommendations.+--+-- 'recommendations', 'listRecommendationsResponse_recommendations' - The recommendations applicable to your account.+--+-- 'httpStatus', 'listRecommendationsResponse_httpStatus' - The response's http status code.+newListRecommendationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListRecommendationsResponse+newListRecommendationsResponse pHttpStatus_ =+  ListRecommendationsResponse'+    { nextToken =+        Prelude.Nothing,+      recommendations = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A string token indicating that there might be additional recommendations+-- available to be listed. Use the token provided in the+-- @ListRecommendationsResponse@ to use in the subsequent call to+-- @ListRecommendations@ with the same parameters to retrieve the next page+-- of recommendations.+listRecommendationsResponse_nextToken :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe Prelude.Text)+listRecommendationsResponse_nextToken = Lens.lens (\ListRecommendationsResponse' {nextToken} -> nextToken) (\s@ListRecommendationsResponse' {} a -> s {nextToken = a} :: ListRecommendationsResponse)++-- | The recommendations applicable to your account.+listRecommendationsResponse_recommendations :: Lens.Lens' ListRecommendationsResponse (Prelude.Maybe [Recommendation])+listRecommendationsResponse_recommendations = Lens.lens (\ListRecommendationsResponse' {recommendations} -> recommendations) (\s@ListRecommendationsResponse' {} a -> s {recommendations = a} :: ListRecommendationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listRecommendationsResponse_httpStatus :: Lens.Lens' ListRecommendationsResponse Prelude.Int+listRecommendationsResponse_httpStatus = Lens.lens (\ListRecommendationsResponse' {httpStatus} -> httpStatus) (\s@ListRecommendationsResponse' {} a -> s {httpStatus = a} :: ListRecommendationsResponse)++instance Prelude.NFData ListRecommendationsResponse where+  rnf ListRecommendationsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf recommendations+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListSuppressedDestinations.hs view
@@ -0,0 +1,273 @@+{-# 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.SESV2.ListSuppressedDestinations+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieves a list of email addresses that are on the suppression list for+-- your account.+module Amazonka.SESV2.ListSuppressedDestinations+  ( -- * Creating a Request+    ListSuppressedDestinations (..),+    newListSuppressedDestinations,++    -- * Request Lenses+    listSuppressedDestinations_endDate,+    listSuppressedDestinations_nextToken,+    listSuppressedDestinations_pageSize,+    listSuppressedDestinations_reasons,+    listSuppressedDestinations_startDate,++    -- * Destructuring the Response+    ListSuppressedDestinationsResponse (..),+    newListSuppressedDestinationsResponse,++    -- * Response Lenses+    listSuppressedDestinationsResponse_nextToken,+    listSuppressedDestinationsResponse_suppressedDestinationSummaries,+    listSuppressedDestinationsResponse_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.SESV2.Types++-- | A request to obtain a list of email destinations that are on the+-- suppression list for your account.+--+-- /See:/ 'newListSuppressedDestinations' smart constructor.+data ListSuppressedDestinations = ListSuppressedDestinations'+  { -- | Used to filter the list of suppressed email destinations so that it only+    -- includes addresses that were added to the list before a specific date.+    endDate :: Prelude.Maybe Data.POSIX,+    -- | A token returned from a previous call to @ListSuppressedDestinations@ to+    -- indicate the position in the list of suppressed email addresses.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | The number of results to show in a single call to+    -- @ListSuppressedDestinations@. If the number of results is larger than+    -- the number you specified in this parameter, then the response includes a+    -- @NextToken@ element, which you can use to obtain additional results.+    pageSize :: Prelude.Maybe Prelude.Int,+    -- | The factors that caused the email address to be added to .+    reasons :: Prelude.Maybe [SuppressionListReason],+    -- | Used to filter the list of suppressed email destinations so that it only+    -- includes addresses that were added to the list after a specific date.+    startDate :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSuppressedDestinations' 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:+--+-- 'endDate', 'listSuppressedDestinations_endDate' - Used to filter the list of suppressed email destinations so that it only+-- includes addresses that were added to the list before a specific date.+--+-- 'nextToken', 'listSuppressedDestinations_nextToken' - A token returned from a previous call to @ListSuppressedDestinations@ to+-- indicate the position in the list of suppressed email addresses.+--+-- 'pageSize', 'listSuppressedDestinations_pageSize' - The number of results to show in a single call to+-- @ListSuppressedDestinations@. If the number of results is larger than+-- the number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+--+-- 'reasons', 'listSuppressedDestinations_reasons' - The factors that caused the email address to be added to .+--+-- 'startDate', 'listSuppressedDestinations_startDate' - Used to filter the list of suppressed email destinations so that it only+-- includes addresses that were added to the list after a specific date.+newListSuppressedDestinations ::+  ListSuppressedDestinations+newListSuppressedDestinations =+  ListSuppressedDestinations'+    { endDate =+        Prelude.Nothing,+      nextToken = Prelude.Nothing,+      pageSize = Prelude.Nothing,+      reasons = Prelude.Nothing,+      startDate = Prelude.Nothing+    }++-- | Used to filter the list of suppressed email destinations so that it only+-- includes addresses that were added to the list before a specific date.+listSuppressedDestinations_endDate :: Lens.Lens' ListSuppressedDestinations (Prelude.Maybe Prelude.UTCTime)+listSuppressedDestinations_endDate = Lens.lens (\ListSuppressedDestinations' {endDate} -> endDate) (\s@ListSuppressedDestinations' {} a -> s {endDate = a} :: ListSuppressedDestinations) Prelude.. Lens.mapping Data._Time++-- | A token returned from a previous call to @ListSuppressedDestinations@ to+-- indicate the position in the list of suppressed email addresses.+listSuppressedDestinations_nextToken :: Lens.Lens' ListSuppressedDestinations (Prelude.Maybe Prelude.Text)+listSuppressedDestinations_nextToken = Lens.lens (\ListSuppressedDestinations' {nextToken} -> nextToken) (\s@ListSuppressedDestinations' {} a -> s {nextToken = a} :: ListSuppressedDestinations)++-- | The number of results to show in a single call to+-- @ListSuppressedDestinations@. If the number of results is larger than+-- the number you specified in this parameter, then the response includes a+-- @NextToken@ element, which you can use to obtain additional results.+listSuppressedDestinations_pageSize :: Lens.Lens' ListSuppressedDestinations (Prelude.Maybe Prelude.Int)+listSuppressedDestinations_pageSize = Lens.lens (\ListSuppressedDestinations' {pageSize} -> pageSize) (\s@ListSuppressedDestinations' {} a -> s {pageSize = a} :: ListSuppressedDestinations)++-- | The factors that caused the email address to be added to .+listSuppressedDestinations_reasons :: Lens.Lens' ListSuppressedDestinations (Prelude.Maybe [SuppressionListReason])+listSuppressedDestinations_reasons = Lens.lens (\ListSuppressedDestinations' {reasons} -> reasons) (\s@ListSuppressedDestinations' {} a -> s {reasons = a} :: ListSuppressedDestinations) Prelude.. Lens.mapping Lens.coerced++-- | Used to filter the list of suppressed email destinations so that it only+-- includes addresses that were added to the list after a specific date.+listSuppressedDestinations_startDate :: Lens.Lens' ListSuppressedDestinations (Prelude.Maybe Prelude.UTCTime)+listSuppressedDestinations_startDate = Lens.lens (\ListSuppressedDestinations' {startDate} -> startDate) (\s@ListSuppressedDestinations' {} a -> s {startDate = a} :: ListSuppressedDestinations) Prelude.. Lens.mapping Data._Time++instance Core.AWSRequest ListSuppressedDestinations where+  type+    AWSResponse ListSuppressedDestinations =+      ListSuppressedDestinationsResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListSuppressedDestinationsResponse'+            Prelude.<$> (x Data..?> "NextToken")+            Prelude.<*> ( x+                            Data..?> "SuppressedDestinationSummaries"+                            Core..!@ Prelude.mempty+                        )+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable ListSuppressedDestinations where+  hashWithSalt _salt ListSuppressedDestinations' {..} =+    _salt+      `Prelude.hashWithSalt` endDate+      `Prelude.hashWithSalt` nextToken+      `Prelude.hashWithSalt` pageSize+      `Prelude.hashWithSalt` reasons+      `Prelude.hashWithSalt` startDate++instance Prelude.NFData ListSuppressedDestinations where+  rnf ListSuppressedDestinations' {..} =+    Prelude.rnf endDate+      `Prelude.seq` Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf pageSize+      `Prelude.seq` Prelude.rnf reasons+      `Prelude.seq` Prelude.rnf startDate++instance Data.ToHeaders ListSuppressedDestinations where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListSuppressedDestinations where+  toPath =+    Prelude.const "/v2/email/suppression/addresses"++instance Data.ToQuery ListSuppressedDestinations where+  toQuery ListSuppressedDestinations' {..} =+    Prelude.mconcat+      [ "EndDate" Data.=: endDate,+        "NextToken" Data.=: nextToken,+        "PageSize" Data.=: pageSize,+        "Reason"+          Data.=: Data.toQuery+            (Data.toQueryList "member" Prelude.<$> reasons),+        "StartDate" Data.=: startDate+      ]++-- | A list of suppressed email addresses.+--+-- /See:/ 'newListSuppressedDestinationsResponse' smart constructor.+data ListSuppressedDestinationsResponse = ListSuppressedDestinationsResponse'+  { -- | A token that indicates that there are additional email addresses on the+    -- suppression list for your account. To view additional suppressed+    -- addresses, issue another request to @ListSuppressedDestinations@, and+    -- pass this token in the @NextToken@ parameter.+    nextToken :: Prelude.Maybe Prelude.Text,+    -- | A list of summaries, each containing a summary for a suppressed email+    -- destination.+    suppressedDestinationSummaries :: Prelude.Maybe [SuppressedDestinationSummary],+    -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListSuppressedDestinationsResponse' 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', 'listSuppressedDestinationsResponse_nextToken' - A token that indicates that there are additional email addresses on the+-- suppression list for your account. To view additional suppressed+-- addresses, issue another request to @ListSuppressedDestinations@, and+-- pass this token in the @NextToken@ parameter.+--+-- 'suppressedDestinationSummaries', 'listSuppressedDestinationsResponse_suppressedDestinationSummaries' - A list of summaries, each containing a summary for a suppressed email+-- destination.+--+-- 'httpStatus', 'listSuppressedDestinationsResponse_httpStatus' - The response's http status code.+newListSuppressedDestinationsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListSuppressedDestinationsResponse+newListSuppressedDestinationsResponse pHttpStatus_ =+  ListSuppressedDestinationsResponse'+    { nextToken =+        Prelude.Nothing,+      suppressedDestinationSummaries =+        Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A token that indicates that there are additional email addresses on the+-- suppression list for your account. To view additional suppressed+-- addresses, issue another request to @ListSuppressedDestinations@, and+-- pass this token in the @NextToken@ parameter.+listSuppressedDestinationsResponse_nextToken :: Lens.Lens' ListSuppressedDestinationsResponse (Prelude.Maybe Prelude.Text)+listSuppressedDestinationsResponse_nextToken = Lens.lens (\ListSuppressedDestinationsResponse' {nextToken} -> nextToken) (\s@ListSuppressedDestinationsResponse' {} a -> s {nextToken = a} :: ListSuppressedDestinationsResponse)++-- | A list of summaries, each containing a summary for a suppressed email+-- destination.+listSuppressedDestinationsResponse_suppressedDestinationSummaries :: Lens.Lens' ListSuppressedDestinationsResponse (Prelude.Maybe [SuppressedDestinationSummary])+listSuppressedDestinationsResponse_suppressedDestinationSummaries = Lens.lens (\ListSuppressedDestinationsResponse' {suppressedDestinationSummaries} -> suppressedDestinationSummaries) (\s@ListSuppressedDestinationsResponse' {} a -> s {suppressedDestinationSummaries = a} :: ListSuppressedDestinationsResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+listSuppressedDestinationsResponse_httpStatus :: Lens.Lens' ListSuppressedDestinationsResponse Prelude.Int+listSuppressedDestinationsResponse_httpStatus = Lens.lens (\ListSuppressedDestinationsResponse' {httpStatus} -> httpStatus) (\s@ListSuppressedDestinationsResponse' {} a -> s {httpStatus = a} :: ListSuppressedDestinationsResponse)++instance+  Prelude.NFData+    ListSuppressedDestinationsResponse+  where+  rnf ListSuppressedDestinationsResponse' {..} =+    Prelude.rnf nextToken+      `Prelude.seq` Prelude.rnf suppressedDestinationSummaries+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/ListTagsForResource.hs view
@@ -0,0 +1,173 @@+{-# 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.SESV2.ListTagsForResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Retrieve a list of the tags (keys and values) that are associated with a+-- specified resource. A /tag/ is a label that you optionally define and+-- associate with a resource. Each tag consists of a required /tag key/ and+-- an optional associated /tag value/. A tag key is a general label that+-- acts as a category for more specific tag values. A tag value acts as a+-- descriptor within a tag key.+module Amazonka.SESV2.ListTagsForResource+  ( -- * Creating a Request+    ListTagsForResource (..),+    newListTagsForResource,++    -- * Request Lenses+    listTagsForResource_resourceArn,++    -- * Destructuring the Response+    ListTagsForResourceResponse (..),+    newListTagsForResourceResponse,++    -- * Response Lenses+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,+  )+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.SESV2.Types++-- | /See:/ 'newListTagsForResource' smart constructor.+data ListTagsForResource = ListTagsForResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to retrieve+    -- tag information for.+    resourceArn :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResource' 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:+--+-- 'resourceArn', 'listTagsForResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to retrieve+-- tag information for.+newListTagsForResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  ListTagsForResource+newListTagsForResource pResourceArn_ =+  ListTagsForResource' {resourceArn = pResourceArn_}++-- | The Amazon Resource Name (ARN) of the resource that you want to retrieve+-- tag information for.+listTagsForResource_resourceArn :: Lens.Lens' ListTagsForResource Prelude.Text+listTagsForResource_resourceArn = Lens.lens (\ListTagsForResource' {resourceArn} -> resourceArn) (\s@ListTagsForResource' {} a -> s {resourceArn = a} :: ListTagsForResource)++instance Core.AWSRequest ListTagsForResource where+  type+    AWSResponse ListTagsForResource =+      ListTagsForResourceResponse+  request overrides =+    Request.get (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          ListTagsForResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+      )++instance Prelude.Hashable ListTagsForResource where+  hashWithSalt _salt ListTagsForResource' {..} =+    _salt `Prelude.hashWithSalt` resourceArn++instance Prelude.NFData ListTagsForResource where+  rnf ListTagsForResource' {..} =+    Prelude.rnf resourceArn++instance Data.ToHeaders ListTagsForResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath ListTagsForResource where+  toPath = Prelude.const "/v2/email/tags"++instance Data.ToQuery ListTagsForResource where+  toQuery ListTagsForResource' {..} =+    Prelude.mconcat ["ResourceArn" Data.=: resourceArn]++-- | /See:/ 'newListTagsForResourceResponse' smart constructor.+data ListTagsForResourceResponse = ListTagsForResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | An array that lists all the tags that are associated with the resource.+    -- Each tag consists of a required tag key (@Key@) and an associated tag+    -- value (@Value@)+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListTagsForResourceResponse' 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', 'listTagsForResourceResponse_httpStatus' - The response's http status code.+--+-- 'tags', 'listTagsForResourceResponse_tags' - An array that lists all the tags that are associated with the resource.+-- Each tag consists of a required tag key (@Key@) and an associated tag+-- value (@Value@)+newListTagsForResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  ListTagsForResourceResponse+newListTagsForResourceResponse pHttpStatus_ =+  ListTagsForResourceResponse'+    { httpStatus =+        pHttpStatus_,+      tags = Prelude.mempty+    }++-- | The response's http status code.+listTagsForResourceResponse_httpStatus :: Lens.Lens' ListTagsForResourceResponse Prelude.Int+listTagsForResourceResponse_httpStatus = Lens.lens (\ListTagsForResourceResponse' {httpStatus} -> httpStatus) (\s@ListTagsForResourceResponse' {} a -> s {httpStatus = a} :: ListTagsForResourceResponse)++-- | An array that lists all the tags that are associated with the resource.+-- Each tag consists of a required tag key (@Key@) and an associated tag+-- value (@Value@)+listTagsForResourceResponse_tags :: Lens.Lens' ListTagsForResourceResponse [Tag]+listTagsForResourceResponse_tags = Lens.lens (\ListTagsForResourceResponse' {tags} -> tags) (\s@ListTagsForResourceResponse' {} a -> s {tags = a} :: ListTagsForResourceResponse) Prelude.. Lens.coerced++instance Prelude.NFData ListTagsForResourceResponse where+  rnf ListTagsForResourceResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf tags
+ gen/Amazonka/SESV2/PutAccountDedicatedIpWarmupAttributes.hs view
@@ -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.SESV2.PutAccountDedicatedIpWarmupAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enable or disable the automatic warm-up feature for dedicated IP+-- addresses.+module Amazonka.SESV2.PutAccountDedicatedIpWarmupAttributes+  ( -- * Creating a Request+    PutAccountDedicatedIpWarmupAttributes (..),+    newPutAccountDedicatedIpWarmupAttributes,++    -- * Request Lenses+    putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled,++    -- * Destructuring the Response+    PutAccountDedicatedIpWarmupAttributesResponse (..),+    newPutAccountDedicatedIpWarmupAttributesResponse,++    -- * Response Lenses+    putAccountDedicatedIpWarmupAttributesResponse_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.SESV2.Types++-- | A request to enable or disable the automatic IP address warm-up feature.+--+-- /See:/ 'newPutAccountDedicatedIpWarmupAttributes' smart constructor.+data PutAccountDedicatedIpWarmupAttributes = PutAccountDedicatedIpWarmupAttributes'+  { -- | Enables or disables the automatic warm-up feature for dedicated IP+    -- addresses that are associated with your Amazon SES account in the+    -- current Amazon Web Services Region. Set to @true@ to enable the+    -- automatic warm-up feature, or set to @false@ to disable it.+    autoWarmupEnabled :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountDedicatedIpWarmupAttributes' 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:+--+-- 'autoWarmupEnabled', 'putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled' - Enables or disables the automatic warm-up feature for dedicated IP+-- addresses that are associated with your Amazon SES account in the+-- current Amazon Web Services Region. Set to @true@ to enable the+-- automatic warm-up feature, or set to @false@ to disable it.+newPutAccountDedicatedIpWarmupAttributes ::+  PutAccountDedicatedIpWarmupAttributes+newPutAccountDedicatedIpWarmupAttributes =+  PutAccountDedicatedIpWarmupAttributes'+    { autoWarmupEnabled =+        Prelude.Nothing+    }++-- | Enables or disables the automatic warm-up feature for dedicated IP+-- addresses that are associated with your Amazon SES account in the+-- current Amazon Web Services Region. Set to @true@ to enable the+-- automatic warm-up feature, or set to @false@ to disable it.+putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled :: Lens.Lens' PutAccountDedicatedIpWarmupAttributes (Prelude.Maybe Prelude.Bool)+putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled = Lens.lens (\PutAccountDedicatedIpWarmupAttributes' {autoWarmupEnabled} -> autoWarmupEnabled) (\s@PutAccountDedicatedIpWarmupAttributes' {} a -> s {autoWarmupEnabled = a} :: PutAccountDedicatedIpWarmupAttributes)++instance+  Core.AWSRequest+    PutAccountDedicatedIpWarmupAttributes+  where+  type+    AWSResponse+      PutAccountDedicatedIpWarmupAttributes =+      PutAccountDedicatedIpWarmupAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutAccountDedicatedIpWarmupAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutAccountDedicatedIpWarmupAttributes+  where+  hashWithSalt+    _salt+    PutAccountDedicatedIpWarmupAttributes' {..} =+      _salt `Prelude.hashWithSalt` autoWarmupEnabled++instance+  Prelude.NFData+    PutAccountDedicatedIpWarmupAttributes+  where+  rnf PutAccountDedicatedIpWarmupAttributes' {..} =+    Prelude.rnf autoWarmupEnabled++instance+  Data.ToHeaders+    PutAccountDedicatedIpWarmupAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutAccountDedicatedIpWarmupAttributes+  where+  toJSON PutAccountDedicatedIpWarmupAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AutoWarmupEnabled" Data..=)+              Prelude.<$> autoWarmupEnabled+          ]+      )++instance+  Data.ToPath+    PutAccountDedicatedIpWarmupAttributes+  where+  toPath =+    Prelude.const+      "/v2/email/account/dedicated-ips/warmup"++instance+  Data.ToQuery+    PutAccountDedicatedIpWarmupAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutAccountDedicatedIpWarmupAttributesResponse' smart constructor.+data PutAccountDedicatedIpWarmupAttributesResponse = PutAccountDedicatedIpWarmupAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountDedicatedIpWarmupAttributesResponse' 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', 'putAccountDedicatedIpWarmupAttributesResponse_httpStatus' - The response's http status code.+newPutAccountDedicatedIpWarmupAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutAccountDedicatedIpWarmupAttributesResponse+newPutAccountDedicatedIpWarmupAttributesResponse+  pHttpStatus_ =+    PutAccountDedicatedIpWarmupAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putAccountDedicatedIpWarmupAttributesResponse_httpStatus :: Lens.Lens' PutAccountDedicatedIpWarmupAttributesResponse Prelude.Int+putAccountDedicatedIpWarmupAttributesResponse_httpStatus = Lens.lens (\PutAccountDedicatedIpWarmupAttributesResponse' {httpStatus} -> httpStatus) (\s@PutAccountDedicatedIpWarmupAttributesResponse' {} a -> s {httpStatus = a} :: PutAccountDedicatedIpWarmupAttributesResponse)++instance+  Prelude.NFData+    PutAccountDedicatedIpWarmupAttributesResponse+  where+  rnf+    PutAccountDedicatedIpWarmupAttributesResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutAccountDetails.hs view
@@ -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.SESV2.PutAccountDetails+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update your Amazon SES account details.+module Amazonka.SESV2.PutAccountDetails+  ( -- * Creating a Request+    PutAccountDetails (..),+    newPutAccountDetails,++    -- * Request Lenses+    putAccountDetails_additionalContactEmailAddresses,+    putAccountDetails_contactLanguage,+    putAccountDetails_productionAccessEnabled,+    putAccountDetails_mailType,+    putAccountDetails_websiteURL,+    putAccountDetails_useCaseDescription,++    -- * Destructuring the Response+    PutAccountDetailsResponse (..),+    newPutAccountDetailsResponse,++    -- * Response Lenses+    putAccountDetailsResponse_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.SESV2.Types++-- | A request to submit new account details.+--+-- /See:/ 'newPutAccountDetails' smart constructor.+data PutAccountDetails = PutAccountDetails'+  { -- | Additional email addresses that you would like to be notified regarding+    -- Amazon SES matters.+    additionalContactEmailAddresses :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty (Data.Sensitive Prelude.Text))),+    -- | The language you would prefer to be contacted with.+    contactLanguage :: Prelude.Maybe ContactLanguage,+    -- | Indicates whether or not your account should have production access in+    -- the current Amazon Web Services Region.+    --+    -- If the value is @false@, then your account is in the /sandbox/. When+    -- your account is in the sandbox, you can only send email to verified+    -- identities. Additionally, the maximum number of emails you can send in a+    -- 24-hour period (your sending quota) is 200, and the maximum number of+    -- emails you can send per second (your maximum sending rate) is 1.+    --+    -- If the value is @true@, then your account has production access. When+    -- your account has production access, you can send email to any address.+    -- The sending quota and maximum sending rate for your account vary based+    -- on your specific use case.+    productionAccessEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The type of email your account will send.+    mailType :: MailType,+    -- | The URL of your website. This information helps us better understand the+    -- type of content that you plan to send.+    websiteURL :: Data.Sensitive Prelude.Text,+    -- | A description of the types of email that you plan to send.+    useCaseDescription :: Data.Sensitive Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountDetails' 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:+--+-- 'additionalContactEmailAddresses', 'putAccountDetails_additionalContactEmailAddresses' - Additional email addresses that you would like to be notified regarding+-- Amazon SES matters.+--+-- 'contactLanguage', 'putAccountDetails_contactLanguage' - The language you would prefer to be contacted with.+--+-- 'productionAccessEnabled', 'putAccountDetails_productionAccessEnabled' - Indicates whether or not your account should have production access in+-- the current Amazon Web Services Region.+--+-- If the value is @false@, then your account is in the /sandbox/. When+-- your account is in the sandbox, you can only send email to verified+-- identities. Additionally, the maximum number of emails you can send in a+-- 24-hour period (your sending quota) is 200, and the maximum number of+-- emails you can send per second (your maximum sending rate) is 1.+--+-- If the value is @true@, then your account has production access. When+-- your account has production access, you can send email to any address.+-- The sending quota and maximum sending rate for your account vary based+-- on your specific use case.+--+-- 'mailType', 'putAccountDetails_mailType' - The type of email your account will send.+--+-- 'websiteURL', 'putAccountDetails_websiteURL' - The URL of your website. This information helps us better understand the+-- type of content that you plan to send.+--+-- 'useCaseDescription', 'putAccountDetails_useCaseDescription' - A description of the types of email that you plan to send.+newPutAccountDetails ::+  -- | 'mailType'+  MailType ->+  -- | 'websiteURL'+  Prelude.Text ->+  -- | 'useCaseDescription'+  Prelude.Text ->+  PutAccountDetails+newPutAccountDetails+  pMailType_+  pWebsiteURL_+  pUseCaseDescription_ =+    PutAccountDetails'+      { additionalContactEmailAddresses =+          Prelude.Nothing,+        contactLanguage = Prelude.Nothing,+        productionAccessEnabled = Prelude.Nothing,+        mailType = pMailType_,+        websiteURL = Data._Sensitive Lens.# pWebsiteURL_,+        useCaseDescription =+          Data._Sensitive Lens.# pUseCaseDescription_+      }++-- | Additional email addresses that you would like to be notified regarding+-- Amazon SES matters.+putAccountDetails_additionalContactEmailAddresses :: Lens.Lens' PutAccountDetails (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+putAccountDetails_additionalContactEmailAddresses = Lens.lens (\PutAccountDetails' {additionalContactEmailAddresses} -> additionalContactEmailAddresses) (\s@PutAccountDetails' {} a -> s {additionalContactEmailAddresses = a} :: PutAccountDetails) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The language you would prefer to be contacted with.+putAccountDetails_contactLanguage :: Lens.Lens' PutAccountDetails (Prelude.Maybe ContactLanguage)+putAccountDetails_contactLanguage = Lens.lens (\PutAccountDetails' {contactLanguage} -> contactLanguage) (\s@PutAccountDetails' {} a -> s {contactLanguage = a} :: PutAccountDetails)++-- | Indicates whether or not your account should have production access in+-- the current Amazon Web Services Region.+--+-- If the value is @false@, then your account is in the /sandbox/. When+-- your account is in the sandbox, you can only send email to verified+-- identities. Additionally, the maximum number of emails you can send in a+-- 24-hour period (your sending quota) is 200, and the maximum number of+-- emails you can send per second (your maximum sending rate) is 1.+--+-- If the value is @true@, then your account has production access. When+-- your account has production access, you can send email to any address.+-- The sending quota and maximum sending rate for your account vary based+-- on your specific use case.+putAccountDetails_productionAccessEnabled :: Lens.Lens' PutAccountDetails (Prelude.Maybe Prelude.Bool)+putAccountDetails_productionAccessEnabled = Lens.lens (\PutAccountDetails' {productionAccessEnabled} -> productionAccessEnabled) (\s@PutAccountDetails' {} a -> s {productionAccessEnabled = a} :: PutAccountDetails)++-- | The type of email your account will send.+putAccountDetails_mailType :: Lens.Lens' PutAccountDetails MailType+putAccountDetails_mailType = Lens.lens (\PutAccountDetails' {mailType} -> mailType) (\s@PutAccountDetails' {} a -> s {mailType = a} :: PutAccountDetails)++-- | The URL of your website. This information helps us better understand the+-- type of content that you plan to send.+putAccountDetails_websiteURL :: Lens.Lens' PutAccountDetails Prelude.Text+putAccountDetails_websiteURL = Lens.lens (\PutAccountDetails' {websiteURL} -> websiteURL) (\s@PutAccountDetails' {} a -> s {websiteURL = a} :: PutAccountDetails) Prelude.. Data._Sensitive++-- | A description of the types of email that you plan to send.+putAccountDetails_useCaseDescription :: Lens.Lens' PutAccountDetails Prelude.Text+putAccountDetails_useCaseDescription = Lens.lens (\PutAccountDetails' {useCaseDescription} -> useCaseDescription) (\s@PutAccountDetails' {} a -> s {useCaseDescription = a} :: PutAccountDetails) Prelude.. Data._Sensitive++instance Core.AWSRequest PutAccountDetails where+  type+    AWSResponse PutAccountDetails =+      PutAccountDetailsResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutAccountDetailsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutAccountDetails where+  hashWithSalt _salt PutAccountDetails' {..} =+    _salt+      `Prelude.hashWithSalt` additionalContactEmailAddresses+      `Prelude.hashWithSalt` contactLanguage+      `Prelude.hashWithSalt` productionAccessEnabled+      `Prelude.hashWithSalt` mailType+      `Prelude.hashWithSalt` websiteURL+      `Prelude.hashWithSalt` useCaseDescription++instance Prelude.NFData PutAccountDetails where+  rnf PutAccountDetails' {..} =+    Prelude.rnf additionalContactEmailAddresses+      `Prelude.seq` Prelude.rnf contactLanguage+      `Prelude.seq` Prelude.rnf productionAccessEnabled+      `Prelude.seq` Prelude.rnf mailType+      `Prelude.seq` Prelude.rnf websiteURL+      `Prelude.seq` Prelude.rnf useCaseDescription++instance Data.ToHeaders PutAccountDetails where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutAccountDetails where+  toJSON PutAccountDetails' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AdditionalContactEmailAddresses" Data..=)+              Prelude.<$> additionalContactEmailAddresses,+            ("ContactLanguage" Data..=)+              Prelude.<$> contactLanguage,+            ("ProductionAccessEnabled" Data..=)+              Prelude.<$> productionAccessEnabled,+            Prelude.Just ("MailType" Data..= mailType),+            Prelude.Just ("WebsiteURL" Data..= websiteURL),+            Prelude.Just+              ("UseCaseDescription" Data..= useCaseDescription)+          ]+      )++instance Data.ToPath PutAccountDetails where+  toPath = Prelude.const "/v2/email/account/details"++instance Data.ToQuery PutAccountDetails where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutAccountDetailsResponse' smart constructor.+data PutAccountDetailsResponse = PutAccountDetailsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountDetailsResponse' 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', 'putAccountDetailsResponse_httpStatus' - The response's http status code.+newPutAccountDetailsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutAccountDetailsResponse+newPutAccountDetailsResponse pHttpStatus_ =+  PutAccountDetailsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putAccountDetailsResponse_httpStatus :: Lens.Lens' PutAccountDetailsResponse Prelude.Int+putAccountDetailsResponse_httpStatus = Lens.lens (\PutAccountDetailsResponse' {httpStatus} -> httpStatus) (\s@PutAccountDetailsResponse' {} a -> s {httpStatus = a} :: PutAccountDetailsResponse)++instance Prelude.NFData PutAccountDetailsResponse where+  rnf PutAccountDetailsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutAccountSendingAttributes.hs view
@@ -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.SESV2.PutAccountSendingAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enable or disable the ability of your account to send email.+module Amazonka.SESV2.PutAccountSendingAttributes+  ( -- * Creating a Request+    PutAccountSendingAttributes (..),+    newPutAccountSendingAttributes,++    -- * Request Lenses+    putAccountSendingAttributes_sendingEnabled,++    -- * Destructuring the Response+    PutAccountSendingAttributesResponse (..),+    newPutAccountSendingAttributesResponse,++    -- * Response Lenses+    putAccountSendingAttributesResponse_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.SESV2.Types++-- | A request to change the ability of your account to send email.+--+-- /See:/ 'newPutAccountSendingAttributes' smart constructor.+data PutAccountSendingAttributes = PutAccountSendingAttributes'+  { -- | Enables or disables your account\'s ability to send email. Set to @true@+    -- to enable email sending, or set to @false@ to disable email sending.+    --+    -- If Amazon Web Services paused your account\'s ability to send email, you+    -- can\'t use this operation to resume your account\'s ability to send+    -- email.+    sendingEnabled :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountSendingAttributes' 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:+--+-- 'sendingEnabled', 'putAccountSendingAttributes_sendingEnabled' - Enables or disables your account\'s ability to send email. Set to @true@+-- to enable email sending, or set to @false@ to disable email sending.+--+-- If Amazon Web Services paused your account\'s ability to send email, you+-- can\'t use this operation to resume your account\'s ability to send+-- email.+newPutAccountSendingAttributes ::+  PutAccountSendingAttributes+newPutAccountSendingAttributes =+  PutAccountSendingAttributes'+    { sendingEnabled =+        Prelude.Nothing+    }++-- | Enables or disables your account\'s ability to send email. Set to @true@+-- to enable email sending, or set to @false@ to disable email sending.+--+-- If Amazon Web Services paused your account\'s ability to send email, you+-- can\'t use this operation to resume your account\'s ability to send+-- email.+putAccountSendingAttributes_sendingEnabled :: Lens.Lens' PutAccountSendingAttributes (Prelude.Maybe Prelude.Bool)+putAccountSendingAttributes_sendingEnabled = Lens.lens (\PutAccountSendingAttributes' {sendingEnabled} -> sendingEnabled) (\s@PutAccountSendingAttributes' {} a -> s {sendingEnabled = a} :: PutAccountSendingAttributes)++instance Core.AWSRequest PutAccountSendingAttributes where+  type+    AWSResponse PutAccountSendingAttributes =+      PutAccountSendingAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutAccountSendingAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutAccountSendingAttributes where+  hashWithSalt _salt PutAccountSendingAttributes' {..} =+    _salt `Prelude.hashWithSalt` sendingEnabled++instance Prelude.NFData PutAccountSendingAttributes where+  rnf PutAccountSendingAttributes' {..} =+    Prelude.rnf sendingEnabled++instance Data.ToHeaders PutAccountSendingAttributes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutAccountSendingAttributes where+  toJSON PutAccountSendingAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SendingEnabled" Data..=)+              Prelude.<$> sendingEnabled+          ]+      )++instance Data.ToPath PutAccountSendingAttributes where+  toPath = Prelude.const "/v2/email/account/sending"++instance Data.ToQuery PutAccountSendingAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutAccountSendingAttributesResponse' smart constructor.+data PutAccountSendingAttributesResponse = PutAccountSendingAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountSendingAttributesResponse' 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', 'putAccountSendingAttributesResponse_httpStatus' - The response's http status code.+newPutAccountSendingAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutAccountSendingAttributesResponse+newPutAccountSendingAttributesResponse pHttpStatus_ =+  PutAccountSendingAttributesResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putAccountSendingAttributesResponse_httpStatus :: Lens.Lens' PutAccountSendingAttributesResponse Prelude.Int+putAccountSendingAttributesResponse_httpStatus = Lens.lens (\PutAccountSendingAttributesResponse' {httpStatus} -> httpStatus) (\s@PutAccountSendingAttributesResponse' {} a -> s {httpStatus = a} :: PutAccountSendingAttributesResponse)++instance+  Prelude.NFData+    PutAccountSendingAttributesResponse+  where+  rnf PutAccountSendingAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutAccountSuppressionAttributes.hs view
@@ -0,0 +1,210 @@+{-# 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.SESV2.PutAccountSuppressionAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Change the settings for the account-level suppression list.+module Amazonka.SESV2.PutAccountSuppressionAttributes+  ( -- * Creating a Request+    PutAccountSuppressionAttributes (..),+    newPutAccountSuppressionAttributes,++    -- * Request Lenses+    putAccountSuppressionAttributes_suppressedReasons,++    -- * Destructuring the Response+    PutAccountSuppressionAttributesResponse (..),+    newPutAccountSuppressionAttributesResponse,++    -- * Response Lenses+    putAccountSuppressionAttributesResponse_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.SESV2.Types++-- | A request to change your account\'s suppression preferences.+--+-- /See:/ 'newPutAccountSuppressionAttributes' smart constructor.+data PutAccountSuppressionAttributes = PutAccountSuppressionAttributes'+  { -- | A list that contains the reasons that email addresses will be+    -- automatically added to the suppression list for your account. This list+    -- can contain any or all of the following:+    --+    -- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+    --     list for your account when a message sent to that address results in+    --     a complaint.+    --+    -- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+    --     for your account when a message sent to that address results in a+    --     hard bounce.+    suppressedReasons :: Prelude.Maybe [SuppressionListReason]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountSuppressionAttributes' 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:+--+-- 'suppressedReasons', 'putAccountSuppressionAttributes_suppressedReasons' - A list that contains the reasons that email addresses will be+-- automatically added to the suppression list for your account. This list+-- can contain any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+newPutAccountSuppressionAttributes ::+  PutAccountSuppressionAttributes+newPutAccountSuppressionAttributes =+  PutAccountSuppressionAttributes'+    { suppressedReasons =+        Prelude.Nothing+    }++-- | A list that contains the reasons that email addresses will be+-- automatically added to the suppression list for your account. This list+-- can contain any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+putAccountSuppressionAttributes_suppressedReasons :: Lens.Lens' PutAccountSuppressionAttributes (Prelude.Maybe [SuppressionListReason])+putAccountSuppressionAttributes_suppressedReasons = Lens.lens (\PutAccountSuppressionAttributes' {suppressedReasons} -> suppressedReasons) (\s@PutAccountSuppressionAttributes' {} a -> s {suppressedReasons = a} :: PutAccountSuppressionAttributes) Prelude.. Lens.mapping Lens.coerced++instance+  Core.AWSRequest+    PutAccountSuppressionAttributes+  where+  type+    AWSResponse PutAccountSuppressionAttributes =+      PutAccountSuppressionAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutAccountSuppressionAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutAccountSuppressionAttributes+  where+  hashWithSalt+    _salt+    PutAccountSuppressionAttributes' {..} =+      _salt `Prelude.hashWithSalt` suppressedReasons++instance+  Prelude.NFData+    PutAccountSuppressionAttributes+  where+  rnf PutAccountSuppressionAttributes' {..} =+    Prelude.rnf suppressedReasons++instance+  Data.ToHeaders+    PutAccountSuppressionAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutAccountSuppressionAttributes where+  toJSON PutAccountSuppressionAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SuppressedReasons" Data..=)+              Prelude.<$> suppressedReasons+          ]+      )++instance Data.ToPath PutAccountSuppressionAttributes where+  toPath =+    Prelude.const "/v2/email/account/suppression"++instance Data.ToQuery PutAccountSuppressionAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutAccountSuppressionAttributesResponse' smart constructor.+data PutAccountSuppressionAttributesResponse = PutAccountSuppressionAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountSuppressionAttributesResponse' 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', 'putAccountSuppressionAttributesResponse_httpStatus' - The response's http status code.+newPutAccountSuppressionAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutAccountSuppressionAttributesResponse+newPutAccountSuppressionAttributesResponse+  pHttpStatus_ =+    PutAccountSuppressionAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putAccountSuppressionAttributesResponse_httpStatus :: Lens.Lens' PutAccountSuppressionAttributesResponse Prelude.Int+putAccountSuppressionAttributesResponse_httpStatus = Lens.lens (\PutAccountSuppressionAttributesResponse' {httpStatus} -> httpStatus) (\s@PutAccountSuppressionAttributesResponse' {} a -> s {httpStatus = a} :: PutAccountSuppressionAttributesResponse)++instance+  Prelude.NFData+    PutAccountSuppressionAttributesResponse+  where+  rnf PutAccountSuppressionAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutAccountVdmAttributes.hs view
@@ -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.SESV2.PutAccountVdmAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Update your Amazon SES account VDM attributes.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.PutAccountVdmAttributes+  ( -- * Creating a Request+    PutAccountVdmAttributes (..),+    newPutAccountVdmAttributes,++    -- * Request Lenses+    putAccountVdmAttributes_vdmAttributes,++    -- * Destructuring the Response+    PutAccountVdmAttributesResponse (..),+    newPutAccountVdmAttributesResponse,++    -- * Response Lenses+    putAccountVdmAttributesResponse_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.SESV2.Types++-- | A request to submit new account VDM attributes.+--+-- /See:/ 'newPutAccountVdmAttributes' smart constructor.+data PutAccountVdmAttributes = PutAccountVdmAttributes'+  { -- | The VDM attributes that you wish to apply to your Amazon SES account.+    vdmAttributes :: VdmAttributes+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountVdmAttributes' 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:+--+-- 'vdmAttributes', 'putAccountVdmAttributes_vdmAttributes' - The VDM attributes that you wish to apply to your Amazon SES account.+newPutAccountVdmAttributes ::+  -- | 'vdmAttributes'+  VdmAttributes ->+  PutAccountVdmAttributes+newPutAccountVdmAttributes pVdmAttributes_ =+  PutAccountVdmAttributes'+    { vdmAttributes =+        pVdmAttributes_+    }++-- | The VDM attributes that you wish to apply to your Amazon SES account.+putAccountVdmAttributes_vdmAttributes :: Lens.Lens' PutAccountVdmAttributes VdmAttributes+putAccountVdmAttributes_vdmAttributes = Lens.lens (\PutAccountVdmAttributes' {vdmAttributes} -> vdmAttributes) (\s@PutAccountVdmAttributes' {} a -> s {vdmAttributes = a} :: PutAccountVdmAttributes)++instance Core.AWSRequest PutAccountVdmAttributes where+  type+    AWSResponse PutAccountVdmAttributes =+      PutAccountVdmAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutAccountVdmAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutAccountVdmAttributes where+  hashWithSalt _salt PutAccountVdmAttributes' {..} =+    _salt `Prelude.hashWithSalt` vdmAttributes++instance Prelude.NFData PutAccountVdmAttributes where+  rnf PutAccountVdmAttributes' {..} =+    Prelude.rnf vdmAttributes++instance Data.ToHeaders PutAccountVdmAttributes where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutAccountVdmAttributes where+  toJSON PutAccountVdmAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("VdmAttributes" Data..= vdmAttributes)+          ]+      )++instance Data.ToPath PutAccountVdmAttributes where+  toPath = Prelude.const "/v2/email/account/vdm"++instance Data.ToQuery PutAccountVdmAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newPutAccountVdmAttributesResponse' smart constructor.+data PutAccountVdmAttributesResponse = PutAccountVdmAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutAccountVdmAttributesResponse' 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', 'putAccountVdmAttributesResponse_httpStatus' - The response's http status code.+newPutAccountVdmAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutAccountVdmAttributesResponse+newPutAccountVdmAttributesResponse pHttpStatus_ =+  PutAccountVdmAttributesResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putAccountVdmAttributesResponse_httpStatus :: Lens.Lens' PutAccountVdmAttributesResponse Prelude.Int+putAccountVdmAttributesResponse_httpStatus = Lens.lens (\PutAccountVdmAttributesResponse' {httpStatus} -> httpStatus) (\s@PutAccountVdmAttributesResponse' {} a -> s {httpStatus = a} :: PutAccountVdmAttributesResponse)++instance+  Prelude.NFData+    PutAccountVdmAttributesResponse+  where+  rnf PutAccountVdmAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutConfigurationSetDeliveryOptions.hs view
@@ -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.SESV2.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)+--+-- Associate a configuration set with a dedicated IP pool. You can use+-- dedicated IP pools to create groups of dedicated IP addresses for+-- sending specific types of email.+module Amazonka.SESV2.PutConfigurationSetDeliveryOptions+  ( -- * Creating a Request+    PutConfigurationSetDeliveryOptions (..),+    newPutConfigurationSetDeliveryOptions,++    -- * Request Lenses+    putConfigurationSetDeliveryOptions_sendingPoolName,+    putConfigurationSetDeliveryOptions_tlsPolicy,+    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.SESV2.Types++-- | A request to associate a configuration set with a dedicated IP pool.+--+-- /See:/ 'newPutConfigurationSetDeliveryOptions' smart constructor.+data PutConfigurationSetDeliveryOptions = PutConfigurationSetDeliveryOptions'+  { -- | The name of the dedicated IP pool to associate with the configuration+    -- set.+    sendingPoolName :: Prelude.Maybe Prelude.Text,+    -- | 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,+    -- | The name of the configuration set to associate with a dedicated IP pool.+    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:+--+-- 'sendingPoolName', 'putConfigurationSetDeliveryOptions_sendingPoolName' - The name of the dedicated IP pool to associate with the configuration+-- set.+--+-- 'tlsPolicy', 'putConfigurationSetDeliveryOptions_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.+--+-- 'configurationSetName', 'putConfigurationSetDeliveryOptions_configurationSetName' - The name of the configuration set to associate with a dedicated IP pool.+newPutConfigurationSetDeliveryOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetDeliveryOptions+newPutConfigurationSetDeliveryOptions+  pConfigurationSetName_ =+    PutConfigurationSetDeliveryOptions'+      { sendingPoolName =+          Prelude.Nothing,+        tlsPolicy = Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | The name of the dedicated IP pool to associate with the configuration+-- set.+putConfigurationSetDeliveryOptions_sendingPoolName :: Lens.Lens' PutConfigurationSetDeliveryOptions (Prelude.Maybe Prelude.Text)+putConfigurationSetDeliveryOptions_sendingPoolName = Lens.lens (\PutConfigurationSetDeliveryOptions' {sendingPoolName} -> sendingPoolName) (\s@PutConfigurationSetDeliveryOptions' {} a -> s {sendingPoolName = a} :: PutConfigurationSetDeliveryOptions)++-- | 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.+putConfigurationSetDeliveryOptions_tlsPolicy :: Lens.Lens' PutConfigurationSetDeliveryOptions (Prelude.Maybe TlsPolicy)+putConfigurationSetDeliveryOptions_tlsPolicy = Lens.lens (\PutConfigurationSetDeliveryOptions' {tlsPolicy} -> tlsPolicy) (\s@PutConfigurationSetDeliveryOptions' {} a -> s {tlsPolicy = a} :: PutConfigurationSetDeliveryOptions)++-- | The name of the configuration set to associate with a dedicated IP pool.+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.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetDeliveryOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetDeliveryOptions+  where+  hashWithSalt+    _salt+    PutConfigurationSetDeliveryOptions' {..} =+      _salt+        `Prelude.hashWithSalt` sendingPoolName+        `Prelude.hashWithSalt` tlsPolicy+        `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    PutConfigurationSetDeliveryOptions+  where+  rnf PutConfigurationSetDeliveryOptions' {..} =+    Prelude.rnf sendingPoolName+      `Prelude.seq` Prelude.rnf tlsPolicy+      `Prelude.seq` Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    PutConfigurationSetDeliveryOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutConfigurationSetDeliveryOptions+  where+  toJSON PutConfigurationSetDeliveryOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SendingPoolName" Data..=)+              Prelude.<$> sendingPoolName,+            ("TlsPolicy" Data..=) Prelude.<$> tlsPolicy+          ]+      )++instance+  Data.ToPath+    PutConfigurationSetDeliveryOptions+  where+  toPath PutConfigurationSetDeliveryOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/delivery-options"+      ]++instance+  Data.ToQuery+    PutConfigurationSetDeliveryOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | 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
+ gen/Amazonka/SESV2/PutConfigurationSetReputationOptions.hs view
@@ -0,0 +1,219 @@+{-# 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.SESV2.PutConfigurationSetReputationOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enable or disable collection of reputation metrics for emails that you+-- send using a particular configuration set in a specific Amazon Web+-- Services Region.+module Amazonka.SESV2.PutConfigurationSetReputationOptions+  ( -- * Creating a Request+    PutConfigurationSetReputationOptions (..),+    newPutConfigurationSetReputationOptions,++    -- * Request Lenses+    putConfigurationSetReputationOptions_reputationMetricsEnabled,+    putConfigurationSetReputationOptions_configurationSetName,++    -- * Destructuring the Response+    PutConfigurationSetReputationOptionsResponse (..),+    newPutConfigurationSetReputationOptionsResponse,++    -- * Response Lenses+    putConfigurationSetReputationOptionsResponse_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.SESV2.Types++-- | A request to enable or disable tracking of reputation metrics for a+-- configuration set.+--+-- /See:/ 'newPutConfigurationSetReputationOptions' smart constructor.+data PutConfigurationSetReputationOptions = PutConfigurationSetReputationOptions'+  { -- | If @true@, tracking of reputation metrics is enabled for the+    -- configuration set. If @false@, tracking of reputation metrics is+    -- disabled for the configuration set.+    reputationMetricsEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the configuration set.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetReputationOptions' 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:+--+-- 'reputationMetricsEnabled', 'putConfigurationSetReputationOptions_reputationMetricsEnabled' - If @true@, tracking of reputation metrics is enabled for the+-- configuration set. If @false@, tracking of reputation metrics is+-- disabled for the configuration set.+--+-- 'configurationSetName', 'putConfigurationSetReputationOptions_configurationSetName' - The name of the configuration set.+newPutConfigurationSetReputationOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetReputationOptions+newPutConfigurationSetReputationOptions+  pConfigurationSetName_ =+    PutConfigurationSetReputationOptions'+      { reputationMetricsEnabled =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | If @true@, tracking of reputation metrics is enabled for the+-- configuration set. If @false@, tracking of reputation metrics is+-- disabled for the configuration set.+putConfigurationSetReputationOptions_reputationMetricsEnabled :: Lens.Lens' PutConfigurationSetReputationOptions (Prelude.Maybe Prelude.Bool)+putConfigurationSetReputationOptions_reputationMetricsEnabled = Lens.lens (\PutConfigurationSetReputationOptions' {reputationMetricsEnabled} -> reputationMetricsEnabled) (\s@PutConfigurationSetReputationOptions' {} a -> s {reputationMetricsEnabled = a} :: PutConfigurationSetReputationOptions)++-- | The name of the configuration set.+putConfigurationSetReputationOptions_configurationSetName :: Lens.Lens' PutConfigurationSetReputationOptions Prelude.Text+putConfigurationSetReputationOptions_configurationSetName = Lens.lens (\PutConfigurationSetReputationOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetReputationOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetReputationOptions)++instance+  Core.AWSRequest+    PutConfigurationSetReputationOptions+  where+  type+    AWSResponse PutConfigurationSetReputationOptions =+      PutConfigurationSetReputationOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetReputationOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetReputationOptions+  where+  hashWithSalt+    _salt+    PutConfigurationSetReputationOptions' {..} =+      _salt+        `Prelude.hashWithSalt` reputationMetricsEnabled+        `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    PutConfigurationSetReputationOptions+  where+  rnf PutConfigurationSetReputationOptions' {..} =+    Prelude.rnf reputationMetricsEnabled+      `Prelude.seq` Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    PutConfigurationSetReputationOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutConfigurationSetReputationOptions+  where+  toJSON PutConfigurationSetReputationOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ReputationMetricsEnabled" Data..=)+              Prelude.<$> reputationMetricsEnabled+          ]+      )++instance+  Data.ToPath+    PutConfigurationSetReputationOptions+  where+  toPath PutConfigurationSetReputationOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/reputation-options"+      ]++instance+  Data.ToQuery+    PutConfigurationSetReputationOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutConfigurationSetReputationOptionsResponse' smart constructor.+data PutConfigurationSetReputationOptionsResponse = PutConfigurationSetReputationOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetReputationOptionsResponse' 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', 'putConfigurationSetReputationOptionsResponse_httpStatus' - The response's http status code.+newPutConfigurationSetReputationOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutConfigurationSetReputationOptionsResponse+newPutConfigurationSetReputationOptionsResponse+  pHttpStatus_ =+    PutConfigurationSetReputationOptionsResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putConfigurationSetReputationOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetReputationOptionsResponse Prelude.Int+putConfigurationSetReputationOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetReputationOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetReputationOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetReputationOptionsResponse)++instance+  Prelude.NFData+    PutConfigurationSetReputationOptionsResponse+  where+  rnf PutConfigurationSetReputationOptionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutConfigurationSetSendingOptions.hs view
@@ -0,0 +1,218 @@+{-# 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.SESV2.PutConfigurationSetSendingOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enable or disable email sending for messages that use a particular+-- configuration set in a specific Amazon Web Services Region.+module Amazonka.SESV2.PutConfigurationSetSendingOptions+  ( -- * Creating a Request+    PutConfigurationSetSendingOptions (..),+    newPutConfigurationSetSendingOptions,++    -- * Request Lenses+    putConfigurationSetSendingOptions_sendingEnabled,+    putConfigurationSetSendingOptions_configurationSetName,++    -- * Destructuring the Response+    PutConfigurationSetSendingOptionsResponse (..),+    newPutConfigurationSetSendingOptionsResponse,++    -- * Response Lenses+    putConfigurationSetSendingOptionsResponse_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.SESV2.Types++-- | A request to enable or disable the ability of Amazon SES to send emails+-- that use a specific configuration set.+--+-- /See:/ 'newPutConfigurationSetSendingOptions' smart constructor.+data PutConfigurationSetSendingOptions = PutConfigurationSetSendingOptions'+  { -- | If @true@, email sending is enabled for the configuration set. If+    -- @false@, email sending is disabled for the configuration set.+    sendingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The name of the configuration set to enable or disable email sending+    -- for.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetSendingOptions' 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:+--+-- 'sendingEnabled', 'putConfigurationSetSendingOptions_sendingEnabled' - If @true@, email sending is enabled for the configuration set. If+-- @false@, email sending is disabled for the configuration set.+--+-- 'configurationSetName', 'putConfigurationSetSendingOptions_configurationSetName' - The name of the configuration set to enable or disable email sending+-- for.+newPutConfigurationSetSendingOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetSendingOptions+newPutConfigurationSetSendingOptions+  pConfigurationSetName_ =+    PutConfigurationSetSendingOptions'+      { sendingEnabled =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | If @true@, email sending is enabled for the configuration set. If+-- @false@, email sending is disabled for the configuration set.+putConfigurationSetSendingOptions_sendingEnabled :: Lens.Lens' PutConfigurationSetSendingOptions (Prelude.Maybe Prelude.Bool)+putConfigurationSetSendingOptions_sendingEnabled = Lens.lens (\PutConfigurationSetSendingOptions' {sendingEnabled} -> sendingEnabled) (\s@PutConfigurationSetSendingOptions' {} a -> s {sendingEnabled = a} :: PutConfigurationSetSendingOptions)++-- | The name of the configuration set to enable or disable email sending+-- for.+putConfigurationSetSendingOptions_configurationSetName :: Lens.Lens' PutConfigurationSetSendingOptions Prelude.Text+putConfigurationSetSendingOptions_configurationSetName = Lens.lens (\PutConfigurationSetSendingOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetSendingOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetSendingOptions)++instance+  Core.AWSRequest+    PutConfigurationSetSendingOptions+  where+  type+    AWSResponse PutConfigurationSetSendingOptions =+      PutConfigurationSetSendingOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetSendingOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetSendingOptions+  where+  hashWithSalt+    _salt+    PutConfigurationSetSendingOptions' {..} =+      _salt+        `Prelude.hashWithSalt` sendingEnabled+        `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    PutConfigurationSetSendingOptions+  where+  rnf PutConfigurationSetSendingOptions' {..} =+    Prelude.rnf sendingEnabled+      `Prelude.seq` Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    PutConfigurationSetSendingOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutConfigurationSetSendingOptions+  where+  toJSON PutConfigurationSetSendingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SendingEnabled" Data..=)+              Prelude.<$> sendingEnabled+          ]+      )++instance+  Data.ToPath+    PutConfigurationSetSendingOptions+  where+  toPath PutConfigurationSetSendingOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/sending"+      ]++instance+  Data.ToQuery+    PutConfigurationSetSendingOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutConfigurationSetSendingOptionsResponse' smart constructor.+data PutConfigurationSetSendingOptionsResponse = PutConfigurationSetSendingOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetSendingOptionsResponse' 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', 'putConfigurationSetSendingOptionsResponse_httpStatus' - The response's http status code.+newPutConfigurationSetSendingOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutConfigurationSetSendingOptionsResponse+newPutConfigurationSetSendingOptionsResponse+  pHttpStatus_ =+    PutConfigurationSetSendingOptionsResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putConfigurationSetSendingOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetSendingOptionsResponse Prelude.Int+putConfigurationSetSendingOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetSendingOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetSendingOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetSendingOptionsResponse)++instance+  Prelude.NFData+    PutConfigurationSetSendingOptionsResponse+  where+  rnf PutConfigurationSetSendingOptionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutConfigurationSetSuppressionOptions.hs view
@@ -0,0 +1,247 @@+{-# 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.SESV2.PutConfigurationSetSuppressionOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Specify the account suppression list preferences for a configuration+-- set.+module Amazonka.SESV2.PutConfigurationSetSuppressionOptions+  ( -- * Creating a Request+    PutConfigurationSetSuppressionOptions (..),+    newPutConfigurationSetSuppressionOptions,++    -- * Request Lenses+    putConfigurationSetSuppressionOptions_suppressedReasons,+    putConfigurationSetSuppressionOptions_configurationSetName,++    -- * Destructuring the Response+    PutConfigurationSetSuppressionOptionsResponse (..),+    newPutConfigurationSetSuppressionOptionsResponse,++    -- * Response Lenses+    putConfigurationSetSuppressionOptionsResponse_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.SESV2.Types++-- | A request to change the account suppression list preferences for a+-- specific configuration set.+--+-- /See:/ 'newPutConfigurationSetSuppressionOptions' smart constructor.+data PutConfigurationSetSuppressionOptions = PutConfigurationSetSuppressionOptions'+  { -- | A list that contains the reasons that email addresses are automatically+    -- added to the suppression list for your account. This list can contain+    -- any or all of the following:+    --+    -- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+    --     list for your account when a message sent to that address results in+    --     a complaint.+    --+    -- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+    --     for your account when a message sent to that address results in a+    --     hard bounce.+    suppressedReasons :: Prelude.Maybe [SuppressionListReason],+    -- | The name of the configuration set to change the suppression list+    -- preferences for.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetSuppressionOptions' 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:+--+-- 'suppressedReasons', 'putConfigurationSetSuppressionOptions_suppressedReasons' - A list that contains the reasons that email addresses are automatically+-- added to the suppression list for your account. This list can contain+-- any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+--+-- 'configurationSetName', 'putConfigurationSetSuppressionOptions_configurationSetName' - The name of the configuration set to change the suppression list+-- preferences for.+newPutConfigurationSetSuppressionOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetSuppressionOptions+newPutConfigurationSetSuppressionOptions+  pConfigurationSetName_ =+    PutConfigurationSetSuppressionOptions'+      { suppressedReasons =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | A list that contains the reasons that email addresses are automatically+-- added to the suppression list for your account. This list can contain+-- any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+putConfigurationSetSuppressionOptions_suppressedReasons :: Lens.Lens' PutConfigurationSetSuppressionOptions (Prelude.Maybe [SuppressionListReason])+putConfigurationSetSuppressionOptions_suppressedReasons = Lens.lens (\PutConfigurationSetSuppressionOptions' {suppressedReasons} -> suppressedReasons) (\s@PutConfigurationSetSuppressionOptions' {} a -> s {suppressedReasons = a} :: PutConfigurationSetSuppressionOptions) Prelude.. Lens.mapping Lens.coerced++-- | The name of the configuration set to change the suppression list+-- preferences for.+putConfigurationSetSuppressionOptions_configurationSetName :: Lens.Lens' PutConfigurationSetSuppressionOptions Prelude.Text+putConfigurationSetSuppressionOptions_configurationSetName = Lens.lens (\PutConfigurationSetSuppressionOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetSuppressionOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetSuppressionOptions)++instance+  Core.AWSRequest+    PutConfigurationSetSuppressionOptions+  where+  type+    AWSResponse+      PutConfigurationSetSuppressionOptions =+      PutConfigurationSetSuppressionOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetSuppressionOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetSuppressionOptions+  where+  hashWithSalt+    _salt+    PutConfigurationSetSuppressionOptions' {..} =+      _salt+        `Prelude.hashWithSalt` suppressedReasons+        `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    PutConfigurationSetSuppressionOptions+  where+  rnf PutConfigurationSetSuppressionOptions' {..} =+    Prelude.rnf suppressedReasons+      `Prelude.seq` Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    PutConfigurationSetSuppressionOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutConfigurationSetSuppressionOptions+  where+  toJSON PutConfigurationSetSuppressionOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SuppressedReasons" Data..=)+              Prelude.<$> suppressedReasons+          ]+      )++instance+  Data.ToPath+    PutConfigurationSetSuppressionOptions+  where+  toPath PutConfigurationSetSuppressionOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/suppression-options"+      ]++instance+  Data.ToQuery+    PutConfigurationSetSuppressionOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutConfigurationSetSuppressionOptionsResponse' smart constructor.+data PutConfigurationSetSuppressionOptionsResponse = PutConfigurationSetSuppressionOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetSuppressionOptionsResponse' 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', 'putConfigurationSetSuppressionOptionsResponse_httpStatus' - The response's http status code.+newPutConfigurationSetSuppressionOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutConfigurationSetSuppressionOptionsResponse+newPutConfigurationSetSuppressionOptionsResponse+  pHttpStatus_ =+    PutConfigurationSetSuppressionOptionsResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putConfigurationSetSuppressionOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetSuppressionOptionsResponse Prelude.Int+putConfigurationSetSuppressionOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetSuppressionOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetSuppressionOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetSuppressionOptionsResponse)++instance+  Prelude.NFData+    PutConfigurationSetSuppressionOptionsResponse+  where+  rnf+    PutConfigurationSetSuppressionOptionsResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutConfigurationSetTrackingOptions.hs view
@@ -0,0 +1,212 @@+{-# 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.SESV2.PutConfigurationSetTrackingOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Specify a custom domain to use for open and click tracking elements in+-- email that you send.+module Amazonka.SESV2.PutConfigurationSetTrackingOptions+  ( -- * Creating a Request+    PutConfigurationSetTrackingOptions (..),+    newPutConfigurationSetTrackingOptions,++    -- * Request Lenses+    putConfigurationSetTrackingOptions_customRedirectDomain,+    putConfigurationSetTrackingOptions_configurationSetName,++    -- * Destructuring the Response+    PutConfigurationSetTrackingOptionsResponse (..),+    newPutConfigurationSetTrackingOptionsResponse,++    -- * Response Lenses+    putConfigurationSetTrackingOptionsResponse_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.SESV2.Types++-- | A request to add a custom domain for tracking open and click events to a+-- configuration set.+--+-- /See:/ 'newPutConfigurationSetTrackingOptions' smart constructor.+data PutConfigurationSetTrackingOptions = PutConfigurationSetTrackingOptions'+  { -- | The domain to use to track open and click events.+    customRedirectDomain :: Prelude.Maybe Prelude.Text,+    -- | The name of the configuration set.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetTrackingOptions' 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', 'putConfigurationSetTrackingOptions_customRedirectDomain' - The domain to use to track open and click events.+--+-- 'configurationSetName', 'putConfigurationSetTrackingOptions_configurationSetName' - The name of the configuration set.+newPutConfigurationSetTrackingOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetTrackingOptions+newPutConfigurationSetTrackingOptions+  pConfigurationSetName_ =+    PutConfigurationSetTrackingOptions'+      { customRedirectDomain =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | The domain to use to track open and click events.+putConfigurationSetTrackingOptions_customRedirectDomain :: Lens.Lens' PutConfigurationSetTrackingOptions (Prelude.Maybe Prelude.Text)+putConfigurationSetTrackingOptions_customRedirectDomain = Lens.lens (\PutConfigurationSetTrackingOptions' {customRedirectDomain} -> customRedirectDomain) (\s@PutConfigurationSetTrackingOptions' {} a -> s {customRedirectDomain = a} :: PutConfigurationSetTrackingOptions)++-- | The name of the configuration set.+putConfigurationSetTrackingOptions_configurationSetName :: Lens.Lens' PutConfigurationSetTrackingOptions Prelude.Text+putConfigurationSetTrackingOptions_configurationSetName = Lens.lens (\PutConfigurationSetTrackingOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetTrackingOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetTrackingOptions)++instance+  Core.AWSRequest+    PutConfigurationSetTrackingOptions+  where+  type+    AWSResponse PutConfigurationSetTrackingOptions =+      PutConfigurationSetTrackingOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetTrackingOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetTrackingOptions+  where+  hashWithSalt+    _salt+    PutConfigurationSetTrackingOptions' {..} =+      _salt+        `Prelude.hashWithSalt` customRedirectDomain+        `Prelude.hashWithSalt` configurationSetName++instance+  Prelude.NFData+    PutConfigurationSetTrackingOptions+  where+  rnf PutConfigurationSetTrackingOptions' {..} =+    Prelude.rnf customRedirectDomain+      `Prelude.seq` Prelude.rnf configurationSetName++instance+  Data.ToHeaders+    PutConfigurationSetTrackingOptions+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutConfigurationSetTrackingOptions+  where+  toJSON PutConfigurationSetTrackingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CustomRedirectDomain" Data..=)+              Prelude.<$> customRedirectDomain+          ]+      )++instance+  Data.ToPath+    PutConfigurationSetTrackingOptions+  where+  toPath PutConfigurationSetTrackingOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/tracking-options"+      ]++instance+  Data.ToQuery+    PutConfigurationSetTrackingOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutConfigurationSetTrackingOptionsResponse' smart constructor.+data PutConfigurationSetTrackingOptionsResponse = PutConfigurationSetTrackingOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetTrackingOptionsResponse' 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', 'putConfigurationSetTrackingOptionsResponse_httpStatus' - The response's http status code.+newPutConfigurationSetTrackingOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutConfigurationSetTrackingOptionsResponse+newPutConfigurationSetTrackingOptionsResponse+  pHttpStatus_ =+    PutConfigurationSetTrackingOptionsResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putConfigurationSetTrackingOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetTrackingOptionsResponse Prelude.Int+putConfigurationSetTrackingOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetTrackingOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetTrackingOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetTrackingOptionsResponse)++instance+  Prelude.NFData+    PutConfigurationSetTrackingOptionsResponse+  where+  rnf PutConfigurationSetTrackingOptionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutConfigurationSetVdmOptions.hs view
@@ -0,0 +1,193 @@+{-# 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.SESV2.PutConfigurationSetVdmOptions+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Specify VDM preferences for email that you send using the configuration+-- set.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.PutConfigurationSetVdmOptions+  ( -- * Creating a Request+    PutConfigurationSetVdmOptions (..),+    newPutConfigurationSetVdmOptions,++    -- * Request Lenses+    putConfigurationSetVdmOptions_vdmOptions,+    putConfigurationSetVdmOptions_configurationSetName,++    -- * Destructuring the Response+    PutConfigurationSetVdmOptionsResponse (..),+    newPutConfigurationSetVdmOptionsResponse,++    -- * Response Lenses+    putConfigurationSetVdmOptionsResponse_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.SESV2.Types++-- | A request to add specific VDM settings to a configuration set.+--+-- /See:/ 'newPutConfigurationSetVdmOptions' smart constructor.+data PutConfigurationSetVdmOptions = PutConfigurationSetVdmOptions'+  { -- | The VDM options to apply to the configuration set.+    vdmOptions :: Prelude.Maybe VdmOptions,+    -- | The name of the configuration set.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetVdmOptions' 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:+--+-- 'vdmOptions', 'putConfigurationSetVdmOptions_vdmOptions' - The VDM options to apply to the configuration set.+--+-- 'configurationSetName', 'putConfigurationSetVdmOptions_configurationSetName' - The name of the configuration set.+newPutConfigurationSetVdmOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetVdmOptions+newPutConfigurationSetVdmOptions+  pConfigurationSetName_ =+    PutConfigurationSetVdmOptions'+      { vdmOptions =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | The VDM options to apply to the configuration set.+putConfigurationSetVdmOptions_vdmOptions :: Lens.Lens' PutConfigurationSetVdmOptions (Prelude.Maybe VdmOptions)+putConfigurationSetVdmOptions_vdmOptions = Lens.lens (\PutConfigurationSetVdmOptions' {vdmOptions} -> vdmOptions) (\s@PutConfigurationSetVdmOptions' {} a -> s {vdmOptions = a} :: PutConfigurationSetVdmOptions)++-- | The name of the configuration set.+putConfigurationSetVdmOptions_configurationSetName :: Lens.Lens' PutConfigurationSetVdmOptions Prelude.Text+putConfigurationSetVdmOptions_configurationSetName = Lens.lens (\PutConfigurationSetVdmOptions' {configurationSetName} -> configurationSetName) (\s@PutConfigurationSetVdmOptions' {} a -> s {configurationSetName = a} :: PutConfigurationSetVdmOptions)++instance+  Core.AWSRequest+    PutConfigurationSetVdmOptions+  where+  type+    AWSResponse PutConfigurationSetVdmOptions =+      PutConfigurationSetVdmOptionsResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutConfigurationSetVdmOptionsResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutConfigurationSetVdmOptions+  where+  hashWithSalt _salt PutConfigurationSetVdmOptions' {..} =+    _salt+      `Prelude.hashWithSalt` vdmOptions+      `Prelude.hashWithSalt` configurationSetName++instance Prelude.NFData PutConfigurationSetVdmOptions where+  rnf PutConfigurationSetVdmOptions' {..} =+    Prelude.rnf vdmOptions+      `Prelude.seq` Prelude.rnf configurationSetName++instance Data.ToHeaders PutConfigurationSetVdmOptions where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutConfigurationSetVdmOptions where+  toJSON PutConfigurationSetVdmOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [("VdmOptions" Data..=) Prelude.<$> vdmOptions]+      )++instance Data.ToPath PutConfigurationSetVdmOptions where+  toPath PutConfigurationSetVdmOptions' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/vdm-options"+      ]++instance Data.ToQuery PutConfigurationSetVdmOptions where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutConfigurationSetVdmOptionsResponse' smart constructor.+data PutConfigurationSetVdmOptionsResponse = PutConfigurationSetVdmOptionsResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutConfigurationSetVdmOptionsResponse' 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', 'putConfigurationSetVdmOptionsResponse_httpStatus' - The response's http status code.+newPutConfigurationSetVdmOptionsResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutConfigurationSetVdmOptionsResponse+newPutConfigurationSetVdmOptionsResponse pHttpStatus_ =+  PutConfigurationSetVdmOptionsResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putConfigurationSetVdmOptionsResponse_httpStatus :: Lens.Lens' PutConfigurationSetVdmOptionsResponse Prelude.Int+putConfigurationSetVdmOptionsResponse_httpStatus = Lens.lens (\PutConfigurationSetVdmOptionsResponse' {httpStatus} -> httpStatus) (\s@PutConfigurationSetVdmOptionsResponse' {} a -> s {httpStatus = a} :: PutConfigurationSetVdmOptionsResponse)++instance+  Prelude.NFData+    PutConfigurationSetVdmOptionsResponse+  where+  rnf PutConfigurationSetVdmOptionsResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutDedicatedIpInPool.hs view
@@ -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.SESV2.PutDedicatedIpInPool+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Move a dedicated IP address to an existing dedicated IP pool.+--+-- The dedicated IP address that you specify must already exist, and must+-- be associated with your Amazon Web Services account.+--+-- The dedicated IP pool you specify must already exist. You can create a+-- new pool by using the @CreateDedicatedIpPool@ operation.+module Amazonka.SESV2.PutDedicatedIpInPool+  ( -- * Creating a Request+    PutDedicatedIpInPool (..),+    newPutDedicatedIpInPool,++    -- * Request Lenses+    putDedicatedIpInPool_ip,+    putDedicatedIpInPool_destinationPoolName,++    -- * Destructuring the Response+    PutDedicatedIpInPoolResponse (..),+    newPutDedicatedIpInPoolResponse,++    -- * Response Lenses+    putDedicatedIpInPoolResponse_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.SESV2.Types++-- | A request to move a dedicated IP address to a dedicated IP pool.+--+-- /See:/ 'newPutDedicatedIpInPool' smart constructor.+data PutDedicatedIpInPool = PutDedicatedIpInPool'+  { -- | The IP address that you want to move to the dedicated IP pool. The value+    -- you specify has to be a dedicated IP address that\'s associated with+    -- your Amazon Web Services account.+    ip :: Prelude.Text,+    -- | The name of the IP pool that you want to add the dedicated IP address+    -- to. You have to specify an IP pool that already exists.+    destinationPoolName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDedicatedIpInPool' 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:+--+-- 'ip', 'putDedicatedIpInPool_ip' - The IP address that you want to move to the dedicated IP pool. The value+-- you specify has to be a dedicated IP address that\'s associated with+-- your Amazon Web Services account.+--+-- 'destinationPoolName', 'putDedicatedIpInPool_destinationPoolName' - The name of the IP pool that you want to add the dedicated IP address+-- to. You have to specify an IP pool that already exists.+newPutDedicatedIpInPool ::+  -- | 'ip'+  Prelude.Text ->+  -- | 'destinationPoolName'+  Prelude.Text ->+  PutDedicatedIpInPool+newPutDedicatedIpInPool pIp_ pDestinationPoolName_ =+  PutDedicatedIpInPool'+    { ip = pIp_,+      destinationPoolName = pDestinationPoolName_+    }++-- | The IP address that you want to move to the dedicated IP pool. The value+-- you specify has to be a dedicated IP address that\'s associated with+-- your Amazon Web Services account.+putDedicatedIpInPool_ip :: Lens.Lens' PutDedicatedIpInPool Prelude.Text+putDedicatedIpInPool_ip = Lens.lens (\PutDedicatedIpInPool' {ip} -> ip) (\s@PutDedicatedIpInPool' {} a -> s {ip = a} :: PutDedicatedIpInPool)++-- | The name of the IP pool that you want to add the dedicated IP address+-- to. You have to specify an IP pool that already exists.+putDedicatedIpInPool_destinationPoolName :: Lens.Lens' PutDedicatedIpInPool Prelude.Text+putDedicatedIpInPool_destinationPoolName = Lens.lens (\PutDedicatedIpInPool' {destinationPoolName} -> destinationPoolName) (\s@PutDedicatedIpInPool' {} a -> s {destinationPoolName = a} :: PutDedicatedIpInPool)++instance Core.AWSRequest PutDedicatedIpInPool where+  type+    AWSResponse PutDedicatedIpInPool =+      PutDedicatedIpInPoolResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutDedicatedIpInPoolResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutDedicatedIpInPool where+  hashWithSalt _salt PutDedicatedIpInPool' {..} =+    _salt+      `Prelude.hashWithSalt` ip+      `Prelude.hashWithSalt` destinationPoolName++instance Prelude.NFData PutDedicatedIpInPool where+  rnf PutDedicatedIpInPool' {..} =+    Prelude.rnf ip+      `Prelude.seq` Prelude.rnf destinationPoolName++instance Data.ToHeaders PutDedicatedIpInPool where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutDedicatedIpInPool where+  toJSON PutDedicatedIpInPool' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("DestinationPoolName" Data..= destinationPoolName)+          ]+      )++instance Data.ToPath PutDedicatedIpInPool where+  toPath PutDedicatedIpInPool' {..} =+    Prelude.mconcat+      ["/v2/email/dedicated-ips/", Data.toBS ip, "/pool"]++instance Data.ToQuery PutDedicatedIpInPool where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutDedicatedIpInPoolResponse' smart constructor.+data PutDedicatedIpInPoolResponse = PutDedicatedIpInPoolResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDedicatedIpInPoolResponse' 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', 'putDedicatedIpInPoolResponse_httpStatus' - The response's http status code.+newPutDedicatedIpInPoolResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutDedicatedIpInPoolResponse+newPutDedicatedIpInPoolResponse pHttpStatus_ =+  PutDedicatedIpInPoolResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putDedicatedIpInPoolResponse_httpStatus :: Lens.Lens' PutDedicatedIpInPoolResponse Prelude.Int+putDedicatedIpInPoolResponse_httpStatus = Lens.lens (\PutDedicatedIpInPoolResponse' {httpStatus} -> httpStatus) (\s@PutDedicatedIpInPoolResponse' {} a -> s {httpStatus = a} :: PutDedicatedIpInPoolResponse)++instance Prelude.NFData PutDedicatedIpInPoolResponse where+  rnf PutDedicatedIpInPoolResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutDedicatedIpWarmupAttributes.hs view
@@ -0,0 +1,205 @@+{-# 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.SESV2.PutDedicatedIpWarmupAttributes+-- 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.SESV2.PutDedicatedIpWarmupAttributes+  ( -- * Creating a Request+    PutDedicatedIpWarmupAttributes (..),+    newPutDedicatedIpWarmupAttributes,++    -- * Request Lenses+    putDedicatedIpWarmupAttributes_ip,+    putDedicatedIpWarmupAttributes_warmupPercentage,++    -- * Destructuring the Response+    PutDedicatedIpWarmupAttributesResponse (..),+    newPutDedicatedIpWarmupAttributesResponse,++    -- * Response Lenses+    putDedicatedIpWarmupAttributesResponse_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.SESV2.Types++-- | A request to change the warm-up attributes for a dedicated IP address.+-- This operation is useful when you want to resume the warm-up process for+-- an existing IP address.+--+-- /See:/ 'newPutDedicatedIpWarmupAttributes' smart constructor.+data PutDedicatedIpWarmupAttributes = PutDedicatedIpWarmupAttributes'+  { -- | The dedicated IP address that you want to update the warm-up attributes+    -- for.+    ip :: Prelude.Text,+    -- | The warm-up percentage that you want to associate with the dedicated IP+    -- address.+    warmupPercentage :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDedicatedIpWarmupAttributes' 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:+--+-- 'ip', 'putDedicatedIpWarmupAttributes_ip' - The dedicated IP address that you want to update the warm-up attributes+-- for.+--+-- 'warmupPercentage', 'putDedicatedIpWarmupAttributes_warmupPercentage' - The warm-up percentage that you want to associate with the dedicated IP+-- address.+newPutDedicatedIpWarmupAttributes ::+  -- | 'ip'+  Prelude.Text ->+  -- | 'warmupPercentage'+  Prelude.Int ->+  PutDedicatedIpWarmupAttributes+newPutDedicatedIpWarmupAttributes+  pIp_+  pWarmupPercentage_ =+    PutDedicatedIpWarmupAttributes'+      { ip = pIp_,+        warmupPercentage = pWarmupPercentage_+      }++-- | The dedicated IP address that you want to update the warm-up attributes+-- for.+putDedicatedIpWarmupAttributes_ip :: Lens.Lens' PutDedicatedIpWarmupAttributes Prelude.Text+putDedicatedIpWarmupAttributes_ip = Lens.lens (\PutDedicatedIpWarmupAttributes' {ip} -> ip) (\s@PutDedicatedIpWarmupAttributes' {} a -> s {ip = a} :: PutDedicatedIpWarmupAttributes)++-- | The warm-up percentage that you want to associate with the dedicated IP+-- address.+putDedicatedIpWarmupAttributes_warmupPercentage :: Lens.Lens' PutDedicatedIpWarmupAttributes Prelude.Int+putDedicatedIpWarmupAttributes_warmupPercentage = Lens.lens (\PutDedicatedIpWarmupAttributes' {warmupPercentage} -> warmupPercentage) (\s@PutDedicatedIpWarmupAttributes' {} a -> s {warmupPercentage = a} :: PutDedicatedIpWarmupAttributes)++instance+  Core.AWSRequest+    PutDedicatedIpWarmupAttributes+  where+  type+    AWSResponse PutDedicatedIpWarmupAttributes =+      PutDedicatedIpWarmupAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutDedicatedIpWarmupAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutDedicatedIpWarmupAttributes+  where+  hashWithSalt+    _salt+    PutDedicatedIpWarmupAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` ip+        `Prelude.hashWithSalt` warmupPercentage++instance+  Prelude.NFData+    PutDedicatedIpWarmupAttributes+  where+  rnf PutDedicatedIpWarmupAttributes' {..} =+    Prelude.rnf ip+      `Prelude.seq` Prelude.rnf warmupPercentage++instance+  Data.ToHeaders+    PutDedicatedIpWarmupAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutDedicatedIpWarmupAttributes where+  toJSON PutDedicatedIpWarmupAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("WarmupPercentage" Data..= warmupPercentage)+          ]+      )++instance Data.ToPath PutDedicatedIpWarmupAttributes where+  toPath PutDedicatedIpWarmupAttributes' {..} =+    Prelude.mconcat+      ["/v2/email/dedicated-ips/", Data.toBS ip, "/warmup"]++instance Data.ToQuery PutDedicatedIpWarmupAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutDedicatedIpWarmupAttributesResponse' smart constructor.+data PutDedicatedIpWarmupAttributesResponse = PutDedicatedIpWarmupAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDedicatedIpWarmupAttributesResponse' 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', 'putDedicatedIpWarmupAttributesResponse_httpStatus' - The response's http status code.+newPutDedicatedIpWarmupAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutDedicatedIpWarmupAttributesResponse+newPutDedicatedIpWarmupAttributesResponse+  pHttpStatus_ =+    PutDedicatedIpWarmupAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putDedicatedIpWarmupAttributesResponse_httpStatus :: Lens.Lens' PutDedicatedIpWarmupAttributesResponse Prelude.Int+putDedicatedIpWarmupAttributesResponse_httpStatus = Lens.lens (\PutDedicatedIpWarmupAttributesResponse' {httpStatus} -> httpStatus) (\s@PutDedicatedIpWarmupAttributesResponse' {} a -> s {httpStatus = a} :: PutDedicatedIpWarmupAttributesResponse)++instance+  Prelude.NFData+    PutDedicatedIpWarmupAttributesResponse+  where+  rnf PutDedicatedIpWarmupAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutDeliverabilityDashboardOption.hs view
@@ -0,0 +1,228 @@+{-# 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.SESV2.PutDeliverabilityDashboardOption+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Enable or disable the Deliverability dashboard. When you enable the+-- Deliverability dashboard, you gain access to reputation, deliverability,+-- and other metrics for the domains that you use to send email. You also+-- gain the ability to perform predictive inbox placement tests.+--+-- When you use the Deliverability dashboard, you pay a monthly+-- subscription charge, in addition to any other fees that you accrue by+-- using Amazon SES and other Amazon Web Services services. For more+-- information about the features and cost of a Deliverability dashboard+-- subscription, see+-- <http://aws.amazon.com/ses/pricing/ Amazon SES Pricing>.+module Amazonka.SESV2.PutDeliverabilityDashboardOption+  ( -- * Creating a Request+    PutDeliverabilityDashboardOption (..),+    newPutDeliverabilityDashboardOption,++    -- * Request Lenses+    putDeliverabilityDashboardOption_subscribedDomains,+    putDeliverabilityDashboardOption_dashboardEnabled,++    -- * Destructuring the Response+    PutDeliverabilityDashboardOptionResponse (..),+    newPutDeliverabilityDashboardOptionResponse,++    -- * Response Lenses+    putDeliverabilityDashboardOptionResponse_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.SESV2.Types++-- | Enable or disable the Deliverability dashboard. When you enable the+-- Deliverability dashboard, you gain access to reputation, deliverability,+-- and other metrics for the domains that you use to send email using+-- Amazon SES API v2. You also gain the ability to perform predictive inbox+-- placement tests.+--+-- When you use the Deliverability dashboard, you pay a monthly+-- subscription charge, in addition to any other fees that you accrue by+-- using Amazon SES and other Amazon Web Services services. For more+-- information about the features and cost of a Deliverability dashboard+-- subscription, see+-- <http://aws.amazon.com/pinpoint/pricing/ Amazon Pinpoint Pricing>.+--+-- /See:/ 'newPutDeliverabilityDashboardOption' smart constructor.+data PutDeliverabilityDashboardOption = PutDeliverabilityDashboardOption'+  { -- | An array of objects, one for each verified domain that you use to send+    -- email and enabled the Deliverability dashboard for.+    subscribedDomains :: Prelude.Maybe [DomainDeliverabilityTrackingOption],+    -- | Specifies whether to enable the Deliverability dashboard. To enable the+    -- dashboard, set this value to @true@.+    dashboardEnabled :: Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDeliverabilityDashboardOption' 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:+--+-- 'subscribedDomains', 'putDeliverabilityDashboardOption_subscribedDomains' - An array of objects, one for each verified domain that you use to send+-- email and enabled the Deliverability dashboard for.+--+-- 'dashboardEnabled', 'putDeliverabilityDashboardOption_dashboardEnabled' - Specifies whether to enable the Deliverability dashboard. To enable the+-- dashboard, set this value to @true@.+newPutDeliverabilityDashboardOption ::+  -- | 'dashboardEnabled'+  Prelude.Bool ->+  PutDeliverabilityDashboardOption+newPutDeliverabilityDashboardOption+  pDashboardEnabled_ =+    PutDeliverabilityDashboardOption'+      { subscribedDomains =+          Prelude.Nothing,+        dashboardEnabled = pDashboardEnabled_+      }++-- | An array of objects, one for each verified domain that you use to send+-- email and enabled the Deliverability dashboard for.+putDeliverabilityDashboardOption_subscribedDomains :: Lens.Lens' PutDeliverabilityDashboardOption (Prelude.Maybe [DomainDeliverabilityTrackingOption])+putDeliverabilityDashboardOption_subscribedDomains = Lens.lens (\PutDeliverabilityDashboardOption' {subscribedDomains} -> subscribedDomains) (\s@PutDeliverabilityDashboardOption' {} a -> s {subscribedDomains = a} :: PutDeliverabilityDashboardOption) Prelude.. Lens.mapping Lens.coerced++-- | Specifies whether to enable the Deliverability dashboard. To enable the+-- dashboard, set this value to @true@.+putDeliverabilityDashboardOption_dashboardEnabled :: Lens.Lens' PutDeliverabilityDashboardOption Prelude.Bool+putDeliverabilityDashboardOption_dashboardEnabled = Lens.lens (\PutDeliverabilityDashboardOption' {dashboardEnabled} -> dashboardEnabled) (\s@PutDeliverabilityDashboardOption' {} a -> s {dashboardEnabled = a} :: PutDeliverabilityDashboardOption)++instance+  Core.AWSRequest+    PutDeliverabilityDashboardOption+  where+  type+    AWSResponse PutDeliverabilityDashboardOption =+      PutDeliverabilityDashboardOptionResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutDeliverabilityDashboardOptionResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutDeliverabilityDashboardOption+  where+  hashWithSalt+    _salt+    PutDeliverabilityDashboardOption' {..} =+      _salt+        `Prelude.hashWithSalt` subscribedDomains+        `Prelude.hashWithSalt` dashboardEnabled++instance+  Prelude.NFData+    PutDeliverabilityDashboardOption+  where+  rnf PutDeliverabilityDashboardOption' {..} =+    Prelude.rnf subscribedDomains+      `Prelude.seq` Prelude.rnf dashboardEnabled++instance+  Data.ToHeaders+    PutDeliverabilityDashboardOption+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutDeliverabilityDashboardOption where+  toJSON PutDeliverabilityDashboardOption' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SubscribedDomains" Data..=)+              Prelude.<$> subscribedDomains,+            Prelude.Just+              ("DashboardEnabled" Data..= dashboardEnabled)+          ]+      )++instance Data.ToPath PutDeliverabilityDashboardOption where+  toPath =+    Prelude.const "/v2/email/deliverability-dashboard"++instance+  Data.ToQuery+    PutDeliverabilityDashboardOption+  where+  toQuery = Prelude.const Prelude.mempty++-- | A response that indicates whether the Deliverability dashboard is+-- enabled.+--+-- /See:/ 'newPutDeliverabilityDashboardOptionResponse' smart constructor.+data PutDeliverabilityDashboardOptionResponse = PutDeliverabilityDashboardOptionResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutDeliverabilityDashboardOptionResponse' 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', 'putDeliverabilityDashboardOptionResponse_httpStatus' - The response's http status code.+newPutDeliverabilityDashboardOptionResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutDeliverabilityDashboardOptionResponse+newPutDeliverabilityDashboardOptionResponse+  pHttpStatus_ =+    PutDeliverabilityDashboardOptionResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putDeliverabilityDashboardOptionResponse_httpStatus :: Lens.Lens' PutDeliverabilityDashboardOptionResponse Prelude.Int+putDeliverabilityDashboardOptionResponse_httpStatus = Lens.lens (\PutDeliverabilityDashboardOptionResponse' {httpStatus} -> httpStatus) (\s@PutDeliverabilityDashboardOptionResponse' {} a -> s {httpStatus = a} :: PutDeliverabilityDashboardOptionResponse)++instance+  Prelude.NFData+    PutDeliverabilityDashboardOptionResponse+  where+  rnf PutDeliverabilityDashboardOptionResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutEmailIdentityConfigurationSetAttributes.hs view
@@ -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.SESV2.PutEmailIdentityConfigurationSetAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to associate a configuration set with an email identity.+module Amazonka.SESV2.PutEmailIdentityConfigurationSetAttributes+  ( -- * Creating a Request+    PutEmailIdentityConfigurationSetAttributes (..),+    newPutEmailIdentityConfigurationSetAttributes,++    -- * Request Lenses+    putEmailIdentityConfigurationSetAttributes_configurationSetName,+    putEmailIdentityConfigurationSetAttributes_emailIdentity,++    -- * Destructuring the Response+    PutEmailIdentityConfigurationSetAttributesResponse (..),+    newPutEmailIdentityConfigurationSetAttributesResponse,++    -- * Response Lenses+    putEmailIdentityConfigurationSetAttributesResponse_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.SESV2.Types++-- | A request to associate a configuration set with an email identity.+--+-- /See:/ 'newPutEmailIdentityConfigurationSetAttributes' smart constructor.+data PutEmailIdentityConfigurationSetAttributes = PutEmailIdentityConfigurationSetAttributes'+  { -- | The configuration set to associate with an email identity.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | The email address or domain to associate with a configuration set.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityConfigurationSetAttributes' 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', 'putEmailIdentityConfigurationSetAttributes_configurationSetName' - The configuration set to associate with an email identity.+--+-- 'emailIdentity', 'putEmailIdentityConfigurationSetAttributes_emailIdentity' - The email address or domain to associate with a configuration set.+newPutEmailIdentityConfigurationSetAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  PutEmailIdentityConfigurationSetAttributes+newPutEmailIdentityConfigurationSetAttributes+  pEmailIdentity_ =+    PutEmailIdentityConfigurationSetAttributes'+      { configurationSetName =+          Prelude.Nothing,+        emailIdentity = pEmailIdentity_+      }++-- | The configuration set to associate with an email identity.+putEmailIdentityConfigurationSetAttributes_configurationSetName :: Lens.Lens' PutEmailIdentityConfigurationSetAttributes (Prelude.Maybe Prelude.Text)+putEmailIdentityConfigurationSetAttributes_configurationSetName = Lens.lens (\PutEmailIdentityConfigurationSetAttributes' {configurationSetName} -> configurationSetName) (\s@PutEmailIdentityConfigurationSetAttributes' {} a -> s {configurationSetName = a} :: PutEmailIdentityConfigurationSetAttributes)++-- | The email address or domain to associate with a configuration set.+putEmailIdentityConfigurationSetAttributes_emailIdentity :: Lens.Lens' PutEmailIdentityConfigurationSetAttributes Prelude.Text+putEmailIdentityConfigurationSetAttributes_emailIdentity = Lens.lens (\PutEmailIdentityConfigurationSetAttributes' {emailIdentity} -> emailIdentity) (\s@PutEmailIdentityConfigurationSetAttributes' {} a -> s {emailIdentity = a} :: PutEmailIdentityConfigurationSetAttributes)++instance+  Core.AWSRequest+    PutEmailIdentityConfigurationSetAttributes+  where+  type+    AWSResponse+      PutEmailIdentityConfigurationSetAttributes =+      PutEmailIdentityConfigurationSetAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutEmailIdentityConfigurationSetAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutEmailIdentityConfigurationSetAttributes+  where+  hashWithSalt+    _salt+    PutEmailIdentityConfigurationSetAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` configurationSetName+        `Prelude.hashWithSalt` emailIdentity++instance+  Prelude.NFData+    PutEmailIdentityConfigurationSetAttributes+  where+  rnf PutEmailIdentityConfigurationSetAttributes' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf emailIdentity++instance+  Data.ToHeaders+    PutEmailIdentityConfigurationSetAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutEmailIdentityConfigurationSetAttributes+  where+  toJSON+    PutEmailIdentityConfigurationSetAttributes' {..} =+      Data.object+        ( Prelude.catMaybes+            [ ("ConfigurationSetName" Data..=)+                Prelude.<$> configurationSetName+            ]+        )++instance+  Data.ToPath+    PutEmailIdentityConfigurationSetAttributes+  where+  toPath+    PutEmailIdentityConfigurationSetAttributes' {..} =+      Prelude.mconcat+        [ "/v2/email/identities/",+          Data.toBS emailIdentity,+          "/configuration-set"+        ]++instance+  Data.ToQuery+    PutEmailIdentityConfigurationSetAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newPutEmailIdentityConfigurationSetAttributesResponse' smart constructor.+data PutEmailIdentityConfigurationSetAttributesResponse = PutEmailIdentityConfigurationSetAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityConfigurationSetAttributesResponse' 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', 'putEmailIdentityConfigurationSetAttributesResponse_httpStatus' - The response's http status code.+newPutEmailIdentityConfigurationSetAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutEmailIdentityConfigurationSetAttributesResponse+newPutEmailIdentityConfigurationSetAttributesResponse+  pHttpStatus_ =+    PutEmailIdentityConfigurationSetAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putEmailIdentityConfigurationSetAttributesResponse_httpStatus :: Lens.Lens' PutEmailIdentityConfigurationSetAttributesResponse Prelude.Int+putEmailIdentityConfigurationSetAttributesResponse_httpStatus = Lens.lens (\PutEmailIdentityConfigurationSetAttributesResponse' {httpStatus} -> httpStatus) (\s@PutEmailIdentityConfigurationSetAttributesResponse' {} a -> s {httpStatus = a} :: PutEmailIdentityConfigurationSetAttributesResponse)++instance+  Prelude.NFData+    PutEmailIdentityConfigurationSetAttributesResponse+  where+  rnf+    PutEmailIdentityConfigurationSetAttributesResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutEmailIdentityDkimAttributes.hs view
@@ -0,0 +1,212 @@+{-# 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.SESV2.PutEmailIdentityDkimAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to enable or disable DKIM authentication for an email identity.+module Amazonka.SESV2.PutEmailIdentityDkimAttributes+  ( -- * Creating a Request+    PutEmailIdentityDkimAttributes (..),+    newPutEmailIdentityDkimAttributes,++    -- * Request Lenses+    putEmailIdentityDkimAttributes_signingEnabled,+    putEmailIdentityDkimAttributes_emailIdentity,++    -- * Destructuring the Response+    PutEmailIdentityDkimAttributesResponse (..),+    newPutEmailIdentityDkimAttributesResponse,++    -- * Response Lenses+    putEmailIdentityDkimAttributesResponse_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.SESV2.Types++-- | A request to enable or disable DKIM signing of email that you send from+-- an email identity.+--+-- /See:/ 'newPutEmailIdentityDkimAttributes' smart constructor.+data PutEmailIdentityDkimAttributes = PutEmailIdentityDkimAttributes'+  { -- | Sets the DKIM signing configuration for the identity.+    --+    -- When you set this value @true@, then the messages that are sent from the+    -- identity are signed using DKIM. If you set this value to @false@, your+    -- messages are sent without DKIM signing.+    signingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The email identity.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityDkimAttributes' 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:+--+-- 'signingEnabled', 'putEmailIdentityDkimAttributes_signingEnabled' - Sets the DKIM signing configuration for the identity.+--+-- When you set this value @true@, then the messages that are sent from the+-- identity are signed using DKIM. If you set this value to @false@, your+-- messages are sent without DKIM signing.+--+-- 'emailIdentity', 'putEmailIdentityDkimAttributes_emailIdentity' - The email identity.+newPutEmailIdentityDkimAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  PutEmailIdentityDkimAttributes+newPutEmailIdentityDkimAttributes pEmailIdentity_ =+  PutEmailIdentityDkimAttributes'+    { signingEnabled =+        Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | Sets the DKIM signing configuration for the identity.+--+-- When you set this value @true@, then the messages that are sent from the+-- identity are signed using DKIM. If you set this value to @false@, your+-- messages are sent without DKIM signing.+putEmailIdentityDkimAttributes_signingEnabled :: Lens.Lens' PutEmailIdentityDkimAttributes (Prelude.Maybe Prelude.Bool)+putEmailIdentityDkimAttributes_signingEnabled = Lens.lens (\PutEmailIdentityDkimAttributes' {signingEnabled} -> signingEnabled) (\s@PutEmailIdentityDkimAttributes' {} a -> s {signingEnabled = a} :: PutEmailIdentityDkimAttributes)++-- | The email identity.+putEmailIdentityDkimAttributes_emailIdentity :: Lens.Lens' PutEmailIdentityDkimAttributes Prelude.Text+putEmailIdentityDkimAttributes_emailIdentity = Lens.lens (\PutEmailIdentityDkimAttributes' {emailIdentity} -> emailIdentity) (\s@PutEmailIdentityDkimAttributes' {} a -> s {emailIdentity = a} :: PutEmailIdentityDkimAttributes)++instance+  Core.AWSRequest+    PutEmailIdentityDkimAttributes+  where+  type+    AWSResponse PutEmailIdentityDkimAttributes =+      PutEmailIdentityDkimAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutEmailIdentityDkimAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutEmailIdentityDkimAttributes+  where+  hashWithSalt+    _salt+    PutEmailIdentityDkimAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` signingEnabled+        `Prelude.hashWithSalt` emailIdentity++instance+  Prelude.NFData+    PutEmailIdentityDkimAttributes+  where+  rnf PutEmailIdentityDkimAttributes' {..} =+    Prelude.rnf signingEnabled+      `Prelude.seq` Prelude.rnf emailIdentity++instance+  Data.ToHeaders+    PutEmailIdentityDkimAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutEmailIdentityDkimAttributes where+  toJSON PutEmailIdentityDkimAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SigningEnabled" Data..=)+              Prelude.<$> signingEnabled+          ]+      )++instance Data.ToPath PutEmailIdentityDkimAttributes where+  toPath PutEmailIdentityDkimAttributes' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/dkim"+      ]++instance Data.ToQuery PutEmailIdentityDkimAttributes where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutEmailIdentityDkimAttributesResponse' smart constructor.+data PutEmailIdentityDkimAttributesResponse = PutEmailIdentityDkimAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityDkimAttributesResponse' 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', 'putEmailIdentityDkimAttributesResponse_httpStatus' - The response's http status code.+newPutEmailIdentityDkimAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutEmailIdentityDkimAttributesResponse+newPutEmailIdentityDkimAttributesResponse+  pHttpStatus_ =+    PutEmailIdentityDkimAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putEmailIdentityDkimAttributesResponse_httpStatus :: Lens.Lens' PutEmailIdentityDkimAttributesResponse Prelude.Int+putEmailIdentityDkimAttributesResponse_httpStatus = Lens.lens (\PutEmailIdentityDkimAttributesResponse' {httpStatus} -> httpStatus) (\s@PutEmailIdentityDkimAttributesResponse' {} a -> s {httpStatus = a} :: PutEmailIdentityDkimAttributesResponse)++instance+  Prelude.NFData+    PutEmailIdentityDkimAttributesResponse+  where+  rnf PutEmailIdentityDkimAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutEmailIdentityDkimSigningAttributes.hs view
@@ -0,0 +1,431 @@+{-# 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.SESV2.PutEmailIdentityDkimSigningAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to configure or change the DKIM authentication settings for an+-- email domain identity. You can use this operation to do any of the+-- following:+--+-- -   Update the signing attributes for an identity that uses Bring Your+--     Own DKIM (BYODKIM).+--+-- -   Update the key length that should be used for Easy DKIM.+--+-- -   Change from using no DKIM authentication to using Easy DKIM.+--+-- -   Change from using no DKIM authentication to using BYODKIM.+--+-- -   Change from using Easy DKIM to using BYODKIM.+--+-- -   Change from using BYODKIM to using Easy DKIM.+module Amazonka.SESV2.PutEmailIdentityDkimSigningAttributes+  ( -- * Creating a Request+    PutEmailIdentityDkimSigningAttributes (..),+    newPutEmailIdentityDkimSigningAttributes,++    -- * Request Lenses+    putEmailIdentityDkimSigningAttributes_signingAttributes,+    putEmailIdentityDkimSigningAttributes_emailIdentity,+    putEmailIdentityDkimSigningAttributes_signingAttributesOrigin,++    -- * Destructuring the Response+    PutEmailIdentityDkimSigningAttributesResponse (..),+    newPutEmailIdentityDkimSigningAttributesResponse,++    -- * Response Lenses+    putEmailIdentityDkimSigningAttributesResponse_dkimStatus,+    putEmailIdentityDkimSigningAttributesResponse_dkimTokens,+    putEmailIdentityDkimSigningAttributesResponse_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.SESV2.Types++-- | A request to change the DKIM attributes for an email identity.+--+-- /See:/ 'newPutEmailIdentityDkimSigningAttributes' smart constructor.+data PutEmailIdentityDkimSigningAttributes = PutEmailIdentityDkimSigningAttributes'+  { -- | An object that contains information about the private key and selector+    -- that you want to use to configure DKIM for the identity for Bring Your+    -- Own DKIM (BYODKIM) for the identity, or, configures the key length to be+    -- used for+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+    signingAttributes :: Prelude.Maybe DkimSigningAttributes,+    -- | The email identity.+    emailIdentity :: Prelude.Text,+    -- | The method to use to configure DKIM for the identity. There are the+    -- following possible values:+    --+    -- -   @AWS_SES@ – Configure DKIM for the identity by using+    --     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+    --+    -- -   @EXTERNAL@ – Configure DKIM for the identity by using Bring Your Own+    --     DKIM (BYODKIM).+    signingAttributesOrigin :: DkimSigningAttributesOrigin+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityDkimSigningAttributes' 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:+--+-- 'signingAttributes', 'putEmailIdentityDkimSigningAttributes_signingAttributes' - An object that contains information about the private key and selector+-- that you want to use to configure DKIM for the identity for Bring Your+-- Own DKIM (BYODKIM) for the identity, or, configures the key length to be+-- used for+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- 'emailIdentity', 'putEmailIdentityDkimSigningAttributes_emailIdentity' - The email identity.+--+-- 'signingAttributesOrigin', 'putEmailIdentityDkimSigningAttributes_signingAttributesOrigin' - The method to use to configure DKIM for the identity. There are the+-- following possible values:+--+-- -   @AWS_SES@ – Configure DKIM for the identity by using+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- -   @EXTERNAL@ – Configure DKIM for the identity by using Bring Your Own+--     DKIM (BYODKIM).+newPutEmailIdentityDkimSigningAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  -- | 'signingAttributesOrigin'+  DkimSigningAttributesOrigin ->+  PutEmailIdentityDkimSigningAttributes+newPutEmailIdentityDkimSigningAttributes+  pEmailIdentity_+  pSigningAttributesOrigin_ =+    PutEmailIdentityDkimSigningAttributes'+      { signingAttributes =+          Prelude.Nothing,+        emailIdentity = pEmailIdentity_,+        signingAttributesOrigin =+          pSigningAttributesOrigin_+      }++-- | An object that contains information about the private key and selector+-- that you want to use to configure DKIM for the identity for Bring Your+-- Own DKIM (BYODKIM) for the identity, or, configures the key length to be+-- used for+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+putEmailIdentityDkimSigningAttributes_signingAttributes :: Lens.Lens' PutEmailIdentityDkimSigningAttributes (Prelude.Maybe DkimSigningAttributes)+putEmailIdentityDkimSigningAttributes_signingAttributes = Lens.lens (\PutEmailIdentityDkimSigningAttributes' {signingAttributes} -> signingAttributes) (\s@PutEmailIdentityDkimSigningAttributes' {} a -> s {signingAttributes = a} :: PutEmailIdentityDkimSigningAttributes)++-- | The email identity.+putEmailIdentityDkimSigningAttributes_emailIdentity :: Lens.Lens' PutEmailIdentityDkimSigningAttributes Prelude.Text+putEmailIdentityDkimSigningAttributes_emailIdentity = Lens.lens (\PutEmailIdentityDkimSigningAttributes' {emailIdentity} -> emailIdentity) (\s@PutEmailIdentityDkimSigningAttributes' {} a -> s {emailIdentity = a} :: PutEmailIdentityDkimSigningAttributes)++-- | The method to use to configure DKIM for the identity. There are the+-- following possible values:+--+-- -   @AWS_SES@ – Configure DKIM for the identity by using+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- -   @EXTERNAL@ – Configure DKIM for the identity by using Bring Your Own+--     DKIM (BYODKIM).+putEmailIdentityDkimSigningAttributes_signingAttributesOrigin :: Lens.Lens' PutEmailIdentityDkimSigningAttributes DkimSigningAttributesOrigin+putEmailIdentityDkimSigningAttributes_signingAttributesOrigin = Lens.lens (\PutEmailIdentityDkimSigningAttributes' {signingAttributesOrigin} -> signingAttributesOrigin) (\s@PutEmailIdentityDkimSigningAttributes' {} a -> s {signingAttributesOrigin = a} :: PutEmailIdentityDkimSigningAttributes)++instance+  Core.AWSRequest+    PutEmailIdentityDkimSigningAttributes+  where+  type+    AWSResponse+      PutEmailIdentityDkimSigningAttributes =+      PutEmailIdentityDkimSigningAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          PutEmailIdentityDkimSigningAttributesResponse'+            Prelude.<$> (x Data..?> "DkimStatus")+            Prelude.<*> (x Data..?> "DkimTokens" Core..!@ Prelude.mempty)+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutEmailIdentityDkimSigningAttributes+  where+  hashWithSalt+    _salt+    PutEmailIdentityDkimSigningAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` signingAttributes+        `Prelude.hashWithSalt` emailIdentity+        `Prelude.hashWithSalt` signingAttributesOrigin++instance+  Prelude.NFData+    PutEmailIdentityDkimSigningAttributes+  where+  rnf PutEmailIdentityDkimSigningAttributes' {..} =+    Prelude.rnf signingAttributes+      `Prelude.seq` Prelude.rnf emailIdentity+      `Prelude.seq` Prelude.rnf signingAttributesOrigin++instance+  Data.ToHeaders+    PutEmailIdentityDkimSigningAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutEmailIdentityDkimSigningAttributes+  where+  toJSON PutEmailIdentityDkimSigningAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SigningAttributes" Data..=)+              Prelude.<$> signingAttributes,+            Prelude.Just+              ( "SigningAttributesOrigin"+                  Data..= signingAttributesOrigin+              )+          ]+      )++instance+  Data.ToPath+    PutEmailIdentityDkimSigningAttributes+  where+  toPath PutEmailIdentityDkimSigningAttributes' {..} =+    Prelude.mconcat+      [ "/v1/email/identities/",+        Data.toBS emailIdentity,+        "/dkim/signing"+      ]++instance+  Data.ToQuery+    PutEmailIdentityDkimSigningAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200+-- response.+--+-- The following data is returned in JSON format by the service.+--+-- /See:/ 'newPutEmailIdentityDkimSigningAttributesResponse' smart constructor.+data PutEmailIdentityDkimSigningAttributesResponse = PutEmailIdentityDkimSigningAttributesResponse'+  { -- | The DKIM authentication status of the identity. Amazon SES determines+    -- the authentication status by searching for specific records in the DNS+    -- configuration for your domain. If you used+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+    -- to set up DKIM authentication, Amazon SES tries to find three unique+    -- CNAME records in the DNS configuration for your domain.+    --+    -- If you provided a public key to perform DKIM authentication, Amazon SES+    -- tries to find a TXT record that uses the selector that you specified.+    -- The value of the TXT record must be a public key that\'s paired with the+    -- private key that you specified in the process of creating the identity.+    --+    -- The status can be one of the following:+    --+    -- -   @PENDING@ – The verification process was initiated, but Amazon SES+    --     hasn\'t yet detected the DKIM records in the DNS configuration for+    --     the domain.+    --+    -- -   @SUCCESS@ – The verification process completed successfully.+    --+    -- -   @FAILED@ – The verification process failed. This typically occurs+    --     when Amazon SES fails to find the DKIM records in the DNS+    --     configuration of the domain.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+    --     from determining the DKIM authentication status of the domain.+    --+    -- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+    --     for the domain.+    dkimStatus :: Prelude.Maybe DkimStatus,+    -- | If you used+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+    -- to configure DKIM authentication for the domain, then this object+    -- contains a set of unique strings that you use to create a set of CNAME+    -- records that you add to the DNS configuration for your domain. When+    -- Amazon SES detects these records in the DNS configuration for your+    -- domain, the DKIM authentication process is complete.+    --+    -- If you configured DKIM authentication for the domain by providing your+    -- own public-private key pair, then this object contains the selector+    -- that\'s associated with your public key.+    --+    -- Regardless of the DKIM authentication method you use, Amazon SES+    -- searches for the appropriate records in the DNS configuration of the+    -- domain for up to 72 hours.+    dkimTokens :: 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 'PutEmailIdentityDkimSigningAttributesResponse' 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:+--+-- 'dkimStatus', 'putEmailIdentityDkimSigningAttributesResponse_dkimStatus' - The DKIM authentication status of the identity. Amazon SES determines+-- the authentication status by searching for specific records in the DNS+-- configuration for your domain. If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to set up DKIM authentication, Amazon SES tries to find three unique+-- CNAME records in the DNS configuration for your domain.+--+-- If you provided a public key to perform DKIM authentication, Amazon SES+-- tries to find a TXT record that uses the selector that you specified.+-- The value of the TXT record must be a public key that\'s paired with the+-- private key that you specified in the process of creating the identity.+--+-- The status can be one of the following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet detected the DKIM records in the DNS configuration for+--     the domain.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed. This typically occurs+--     when Amazon SES fails to find the DKIM records in the DNS+--     configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the DKIM authentication status of the domain.+--+-- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+--     for the domain.+--+-- 'dkimTokens', 'putEmailIdentityDkimSigningAttributesResponse_dkimTokens' - If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to configure DKIM authentication for the domain, then this object+-- contains a set of unique strings that you use to create a set of CNAME+-- records that you add to the DNS configuration for your domain. When+-- Amazon SES detects these records in the DNS configuration for your+-- domain, the DKIM authentication process is complete.+--+-- If you configured DKIM authentication for the domain by providing your+-- own public-private key pair, then this object contains the selector+-- that\'s associated with your public key.+--+-- Regardless of the DKIM authentication method you use, Amazon SES+-- searches for the appropriate records in the DNS configuration of the+-- domain for up to 72 hours.+--+-- 'httpStatus', 'putEmailIdentityDkimSigningAttributesResponse_httpStatus' - The response's http status code.+newPutEmailIdentityDkimSigningAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutEmailIdentityDkimSigningAttributesResponse+newPutEmailIdentityDkimSigningAttributesResponse+  pHttpStatus_ =+    PutEmailIdentityDkimSigningAttributesResponse'+      { dkimStatus =+          Prelude.Nothing,+        dkimTokens = Prelude.Nothing,+        httpStatus = pHttpStatus_+      }++-- | The DKIM authentication status of the identity. Amazon SES determines+-- the authentication status by searching for specific records in the DNS+-- configuration for your domain. If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to set up DKIM authentication, Amazon SES tries to find three unique+-- CNAME records in the DNS configuration for your domain.+--+-- If you provided a public key to perform DKIM authentication, Amazon SES+-- tries to find a TXT record that uses the selector that you specified.+-- The value of the TXT record must be a public key that\'s paired with the+-- private key that you specified in the process of creating the identity.+--+-- The status can be one of the following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet detected the DKIM records in the DNS configuration for+--     the domain.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed. This typically occurs+--     when Amazon SES fails to find the DKIM records in the DNS+--     configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the DKIM authentication status of the domain.+--+-- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+--     for the domain.+putEmailIdentityDkimSigningAttributesResponse_dkimStatus :: Lens.Lens' PutEmailIdentityDkimSigningAttributesResponse (Prelude.Maybe DkimStatus)+putEmailIdentityDkimSigningAttributesResponse_dkimStatus = Lens.lens (\PutEmailIdentityDkimSigningAttributesResponse' {dkimStatus} -> dkimStatus) (\s@PutEmailIdentityDkimSigningAttributesResponse' {} a -> s {dkimStatus = a} :: PutEmailIdentityDkimSigningAttributesResponse)++-- | If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to configure DKIM authentication for the domain, then this object+-- contains a set of unique strings that you use to create a set of CNAME+-- records that you add to the DNS configuration for your domain. When+-- Amazon SES detects these records in the DNS configuration for your+-- domain, the DKIM authentication process is complete.+--+-- If you configured DKIM authentication for the domain by providing your+-- own public-private key pair, then this object contains the selector+-- that\'s associated with your public key.+--+-- Regardless of the DKIM authentication method you use, Amazon SES+-- searches for the appropriate records in the DNS configuration of the+-- domain for up to 72 hours.+putEmailIdentityDkimSigningAttributesResponse_dkimTokens :: Lens.Lens' PutEmailIdentityDkimSigningAttributesResponse (Prelude.Maybe [Prelude.Text])+putEmailIdentityDkimSigningAttributesResponse_dkimTokens = Lens.lens (\PutEmailIdentityDkimSigningAttributesResponse' {dkimTokens} -> dkimTokens) (\s@PutEmailIdentityDkimSigningAttributesResponse' {} a -> s {dkimTokens = a} :: PutEmailIdentityDkimSigningAttributesResponse) Prelude.. Lens.mapping Lens.coerced++-- | The response's http status code.+putEmailIdentityDkimSigningAttributesResponse_httpStatus :: Lens.Lens' PutEmailIdentityDkimSigningAttributesResponse Prelude.Int+putEmailIdentityDkimSigningAttributesResponse_httpStatus = Lens.lens (\PutEmailIdentityDkimSigningAttributesResponse' {httpStatus} -> httpStatus) (\s@PutEmailIdentityDkimSigningAttributesResponse' {} a -> s {httpStatus = a} :: PutEmailIdentityDkimSigningAttributesResponse)++instance+  Prelude.NFData+    PutEmailIdentityDkimSigningAttributesResponse+  where+  rnf+    PutEmailIdentityDkimSigningAttributesResponse' {..} =+      Prelude.rnf dkimStatus+        `Prelude.seq` Prelude.rnf dkimTokens+        `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutEmailIdentityFeedbackAttributes.hs view
@@ -0,0 +1,251 @@+{-# 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.SESV2.PutEmailIdentityFeedbackAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to enable or disable feedback forwarding for an identity. This+-- setting determines what happens when an identity is used to send an+-- email that results in a bounce or complaint event.+--+-- If the value is @true@, you receive email notifications when bounce or+-- complaint events occur. These notifications are sent to the address that+-- you specified in the @Return-Path@ header of the original email.+--+-- You\'re required to have a method of tracking bounces and complaints. If+-- you haven\'t set up another mechanism for receiving bounce or complaint+-- notifications (for example, by setting up an event destination), you+-- receive an email notification when these events occur (even if this+-- setting is disabled).+module Amazonka.SESV2.PutEmailIdentityFeedbackAttributes+  ( -- * Creating a Request+    PutEmailIdentityFeedbackAttributes (..),+    newPutEmailIdentityFeedbackAttributes,++    -- * Request Lenses+    putEmailIdentityFeedbackAttributes_emailForwardingEnabled,+    putEmailIdentityFeedbackAttributes_emailIdentity,++    -- * Destructuring the Response+    PutEmailIdentityFeedbackAttributesResponse (..),+    newPutEmailIdentityFeedbackAttributesResponse,++    -- * Response Lenses+    putEmailIdentityFeedbackAttributesResponse_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.SESV2.Types++-- | A request to set the attributes that control how bounce and complaint+-- events are processed.+--+-- /See:/ 'newPutEmailIdentityFeedbackAttributes' smart constructor.+data PutEmailIdentityFeedbackAttributes = PutEmailIdentityFeedbackAttributes'+  { -- | Sets the feedback forwarding configuration for the identity.+    --+    -- If the value is @true@, you receive email notifications when bounce or+    -- complaint events occur. These notifications are sent to the address that+    -- you specified in the @Return-Path@ header of the original email.+    --+    -- You\'re required to have a method of tracking bounces and complaints. If+    -- you haven\'t set up another mechanism for receiving bounce or complaint+    -- notifications (for example, by setting up an event destination), you+    -- receive an email notification when these events occur (even if this+    -- setting is disabled).+    emailForwardingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The email identity.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityFeedbackAttributes' 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:+--+-- 'emailForwardingEnabled', 'putEmailIdentityFeedbackAttributes_emailForwardingEnabled' - Sets the feedback forwarding configuration for the identity.+--+-- If the value is @true@, you receive email notifications when bounce or+-- complaint events occur. These notifications are sent to the address that+-- you specified in the @Return-Path@ header of the original email.+--+-- You\'re required to have a method of tracking bounces and complaints. If+-- you haven\'t set up another mechanism for receiving bounce or complaint+-- notifications (for example, by setting up an event destination), you+-- receive an email notification when these events occur (even if this+-- setting is disabled).+--+-- 'emailIdentity', 'putEmailIdentityFeedbackAttributes_emailIdentity' - The email identity.+newPutEmailIdentityFeedbackAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  PutEmailIdentityFeedbackAttributes+newPutEmailIdentityFeedbackAttributes pEmailIdentity_ =+  PutEmailIdentityFeedbackAttributes'+    { emailForwardingEnabled =+        Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | Sets the feedback forwarding configuration for the identity.+--+-- If the value is @true@, you receive email notifications when bounce or+-- complaint events occur. These notifications are sent to the address that+-- you specified in the @Return-Path@ header of the original email.+--+-- You\'re required to have a method of tracking bounces and complaints. If+-- you haven\'t set up another mechanism for receiving bounce or complaint+-- notifications (for example, by setting up an event destination), you+-- receive an email notification when these events occur (even if this+-- setting is disabled).+putEmailIdentityFeedbackAttributes_emailForwardingEnabled :: Lens.Lens' PutEmailIdentityFeedbackAttributes (Prelude.Maybe Prelude.Bool)+putEmailIdentityFeedbackAttributes_emailForwardingEnabled = Lens.lens (\PutEmailIdentityFeedbackAttributes' {emailForwardingEnabled} -> emailForwardingEnabled) (\s@PutEmailIdentityFeedbackAttributes' {} a -> s {emailForwardingEnabled = a} :: PutEmailIdentityFeedbackAttributes)++-- | The email identity.+putEmailIdentityFeedbackAttributes_emailIdentity :: Lens.Lens' PutEmailIdentityFeedbackAttributes Prelude.Text+putEmailIdentityFeedbackAttributes_emailIdentity = Lens.lens (\PutEmailIdentityFeedbackAttributes' {emailIdentity} -> emailIdentity) (\s@PutEmailIdentityFeedbackAttributes' {} a -> s {emailIdentity = a} :: PutEmailIdentityFeedbackAttributes)++instance+  Core.AWSRequest+    PutEmailIdentityFeedbackAttributes+  where+  type+    AWSResponse PutEmailIdentityFeedbackAttributes =+      PutEmailIdentityFeedbackAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutEmailIdentityFeedbackAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutEmailIdentityFeedbackAttributes+  where+  hashWithSalt+    _salt+    PutEmailIdentityFeedbackAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` emailForwardingEnabled+        `Prelude.hashWithSalt` emailIdentity++instance+  Prelude.NFData+    PutEmailIdentityFeedbackAttributes+  where+  rnf PutEmailIdentityFeedbackAttributes' {..} =+    Prelude.rnf emailForwardingEnabled+      `Prelude.seq` Prelude.rnf emailIdentity++instance+  Data.ToHeaders+    PutEmailIdentityFeedbackAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutEmailIdentityFeedbackAttributes+  where+  toJSON PutEmailIdentityFeedbackAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EmailForwardingEnabled" Data..=)+              Prelude.<$> emailForwardingEnabled+          ]+      )++instance+  Data.ToPath+    PutEmailIdentityFeedbackAttributes+  where+  toPath PutEmailIdentityFeedbackAttributes' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/feedback"+      ]++instance+  Data.ToQuery+    PutEmailIdentityFeedbackAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutEmailIdentityFeedbackAttributesResponse' smart constructor.+data PutEmailIdentityFeedbackAttributesResponse = PutEmailIdentityFeedbackAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityFeedbackAttributesResponse' 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', 'putEmailIdentityFeedbackAttributesResponse_httpStatus' - The response's http status code.+newPutEmailIdentityFeedbackAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutEmailIdentityFeedbackAttributesResponse+newPutEmailIdentityFeedbackAttributesResponse+  pHttpStatus_ =+    PutEmailIdentityFeedbackAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putEmailIdentityFeedbackAttributesResponse_httpStatus :: Lens.Lens' PutEmailIdentityFeedbackAttributesResponse Prelude.Int+putEmailIdentityFeedbackAttributesResponse_httpStatus = Lens.lens (\PutEmailIdentityFeedbackAttributesResponse' {httpStatus} -> httpStatus) (\s@PutEmailIdentityFeedbackAttributesResponse' {} a -> s {httpStatus = a} :: PutEmailIdentityFeedbackAttributesResponse)++instance+  Prelude.NFData+    PutEmailIdentityFeedbackAttributesResponse+  where+  rnf PutEmailIdentityFeedbackAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutEmailIdentityMailFromAttributes.hs view
@@ -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.SESV2.PutEmailIdentityMailFromAttributes+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Used to enable or disable the custom Mail-From domain configuration for+-- an email identity.+module Amazonka.SESV2.PutEmailIdentityMailFromAttributes+  ( -- * Creating a Request+    PutEmailIdentityMailFromAttributes (..),+    newPutEmailIdentityMailFromAttributes,++    -- * Request Lenses+    putEmailIdentityMailFromAttributes_behaviorOnMxFailure,+    putEmailIdentityMailFromAttributes_mailFromDomain,+    putEmailIdentityMailFromAttributes_emailIdentity,++    -- * Destructuring the Response+    PutEmailIdentityMailFromAttributesResponse (..),+    newPutEmailIdentityMailFromAttributesResponse,++    -- * Response Lenses+    putEmailIdentityMailFromAttributesResponse_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.SESV2.Types++-- | A request to configure the custom MAIL FROM domain for a verified+-- identity.+--+-- /See:/ 'newPutEmailIdentityMailFromAttributes' smart constructor.+data PutEmailIdentityMailFromAttributes = PutEmailIdentityMailFromAttributes'+  { -- | The action to take if the required MX record isn\'t found when you send+    -- an email. When you set this value to @UseDefaultValue@, the mail is sent+    -- using /amazonses.com/ as the MAIL FROM domain. When you set this value+    -- to @RejectMessage@, the Amazon SES API v2 returns a+    -- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+    -- email.+    --+    -- These behaviors are taken when the custom MAIL FROM domain configuration+    -- 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 meet the following criteria:+    --+    -- -   It has to be a subdomain of the verified identity.+    --+    -- -   It can\'t be used to receive email.+    --+    -- -   It can\'t be used in a \"From\" address if the MAIL FROM domain is a+    --     destination for feedback forwarding emails.+    mailFromDomain :: Prelude.Maybe Prelude.Text,+    -- | The verified email identity.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityMailFromAttributes' 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', 'putEmailIdentityMailFromAttributes_behaviorOnMxFailure' - The action to take if the required MX record isn\'t found when you send+-- an email. When you set this value to @UseDefaultValue@, the mail is sent+-- using /amazonses.com/ as the MAIL FROM domain. When you set this value+-- to @RejectMessage@, the Amazon SES API v2 returns a+-- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+-- email.+--+-- These behaviors are taken when the custom MAIL FROM domain configuration+-- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+--+-- 'mailFromDomain', 'putEmailIdentityMailFromAttributes_mailFromDomain' - The custom MAIL FROM domain that you want the verified identity to use.+-- The MAIL FROM domain must meet the following criteria:+--+-- -   It has to be a subdomain of the verified identity.+--+-- -   It can\'t be used to receive email.+--+-- -   It can\'t be used in a \"From\" address if the MAIL FROM domain is a+--     destination for feedback forwarding emails.+--+-- 'emailIdentity', 'putEmailIdentityMailFromAttributes_emailIdentity' - The verified email identity.+newPutEmailIdentityMailFromAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  PutEmailIdentityMailFromAttributes+newPutEmailIdentityMailFromAttributes pEmailIdentity_ =+  PutEmailIdentityMailFromAttributes'+    { behaviorOnMxFailure =+        Prelude.Nothing,+      mailFromDomain = Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | The action to take if the required MX record isn\'t found when you send+-- an email. When you set this value to @UseDefaultValue@, the mail is sent+-- using /amazonses.com/ as the MAIL FROM domain. When you set this value+-- to @RejectMessage@, the Amazon SES API v2 returns a+-- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+-- email.+--+-- These behaviors are taken when the custom MAIL FROM domain configuration+-- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+putEmailIdentityMailFromAttributes_behaviorOnMxFailure :: Lens.Lens' PutEmailIdentityMailFromAttributes (Prelude.Maybe BehaviorOnMxFailure)+putEmailIdentityMailFromAttributes_behaviorOnMxFailure = Lens.lens (\PutEmailIdentityMailFromAttributes' {behaviorOnMxFailure} -> behaviorOnMxFailure) (\s@PutEmailIdentityMailFromAttributes' {} a -> s {behaviorOnMxFailure = a} :: PutEmailIdentityMailFromAttributes)++-- | The custom MAIL FROM domain that you want the verified identity to use.+-- The MAIL FROM domain must meet the following criteria:+--+-- -   It has to be a subdomain of the verified identity.+--+-- -   It can\'t be used to receive email.+--+-- -   It can\'t be used in a \"From\" address if the MAIL FROM domain is a+--     destination for feedback forwarding emails.+putEmailIdentityMailFromAttributes_mailFromDomain :: Lens.Lens' PutEmailIdentityMailFromAttributes (Prelude.Maybe Prelude.Text)+putEmailIdentityMailFromAttributes_mailFromDomain = Lens.lens (\PutEmailIdentityMailFromAttributes' {mailFromDomain} -> mailFromDomain) (\s@PutEmailIdentityMailFromAttributes' {} a -> s {mailFromDomain = a} :: PutEmailIdentityMailFromAttributes)++-- | The verified email identity.+putEmailIdentityMailFromAttributes_emailIdentity :: Lens.Lens' PutEmailIdentityMailFromAttributes Prelude.Text+putEmailIdentityMailFromAttributes_emailIdentity = Lens.lens (\PutEmailIdentityMailFromAttributes' {emailIdentity} -> emailIdentity) (\s@PutEmailIdentityMailFromAttributes' {} a -> s {emailIdentity = a} :: PutEmailIdentityMailFromAttributes)++instance+  Core.AWSRequest+    PutEmailIdentityMailFromAttributes+  where+  type+    AWSResponse PutEmailIdentityMailFromAttributes =+      PutEmailIdentityMailFromAttributesResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutEmailIdentityMailFromAttributesResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    PutEmailIdentityMailFromAttributes+  where+  hashWithSalt+    _salt+    PutEmailIdentityMailFromAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` behaviorOnMxFailure+        `Prelude.hashWithSalt` mailFromDomain+        `Prelude.hashWithSalt` emailIdentity++instance+  Prelude.NFData+    PutEmailIdentityMailFromAttributes+  where+  rnf PutEmailIdentityMailFromAttributes' {..} =+    Prelude.rnf behaviorOnMxFailure+      `Prelude.seq` Prelude.rnf mailFromDomain+      `Prelude.seq` Prelude.rnf emailIdentity++instance+  Data.ToHeaders+    PutEmailIdentityMailFromAttributes+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    PutEmailIdentityMailFromAttributes+  where+  toJSON PutEmailIdentityMailFromAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("BehaviorOnMxFailure" Data..=)+              Prelude.<$> behaviorOnMxFailure,+            ("MailFromDomain" Data..=)+              Prelude.<$> mailFromDomain+          ]+      )++instance+  Data.ToPath+    PutEmailIdentityMailFromAttributes+  where+  toPath PutEmailIdentityMailFromAttributes' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/mail-from"+      ]++instance+  Data.ToQuery+    PutEmailIdentityMailFromAttributes+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutEmailIdentityMailFromAttributesResponse' smart constructor.+data PutEmailIdentityMailFromAttributesResponse = PutEmailIdentityMailFromAttributesResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutEmailIdentityMailFromAttributesResponse' 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', 'putEmailIdentityMailFromAttributesResponse_httpStatus' - The response's http status code.+newPutEmailIdentityMailFromAttributesResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutEmailIdentityMailFromAttributesResponse+newPutEmailIdentityMailFromAttributesResponse+  pHttpStatus_ =+    PutEmailIdentityMailFromAttributesResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+putEmailIdentityMailFromAttributesResponse_httpStatus :: Lens.Lens' PutEmailIdentityMailFromAttributesResponse Prelude.Int+putEmailIdentityMailFromAttributesResponse_httpStatus = Lens.lens (\PutEmailIdentityMailFromAttributesResponse' {httpStatus} -> httpStatus) (\s@PutEmailIdentityMailFromAttributesResponse' {} a -> s {httpStatus = a} :: PutEmailIdentityMailFromAttributesResponse)++instance+  Prelude.NFData+    PutEmailIdentityMailFromAttributesResponse+  where+  rnf PutEmailIdentityMailFromAttributesResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/PutSuppressedDestination.hs view
@@ -0,0 +1,189 @@+{-# 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.SESV2.PutSuppressedDestination+-- 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 suppression list for your account.+module Amazonka.SESV2.PutSuppressedDestination+  ( -- * Creating a Request+    PutSuppressedDestination (..),+    newPutSuppressedDestination,++    -- * Request Lenses+    putSuppressedDestination_emailAddress,+    putSuppressedDestination_reason,++    -- * Destructuring the Response+    PutSuppressedDestinationResponse (..),+    newPutSuppressedDestinationResponse,++    -- * Response Lenses+    putSuppressedDestinationResponse_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.SESV2.Types++-- | A request to add an email destination to the suppression list for your+-- account.+--+-- /See:/ 'newPutSuppressedDestination' smart constructor.+data PutSuppressedDestination = PutSuppressedDestination'+  { -- | The email address that should be added to the suppression list for your+    -- account.+    emailAddress :: Prelude.Text,+    -- | The factors that should cause the email address to be added to the+    -- suppression list for your account.+    reason :: SuppressionListReason+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutSuppressedDestination' 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', 'putSuppressedDestination_emailAddress' - The email address that should be added to the suppression list for your+-- account.+--+-- 'reason', 'putSuppressedDestination_reason' - The factors that should cause the email address to be added to the+-- suppression list for your account.+newPutSuppressedDestination ::+  -- | 'emailAddress'+  Prelude.Text ->+  -- | 'reason'+  SuppressionListReason ->+  PutSuppressedDestination+newPutSuppressedDestination pEmailAddress_ pReason_ =+  PutSuppressedDestination'+    { emailAddress =+        pEmailAddress_,+      reason = pReason_+    }++-- | The email address that should be added to the suppression list for your+-- account.+putSuppressedDestination_emailAddress :: Lens.Lens' PutSuppressedDestination Prelude.Text+putSuppressedDestination_emailAddress = Lens.lens (\PutSuppressedDestination' {emailAddress} -> emailAddress) (\s@PutSuppressedDestination' {} a -> s {emailAddress = a} :: PutSuppressedDestination)++-- | The factors that should cause the email address to be added to the+-- suppression list for your account.+putSuppressedDestination_reason :: Lens.Lens' PutSuppressedDestination SuppressionListReason+putSuppressedDestination_reason = Lens.lens (\PutSuppressedDestination' {reason} -> reason) (\s@PutSuppressedDestination' {} a -> s {reason = a} :: PutSuppressedDestination)++instance Core.AWSRequest PutSuppressedDestination where+  type+    AWSResponse PutSuppressedDestination =+      PutSuppressedDestinationResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          PutSuppressedDestinationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable PutSuppressedDestination where+  hashWithSalt _salt PutSuppressedDestination' {..} =+    _salt+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` reason++instance Prelude.NFData PutSuppressedDestination where+  rnf PutSuppressedDestination' {..} =+    Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf reason++instance Data.ToHeaders PutSuppressedDestination where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON PutSuppressedDestination where+  toJSON PutSuppressedDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("EmailAddress" Data..= emailAddress),+            Prelude.Just ("Reason" Data..= reason)+          ]+      )++instance Data.ToPath PutSuppressedDestination where+  toPath =+    Prelude.const "/v2/email/suppression/addresses"++instance Data.ToQuery PutSuppressedDestination where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newPutSuppressedDestinationResponse' smart constructor.+data PutSuppressedDestinationResponse = PutSuppressedDestinationResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PutSuppressedDestinationResponse' 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', 'putSuppressedDestinationResponse_httpStatus' - The response's http status code.+newPutSuppressedDestinationResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  PutSuppressedDestinationResponse+newPutSuppressedDestinationResponse pHttpStatus_ =+  PutSuppressedDestinationResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+putSuppressedDestinationResponse_httpStatus :: Lens.Lens' PutSuppressedDestinationResponse Prelude.Int+putSuppressedDestinationResponse_httpStatus = Lens.lens (\PutSuppressedDestinationResponse' {httpStatus} -> httpStatus) (\s@PutSuppressedDestinationResponse' {} a -> s {httpStatus = a} :: PutSuppressedDestinationResponse)++instance+  Prelude.NFData+    PutSuppressedDestinationResponse+  where+  rnf PutSuppressedDestinationResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/SendBulkEmail.hs view
@@ -0,0 +1,395 @@+{-# 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.SESV2.SendBulkEmail+-- 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.+module Amazonka.SESV2.SendBulkEmail+  ( -- * Creating a Request+    SendBulkEmail (..),+    newSendBulkEmail,++    -- * Request Lenses+    sendBulkEmail_configurationSetName,+    sendBulkEmail_defaultEmailTags,+    sendBulkEmail_feedbackForwardingEmailAddress,+    sendBulkEmail_feedbackForwardingEmailAddressIdentityArn,+    sendBulkEmail_fromEmailAddress,+    sendBulkEmail_fromEmailAddressIdentityArn,+    sendBulkEmail_replyToAddresses,+    sendBulkEmail_defaultContent,+    sendBulkEmail_bulkEmailEntries,++    -- * Destructuring the Response+    SendBulkEmailResponse (..),+    newSendBulkEmailResponse,++    -- * Response Lenses+    sendBulkEmailResponse_httpStatus,+    sendBulkEmailResponse_bulkEmailEntryResults,+  )+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.SESV2.Types++-- | Represents a request to send email messages 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:/ 'newSendBulkEmail' smart constructor.+data SendBulkEmail = SendBulkEmail'+  { -- | The name of the configuration set to use when sending the email.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | A list of tags, in the form of name\/value pairs, to apply to an email+    -- that you send using the @SendEmail@ operation. Tags correspond to+    -- characteristics of the email that you define, so that you can publish+    -- email sending events.+    defaultEmailTags :: Prelude.Maybe [MessageTag],+    -- | The address that you want bounce and complaint notifications to be sent+    -- to.+    feedbackForwardingEmailAddress :: 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+    -- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+    -- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+    -- @FeedbackForwardingEmailAddress@ 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>.+    feedbackForwardingEmailAddressIdentityArn :: Prelude.Maybe Prelude.Text,+    -- | The email address to use as the \"From\" address for the email. The+    -- address that you specify has to be verified.+    fromEmailAddress :: 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+    -- @FromEmailAddress@ 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 sender\@example.com, then you+    -- would specify the @FromEmailAddressIdentityArn@ to be+    -- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+    -- @FromEmailAddress@ to be sender\@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>.+    fromEmailAddressIdentityArn :: Prelude.Maybe Prelude.Text,+    -- | The \"Reply-to\" email addresses for the message. When the recipient+    -- replies to the message, each Reply-to address receives the reply.+    replyToAddresses :: Prelude.Maybe [Prelude.Text],+    -- | An object that contains the body of the message. You can specify a+    -- template message.+    defaultContent :: BulkEmailContent,+    -- | The list of bulk email entry objects.+    bulkEmailEntries :: [BulkEmailEntry]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SendBulkEmail' 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', 'sendBulkEmail_configurationSetName' - The name of the configuration set to use when sending the email.+--+-- 'defaultEmailTags', 'sendBulkEmail_defaultEmailTags' - A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendEmail@ operation. Tags correspond to+-- characteristics of the email that you define, so that you can publish+-- email sending events.+--+-- 'feedbackForwardingEmailAddress', 'sendBulkEmail_feedbackForwardingEmailAddress' - The address that you want bounce and complaint notifications to be sent+-- to.+--+-- 'feedbackForwardingEmailAddressIdentityArn', 'sendBulkEmail_feedbackForwardingEmailAddressIdentityArn' - 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+-- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FeedbackForwardingEmailAddress@ 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>.+--+-- 'fromEmailAddress', 'sendBulkEmail_fromEmailAddress' - The email address to use as the \"From\" address for the email. The+-- address that you specify has to be verified.+--+-- 'fromEmailAddressIdentityArn', 'sendBulkEmail_fromEmailAddressIdentityArn' - 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+-- @FromEmailAddress@ 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 sender\@example.com, then you+-- would specify the @FromEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FromEmailAddress@ to be sender\@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>.+--+-- 'replyToAddresses', 'sendBulkEmail_replyToAddresses' - The \"Reply-to\" email addresses for the message. When the recipient+-- replies to the message, each Reply-to address receives the reply.+--+-- 'defaultContent', 'sendBulkEmail_defaultContent' - An object that contains the body of the message. You can specify a+-- template message.+--+-- 'bulkEmailEntries', 'sendBulkEmail_bulkEmailEntries' - The list of bulk email entry objects.+newSendBulkEmail ::+  -- | 'defaultContent'+  BulkEmailContent ->+  SendBulkEmail+newSendBulkEmail pDefaultContent_ =+  SendBulkEmail'+    { configurationSetName =+        Prelude.Nothing,+      defaultEmailTags = Prelude.Nothing,+      feedbackForwardingEmailAddress = Prelude.Nothing,+      feedbackForwardingEmailAddressIdentityArn =+        Prelude.Nothing,+      fromEmailAddress = Prelude.Nothing,+      fromEmailAddressIdentityArn = Prelude.Nothing,+      replyToAddresses = Prelude.Nothing,+      defaultContent = pDefaultContent_,+      bulkEmailEntries = Prelude.mempty+    }++-- | The name of the configuration set to use when sending the email.+sendBulkEmail_configurationSetName :: Lens.Lens' SendBulkEmail (Prelude.Maybe Prelude.Text)+sendBulkEmail_configurationSetName = Lens.lens (\SendBulkEmail' {configurationSetName} -> configurationSetName) (\s@SendBulkEmail' {} a -> s {configurationSetName = a} :: SendBulkEmail)++-- | A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendEmail@ operation. Tags correspond to+-- characteristics of the email that you define, so that you can publish+-- email sending events.+sendBulkEmail_defaultEmailTags :: Lens.Lens' SendBulkEmail (Prelude.Maybe [MessageTag])+sendBulkEmail_defaultEmailTags = Lens.lens (\SendBulkEmail' {defaultEmailTags} -> defaultEmailTags) (\s@SendBulkEmail' {} a -> s {defaultEmailTags = a} :: SendBulkEmail) Prelude.. Lens.mapping Lens.coerced++-- | The address that you want bounce and complaint notifications to be sent+-- to.+sendBulkEmail_feedbackForwardingEmailAddress :: Lens.Lens' SendBulkEmail (Prelude.Maybe Prelude.Text)+sendBulkEmail_feedbackForwardingEmailAddress = Lens.lens (\SendBulkEmail' {feedbackForwardingEmailAddress} -> feedbackForwardingEmailAddress) (\s@SendBulkEmail' {} a -> s {feedbackForwardingEmailAddress = a} :: SendBulkEmail)++-- | 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+-- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FeedbackForwardingEmailAddress@ 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>.+sendBulkEmail_feedbackForwardingEmailAddressIdentityArn :: Lens.Lens' SendBulkEmail (Prelude.Maybe Prelude.Text)+sendBulkEmail_feedbackForwardingEmailAddressIdentityArn = Lens.lens (\SendBulkEmail' {feedbackForwardingEmailAddressIdentityArn} -> feedbackForwardingEmailAddressIdentityArn) (\s@SendBulkEmail' {} a -> s {feedbackForwardingEmailAddressIdentityArn = a} :: SendBulkEmail)++-- | The email address to use as the \"From\" address for the email. The+-- address that you specify has to be verified.+sendBulkEmail_fromEmailAddress :: Lens.Lens' SendBulkEmail (Prelude.Maybe Prelude.Text)+sendBulkEmail_fromEmailAddress = Lens.lens (\SendBulkEmail' {fromEmailAddress} -> fromEmailAddress) (\s@SendBulkEmail' {} a -> s {fromEmailAddress = a} :: SendBulkEmail)++-- | 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+-- @FromEmailAddress@ 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 sender\@example.com, then you+-- would specify the @FromEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FromEmailAddress@ to be sender\@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>.+sendBulkEmail_fromEmailAddressIdentityArn :: Lens.Lens' SendBulkEmail (Prelude.Maybe Prelude.Text)+sendBulkEmail_fromEmailAddressIdentityArn = Lens.lens (\SendBulkEmail' {fromEmailAddressIdentityArn} -> fromEmailAddressIdentityArn) (\s@SendBulkEmail' {} a -> s {fromEmailAddressIdentityArn = a} :: SendBulkEmail)++-- | The \"Reply-to\" email addresses for the message. When the recipient+-- replies to the message, each Reply-to address receives the reply.+sendBulkEmail_replyToAddresses :: Lens.Lens' SendBulkEmail (Prelude.Maybe [Prelude.Text])+sendBulkEmail_replyToAddresses = Lens.lens (\SendBulkEmail' {replyToAddresses} -> replyToAddresses) (\s@SendBulkEmail' {} a -> s {replyToAddresses = a} :: SendBulkEmail) Prelude.. Lens.mapping Lens.coerced++-- | An object that contains the body of the message. You can specify a+-- template message.+sendBulkEmail_defaultContent :: Lens.Lens' SendBulkEmail BulkEmailContent+sendBulkEmail_defaultContent = Lens.lens (\SendBulkEmail' {defaultContent} -> defaultContent) (\s@SendBulkEmail' {} a -> s {defaultContent = a} :: SendBulkEmail)++-- | The list of bulk email entry objects.+sendBulkEmail_bulkEmailEntries :: Lens.Lens' SendBulkEmail [BulkEmailEntry]+sendBulkEmail_bulkEmailEntries = Lens.lens (\SendBulkEmail' {bulkEmailEntries} -> bulkEmailEntries) (\s@SendBulkEmail' {} a -> s {bulkEmailEntries = a} :: SendBulkEmail) Prelude.. Lens.coerced++instance Core.AWSRequest SendBulkEmail where+  type+    AWSResponse SendBulkEmail =+      SendBulkEmailResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SendBulkEmailResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> ( x+                            Data..?> "BulkEmailEntryResults"+                            Core..!@ Prelude.mempty+                        )+      )++instance Prelude.Hashable SendBulkEmail where+  hashWithSalt _salt SendBulkEmail' {..} =+    _salt+      `Prelude.hashWithSalt` configurationSetName+      `Prelude.hashWithSalt` defaultEmailTags+      `Prelude.hashWithSalt` feedbackForwardingEmailAddress+      `Prelude.hashWithSalt` feedbackForwardingEmailAddressIdentityArn+      `Prelude.hashWithSalt` fromEmailAddress+      `Prelude.hashWithSalt` fromEmailAddressIdentityArn+      `Prelude.hashWithSalt` replyToAddresses+      `Prelude.hashWithSalt` defaultContent+      `Prelude.hashWithSalt` bulkEmailEntries++instance Prelude.NFData SendBulkEmail where+  rnf SendBulkEmail' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf defaultEmailTags+      `Prelude.seq` Prelude.rnf feedbackForwardingEmailAddress+      `Prelude.seq` Prelude.rnf feedbackForwardingEmailAddressIdentityArn+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf fromEmailAddressIdentityArn+      `Prelude.seq` Prelude.rnf replyToAddresses+      `Prelude.seq` Prelude.rnf defaultContent+      `Prelude.seq` Prelude.rnf bulkEmailEntries++instance Data.ToHeaders SendBulkEmail where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SendBulkEmail where+  toJSON SendBulkEmail' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConfigurationSetName" Data..=)+              Prelude.<$> configurationSetName,+            ("DefaultEmailTags" Data..=)+              Prelude.<$> defaultEmailTags,+            ("FeedbackForwardingEmailAddress" Data..=)+              Prelude.<$> feedbackForwardingEmailAddress,+            ("FeedbackForwardingEmailAddressIdentityArn" Data..=)+              Prelude.<$> feedbackForwardingEmailAddressIdentityArn,+            ("FromEmailAddress" Data..=)+              Prelude.<$> fromEmailAddress,+            ("FromEmailAddressIdentityArn" Data..=)+              Prelude.<$> fromEmailAddressIdentityArn,+            ("ReplyToAddresses" Data..=)+              Prelude.<$> replyToAddresses,+            Prelude.Just+              ("DefaultContent" Data..= defaultContent),+            Prelude.Just+              ("BulkEmailEntries" Data..= bulkEmailEntries)+          ]+      )++instance Data.ToPath SendBulkEmail where+  toPath =+    Prelude.const "/v2/email/outbound-bulk-emails"++instance Data.ToQuery SendBulkEmail where+  toQuery = Prelude.const Prelude.mempty++-- | The following data is returned in JSON format by the service.+--+-- /See:/ 'newSendBulkEmailResponse' smart constructor.+data SendBulkEmailResponse = SendBulkEmailResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | One object per intended recipient. Check each response object and retry+    -- any messages with a failure status.+    bulkEmailEntryResults :: [BulkEmailEntryResult]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SendBulkEmailResponse' 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', 'sendBulkEmailResponse_httpStatus' - The response's http status code.+--+-- 'bulkEmailEntryResults', 'sendBulkEmailResponse_bulkEmailEntryResults' - One object per intended recipient. Check each response object and retry+-- any messages with a failure status.+newSendBulkEmailResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SendBulkEmailResponse+newSendBulkEmailResponse pHttpStatus_ =+  SendBulkEmailResponse'+    { httpStatus = pHttpStatus_,+      bulkEmailEntryResults = Prelude.mempty+    }++-- | The response's http status code.+sendBulkEmailResponse_httpStatus :: Lens.Lens' SendBulkEmailResponse Prelude.Int+sendBulkEmailResponse_httpStatus = Lens.lens (\SendBulkEmailResponse' {httpStatus} -> httpStatus) (\s@SendBulkEmailResponse' {} a -> s {httpStatus = a} :: SendBulkEmailResponse)++-- | One object per intended recipient. Check each response object and retry+-- any messages with a failure status.+sendBulkEmailResponse_bulkEmailEntryResults :: Lens.Lens' SendBulkEmailResponse [BulkEmailEntryResult]+sendBulkEmailResponse_bulkEmailEntryResults = Lens.lens (\SendBulkEmailResponse' {bulkEmailEntryResults} -> bulkEmailEntryResults) (\s@SendBulkEmailResponse' {} a -> s {bulkEmailEntryResults = a} :: SendBulkEmailResponse) Prelude.. Lens.coerced++instance Prelude.NFData SendBulkEmailResponse where+  rnf SendBulkEmailResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf bulkEmailEntryResults
+ gen/Amazonka/SESV2/SendCustomVerificationEmail.hs view
@@ -0,0 +1,228 @@+{-# 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.SESV2.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 Amazon Web Services 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/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.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.SESV2.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.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \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.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SendCustomVerificationEmail where+  toJSON SendCustomVerificationEmail' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConfigurationSetName" Data..=)+              Prelude.<$> configurationSetName,+            Prelude.Just ("EmailAddress" Data..= emailAddress),+            Prelude.Just ("TemplateName" Data..= templateName)+          ]+      )++instance Data.ToPath SendCustomVerificationEmail where+  toPath =+    Prelude.const+      "/v2/email/outbound-custom-verification-emails"++instance Data.ToQuery SendCustomVerificationEmail where+  toQuery = Prelude.const Prelude.mempty++-- | The following element is returned by the service.+--+-- /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
+ gen/Amazonka/SESV2/SendEmail.hs view
@@ -0,0 +1,445 @@+{-# 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.SESV2.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)+--+-- Sends an email message. You can use the Amazon SES API v2 to send the+-- following types of messages:+--+-- -   __Simple__ – A standard email message. When you create this type of+--     message, you specify the sender, the recipient, and the message+--     body, and Amazon SES assembles the message for you.+--+-- -   __Raw__ – A raw, MIME-formatted email message. When you send this+--     type of email, you have to specify all of the message headers, as+--     well as the message body. You can use this message type to send+--     messages that contain attachments. The message that you specify has+--     to be a valid MIME message.+--+-- -   __Templated__ – A message that contains personalization tags. When+--     you send this type of email, Amazon SES API v2 automatically+--     replaces the tags with values that you specify.+module Amazonka.SESV2.SendEmail+  ( -- * Creating a Request+    SendEmail (..),+    newSendEmail,++    -- * Request Lenses+    sendEmail_configurationSetName,+    sendEmail_destination,+    sendEmail_emailTags,+    sendEmail_feedbackForwardingEmailAddress,+    sendEmail_feedbackForwardingEmailAddressIdentityArn,+    sendEmail_fromEmailAddress,+    sendEmail_fromEmailAddressIdentityArn,+    sendEmail_listManagementOptions,+    sendEmail_replyToAddresses,+    sendEmail_content,++    -- * Destructuring the Response+    SendEmailResponse (..),+    newSendEmailResponse,++    -- * Response Lenses+    sendEmailResponse_messageId,+    sendEmailResponse_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.SESV2.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 sending the email.+    configurationSetName :: Prelude.Maybe Prelude.Text,+    -- | An object that contains the recipients of the email message.+    destination :: Prelude.Maybe Destination,+    -- | A list of tags, in the form of name\/value pairs, to apply to an email+    -- that you send using the @SendEmail@ operation. Tags correspond to+    -- characteristics of the email that you define, so that you can publish+    -- email sending events.+    emailTags :: Prelude.Maybe [MessageTag],+    -- | The address that you want bounce and complaint notifications to be sent+    -- to.+    feedbackForwardingEmailAddress :: 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+    -- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+    -- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+    -- @FeedbackForwardingEmailAddress@ 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>.+    feedbackForwardingEmailAddressIdentityArn :: Prelude.Maybe Prelude.Text,+    -- | The email address to use as the \"From\" address for the email. The+    -- address that you specify has to be verified.+    fromEmailAddress :: 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+    -- @FromEmailAddress@ 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 sender\@example.com, then you+    -- would specify the @FromEmailAddressIdentityArn@ to be+    -- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+    -- @FromEmailAddress@ to be sender\@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>.+    --+    -- For Raw emails, the @FromEmailAddressIdentityArn@ value overrides the+    -- X-SES-SOURCE-ARN and X-SES-FROM-ARN headers specified in raw email+    -- message content.+    fromEmailAddressIdentityArn :: Prelude.Maybe Prelude.Text,+    -- | An object used to specify a list or topic to which an email belongs,+    -- which will be used when a contact chooses to unsubscribe.+    listManagementOptions :: Prelude.Maybe ListManagementOptions,+    -- | The \"Reply-to\" email addresses for the message. When the recipient+    -- replies to the message, each Reply-to address receives the reply.+    replyToAddresses :: Prelude.Maybe [Prelude.Text],+    -- | An object that contains the body of the message. You can send either a+    -- Simple message Raw message or a template Message.+    content :: EmailContent+  }+  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 sending the email.+--+-- 'destination', 'sendEmail_destination' - An object that contains the recipients of the email message.+--+-- 'emailTags', 'sendEmail_emailTags' - A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendEmail@ operation. Tags correspond to+-- characteristics of the email that you define, so that you can publish+-- email sending events.+--+-- 'feedbackForwardingEmailAddress', 'sendEmail_feedbackForwardingEmailAddress' - The address that you want bounce and complaint notifications to be sent+-- to.+--+-- 'feedbackForwardingEmailAddressIdentityArn', 'sendEmail_feedbackForwardingEmailAddressIdentityArn' - 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+-- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FeedbackForwardingEmailAddress@ 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>.+--+-- 'fromEmailAddress', 'sendEmail_fromEmailAddress' - The email address to use as the \"From\" address for the email. The+-- address that you specify has to be verified.+--+-- 'fromEmailAddressIdentityArn', 'sendEmail_fromEmailAddressIdentityArn' - 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+-- @FromEmailAddress@ 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 sender\@example.com, then you+-- would specify the @FromEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FromEmailAddress@ to be sender\@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>.+--+-- For Raw emails, the @FromEmailAddressIdentityArn@ value overrides the+-- X-SES-SOURCE-ARN and X-SES-FROM-ARN headers specified in raw email+-- message content.+--+-- 'listManagementOptions', 'sendEmail_listManagementOptions' - An object used to specify a list or topic to which an email belongs,+-- which will be used when a contact chooses to unsubscribe.+--+-- 'replyToAddresses', 'sendEmail_replyToAddresses' - The \"Reply-to\" email addresses for the message. When the recipient+-- replies to the message, each Reply-to address receives the reply.+--+-- 'content', 'sendEmail_content' - An object that contains the body of the message. You can send either a+-- Simple message Raw message or a template Message.+newSendEmail ::+  -- | 'content'+  EmailContent ->+  SendEmail+newSendEmail pContent_ =+  SendEmail'+    { configurationSetName = Prelude.Nothing,+      destination = Prelude.Nothing,+      emailTags = Prelude.Nothing,+      feedbackForwardingEmailAddress = Prelude.Nothing,+      feedbackForwardingEmailAddressIdentityArn =+        Prelude.Nothing,+      fromEmailAddress = Prelude.Nothing,+      fromEmailAddressIdentityArn = Prelude.Nothing,+      listManagementOptions = Prelude.Nothing,+      replyToAddresses = Prelude.Nothing,+      content = pContent_+    }++-- | The name of the configuration set to use when sending the email.+sendEmail_configurationSetName :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_configurationSetName = Lens.lens (\SendEmail' {configurationSetName} -> configurationSetName) (\s@SendEmail' {} a -> s {configurationSetName = a} :: SendEmail)++-- | An object that contains the recipients of the email message.+sendEmail_destination :: Lens.Lens' SendEmail (Prelude.Maybe Destination)+sendEmail_destination = Lens.lens (\SendEmail' {destination} -> destination) (\s@SendEmail' {} a -> s {destination = a} :: SendEmail)++-- | A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendEmail@ operation. Tags correspond to+-- characteristics of the email that you define, so that you can publish+-- email sending events.+sendEmail_emailTags :: Lens.Lens' SendEmail (Prelude.Maybe [MessageTag])+sendEmail_emailTags = Lens.lens (\SendEmail' {emailTags} -> emailTags) (\s@SendEmail' {} a -> s {emailTags = a} :: SendEmail) Prelude.. Lens.mapping Lens.coerced++-- | The address that you want bounce and complaint notifications to be sent+-- to.+sendEmail_feedbackForwardingEmailAddress :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_feedbackForwardingEmailAddress = Lens.lens (\SendEmail' {feedbackForwardingEmailAddress} -> feedbackForwardingEmailAddress) (\s@SendEmail' {} a -> s {feedbackForwardingEmailAddress = 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+-- @FeedbackForwardingEmailAddress@ 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 @FeedbackForwardingEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FeedbackForwardingEmailAddress@ 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_feedbackForwardingEmailAddressIdentityArn :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_feedbackForwardingEmailAddressIdentityArn = Lens.lens (\SendEmail' {feedbackForwardingEmailAddressIdentityArn} -> feedbackForwardingEmailAddressIdentityArn) (\s@SendEmail' {} a -> s {feedbackForwardingEmailAddressIdentityArn = a} :: SendEmail)++-- | The email address to use as the \"From\" address for the email. The+-- address that you specify has to be verified.+sendEmail_fromEmailAddress :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_fromEmailAddress = Lens.lens (\SendEmail' {fromEmailAddress} -> fromEmailAddress) (\s@SendEmail' {} a -> s {fromEmailAddress = 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+-- @FromEmailAddress@ 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 sender\@example.com, then you+-- would specify the @FromEmailAddressIdentityArn@ to be+-- arn:aws:ses:us-east-1:123456789012:identity\/example.com, and the+-- @FromEmailAddress@ to be sender\@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>.+--+-- For Raw emails, the @FromEmailAddressIdentityArn@ value overrides the+-- X-SES-SOURCE-ARN and X-SES-FROM-ARN headers specified in raw email+-- message content.+sendEmail_fromEmailAddressIdentityArn :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_fromEmailAddressIdentityArn = Lens.lens (\SendEmail' {fromEmailAddressIdentityArn} -> fromEmailAddressIdentityArn) (\s@SendEmail' {} a -> s {fromEmailAddressIdentityArn = a} :: SendEmail)++-- | An object used to specify a list or topic to which an email belongs,+-- which will be used when a contact chooses to unsubscribe.+sendEmail_listManagementOptions :: Lens.Lens' SendEmail (Prelude.Maybe ListManagementOptions)+sendEmail_listManagementOptions = Lens.lens (\SendEmail' {listManagementOptions} -> listManagementOptions) (\s@SendEmail' {} a -> s {listManagementOptions = a} :: SendEmail)++-- | The \"Reply-to\" email addresses for the message. When the recipient+-- replies to the message, each Reply-to address receives 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++-- | An object that contains the body of the message. You can send either a+-- Simple message Raw message or a template Message.+sendEmail_content :: Lens.Lens' SendEmail EmailContent+sendEmail_content = Lens.lens (\SendEmail' {content} -> content) (\s@SendEmail' {} a -> s {content = a} :: SendEmail)++instance Core.AWSRequest SendEmail where+  type AWSResponse SendEmail = SendEmailResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          SendEmailResponse'+            Prelude.<$> (x Data..?> "MessageId")+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable SendEmail where+  hashWithSalt _salt SendEmail' {..} =+    _salt+      `Prelude.hashWithSalt` configurationSetName+      `Prelude.hashWithSalt` destination+      `Prelude.hashWithSalt` emailTags+      `Prelude.hashWithSalt` feedbackForwardingEmailAddress+      `Prelude.hashWithSalt` feedbackForwardingEmailAddressIdentityArn+      `Prelude.hashWithSalt` fromEmailAddress+      `Prelude.hashWithSalt` fromEmailAddressIdentityArn+      `Prelude.hashWithSalt` listManagementOptions+      `Prelude.hashWithSalt` replyToAddresses+      `Prelude.hashWithSalt` content++instance Prelude.NFData SendEmail where+  rnf SendEmail' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf destination+      `Prelude.seq` Prelude.rnf emailTags+      `Prelude.seq` Prelude.rnf feedbackForwardingEmailAddress+      `Prelude.seq` Prelude.rnf feedbackForwardingEmailAddressIdentityArn+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf fromEmailAddressIdentityArn+      `Prelude.seq` Prelude.rnf listManagementOptions+      `Prelude.seq` Prelude.rnf replyToAddresses+      `Prelude.seq` Prelude.rnf content++instance Data.ToHeaders SendEmail where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON SendEmail where+  toJSON SendEmail' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ConfigurationSetName" Data..=)+              Prelude.<$> configurationSetName,+            ("Destination" Data..=) Prelude.<$> destination,+            ("EmailTags" Data..=) Prelude.<$> emailTags,+            ("FeedbackForwardingEmailAddress" Data..=)+              Prelude.<$> feedbackForwardingEmailAddress,+            ("FeedbackForwardingEmailAddressIdentityArn" Data..=)+              Prelude.<$> feedbackForwardingEmailAddressIdentityArn,+            ("FromEmailAddress" Data..=)+              Prelude.<$> fromEmailAddress,+            ("FromEmailAddressIdentityArn" Data..=)+              Prelude.<$> fromEmailAddressIdentityArn,+            ("ListManagementOptions" Data..=)+              Prelude.<$> listManagementOptions,+            ("ReplyToAddresses" Data..=)+              Prelude.<$> replyToAddresses,+            Prelude.Just ("Content" Data..= content)+          ]+      )++instance Data.ToPath SendEmail where+  toPath = Prelude.const "/v2/email/outbound-emails"++instance Data.ToQuery SendEmail where+  toQuery = Prelude.const Prelude.mempty++-- | A unique message ID that you receive when an email is accepted for+-- sending.+--+-- /See:/ 'newSendEmailResponse' smart constructor.+data SendEmailResponse = SendEmailResponse'+  { -- | A unique identifier for the message that is generated when the message+    -- is accepted.+    --+    -- It\'s possible for Amazon SES to accept a message without sending it.+    -- This can happen when the message that you\'re trying to send has an+    -- attachment contains a virus, or when you send a templated email that+    -- contains invalid personalization content, for example.+    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 '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:+--+-- 'messageId', 'sendEmailResponse_messageId' - A unique identifier for the message that is generated when the message+-- is accepted.+--+-- It\'s possible for Amazon SES to accept a message without sending it.+-- This can happen when the message that you\'re trying to send has an+-- attachment contains a virus, or when you send a templated email that+-- contains invalid personalization content, for example.+--+-- 'httpStatus', 'sendEmailResponse_httpStatus' - The response's http status code.+newSendEmailResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  SendEmailResponse+newSendEmailResponse pHttpStatus_ =+  SendEmailResponse'+    { messageId = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | A unique identifier for the message that is generated when the message+-- is accepted.+--+-- It\'s possible for Amazon SES to accept a message without sending it.+-- This can happen when the message that you\'re trying to send has an+-- attachment contains a virus, or when you send a templated email that+-- contains invalid personalization content, for example.+sendEmailResponse_messageId :: Lens.Lens' SendEmailResponse (Prelude.Maybe Prelude.Text)+sendEmailResponse_messageId = Lens.lens (\SendEmailResponse' {messageId} -> messageId) (\s@SendEmailResponse' {} a -> s {messageId = a} :: SendEmailResponse)++-- | 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)++instance Prelude.NFData SendEmailResponse where+  rnf SendEmailResponse' {..} =+    Prelude.rnf messageId+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/TagResource.hs view
@@ -0,0 +1,185 @@+{-# 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.SESV2.TagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Add one or more tags (keys and values) to a specified resource. A+-- /tag/ is a label that you optionally define and associate with a+-- resource. Tags can help you categorize and manage resources in different+-- ways, such as by purpose, owner, environment, or other criteria. A+-- resource can have as many as 50 tags.+--+-- Each tag consists of a required /tag key/ and an associated /tag value/,+-- both of which you define. A tag key is a general label that acts as a+-- category for more specific tag values. A tag value acts as a descriptor+-- within a tag key.+module Amazonka.SESV2.TagResource+  ( -- * Creating a Request+    TagResource (..),+    newTagResource,++    -- * Request Lenses+    tagResource_resourceArn,+    tagResource_tags,++    -- * Destructuring the Response+    TagResourceResponse (..),+    newTagResourceResponse,++    -- * Response Lenses+    tagResourceResponse_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.SESV2.Types++-- | /See:/ 'newTagResource' smart constructor.+data TagResource = TagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to add one+    -- or more tags to.+    resourceArn :: Prelude.Text,+    -- | A list of the tags that you want to add to the resource. A tag consists+    -- of a required tag key (@Key@) and an associated tag value (@Value@). The+    -- maximum length of a tag key is 128 characters. The maximum length of a+    -- tag value is 256 characters.+    tags :: [Tag]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResource' 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:+--+-- 'resourceArn', 'tagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to add one+-- or more tags to.+--+-- 'tags', 'tagResource_tags' - A list of the tags that you want to add to the resource. A tag consists+-- of a required tag key (@Key@) and an associated tag value (@Value@). The+-- maximum length of a tag key is 128 characters. The maximum length of a+-- tag value is 256 characters.+newTagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  TagResource+newTagResource pResourceArn_ =+  TagResource'+    { resourceArn = pResourceArn_,+      tags = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource that you want to add one+-- or more tags to.+tagResource_resourceArn :: Lens.Lens' TagResource Prelude.Text+tagResource_resourceArn = Lens.lens (\TagResource' {resourceArn} -> resourceArn) (\s@TagResource' {} a -> s {resourceArn = a} :: TagResource)++-- | A list of the tags that you want to add to the resource. A tag consists+-- of a required tag key (@Key@) and an associated tag value (@Value@). The+-- maximum length of a tag key is 128 characters. The maximum length of a+-- tag value is 256 characters.+tagResource_tags :: Lens.Lens' TagResource [Tag]+tagResource_tags = Lens.lens (\TagResource' {tags} -> tags) (\s@TagResource' {} a -> s {tags = a} :: TagResource) Prelude.. Lens.coerced++instance Core.AWSRequest TagResource where+  type AWSResponse TagResource = TagResourceResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          TagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable TagResource where+  hashWithSalt _salt TagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tags++instance Prelude.NFData TagResource where+  rnf TagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tags++instance Data.ToHeaders TagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TagResource where+  toJSON TagResource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("ResourceArn" Data..= resourceArn),+            Prelude.Just ("Tags" Data..= tags)+          ]+      )++instance Data.ToPath TagResource where+  toPath = Prelude.const "/v2/email/tags"++instance Data.ToQuery TagResource where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newTagResourceResponse' smart constructor.+data TagResourceResponse = TagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TagResourceResponse' 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', 'tagResourceResponse_httpStatus' - The response's http status code.+newTagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  TagResourceResponse+newTagResourceResponse pHttpStatus_ =+  TagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+tagResourceResponse_httpStatus :: Lens.Lens' TagResourceResponse Prelude.Int+tagResourceResponse_httpStatus = Lens.lens (\TagResourceResponse' {httpStatus} -> httpStatus) (\s@TagResourceResponse' {} a -> s {httpStatus = a} :: TagResourceResponse)++instance Prelude.NFData TagResourceResponse where+  rnf TagResourceResponse' {..} = Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/TestRenderEmailTemplate.hs view
@@ -0,0 +1,217 @@+{-# 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.SESV2.TestRenderEmailTemplate+-- 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.SESV2.TestRenderEmailTemplate+  ( -- * Creating a Request+    TestRenderEmailTemplate (..),+    newTestRenderEmailTemplate,++    -- * Request Lenses+    testRenderEmailTemplate_templateName,+    testRenderEmailTemplate_templateData,++    -- * Destructuring the Response+    TestRenderEmailTemplateResponse (..),+    newTestRenderEmailTemplateResponse,++    -- * Response Lenses+    testRenderEmailTemplateResponse_httpStatus,+    testRenderEmailTemplateResponse_renderedTemplate,+  )+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.SESV2.Types++-- | >Represents a request to create a preview of the MIME content of an+-- email when provided with a template and a set of replacement data.+--+-- /See:/ 'newTestRenderEmailTemplate' smart constructor.+data TestRenderEmailTemplate = TestRenderEmailTemplate'+  { -- | The name of the template.+    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 'TestRenderEmailTemplate' 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', 'testRenderEmailTemplate_templateName' - The name of the template.+--+-- 'templateData', 'testRenderEmailTemplate_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.+newTestRenderEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  -- | 'templateData'+  Prelude.Text ->+  TestRenderEmailTemplate+newTestRenderEmailTemplate+  pTemplateName_+  pTemplateData_ =+    TestRenderEmailTemplate'+      { templateName =+          pTemplateName_,+        templateData = pTemplateData_+      }++-- | The name of the template.+testRenderEmailTemplate_templateName :: Lens.Lens' TestRenderEmailTemplate Prelude.Text+testRenderEmailTemplate_templateName = Lens.lens (\TestRenderEmailTemplate' {templateName} -> templateName) (\s@TestRenderEmailTemplate' {} a -> s {templateName = a} :: TestRenderEmailTemplate)++-- | 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.+testRenderEmailTemplate_templateData :: Lens.Lens' TestRenderEmailTemplate Prelude.Text+testRenderEmailTemplate_templateData = Lens.lens (\TestRenderEmailTemplate' {templateData} -> templateData) (\s@TestRenderEmailTemplate' {} a -> s {templateData = a} :: TestRenderEmailTemplate)++instance Core.AWSRequest TestRenderEmailTemplate where+  type+    AWSResponse TestRenderEmailTemplate =+      TestRenderEmailTemplateResponse+  request overrides =+    Request.postJSON (overrides defaultService)+  response =+    Response.receiveJSON+      ( \s h x ->+          TestRenderEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+            Prelude.<*> (x Data..:> "RenderedTemplate")+      )++instance Prelude.Hashable TestRenderEmailTemplate where+  hashWithSalt _salt TestRenderEmailTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` templateName+      `Prelude.hashWithSalt` templateData++instance Prelude.NFData TestRenderEmailTemplate where+  rnf TestRenderEmailTemplate' {..} =+    Prelude.rnf templateName+      `Prelude.seq` Prelude.rnf templateData++instance Data.ToHeaders TestRenderEmailTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON TestRenderEmailTemplate where+  toJSON TestRenderEmailTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("TemplateData" Data..= templateData)]+      )++instance Data.ToPath TestRenderEmailTemplate where+  toPath TestRenderEmailTemplate' {..} =+    Prelude.mconcat+      [ "/v2/email/templates/",+        Data.toBS templateName,+        "/render"+      ]++instance Data.ToQuery TestRenderEmailTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | The following element is returned by the service.+--+-- /See:/ 'newTestRenderEmailTemplateResponse' smart constructor.+data TestRenderEmailTemplateResponse = TestRenderEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int,+    -- | The complete MIME message rendered by applying the data in the+    -- @TemplateData@ parameter to the template specified in the TemplateName+    -- parameter.+    renderedTemplate :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TestRenderEmailTemplateResponse' 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', 'testRenderEmailTemplateResponse_httpStatus' - The response's http status code.+--+-- 'renderedTemplate', 'testRenderEmailTemplateResponse_renderedTemplate' - The complete MIME message rendered by applying the data in the+-- @TemplateData@ parameter to the template specified in the TemplateName+-- parameter.+newTestRenderEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  -- | 'renderedTemplate'+  Prelude.Text ->+  TestRenderEmailTemplateResponse+newTestRenderEmailTemplateResponse+  pHttpStatus_+  pRenderedTemplate_ =+    TestRenderEmailTemplateResponse'+      { httpStatus =+          pHttpStatus_,+        renderedTemplate = pRenderedTemplate_+      }++-- | The response's http status code.+testRenderEmailTemplateResponse_httpStatus :: Lens.Lens' TestRenderEmailTemplateResponse Prelude.Int+testRenderEmailTemplateResponse_httpStatus = Lens.lens (\TestRenderEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@TestRenderEmailTemplateResponse' {} a -> s {httpStatus = a} :: TestRenderEmailTemplateResponse)++-- | The complete MIME message rendered by applying the data in the+-- @TemplateData@ parameter to the template specified in the TemplateName+-- parameter.+testRenderEmailTemplateResponse_renderedTemplate :: Lens.Lens' TestRenderEmailTemplateResponse Prelude.Text+testRenderEmailTemplateResponse_renderedTemplate = Lens.lens (\TestRenderEmailTemplateResponse' {renderedTemplate} -> renderedTemplate) (\s@TestRenderEmailTemplateResponse' {} a -> s {renderedTemplate = a} :: TestRenderEmailTemplateResponse)++instance+  Prelude.NFData+    TestRenderEmailTemplateResponse+  where+  rnf TestRenderEmailTemplateResponse' {..} =+    Prelude.rnf httpStatus+      `Prelude.seq` Prelude.rnf renderedTemplate
+ gen/Amazonka/SESV2/Types.hs view
@@ -0,0 +1,956 @@+{-# 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.SESV2.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.SESV2.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccountSuspendedException,+    _AlreadyExistsException,+    _BadRequestException,+    _ConcurrentModificationException,+    _ConflictException,+    _InternalServiceErrorException,+    _InvalidNextTokenException,+    _LimitExceededException,+    _MailFromDomainNotVerifiedException,+    _MessageRejected,+    _NotFoundException,+    _SendingPausedException,+    _TooManyRequestsException,++    -- * BehaviorOnMxFailure+    BehaviorOnMxFailure (..),++    -- * BulkEmailStatus+    BulkEmailStatus (..),++    -- * ContactLanguage+    ContactLanguage (..),++    -- * ContactListImportAction+    ContactListImportAction (..),++    -- * DataFormat+    DataFormat (..),++    -- * DeliverabilityDashboardAccountStatus+    DeliverabilityDashboardAccountStatus (..),++    -- * DeliverabilityTestStatus+    DeliverabilityTestStatus (..),++    -- * DimensionValueSource+    DimensionValueSource (..),++    -- * DkimSigningAttributesOrigin+    DkimSigningAttributesOrigin (..),++    -- * DkimSigningKeyLength+    DkimSigningKeyLength (..),++    -- * DkimStatus+    DkimStatus (..),++    -- * EventType+    EventType (..),++    -- * FeatureStatus+    FeatureStatus (..),++    -- * IdentityType+    IdentityType (..),++    -- * ImportDestinationType+    ImportDestinationType (..),++    -- * JobStatus+    JobStatus (..),++    -- * ListRecommendationsFilterKey+    ListRecommendationsFilterKey (..),++    -- * MailFromDomainStatus+    MailFromDomainStatus (..),++    -- * MailType+    MailType (..),++    -- * Metric+    Metric (..),++    -- * MetricDimensionName+    MetricDimensionName (..),++    -- * MetricNamespace+    MetricNamespace (..),++    -- * QueryErrorCode+    QueryErrorCode (..),++    -- * RecommendationImpact+    RecommendationImpact (..),++    -- * RecommendationStatus+    RecommendationStatus (..),++    -- * RecommendationType+    RecommendationType (..),++    -- * ReviewStatus+    ReviewStatus (..),++    -- * ScalingMode+    ScalingMode (..),++    -- * SubscriptionStatus+    SubscriptionStatus (..),++    -- * SuppressionListImportAction+    SuppressionListImportAction (..),++    -- * SuppressionListReason+    SuppressionListReason (..),++    -- * TlsPolicy+    TlsPolicy (..),++    -- * VerificationStatus+    VerificationStatus (..),++    -- * WarmupStatus+    WarmupStatus (..),++    -- * AccountDetails+    AccountDetails (..),+    newAccountDetails,+    accountDetails_additionalContactEmailAddresses,+    accountDetails_contactLanguage,+    accountDetails_mailType,+    accountDetails_reviewDetails,+    accountDetails_useCaseDescription,+    accountDetails_websiteURL,++    -- * BatchGetMetricDataQuery+    BatchGetMetricDataQuery (..),+    newBatchGetMetricDataQuery,+    batchGetMetricDataQuery_dimensions,+    batchGetMetricDataQuery_id,+    batchGetMetricDataQuery_namespace,+    batchGetMetricDataQuery_metric,+    batchGetMetricDataQuery_startDate,+    batchGetMetricDataQuery_endDate,++    -- * BlacklistEntry+    BlacklistEntry (..),+    newBlacklistEntry,+    blacklistEntry_description,+    blacklistEntry_listingTime,+    blacklistEntry_rblName,++    -- * Body+    Body (..),+    newBody,+    body_html,+    body_text,++    -- * BulkEmailContent+    BulkEmailContent (..),+    newBulkEmailContent,+    bulkEmailContent_template,++    -- * BulkEmailEntry+    BulkEmailEntry (..),+    newBulkEmailEntry,+    bulkEmailEntry_replacementEmailContent,+    bulkEmailEntry_replacementTags,+    bulkEmailEntry_destination,++    -- * BulkEmailEntryResult+    BulkEmailEntryResult (..),+    newBulkEmailEntryResult,+    bulkEmailEntryResult_error,+    bulkEmailEntryResult_messageId,+    bulkEmailEntryResult_status,++    -- * CloudWatchDestination+    CloudWatchDestination (..),+    newCloudWatchDestination,+    cloudWatchDestination_dimensionConfigurations,++    -- * CloudWatchDimensionConfiguration+    CloudWatchDimensionConfiguration (..),+    newCloudWatchDimensionConfiguration,+    cloudWatchDimensionConfiguration_dimensionName,+    cloudWatchDimensionConfiguration_dimensionValueSource,+    cloudWatchDimensionConfiguration_defaultDimensionValue,++    -- * Contact+    Contact (..),+    newContact,+    contact_emailAddress,+    contact_lastUpdatedTimestamp,+    contact_topicDefaultPreferences,+    contact_topicPreferences,+    contact_unsubscribeAll,++    -- * ContactList+    ContactList (..),+    newContactList,+    contactList_contactListName,+    contactList_lastUpdatedTimestamp,++    -- * ContactListDestination+    ContactListDestination (..),+    newContactListDestination,+    contactListDestination_contactListName,+    contactListDestination_contactListImportAction,++    -- * Content+    Content (..),+    newContent,+    content_charset,+    content_data,++    -- * CustomVerificationEmailTemplateMetadata+    CustomVerificationEmailTemplateMetadata (..),+    newCustomVerificationEmailTemplateMetadata,+    customVerificationEmailTemplateMetadata_failureRedirectionURL,+    customVerificationEmailTemplateMetadata_fromEmailAddress,+    customVerificationEmailTemplateMetadata_successRedirectionURL,+    customVerificationEmailTemplateMetadata_templateName,+    customVerificationEmailTemplateMetadata_templateSubject,++    -- * DailyVolume+    DailyVolume (..),+    newDailyVolume,+    dailyVolume_domainIspPlacements,+    dailyVolume_startDate,+    dailyVolume_volumeStatistics,++    -- * DashboardAttributes+    DashboardAttributes (..),+    newDashboardAttributes,+    dashboardAttributes_engagementMetrics,++    -- * DashboardOptions+    DashboardOptions (..),+    newDashboardOptions,+    dashboardOptions_engagementMetrics,++    -- * DedicatedIp+    DedicatedIp (..),+    newDedicatedIp,+    dedicatedIp_poolName,+    dedicatedIp_ip,+    dedicatedIp_warmupStatus,+    dedicatedIp_warmupPercentage,++    -- * DedicatedIpPool+    DedicatedIpPool (..),+    newDedicatedIpPool,+    dedicatedIpPool_poolName,+    dedicatedIpPool_scalingMode,++    -- * DeliverabilityTestReport+    DeliverabilityTestReport (..),+    newDeliverabilityTestReport,+    deliverabilityTestReport_createDate,+    deliverabilityTestReport_deliverabilityTestStatus,+    deliverabilityTestReport_fromEmailAddress,+    deliverabilityTestReport_reportId,+    deliverabilityTestReport_reportName,+    deliverabilityTestReport_subject,++    -- * DeliveryOptions+    DeliveryOptions (..),+    newDeliveryOptions,+    deliveryOptions_sendingPoolName,+    deliveryOptions_tlsPolicy,++    -- * Destination+    Destination (..),+    newDestination,+    destination_bccAddresses,+    destination_ccAddresses,+    destination_toAddresses,++    -- * DkimAttributes+    DkimAttributes (..),+    newDkimAttributes,+    dkimAttributes_currentSigningKeyLength,+    dkimAttributes_lastKeyGenerationTimestamp,+    dkimAttributes_nextSigningKeyLength,+    dkimAttributes_signingAttributesOrigin,+    dkimAttributes_signingEnabled,+    dkimAttributes_status,+    dkimAttributes_tokens,++    -- * DkimSigningAttributes+    DkimSigningAttributes (..),+    newDkimSigningAttributes,+    dkimSigningAttributes_domainSigningPrivateKey,+    dkimSigningAttributes_domainSigningSelector,+    dkimSigningAttributes_nextSigningKeyLength,++    -- * DomainDeliverabilityCampaign+    DomainDeliverabilityCampaign (..),+    newDomainDeliverabilityCampaign,+    domainDeliverabilityCampaign_campaignId,+    domainDeliverabilityCampaign_deleteRate,+    domainDeliverabilityCampaign_esps,+    domainDeliverabilityCampaign_firstSeenDateTime,+    domainDeliverabilityCampaign_fromAddress,+    domainDeliverabilityCampaign_imageUrl,+    domainDeliverabilityCampaign_inboxCount,+    domainDeliverabilityCampaign_lastSeenDateTime,+    domainDeliverabilityCampaign_projectedVolume,+    domainDeliverabilityCampaign_readDeleteRate,+    domainDeliverabilityCampaign_readRate,+    domainDeliverabilityCampaign_sendingIps,+    domainDeliverabilityCampaign_spamCount,+    domainDeliverabilityCampaign_subject,++    -- * DomainDeliverabilityTrackingOption+    DomainDeliverabilityTrackingOption (..),+    newDomainDeliverabilityTrackingOption,+    domainDeliverabilityTrackingOption_domain,+    domainDeliverabilityTrackingOption_inboxPlacementTrackingOption,+    domainDeliverabilityTrackingOption_subscriptionStartDate,++    -- * DomainIspPlacement+    DomainIspPlacement (..),+    newDomainIspPlacement,+    domainIspPlacement_inboxPercentage,+    domainIspPlacement_inboxRawCount,+    domainIspPlacement_ispName,+    domainIspPlacement_spamPercentage,+    domainIspPlacement_spamRawCount,++    -- * EmailContent+    EmailContent (..),+    newEmailContent,+    emailContent_raw,+    emailContent_simple,+    emailContent_template,++    -- * EmailTemplateContent+    EmailTemplateContent (..),+    newEmailTemplateContent,+    emailTemplateContent_html,+    emailTemplateContent_subject,+    emailTemplateContent_text,++    -- * EmailTemplateMetadata+    EmailTemplateMetadata (..),+    newEmailTemplateMetadata,+    emailTemplateMetadata_createdTimestamp,+    emailTemplateMetadata_templateName,++    -- * EventDestination+    EventDestination (..),+    newEventDestination,+    eventDestination_cloudWatchDestination,+    eventDestination_enabled,+    eventDestination_kinesisFirehoseDestination,+    eventDestination_pinpointDestination,+    eventDestination_snsDestination,+    eventDestination_name,+    eventDestination_matchingEventTypes,++    -- * EventDestinationDefinition+    EventDestinationDefinition (..),+    newEventDestinationDefinition,+    eventDestinationDefinition_cloudWatchDestination,+    eventDestinationDefinition_enabled,+    eventDestinationDefinition_kinesisFirehoseDestination,+    eventDestinationDefinition_matchingEventTypes,+    eventDestinationDefinition_pinpointDestination,+    eventDestinationDefinition_snsDestination,++    -- * FailureInfo+    FailureInfo (..),+    newFailureInfo,+    failureInfo_errorMessage,+    failureInfo_failedRecordsS3Url,++    -- * GuardianAttributes+    GuardianAttributes (..),+    newGuardianAttributes,+    guardianAttributes_optimizedSharedDelivery,++    -- * GuardianOptions+    GuardianOptions (..),+    newGuardianOptions,+    guardianOptions_optimizedSharedDelivery,++    -- * IdentityInfo+    IdentityInfo (..),+    newIdentityInfo,+    identityInfo_identityName,+    identityInfo_identityType,+    identityInfo_sendingEnabled,+    identityInfo_verificationStatus,++    -- * ImportDataSource+    ImportDataSource (..),+    newImportDataSource,+    importDataSource_s3Url,+    importDataSource_dataFormat,++    -- * ImportDestination+    ImportDestination (..),+    newImportDestination,+    importDestination_contactListDestination,+    importDestination_suppressionListDestination,++    -- * ImportJobSummary+    ImportJobSummary (..),+    newImportJobSummary,+    importJobSummary_createdTimestamp,+    importJobSummary_failedRecordsCount,+    importJobSummary_importDestination,+    importJobSummary_jobId,+    importJobSummary_jobStatus,+    importJobSummary_processedRecordsCount,++    -- * InboxPlacementTrackingOption+    InboxPlacementTrackingOption (..),+    newInboxPlacementTrackingOption,+    inboxPlacementTrackingOption_global,+    inboxPlacementTrackingOption_trackedIsps,++    -- * IspPlacement+    IspPlacement (..),+    newIspPlacement,+    ispPlacement_ispName,+    ispPlacement_placementStatistics,++    -- * KinesisFirehoseDestination+    KinesisFirehoseDestination (..),+    newKinesisFirehoseDestination,+    kinesisFirehoseDestination_iamRoleArn,+    kinesisFirehoseDestination_deliveryStreamArn,++    -- * ListContactsFilter+    ListContactsFilter (..),+    newListContactsFilter,+    listContactsFilter_filteredStatus,+    listContactsFilter_topicFilter,++    -- * ListManagementOptions+    ListManagementOptions (..),+    newListManagementOptions,+    listManagementOptions_topicName,+    listManagementOptions_contactListName,++    -- * MailFromAttributes+    MailFromAttributes (..),+    newMailFromAttributes,+    mailFromAttributes_mailFromDomain,+    mailFromAttributes_mailFromDomainStatus,+    mailFromAttributes_behaviorOnMxFailure,++    -- * Message+    Message (..),+    newMessage,+    message_subject,+    message_body,++    -- * MessageTag+    MessageTag (..),+    newMessageTag,+    messageTag_name,+    messageTag_value,++    -- * MetricDataError+    MetricDataError (..),+    newMetricDataError,+    metricDataError_code,+    metricDataError_id,+    metricDataError_message,++    -- * MetricDataResult+    MetricDataResult (..),+    newMetricDataResult,+    metricDataResult_id,+    metricDataResult_timestamps,+    metricDataResult_values,++    -- * OverallVolume+    OverallVolume (..),+    newOverallVolume,+    overallVolume_domainIspPlacements,+    overallVolume_readRatePercent,+    overallVolume_volumeStatistics,++    -- * PinpointDestination+    PinpointDestination (..),+    newPinpointDestination,+    pinpointDestination_applicationArn,++    -- * PlacementStatistics+    PlacementStatistics (..),+    newPlacementStatistics,+    placementStatistics_dkimPercentage,+    placementStatistics_inboxPercentage,+    placementStatistics_missingPercentage,+    placementStatistics_spamPercentage,+    placementStatistics_spfPercentage,++    -- * RawMessage+    RawMessage (..),+    newRawMessage,+    rawMessage_data,++    -- * Recommendation+    Recommendation (..),+    newRecommendation,+    recommendation_createdTimestamp,+    recommendation_description,+    recommendation_impact,+    recommendation_lastUpdatedTimestamp,+    recommendation_resourceArn,+    recommendation_status,+    recommendation_type,++    -- * ReplacementEmailContent+    ReplacementEmailContent (..),+    newReplacementEmailContent,+    replacementEmailContent_replacementTemplate,++    -- * ReplacementTemplate+    ReplacementTemplate (..),+    newReplacementTemplate,+    replacementTemplate_replacementTemplateData,++    -- * ReputationOptions+    ReputationOptions (..),+    newReputationOptions,+    reputationOptions_lastFreshStart,+    reputationOptions_reputationMetricsEnabled,++    -- * ReviewDetails+    ReviewDetails (..),+    newReviewDetails,+    reviewDetails_caseId,+    reviewDetails_status,++    -- * SendQuota+    SendQuota (..),+    newSendQuota,+    sendQuota_max24HourSend,+    sendQuota_maxSendRate,+    sendQuota_sentLast24Hours,++    -- * SendingOptions+    SendingOptions (..),+    newSendingOptions,+    sendingOptions_sendingEnabled,++    -- * SnsDestination+    SnsDestination (..),+    newSnsDestination,+    snsDestination_topicArn,++    -- * SuppressedDestination+    SuppressedDestination (..),+    newSuppressedDestination,+    suppressedDestination_attributes,+    suppressedDestination_emailAddress,+    suppressedDestination_reason,+    suppressedDestination_lastUpdateTime,++    -- * SuppressedDestinationAttributes+    SuppressedDestinationAttributes (..),+    newSuppressedDestinationAttributes,+    suppressedDestinationAttributes_feedbackId,+    suppressedDestinationAttributes_messageId,++    -- * SuppressedDestinationSummary+    SuppressedDestinationSummary (..),+    newSuppressedDestinationSummary,+    suppressedDestinationSummary_emailAddress,+    suppressedDestinationSummary_reason,+    suppressedDestinationSummary_lastUpdateTime,++    -- * SuppressionAttributes+    SuppressionAttributes (..),+    newSuppressionAttributes,+    suppressionAttributes_suppressedReasons,++    -- * SuppressionListDestination+    SuppressionListDestination (..),+    newSuppressionListDestination,+    suppressionListDestination_suppressionListImportAction,++    -- * SuppressionOptions+    SuppressionOptions (..),+    newSuppressionOptions,+    suppressionOptions_suppressedReasons,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,++    -- * Template+    Template (..),+    newTemplate,+    template_templateArn,+    template_templateData,+    template_templateName,++    -- * Topic+    Topic (..),+    newTopic,+    topic_description,+    topic_topicName,+    topic_displayName,+    topic_defaultSubscriptionStatus,++    -- * TopicFilter+    TopicFilter (..),+    newTopicFilter,+    topicFilter_topicName,+    topicFilter_useDefaultIfPreferenceUnavailable,++    -- * TopicPreference+    TopicPreference (..),+    newTopicPreference,+    topicPreference_topicName,+    topicPreference_subscriptionStatus,++    -- * TrackingOptions+    TrackingOptions (..),+    newTrackingOptions,+    trackingOptions_customRedirectDomain,++    -- * VdmAttributes+    VdmAttributes (..),+    newVdmAttributes,+    vdmAttributes_dashboardAttributes,+    vdmAttributes_guardianAttributes,+    vdmAttributes_vdmEnabled,++    -- * VdmOptions+    VdmOptions (..),+    newVdmOptions,+    vdmOptions_dashboardOptions,+    vdmOptions_guardianOptions,++    -- * VolumeStatistics+    VolumeStatistics (..),+    newVolumeStatistics,+    volumeStatistics_inboxRawCount,+    volumeStatistics_projectedInbox,+    volumeStatistics_projectedSpam,+    volumeStatistics_spamRawCount,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Prelude as Prelude+import Amazonka.SESV2.Types.AccountDetails+import Amazonka.SESV2.Types.BatchGetMetricDataQuery+import Amazonka.SESV2.Types.BehaviorOnMxFailure+import Amazonka.SESV2.Types.BlacklistEntry+import Amazonka.SESV2.Types.Body+import Amazonka.SESV2.Types.BulkEmailContent+import Amazonka.SESV2.Types.BulkEmailEntry+import Amazonka.SESV2.Types.BulkEmailEntryResult+import Amazonka.SESV2.Types.BulkEmailStatus+import Amazonka.SESV2.Types.CloudWatchDestination+import Amazonka.SESV2.Types.CloudWatchDimensionConfiguration+import Amazonka.SESV2.Types.Contact+import Amazonka.SESV2.Types.ContactLanguage+import Amazonka.SESV2.Types.ContactList+import Amazonka.SESV2.Types.ContactListDestination+import Amazonka.SESV2.Types.ContactListImportAction+import Amazonka.SESV2.Types.Content+import Amazonka.SESV2.Types.CustomVerificationEmailTemplateMetadata+import Amazonka.SESV2.Types.DailyVolume+import Amazonka.SESV2.Types.DashboardAttributes+import Amazonka.SESV2.Types.DashboardOptions+import Amazonka.SESV2.Types.DataFormat+import Amazonka.SESV2.Types.DedicatedIp+import Amazonka.SESV2.Types.DedicatedIpPool+import Amazonka.SESV2.Types.DeliverabilityDashboardAccountStatus+import Amazonka.SESV2.Types.DeliverabilityTestReport+import Amazonka.SESV2.Types.DeliverabilityTestStatus+import Amazonka.SESV2.Types.DeliveryOptions+import Amazonka.SESV2.Types.Destination+import Amazonka.SESV2.Types.DimensionValueSource+import Amazonka.SESV2.Types.DkimAttributes+import Amazonka.SESV2.Types.DkimSigningAttributes+import Amazonka.SESV2.Types.DkimSigningAttributesOrigin+import Amazonka.SESV2.Types.DkimSigningKeyLength+import Amazonka.SESV2.Types.DkimStatus+import Amazonka.SESV2.Types.DomainDeliverabilityCampaign+import Amazonka.SESV2.Types.DomainDeliverabilityTrackingOption+import Amazonka.SESV2.Types.DomainIspPlacement+import Amazonka.SESV2.Types.EmailContent+import Amazonka.SESV2.Types.EmailTemplateContent+import Amazonka.SESV2.Types.EmailTemplateMetadata+import Amazonka.SESV2.Types.EventDestination+import Amazonka.SESV2.Types.EventDestinationDefinition+import Amazonka.SESV2.Types.EventType+import Amazonka.SESV2.Types.FailureInfo+import Amazonka.SESV2.Types.FeatureStatus+import Amazonka.SESV2.Types.GuardianAttributes+import Amazonka.SESV2.Types.GuardianOptions+import Amazonka.SESV2.Types.IdentityInfo+import Amazonka.SESV2.Types.IdentityType+import Amazonka.SESV2.Types.ImportDataSource+import Amazonka.SESV2.Types.ImportDestination+import Amazonka.SESV2.Types.ImportDestinationType+import Amazonka.SESV2.Types.ImportJobSummary+import Amazonka.SESV2.Types.InboxPlacementTrackingOption+import Amazonka.SESV2.Types.IspPlacement+import Amazonka.SESV2.Types.JobStatus+import Amazonka.SESV2.Types.KinesisFirehoseDestination+import Amazonka.SESV2.Types.ListContactsFilter+import Amazonka.SESV2.Types.ListManagementOptions+import Amazonka.SESV2.Types.ListRecommendationsFilterKey+import Amazonka.SESV2.Types.MailFromAttributes+import Amazonka.SESV2.Types.MailFromDomainStatus+import Amazonka.SESV2.Types.MailType+import Amazonka.SESV2.Types.Message+import Amazonka.SESV2.Types.MessageTag+import Amazonka.SESV2.Types.Metric+import Amazonka.SESV2.Types.MetricDataError+import Amazonka.SESV2.Types.MetricDataResult+import Amazonka.SESV2.Types.MetricDimensionName+import Amazonka.SESV2.Types.MetricNamespace+import Amazonka.SESV2.Types.OverallVolume+import Amazonka.SESV2.Types.PinpointDestination+import Amazonka.SESV2.Types.PlacementStatistics+import Amazonka.SESV2.Types.QueryErrorCode+import Amazonka.SESV2.Types.RawMessage+import Amazonka.SESV2.Types.Recommendation+import Amazonka.SESV2.Types.RecommendationImpact+import Amazonka.SESV2.Types.RecommendationStatus+import Amazonka.SESV2.Types.RecommendationType+import Amazonka.SESV2.Types.ReplacementEmailContent+import Amazonka.SESV2.Types.ReplacementTemplate+import Amazonka.SESV2.Types.ReputationOptions+import Amazonka.SESV2.Types.ReviewDetails+import Amazonka.SESV2.Types.ReviewStatus+import Amazonka.SESV2.Types.ScalingMode+import Amazonka.SESV2.Types.SendQuota+import Amazonka.SESV2.Types.SendingOptions+import Amazonka.SESV2.Types.SnsDestination+import Amazonka.SESV2.Types.SubscriptionStatus+import Amazonka.SESV2.Types.SuppressedDestination+import Amazonka.SESV2.Types.SuppressedDestinationAttributes+import Amazonka.SESV2.Types.SuppressedDestinationSummary+import Amazonka.SESV2.Types.SuppressionAttributes+import Amazonka.SESV2.Types.SuppressionListDestination+import Amazonka.SESV2.Types.SuppressionListImportAction+import Amazonka.SESV2.Types.SuppressionListReason+import Amazonka.SESV2.Types.SuppressionOptions+import Amazonka.SESV2.Types.Tag+import Amazonka.SESV2.Types.Template+import Amazonka.SESV2.Types.TlsPolicy+import Amazonka.SESV2.Types.Topic+import Amazonka.SESV2.Types.TopicFilter+import Amazonka.SESV2.Types.TopicPreference+import Amazonka.SESV2.Types.TrackingOptions+import Amazonka.SESV2.Types.VdmAttributes+import Amazonka.SESV2.Types.VdmOptions+import Amazonka.SESV2.Types.VerificationStatus+import Amazonka.SESV2.Types.VolumeStatistics+import Amazonka.SESV2.Types.WarmupStatus+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2019-09-27@ of the Amazon Simple Email Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "SESV2",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "email",+      Core.signingName = "ses",+      Core.version = "2019-09-27",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "SESV2",+      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++-- | The message can\'t be sent because the account\'s ability to send email+-- has been permanently restricted.+_AccountSuspendedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AccountSuspendedException =+  Core._MatchServiceError+    defaultService+    "AccountSuspendedException"+    Prelude.. Core.hasStatus 400++-- | The resource specified in your request already exists.+_AlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_AlreadyExistsException =+  Core._MatchServiceError+    defaultService+    "AlreadyExistsException"+    Prelude.. Core.hasStatus 400++-- | The input you provided is invalid.+_BadRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_BadRequestException =+  Core._MatchServiceError+    defaultService+    "BadRequestException"+    Prelude.. Core.hasStatus 400++-- | The resource is being modified by another operation or thread.+_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConcurrentModificationException =+  Core._MatchServiceError+    defaultService+    "ConcurrentModificationException"+    Prelude.. Core.hasStatus 500++-- | If there is already an ongoing account details update under review.+_ConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_ConflictException =+  Core._MatchServiceError+    defaultService+    "ConflictException"+    Prelude.. Core.hasStatus 409++-- | The request couldn\'t be processed because an error occurred with the+-- Amazon SES API v2.+_InternalServiceErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InternalServiceErrorException =+  Core._MatchServiceError+    defaultService+    "InternalServiceErrorException"+    Prelude.. Core.hasStatus 500++-- | The specified request includes an invalid or expired token.+_InvalidNextTokenException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_InvalidNextTokenException =+  Core._MatchServiceError+    defaultService+    "InvalidNextTokenException"+    Prelude.. Core.hasStatus 400++-- | There are too many instances of the specified resource type.+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_LimitExceededException =+  Core._MatchServiceError+    defaultService+    "LimitExceededException"+    Prelude.. Core.hasStatus 400++-- | The message can\'t be sent because the sending domain isn\'t verified.+_MailFromDomainNotVerifiedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_MailFromDomainNotVerifiedException =+  Core._MatchServiceError+    defaultService+    "MailFromDomainNotVerifiedException"+    Prelude.. Core.hasStatus 400++-- | The message can\'t be sent because it contains invalid content.+_MessageRejected :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_MessageRejected =+  Core._MatchServiceError+    defaultService+    "MessageRejected"+    Prelude.. Core.hasStatus 400++-- | The resource you attempted to access doesn\'t exist.+_NotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_NotFoundException =+  Core._MatchServiceError+    defaultService+    "NotFoundException"+    Prelude.. Core.hasStatus 404++-- | The message can\'t be sent because the account\'s ability to send email+-- is currently paused.+_SendingPausedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_SendingPausedException =+  Core._MatchServiceError+    defaultService+    "SendingPausedException"+    Prelude.. Core.hasStatus 400++-- | Too many requests have been made to the operation.+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError+_TooManyRequestsException =+  Core._MatchServiceError+    defaultService+    "TooManyRequestsException"+    Prelude.. Core.hasStatus 429
+ gen/Amazonka/SESV2/Types/AccountDetails.hs view
@@ -0,0 +1,166 @@+{-# 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.SESV2.Types.AccountDetails+-- 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.SESV2.Types.AccountDetails 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.SESV2.Types.ContactLanguage+import Amazonka.SESV2.Types.MailType+import Amazonka.SESV2.Types.ReviewDetails++-- | An object that contains information about your account details.+--+-- /See:/ 'newAccountDetails' smart constructor.+data AccountDetails = AccountDetails'+  { -- | Additional email addresses where updates are sent about your account+    -- review process.+    additionalContactEmailAddresses :: Prelude.Maybe (Data.Sensitive (Prelude.NonEmpty (Data.Sensitive Prelude.Text))),+    -- | The language you would prefer for the case. The contact language can be+    -- one of @ENGLISH@ or @JAPANESE@.+    contactLanguage :: Prelude.Maybe ContactLanguage,+    -- | The type of email your account is sending. The mail type can be one of+    -- the following:+    --+    -- -   @MARKETING@ – Most of your sending traffic is to keep your customers+    --     informed of your latest offering.+    --+    -- -   @TRANSACTIONAL@ – Most of your sending traffic is to communicate+    --     during a transaction with a customer.+    mailType :: Prelude.Maybe MailType,+    -- | Information about the review of the latest details you submitted.+    reviewDetails :: Prelude.Maybe ReviewDetails,+    -- | A description of the types of email that you plan to send.+    useCaseDescription :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | The URL of your website. This information helps us better understand the+    -- type of content that you plan to send.+    websiteURL :: Prelude.Maybe (Data.Sensitive Prelude.Text)+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'AccountDetails' 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:+--+-- 'additionalContactEmailAddresses', 'accountDetails_additionalContactEmailAddresses' - Additional email addresses where updates are sent about your account+-- review process.+--+-- 'contactLanguage', 'accountDetails_contactLanguage' - The language you would prefer for the case. The contact language can be+-- one of @ENGLISH@ or @JAPANESE@.+--+-- 'mailType', 'accountDetails_mailType' - The type of email your account is sending. The mail type can be one of+-- the following:+--+-- -   @MARKETING@ – Most of your sending traffic is to keep your customers+--     informed of your latest offering.+--+-- -   @TRANSACTIONAL@ – Most of your sending traffic is to communicate+--     during a transaction with a customer.+--+-- 'reviewDetails', 'accountDetails_reviewDetails' - Information about the review of the latest details you submitted.+--+-- 'useCaseDescription', 'accountDetails_useCaseDescription' - A description of the types of email that you plan to send.+--+-- 'websiteURL', 'accountDetails_websiteURL' - The URL of your website. This information helps us better understand the+-- type of content that you plan to send.+newAccountDetails ::+  AccountDetails+newAccountDetails =+  AccountDetails'+    { additionalContactEmailAddresses =+        Prelude.Nothing,+      contactLanguage = Prelude.Nothing,+      mailType = Prelude.Nothing,+      reviewDetails = Prelude.Nothing,+      useCaseDescription = Prelude.Nothing,+      websiteURL = Prelude.Nothing+    }++-- | Additional email addresses where updates are sent about your account+-- review process.+accountDetails_additionalContactEmailAddresses :: Lens.Lens' AccountDetails (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))+accountDetails_additionalContactEmailAddresses = Lens.lens (\AccountDetails' {additionalContactEmailAddresses} -> additionalContactEmailAddresses) (\s@AccountDetails' {} a -> s {additionalContactEmailAddresses = a} :: AccountDetails) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced)++-- | The language you would prefer for the case. The contact language can be+-- one of @ENGLISH@ or @JAPANESE@.+accountDetails_contactLanguage :: Lens.Lens' AccountDetails (Prelude.Maybe ContactLanguage)+accountDetails_contactLanguage = Lens.lens (\AccountDetails' {contactLanguage} -> contactLanguage) (\s@AccountDetails' {} a -> s {contactLanguage = a} :: AccountDetails)++-- | The type of email your account is sending. The mail type can be one of+-- the following:+--+-- -   @MARKETING@ – Most of your sending traffic is to keep your customers+--     informed of your latest offering.+--+-- -   @TRANSACTIONAL@ – Most of your sending traffic is to communicate+--     during a transaction with a customer.+accountDetails_mailType :: Lens.Lens' AccountDetails (Prelude.Maybe MailType)+accountDetails_mailType = Lens.lens (\AccountDetails' {mailType} -> mailType) (\s@AccountDetails' {} a -> s {mailType = a} :: AccountDetails)++-- | Information about the review of the latest details you submitted.+accountDetails_reviewDetails :: Lens.Lens' AccountDetails (Prelude.Maybe ReviewDetails)+accountDetails_reviewDetails = Lens.lens (\AccountDetails' {reviewDetails} -> reviewDetails) (\s@AccountDetails' {} a -> s {reviewDetails = a} :: AccountDetails)++-- | A description of the types of email that you plan to send.+accountDetails_useCaseDescription :: Lens.Lens' AccountDetails (Prelude.Maybe Prelude.Text)+accountDetails_useCaseDescription = Lens.lens (\AccountDetails' {useCaseDescription} -> useCaseDescription) (\s@AccountDetails' {} a -> s {useCaseDescription = a} :: AccountDetails) Prelude.. Lens.mapping Data._Sensitive++-- | The URL of your website. This information helps us better understand the+-- type of content that you plan to send.+accountDetails_websiteURL :: Lens.Lens' AccountDetails (Prelude.Maybe Prelude.Text)+accountDetails_websiteURL = Lens.lens (\AccountDetails' {websiteURL} -> websiteURL) (\s@AccountDetails' {} a -> s {websiteURL = a} :: AccountDetails) Prelude.. Lens.mapping Data._Sensitive++instance Data.FromJSON AccountDetails where+  parseJSON =+    Data.withObject+      "AccountDetails"+      ( \x ->+          AccountDetails'+            Prelude.<$> (x Data..:? "AdditionalContactEmailAddresses")+            Prelude.<*> (x Data..:? "ContactLanguage")+            Prelude.<*> (x Data..:? "MailType")+            Prelude.<*> (x Data..:? "ReviewDetails")+            Prelude.<*> (x Data..:? "UseCaseDescription")+            Prelude.<*> (x Data..:? "WebsiteURL")+      )++instance Prelude.Hashable AccountDetails where+  hashWithSalt _salt AccountDetails' {..} =+    _salt+      `Prelude.hashWithSalt` additionalContactEmailAddresses+      `Prelude.hashWithSalt` contactLanguage+      `Prelude.hashWithSalt` mailType+      `Prelude.hashWithSalt` reviewDetails+      `Prelude.hashWithSalt` useCaseDescription+      `Prelude.hashWithSalt` websiteURL++instance Prelude.NFData AccountDetails where+  rnf AccountDetails' {..} =+    Prelude.rnf additionalContactEmailAddresses+      `Prelude.seq` Prelude.rnf contactLanguage+      `Prelude.seq` Prelude.rnf mailType+      `Prelude.seq` Prelude.rnf reviewDetails+      `Prelude.seq` Prelude.rnf useCaseDescription+      `Prelude.seq` Prelude.rnf websiteURL
+ gen/Amazonka/SESV2/Types/BatchGetMetricDataQuery.hs view
@@ -0,0 +1,285 @@+{-# 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.SESV2.Types.BatchGetMetricDataQuery+-- 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.SESV2.Types.BatchGetMetricDataQuery 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.SESV2.Types.Metric+import Amazonka.SESV2.Types.MetricDimensionName+import Amazonka.SESV2.Types.MetricNamespace++-- | Represents a single metric data query to include in a batch.+--+-- /See:/ 'newBatchGetMetricDataQuery' smart constructor.+data BatchGetMetricDataQuery = BatchGetMetricDataQuery'+  { -- | An object that contains mapping between @MetricDimensionName@ and+    -- @MetricDimensionValue@ to filter metrics by.+    dimensions :: Prelude.Maybe (Prelude.HashMap MetricDimensionName Prelude.Text),+    -- | The query identifier.+    id :: Prelude.Text,+    -- | The query namespace - e.g. @VDM@+    namespace :: MetricNamespace,+    -- | The queried metric. This can be one of the following:+    --+    -- -   @SEND@ – Emails sent eligible for tracking in the VDM dashboard.+    --     This excludes emails sent to the mailbox simulator and emails+    --     addressed to more than one recipient.+    --+    -- -   @COMPLAINT@ – Complaints received for your account. This excludes+    --     complaints from the mailbox simulator, those originating from your+    --     account-level suppression list (if enabled), and those for emails+    --     addressed to more than one recipient+    --+    -- -   @PERMANENT_BOUNCE@ – Permanent bounces - i.e. feedback received for+    --     emails sent to non-existent mailboxes. Excludes bounces from the+    --     mailbox simulator, those originating from your account-level+    --     suppression list (if enabled), and those for emails addressed to+    --     more than one recipient.+    --+    -- -   @TRANSIENT_BOUNCE@ – Transient bounces - i.e. feedback received for+    --     delivery failures excluding issues with non-existent mailboxes.+    --     Excludes bounces from the mailbox simulator, and those for emails+    --     addressed to more than one recipient.+    --+    -- -   @OPEN@ – Unique open events for emails including open trackers.+    --     Excludes opens for emails addressed to more than one recipient.+    --+    -- -   @CLICK@ – Unique click events for emails including wrapped links.+    --     Excludes clicks for emails addressed to more than one recipient.+    --+    -- -   @DELIVERY@ – Successful deliveries for email sending attempts.+    --     Excludes deliveries to the mailbox simulator and for emails+    --     addressed to more than one recipient.+    --+    -- -   @DELIVERY_OPEN@ – Successful deliveries for email sending attempts.+    --     Excludes deliveries to the mailbox simulator, for emails addressed+    --     to more than one recipient, and emails without open trackers.+    --+    -- -   @DELIVERY_CLICK@ – Successful deliveries for email sending attempts.+    --     Excludes deliveries to the mailbox simulator, for emails addressed+    --     to more than one recipient, and emails without click trackers.+    --+    -- -   @DELIVERY_COMPLAINT@ – Successful deliveries for email sending+    --     attempts. Excludes deliveries to the mailbox simulator, for emails+    --     addressed to more than one recipient, and emails addressed to+    --     recipients hosted by ISPs with which Amazon SES does not have a+    --     feedback loop agreement.+    metric :: Metric,+    -- | Represents the start date for the query interval.+    startDate :: Data.POSIX,+    -- | Represents the end date for the query interval.+    endDate :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BatchGetMetricDataQuery' 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:+--+-- 'dimensions', 'batchGetMetricDataQuery_dimensions' - An object that contains mapping between @MetricDimensionName@ and+-- @MetricDimensionValue@ to filter metrics by.+--+-- 'id', 'batchGetMetricDataQuery_id' - The query identifier.+--+-- 'namespace', 'batchGetMetricDataQuery_namespace' - The query namespace - e.g. @VDM@+--+-- 'metric', 'batchGetMetricDataQuery_metric' - The queried metric. This can be one of the following:+--+-- -   @SEND@ – Emails sent eligible for tracking in the VDM dashboard.+--     This excludes emails sent to the mailbox simulator and emails+--     addressed to more than one recipient.+--+-- -   @COMPLAINT@ – Complaints received for your account. This excludes+--     complaints from the mailbox simulator, those originating from your+--     account-level suppression list (if enabled), and those for emails+--     addressed to more than one recipient+--+-- -   @PERMANENT_BOUNCE@ – Permanent bounces - i.e. feedback received for+--     emails sent to non-existent mailboxes. Excludes bounces from the+--     mailbox simulator, those originating from your account-level+--     suppression list (if enabled), and those for emails addressed to+--     more than one recipient.+--+-- -   @TRANSIENT_BOUNCE@ – Transient bounces - i.e. feedback received for+--     delivery failures excluding issues with non-existent mailboxes.+--     Excludes bounces from the mailbox simulator, and those for emails+--     addressed to more than one recipient.+--+-- -   @OPEN@ – Unique open events for emails including open trackers.+--     Excludes opens for emails addressed to more than one recipient.+--+-- -   @CLICK@ – Unique click events for emails including wrapped links.+--     Excludes clicks for emails addressed to more than one recipient.+--+-- -   @DELIVERY@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator and for emails+--     addressed to more than one recipient.+--+-- -   @DELIVERY_OPEN@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator, for emails addressed+--     to more than one recipient, and emails without open trackers.+--+-- -   @DELIVERY_CLICK@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator, for emails addressed+--     to more than one recipient, and emails without click trackers.+--+-- -   @DELIVERY_COMPLAINT@ – Successful deliveries for email sending+--     attempts. Excludes deliveries to the mailbox simulator, for emails+--     addressed to more than one recipient, and emails addressed to+--     recipients hosted by ISPs with which Amazon SES does not have a+--     feedback loop agreement.+--+-- 'startDate', 'batchGetMetricDataQuery_startDate' - Represents the start date for the query interval.+--+-- 'endDate', 'batchGetMetricDataQuery_endDate' - Represents the end date for the query interval.+newBatchGetMetricDataQuery ::+  -- | 'id'+  Prelude.Text ->+  -- | 'namespace'+  MetricNamespace ->+  -- | 'metric'+  Metric ->+  -- | 'startDate'+  Prelude.UTCTime ->+  -- | 'endDate'+  Prelude.UTCTime ->+  BatchGetMetricDataQuery+newBatchGetMetricDataQuery+  pId_+  pNamespace_+  pMetric_+  pStartDate_+  pEndDate_ =+    BatchGetMetricDataQuery'+      { dimensions =+          Prelude.Nothing,+        id = pId_,+        namespace = pNamespace_,+        metric = pMetric_,+        startDate = Data._Time Lens.# pStartDate_,+        endDate = Data._Time Lens.# pEndDate_+      }++-- | An object that contains mapping between @MetricDimensionName@ and+-- @MetricDimensionValue@ to filter metrics by.+batchGetMetricDataQuery_dimensions :: Lens.Lens' BatchGetMetricDataQuery (Prelude.Maybe (Prelude.HashMap MetricDimensionName Prelude.Text))+batchGetMetricDataQuery_dimensions = Lens.lens (\BatchGetMetricDataQuery' {dimensions} -> dimensions) (\s@BatchGetMetricDataQuery' {} a -> s {dimensions = a} :: BatchGetMetricDataQuery) Prelude.. Lens.mapping Lens.coerced++-- | The query identifier.+batchGetMetricDataQuery_id :: Lens.Lens' BatchGetMetricDataQuery Prelude.Text+batchGetMetricDataQuery_id = Lens.lens (\BatchGetMetricDataQuery' {id} -> id) (\s@BatchGetMetricDataQuery' {} a -> s {id = a} :: BatchGetMetricDataQuery)++-- | The query namespace - e.g. @VDM@+batchGetMetricDataQuery_namespace :: Lens.Lens' BatchGetMetricDataQuery MetricNamespace+batchGetMetricDataQuery_namespace = Lens.lens (\BatchGetMetricDataQuery' {namespace} -> namespace) (\s@BatchGetMetricDataQuery' {} a -> s {namespace = a} :: BatchGetMetricDataQuery)++-- | The queried metric. This can be one of the following:+--+-- -   @SEND@ – Emails sent eligible for tracking in the VDM dashboard.+--     This excludes emails sent to the mailbox simulator and emails+--     addressed to more than one recipient.+--+-- -   @COMPLAINT@ – Complaints received for your account. This excludes+--     complaints from the mailbox simulator, those originating from your+--     account-level suppression list (if enabled), and those for emails+--     addressed to more than one recipient+--+-- -   @PERMANENT_BOUNCE@ – Permanent bounces - i.e. feedback received for+--     emails sent to non-existent mailboxes. Excludes bounces from the+--     mailbox simulator, those originating from your account-level+--     suppression list (if enabled), and those for emails addressed to+--     more than one recipient.+--+-- -   @TRANSIENT_BOUNCE@ – Transient bounces - i.e. feedback received for+--     delivery failures excluding issues with non-existent mailboxes.+--     Excludes bounces from the mailbox simulator, and those for emails+--     addressed to more than one recipient.+--+-- -   @OPEN@ – Unique open events for emails including open trackers.+--     Excludes opens for emails addressed to more than one recipient.+--+-- -   @CLICK@ – Unique click events for emails including wrapped links.+--     Excludes clicks for emails addressed to more than one recipient.+--+-- -   @DELIVERY@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator and for emails+--     addressed to more than one recipient.+--+-- -   @DELIVERY_OPEN@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator, for emails addressed+--     to more than one recipient, and emails without open trackers.+--+-- -   @DELIVERY_CLICK@ – Successful deliveries for email sending attempts.+--     Excludes deliveries to the mailbox simulator, for emails addressed+--     to more than one recipient, and emails without click trackers.+--+-- -   @DELIVERY_COMPLAINT@ – Successful deliveries for email sending+--     attempts. Excludes deliveries to the mailbox simulator, for emails+--     addressed to more than one recipient, and emails addressed to+--     recipients hosted by ISPs with which Amazon SES does not have a+--     feedback loop agreement.+batchGetMetricDataQuery_metric :: Lens.Lens' BatchGetMetricDataQuery Metric+batchGetMetricDataQuery_metric = Lens.lens (\BatchGetMetricDataQuery' {metric} -> metric) (\s@BatchGetMetricDataQuery' {} a -> s {metric = a} :: BatchGetMetricDataQuery)++-- | Represents the start date for the query interval.+batchGetMetricDataQuery_startDate :: Lens.Lens' BatchGetMetricDataQuery Prelude.UTCTime+batchGetMetricDataQuery_startDate = Lens.lens (\BatchGetMetricDataQuery' {startDate} -> startDate) (\s@BatchGetMetricDataQuery' {} a -> s {startDate = a} :: BatchGetMetricDataQuery) Prelude.. Data._Time++-- | Represents the end date for the query interval.+batchGetMetricDataQuery_endDate :: Lens.Lens' BatchGetMetricDataQuery Prelude.UTCTime+batchGetMetricDataQuery_endDate = Lens.lens (\BatchGetMetricDataQuery' {endDate} -> endDate) (\s@BatchGetMetricDataQuery' {} a -> s {endDate = a} :: BatchGetMetricDataQuery) Prelude.. Data._Time++instance Prelude.Hashable BatchGetMetricDataQuery where+  hashWithSalt _salt BatchGetMetricDataQuery' {..} =+    _salt+      `Prelude.hashWithSalt` dimensions+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` namespace+      `Prelude.hashWithSalt` metric+      `Prelude.hashWithSalt` startDate+      `Prelude.hashWithSalt` endDate++instance Prelude.NFData BatchGetMetricDataQuery where+  rnf BatchGetMetricDataQuery' {..} =+    Prelude.rnf dimensions+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf namespace+      `Prelude.seq` Prelude.rnf metric+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf endDate++instance Data.ToJSON BatchGetMetricDataQuery where+  toJSON BatchGetMetricDataQuery' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Dimensions" Data..=) Prelude.<$> dimensions,+            Prelude.Just ("Id" Data..= id),+            Prelude.Just ("Namespace" Data..= namespace),+            Prelude.Just ("Metric" Data..= metric),+            Prelude.Just ("StartDate" Data..= startDate),+            Prelude.Just ("EndDate" Data..= endDate)+          ]+      )
+ gen/Amazonka/SESV2/Types/BehaviorOnMxFailure.hs view
@@ -0,0 +1,80 @@+{-# 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.SESV2.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.SESV2.Types.BehaviorOnMxFailure+  ( BehaviorOnMxFailure+      ( ..,+        BehaviorOnMxFailure_REJECT_MESSAGE,+        BehaviorOnMxFailure_USE_DEFAULT_VALUE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The action to take if the required MX record can\'t be found when you+-- send an email. When you set this value to @UseDefaultValue@, the mail is+-- sent using /amazonses.com/ as the MAIL FROM domain. When you set this+-- value to @RejectMessage@, the Amazon SES API v2 returns a+-- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+-- email.+--+-- These behaviors are taken when the custom MAIL FROM domain configuration+-- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+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_REJECT_MESSAGE :: BehaviorOnMxFailure+pattern BehaviorOnMxFailure_REJECT_MESSAGE = BehaviorOnMxFailure' "REJECT_MESSAGE"++pattern BehaviorOnMxFailure_USE_DEFAULT_VALUE :: BehaviorOnMxFailure+pattern BehaviorOnMxFailure_USE_DEFAULT_VALUE = BehaviorOnMxFailure' "USE_DEFAULT_VALUE"++{-# COMPLETE+  BehaviorOnMxFailure_REJECT_MESSAGE,+  BehaviorOnMxFailure_USE_DEFAULT_VALUE,+  BehaviorOnMxFailure'+  #-}
+ gen/Amazonka/SESV2/Types/BlacklistEntry.hs view
@@ -0,0 +1,101 @@+{-# 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.SESV2.Types.BlacklistEntry+-- 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.SESV2.Types.BlacklistEntry 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++-- | An object that contains information about a blacklisting event that+-- impacts one of the dedicated IP addresses that is associated with your+-- account.+--+-- /See:/ 'newBlacklistEntry' smart constructor.+data BlacklistEntry = BlacklistEntry'+  { -- | Additional information about the blacklisting event, as provided by the+    -- blacklist maintainer.+    description :: Prelude.Maybe Prelude.Text,+    -- | The time when the blacklisting event occurred.+    listingTime :: Prelude.Maybe Data.POSIX,+    -- | The name of the blacklist that the IP address appears on.+    rblName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BlacklistEntry' 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:+--+-- 'description', 'blacklistEntry_description' - Additional information about the blacklisting event, as provided by the+-- blacklist maintainer.+--+-- 'listingTime', 'blacklistEntry_listingTime' - The time when the blacklisting event occurred.+--+-- 'rblName', 'blacklistEntry_rblName' - The name of the blacklist that the IP address appears on.+newBlacklistEntry ::+  BlacklistEntry+newBlacklistEntry =+  BlacklistEntry'+    { description = Prelude.Nothing,+      listingTime = Prelude.Nothing,+      rblName = Prelude.Nothing+    }++-- | Additional information about the blacklisting event, as provided by the+-- blacklist maintainer.+blacklistEntry_description :: Lens.Lens' BlacklistEntry (Prelude.Maybe Prelude.Text)+blacklistEntry_description = Lens.lens (\BlacklistEntry' {description} -> description) (\s@BlacklistEntry' {} a -> s {description = a} :: BlacklistEntry)++-- | The time when the blacklisting event occurred.+blacklistEntry_listingTime :: Lens.Lens' BlacklistEntry (Prelude.Maybe Prelude.UTCTime)+blacklistEntry_listingTime = Lens.lens (\BlacklistEntry' {listingTime} -> listingTime) (\s@BlacklistEntry' {} a -> s {listingTime = a} :: BlacklistEntry) Prelude.. Lens.mapping Data._Time++-- | The name of the blacklist that the IP address appears on.+blacklistEntry_rblName :: Lens.Lens' BlacklistEntry (Prelude.Maybe Prelude.Text)+blacklistEntry_rblName = Lens.lens (\BlacklistEntry' {rblName} -> rblName) (\s@BlacklistEntry' {} a -> s {rblName = a} :: BlacklistEntry)++instance Data.FromJSON BlacklistEntry where+  parseJSON =+    Data.withObject+      "BlacklistEntry"+      ( \x ->+          BlacklistEntry'+            Prelude.<$> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "ListingTime")+            Prelude.<*> (x Data..:? "RblName")+      )++instance Prelude.Hashable BlacklistEntry where+  hashWithSalt _salt BlacklistEntry' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` listingTime+      `Prelude.hashWithSalt` rblName++instance Prelude.NFData BlacklistEntry where+  rnf BlacklistEntry' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf listingTime+      `Prelude.seq` Prelude.rnf rblName
+ gen/Amazonka/SESV2/Types/Body.hs view
@@ -0,0 +1,95 @@+{-# 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.SESV2.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.SESV2.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.SESV2.Types.Content++-- | Represents the body of the email message.+--+-- /See:/ 'newBody' smart constructor.+data Body = Body'+  { -- | An object that represents the version of the message that is displayed+    -- in email clients that support HTML. HTML messages can include formatted+    -- text, hyperlinks, images, and more.+    html :: Prelude.Maybe Content,+    -- | An object that represents the version of the message that is displayed+    -- in email clients that don\'t support HTML, or clients where the+    -- recipient has disabled HTML rendering.+    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' - An object that represents the version of the message that is displayed+-- in email clients that support HTML. HTML messages can include formatted+-- text, hyperlinks, images, and more.+--+-- 'text', 'body_text' - An object that represents the version of the message that is displayed+-- in email clients that don\'t support HTML, or clients where the+-- recipient has disabled HTML rendering.+newBody ::+  Body+newBody =+  Body'+    { html = Prelude.Nothing,+      text = Prelude.Nothing+    }++-- | An object that represents the version of the message that is displayed+-- in email clients that support HTML. HTML messages can include formatted+-- text, hyperlinks, images, and more.+body_html :: Lens.Lens' Body (Prelude.Maybe Content)+body_html = Lens.lens (\Body' {html} -> html) (\s@Body' {} a -> s {html = a} :: Body)++-- | An object that represents the version of the message that is displayed+-- in email clients that don\'t support HTML, or clients where the+-- recipient has disabled HTML rendering.+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.ToJSON Body where+  toJSON Body' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Html" Data..=) Prelude.<$> html,+            ("Text" Data..=) Prelude.<$> text+          ]+      )
+ gen/Amazonka/SESV2/Types/BulkEmailContent.hs view
@@ -0,0 +1,68 @@+{-# 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.SESV2.Types.BulkEmailContent+-- 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.SESV2.Types.BulkEmailContent 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.SESV2.Types.Template++-- | An object that contains the body of the message. You can specify a+-- template message.+--+-- /See:/ 'newBulkEmailContent' smart constructor.+data BulkEmailContent = BulkEmailContent'+  { -- | The template to use for the bulk email message.+    template :: Prelude.Maybe Template+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BulkEmailContent' 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', 'bulkEmailContent_template' - The template to use for the bulk email message.+newBulkEmailContent ::+  BulkEmailContent+newBulkEmailContent =+  BulkEmailContent' {template = Prelude.Nothing}++-- | The template to use for the bulk email message.+bulkEmailContent_template :: Lens.Lens' BulkEmailContent (Prelude.Maybe Template)+bulkEmailContent_template = Lens.lens (\BulkEmailContent' {template} -> template) (\s@BulkEmailContent' {} a -> s {template = a} :: BulkEmailContent)++instance Prelude.Hashable BulkEmailContent where+  hashWithSalt _salt BulkEmailContent' {..} =+    _salt `Prelude.hashWithSalt` template++instance Prelude.NFData BulkEmailContent where+  rnf BulkEmailContent' {..} = Prelude.rnf template++instance Data.ToJSON BulkEmailContent where+  toJSON BulkEmailContent' {..} =+    Data.object+      ( Prelude.catMaybes+          [("Template" Data..=) Prelude.<$> template]+      )
+ gen/Amazonka/SESV2/Types/BulkEmailEntry.hs view
@@ -0,0 +1,140 @@+{-# 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.SESV2.Types.BulkEmailEntry+-- 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.SESV2.Types.BulkEmailEntry 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.SESV2.Types.Destination+import Amazonka.SESV2.Types.MessageTag+import Amazonka.SESV2.Types.ReplacementEmailContent++-- | /See:/ 'newBulkEmailEntry' smart constructor.+data BulkEmailEntry = BulkEmailEntry'+  { -- | The @ReplacementEmailContent@ associated with a @BulkEmailEntry@.+    replacementEmailContent :: Prelude.Maybe ReplacementEmailContent,+    -- | A list of tags, in the form of name\/value pairs, to apply to an email+    -- that you send using the @SendBulkTemplatedEmail@ operation. Tags+    -- correspond to characteristics of the email that you define, so that you+    -- can publish email sending events.+    replacementTags :: Prelude.Maybe [MessageTag],+    -- | 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>.+    destination :: Destination+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'BulkEmailEntry' 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:+--+-- 'replacementEmailContent', 'bulkEmailEntry_replacementEmailContent' - The @ReplacementEmailContent@ associated with a @BulkEmailEntry@.+--+-- 'replacementTags', 'bulkEmailEntry_replacementTags' - A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendBulkTemplatedEmail@ operation. Tags+-- correspond to characteristics of the email that you define, so that you+-- can publish email sending events.+--+-- 'destination', 'bulkEmailEntry_destination' - 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>.+newBulkEmailEntry ::+  -- | 'destination'+  Destination ->+  BulkEmailEntry+newBulkEmailEntry pDestination_ =+  BulkEmailEntry'+    { replacementEmailContent =+        Prelude.Nothing,+      replacementTags = Prelude.Nothing,+      destination = pDestination_+    }++-- | The @ReplacementEmailContent@ associated with a @BulkEmailEntry@.+bulkEmailEntry_replacementEmailContent :: Lens.Lens' BulkEmailEntry (Prelude.Maybe ReplacementEmailContent)+bulkEmailEntry_replacementEmailContent = Lens.lens (\BulkEmailEntry' {replacementEmailContent} -> replacementEmailContent) (\s@BulkEmailEntry' {} a -> s {replacementEmailContent = a} :: BulkEmailEntry)++-- | A list of tags, in the form of name\/value pairs, to apply to an email+-- that you send using the @SendBulkTemplatedEmail@ operation. Tags+-- correspond to characteristics of the email that you define, so that you+-- can publish email sending events.+bulkEmailEntry_replacementTags :: Lens.Lens' BulkEmailEntry (Prelude.Maybe [MessageTag])+bulkEmailEntry_replacementTags = Lens.lens (\BulkEmailEntry' {replacementTags} -> replacementTags) (\s@BulkEmailEntry' {} a -> s {replacementTags = a} :: BulkEmailEntry) Prelude.. Lens.mapping Lens.coerced++-- | 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>.+bulkEmailEntry_destination :: Lens.Lens' BulkEmailEntry Destination+bulkEmailEntry_destination = Lens.lens (\BulkEmailEntry' {destination} -> destination) (\s@BulkEmailEntry' {} a -> s {destination = a} :: BulkEmailEntry)++instance Prelude.Hashable BulkEmailEntry where+  hashWithSalt _salt BulkEmailEntry' {..} =+    _salt+      `Prelude.hashWithSalt` replacementEmailContent+      `Prelude.hashWithSalt` replacementTags+      `Prelude.hashWithSalt` destination++instance Prelude.NFData BulkEmailEntry where+  rnf BulkEmailEntry' {..} =+    Prelude.rnf replacementEmailContent+      `Prelude.seq` Prelude.rnf replacementTags+      `Prelude.seq` Prelude.rnf destination++instance Data.ToJSON BulkEmailEntry where+  toJSON BulkEmailEntry' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ReplacementEmailContent" Data..=)+              Prelude.<$> replacementEmailContent,+            ("ReplacementTags" Data..=)+              Prelude.<$> replacementTags,+            Prelude.Just ("Destination" Data..= destination)+          ]+      )
+ gen/Amazonka/SESV2/Types/BulkEmailEntryResult.hs view
@@ -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.SESV2.Types.BulkEmailEntryResult+-- 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.SESV2.Types.BulkEmailEntryResult 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.SESV2.Types.BulkEmailStatus++-- | The result of the @SendBulkEmail@ operation of each specified+-- @BulkEmailEntry@.+--+-- /See:/ 'newBulkEmailEntryResult' smart constructor.+data BulkEmailEntryResult = BulkEmailEntryResult'+  { -- | 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.+    --+    -- -   MESSAGE_REJECTED: The message was rejected because it contained a+    --     virus.+    --+    -- -   MAIL_FROM_DOMAIN_NOT_VERIFIED: The sender\'s email address or domain+    --     was not verified.+    --+    -- -   CONFIGURATION_SET_DOES_NOT_EXIST: The configuration set you+    --     specified does not exist.+    --+    -- -   TEMPLATE_DOES_NOT_EXIST: The template you specified does not exist.+    --+    -- -   ACCOUNT_SUSPENDED: Your account has been shut down because of issues+    --     related to your email sending practices.+    --+    -- -   ACCOUNT_THROTTLED: The number of emails you can send has been+    --     reduced because your account has exceeded its allocated sending+    --     limit.+    --+    -- -   ACCOUNT_DAILY_QUOTA_EXCEEDED: You have reached or exceeded the+    --     maximum number of emails you can send from your account in a 24-hour+    --     period.+    --+    -- -   INVALID_SENDING_POOL_NAME: The configuration set you specified+    --     refers to an IP pool that does not exist.+    --+    -- -   ACCOUNT_SENDING_PAUSED: Email sending for the Amazon SES account was+    --     disabled using the+    --     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateAccountSendingEnabled.html UpdateAccountSendingEnabled>+    --     operation.+    --+    -- -   CONFIGURATION_SET_SENDING_PAUSED: Email sending for this+    --     configuration set was disabled using the+    --     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateConfigurationSetSendingEnabled.html UpdateConfigurationSetSendingEnabled>+    --     operation.+    --+    -- -   INVALID_PARAMETER_VALUE: One or more of the parameters you specified+    --     when calling this operation was invalid. See the error message for+    --     additional information.+    --+    -- -   TRANSIENT_FAILURE: 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 'BulkEmailEntryResult' 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', 'bulkEmailEntryResult_error' - A description of an error that prevented a message being sent using the+-- @SendBulkTemplatedEmail@ operation.+--+-- 'messageId', 'bulkEmailEntryResult_messageId' - The unique message identifier returned from the @SendBulkTemplatedEmail@+-- operation.+--+-- 'status', 'bulkEmailEntryResult_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.+--+-- -   MESSAGE_REJECTED: The message was rejected because it contained a+--     virus.+--+-- -   MAIL_FROM_DOMAIN_NOT_VERIFIED: The sender\'s email address or domain+--     was not verified.+--+-- -   CONFIGURATION_SET_DOES_NOT_EXIST: The configuration set you+--     specified does not exist.+--+-- -   TEMPLATE_DOES_NOT_EXIST: The template you specified does not exist.+--+-- -   ACCOUNT_SUSPENDED: Your account has been shut down because of issues+--     related to your email sending practices.+--+-- -   ACCOUNT_THROTTLED: The number of emails you can send has been+--     reduced because your account has exceeded its allocated sending+--     limit.+--+-- -   ACCOUNT_DAILY_QUOTA_EXCEEDED: You have reached or exceeded the+--     maximum number of emails you can send from your account in a 24-hour+--     period.+--+-- -   INVALID_SENDING_POOL_NAME: The configuration set you specified+--     refers to an IP pool that does not exist.+--+-- -   ACCOUNT_SENDING_PAUSED: Email sending for the Amazon SES account was+--     disabled using the+--     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateAccountSendingEnabled.html UpdateAccountSendingEnabled>+--     operation.+--+-- -   CONFIGURATION_SET_SENDING_PAUSED: Email sending for this+--     configuration set was disabled using the+--     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateConfigurationSetSendingEnabled.html UpdateConfigurationSetSendingEnabled>+--     operation.+--+-- -   INVALID_PARAMETER_VALUE: One or more of the parameters you specified+--     when calling this operation was invalid. See the error message for+--     additional information.+--+-- -   TRANSIENT_FAILURE: 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.+newBulkEmailEntryResult ::+  BulkEmailEntryResult+newBulkEmailEntryResult =+  BulkEmailEntryResult'+    { error = Prelude.Nothing,+      messageId = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | A description of an error that prevented a message being sent using the+-- @SendBulkTemplatedEmail@ operation.+bulkEmailEntryResult_error :: Lens.Lens' BulkEmailEntryResult (Prelude.Maybe Prelude.Text)+bulkEmailEntryResult_error = Lens.lens (\BulkEmailEntryResult' {error} -> error) (\s@BulkEmailEntryResult' {} a -> s {error = a} :: BulkEmailEntryResult)++-- | The unique message identifier returned from the @SendBulkTemplatedEmail@+-- operation.+bulkEmailEntryResult_messageId :: Lens.Lens' BulkEmailEntryResult (Prelude.Maybe Prelude.Text)+bulkEmailEntryResult_messageId = Lens.lens (\BulkEmailEntryResult' {messageId} -> messageId) (\s@BulkEmailEntryResult' {} a -> s {messageId = a} :: BulkEmailEntryResult)++-- | 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.+--+-- -   MESSAGE_REJECTED: The message was rejected because it contained a+--     virus.+--+-- -   MAIL_FROM_DOMAIN_NOT_VERIFIED: The sender\'s email address or domain+--     was not verified.+--+-- -   CONFIGURATION_SET_DOES_NOT_EXIST: The configuration set you+--     specified does not exist.+--+-- -   TEMPLATE_DOES_NOT_EXIST: The template you specified does not exist.+--+-- -   ACCOUNT_SUSPENDED: Your account has been shut down because of issues+--     related to your email sending practices.+--+-- -   ACCOUNT_THROTTLED: The number of emails you can send has been+--     reduced because your account has exceeded its allocated sending+--     limit.+--+-- -   ACCOUNT_DAILY_QUOTA_EXCEEDED: You have reached or exceeded the+--     maximum number of emails you can send from your account in a 24-hour+--     period.+--+-- -   INVALID_SENDING_POOL_NAME: The configuration set you specified+--     refers to an IP pool that does not exist.+--+-- -   ACCOUNT_SENDING_PAUSED: Email sending for the Amazon SES account was+--     disabled using the+--     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateAccountSendingEnabled.html UpdateAccountSendingEnabled>+--     operation.+--+-- -   CONFIGURATION_SET_SENDING_PAUSED: Email sending for this+--     configuration set was disabled using the+--     <https://docs.aws.amazon.com/ses/latest/APIReference/API_UpdateConfigurationSetSendingEnabled.html UpdateConfigurationSetSendingEnabled>+--     operation.+--+-- -   INVALID_PARAMETER_VALUE: One or more of the parameters you specified+--     when calling this operation was invalid. See the error message for+--     additional information.+--+-- -   TRANSIENT_FAILURE: 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.+bulkEmailEntryResult_status :: Lens.Lens' BulkEmailEntryResult (Prelude.Maybe BulkEmailStatus)+bulkEmailEntryResult_status = Lens.lens (\BulkEmailEntryResult' {status} -> status) (\s@BulkEmailEntryResult' {} a -> s {status = a} :: BulkEmailEntryResult)++instance Data.FromJSON BulkEmailEntryResult where+  parseJSON =+    Data.withObject+      "BulkEmailEntryResult"+      ( \x ->+          BulkEmailEntryResult'+            Prelude.<$> (x Data..:? "Error")+            Prelude.<*> (x Data..:? "MessageId")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable BulkEmailEntryResult where+  hashWithSalt _salt BulkEmailEntryResult' {..} =+    _salt+      `Prelude.hashWithSalt` error+      `Prelude.hashWithSalt` messageId+      `Prelude.hashWithSalt` status++instance Prelude.NFData BulkEmailEntryResult where+  rnf BulkEmailEntryResult' {..} =+    Prelude.rnf error+      `Prelude.seq` Prelude.rnf messageId+      `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/SESV2/Types/BulkEmailStatus.hs view
@@ -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.SESV2.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.SESV2.Types.BulkEmailStatus+  ( BulkEmailStatus+      ( ..,+        BulkEmailStatus_ACCOUNT_DAILY_QUOTA_EXCEEDED,+        BulkEmailStatus_ACCOUNT_SENDING_PAUSED,+        BulkEmailStatus_ACCOUNT_SUSPENDED,+        BulkEmailStatus_ACCOUNT_THROTTLED,+        BulkEmailStatus_CONFIGURATION_SET_NOT_FOUND,+        BulkEmailStatus_CONFIGURATION_SET_SENDING_PAUSED,+        BulkEmailStatus_FAILED,+        BulkEmailStatus_INVALID_PARAMETER,+        BulkEmailStatus_INVALID_SENDING_POOL_NAME,+        BulkEmailStatus_MAIL_FROM_DOMAIN_NOT_VERIFIED,+        BulkEmailStatus_MESSAGE_REJECTED,+        BulkEmailStatus_SUCCESS,+        BulkEmailStatus_TEMPLATE_NOT_FOUND,+        BulkEmailStatus_TRANSIENT_FAILURE+      ),+  )+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_ACCOUNT_DAILY_QUOTA_EXCEEDED :: BulkEmailStatus+pattern BulkEmailStatus_ACCOUNT_DAILY_QUOTA_EXCEEDED = BulkEmailStatus' "ACCOUNT_DAILY_QUOTA_EXCEEDED"++pattern BulkEmailStatus_ACCOUNT_SENDING_PAUSED :: BulkEmailStatus+pattern BulkEmailStatus_ACCOUNT_SENDING_PAUSED = BulkEmailStatus' "ACCOUNT_SENDING_PAUSED"++pattern BulkEmailStatus_ACCOUNT_SUSPENDED :: BulkEmailStatus+pattern BulkEmailStatus_ACCOUNT_SUSPENDED = BulkEmailStatus' "ACCOUNT_SUSPENDED"++pattern BulkEmailStatus_ACCOUNT_THROTTLED :: BulkEmailStatus+pattern BulkEmailStatus_ACCOUNT_THROTTLED = BulkEmailStatus' "ACCOUNT_THROTTLED"++pattern BulkEmailStatus_CONFIGURATION_SET_NOT_FOUND :: BulkEmailStatus+pattern BulkEmailStatus_CONFIGURATION_SET_NOT_FOUND = BulkEmailStatus' "CONFIGURATION_SET_NOT_FOUND"++pattern BulkEmailStatus_CONFIGURATION_SET_SENDING_PAUSED :: BulkEmailStatus+pattern BulkEmailStatus_CONFIGURATION_SET_SENDING_PAUSED = BulkEmailStatus' "CONFIGURATION_SET_SENDING_PAUSED"++pattern BulkEmailStatus_FAILED :: BulkEmailStatus+pattern BulkEmailStatus_FAILED = BulkEmailStatus' "FAILED"++pattern BulkEmailStatus_INVALID_PARAMETER :: BulkEmailStatus+pattern BulkEmailStatus_INVALID_PARAMETER = BulkEmailStatus' "INVALID_PARAMETER"++pattern BulkEmailStatus_INVALID_SENDING_POOL_NAME :: BulkEmailStatus+pattern BulkEmailStatus_INVALID_SENDING_POOL_NAME = BulkEmailStatus' "INVALID_SENDING_POOL_NAME"++pattern BulkEmailStatus_MAIL_FROM_DOMAIN_NOT_VERIFIED :: BulkEmailStatus+pattern BulkEmailStatus_MAIL_FROM_DOMAIN_NOT_VERIFIED = BulkEmailStatus' "MAIL_FROM_DOMAIN_NOT_VERIFIED"++pattern BulkEmailStatus_MESSAGE_REJECTED :: BulkEmailStatus+pattern BulkEmailStatus_MESSAGE_REJECTED = BulkEmailStatus' "MESSAGE_REJECTED"++pattern BulkEmailStatus_SUCCESS :: BulkEmailStatus+pattern BulkEmailStatus_SUCCESS = BulkEmailStatus' "SUCCESS"++pattern BulkEmailStatus_TEMPLATE_NOT_FOUND :: BulkEmailStatus+pattern BulkEmailStatus_TEMPLATE_NOT_FOUND = BulkEmailStatus' "TEMPLATE_NOT_FOUND"++pattern BulkEmailStatus_TRANSIENT_FAILURE :: BulkEmailStatus+pattern BulkEmailStatus_TRANSIENT_FAILURE = BulkEmailStatus' "TRANSIENT_FAILURE"++{-# COMPLETE+  BulkEmailStatus_ACCOUNT_DAILY_QUOTA_EXCEEDED,+  BulkEmailStatus_ACCOUNT_SENDING_PAUSED,+  BulkEmailStatus_ACCOUNT_SUSPENDED,+  BulkEmailStatus_ACCOUNT_THROTTLED,+  BulkEmailStatus_CONFIGURATION_SET_NOT_FOUND,+  BulkEmailStatus_CONFIGURATION_SET_SENDING_PAUSED,+  BulkEmailStatus_FAILED,+  BulkEmailStatus_INVALID_PARAMETER,+  BulkEmailStatus_INVALID_SENDING_POOL_NAME,+  BulkEmailStatus_MAIL_FROM_DOMAIN_NOT_VERIFIED,+  BulkEmailStatus_MESSAGE_REJECTED,+  BulkEmailStatus_SUCCESS,+  BulkEmailStatus_TEMPLATE_NOT_FOUND,+  BulkEmailStatus_TRANSIENT_FAILURE,+  BulkEmailStatus'+  #-}
+ gen/Amazonka/SESV2/Types/CloudWatchDestination.hs view
@@ -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.SESV2.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.SESV2.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.SESV2.Types.CloudWatchDimensionConfiguration++-- | An object that defines an Amazon CloudWatch destination for email+-- events. You can use Amazon CloudWatch to monitor and gain insights on+-- your email sending metrics.+--+-- /See:/ 'newCloudWatchDestination' smart constructor.+data CloudWatchDestination = CloudWatchDestination'+  { -- | An array of objects that define the dimensions to use when you send+    -- email 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' - An array of objects that define the dimensions to use when you send+-- email events to Amazon CloudWatch.+newCloudWatchDestination ::+  CloudWatchDestination+newCloudWatchDestination =+  CloudWatchDestination'+    { dimensionConfigurations =+        Prelude.mempty+    }++-- | An array of objects that define the dimensions to use when you send+-- email 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.FromJSON CloudWatchDestination where+  parseJSON =+    Data.withObject+      "CloudWatchDestination"+      ( \x ->+          CloudWatchDestination'+            Prelude.<$> ( x+                            Data..:? "DimensionConfigurations"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable CloudWatchDestination where+  hashWithSalt _salt CloudWatchDestination' {..} =+    _salt+      `Prelude.hashWithSalt` dimensionConfigurations++instance Prelude.NFData CloudWatchDestination where+  rnf CloudWatchDestination' {..} =+    Prelude.rnf dimensionConfigurations++instance Data.ToJSON CloudWatchDestination where+  toJSON CloudWatchDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "DimensionConfigurations"+                  Data..= dimensionConfigurations+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/CloudWatchDimensionConfiguration.hs view
@@ -0,0 +1,192 @@+{-# 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.SESV2.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.SESV2.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.SESV2.Types.DimensionValueSource++-- | An object that defines the dimension configuration to use when you send+-- email events to Amazon CloudWatch.+--+-- /See:/ 'newCloudWatchDimensionConfiguration' smart constructor.+data CloudWatchDimensionConfiguration = CloudWatchDimensionConfiguration'+  { -- | The name of an Amazon CloudWatch dimension associated with an email+    -- sending metric. The name has to meet the following criteria:+    --+    -- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+    --     underscores (_), or dashes (-).+    --+    -- -   It can contain no more than 256 characters.+    dimensionName :: Prelude.Text,+    -- | The location where the Amazon SES API v2 finds the value of a dimension+    -- to publish to Amazon CloudWatch. To use the message tags that you+    -- specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the+    -- @SendEmail@ or @SendRawEmail@ API, choose @messageTag@. To use your own+    -- email headers, choose @emailHeader@. To use link tags, choose+    -- @linkTags@.+    dimensionValueSource :: DimensionValueSource,+    -- | The default value of the dimension that is published to Amazon+    -- CloudWatch if you don\'t provide the value of the dimension when you+    -- send an email. This value has to meet the following criteria:+    --+    -- -   Can only contain ASCII letters (a–z, A–Z), numbers (0–9),+    --     underscores (_), or dashes (-), at signs (\@), and periods (.).+    --+    -- -   It can contain no more 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 has to meet the following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more than 256 characters.+--+-- 'dimensionValueSource', 'cloudWatchDimensionConfiguration_dimensionValueSource' - The location where the Amazon SES API v2 finds the value of a dimension+-- to publish to Amazon CloudWatch. To use the message tags that you+-- specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the+-- @SendEmail@ or @SendRawEmail@ API, choose @messageTag@. To use your own+-- email headers, choose @emailHeader@. To use link tags, choose+-- @linkTags@.+--+-- 'defaultDimensionValue', 'cloudWatchDimensionConfiguration_defaultDimensionValue' - The default value of the dimension that is published to Amazon+-- CloudWatch if you don\'t provide the value of the dimension when you+-- send an email. This value has to meet the following criteria:+--+-- -   Can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-), at signs (\@), and periods (.).+--+-- -   It can contain no more 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 has to meet the following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more 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 location where the Amazon SES API v2 finds the value of a dimension+-- to publish to Amazon CloudWatch. To use the message tags that you+-- specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the+-- @SendEmail@ or @SendRawEmail@ API, choose @messageTag@. To use your own+-- email headers, choose @emailHeader@. To use link tags, choose+-- @linkTags@.+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 don\'t provide the value of the dimension when you+-- send an email. This value has to meet the following criteria:+--+-- -   Can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-), at signs (\@), and periods (.).+--+-- -   It can contain no more 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.FromJSON+    CloudWatchDimensionConfiguration+  where+  parseJSON =+    Data.withObject+      "CloudWatchDimensionConfiguration"+      ( \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.ToJSON CloudWatchDimensionConfiguration where+  toJSON CloudWatchDimensionConfiguration' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("DimensionName" Data..= dimensionName),+            Prelude.Just+              ( "DimensionValueSource"+                  Data..= dimensionValueSource+              ),+            Prelude.Just+              ( "DefaultDimensionValue"+                  Data..= defaultDimensionValue+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/Contact.hs view
@@ -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.SESV2.Types.Contact+-- 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.SESV2.Types.Contact 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.SESV2.Types.TopicPreference++-- | A contact is the end-user who is receiving the email.+--+-- /See:/ 'newContact' smart constructor.+data Contact = Contact'+  { -- | The contact\'s email address.+    emailAddress :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting the last time the contact\'s information was updated.+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The default topic preferences applied to the contact.+    topicDefaultPreferences :: Prelude.Maybe [TopicPreference],+    -- | The contact\'s preference for being opted-in to or opted-out of a topic.+    topicPreferences :: Prelude.Maybe [TopicPreference],+    -- | A boolean value status noting if the contact is unsubscribed from all+    -- contact list topics.+    unsubscribeAll :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Contact' 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', 'contact_emailAddress' - The contact\'s email address.+--+-- 'lastUpdatedTimestamp', 'contact_lastUpdatedTimestamp' - A timestamp noting the last time the contact\'s information was updated.+--+-- 'topicDefaultPreferences', 'contact_topicDefaultPreferences' - The default topic preferences applied to the contact.+--+-- 'topicPreferences', 'contact_topicPreferences' - The contact\'s preference for being opted-in to or opted-out of a topic.+--+-- 'unsubscribeAll', 'contact_unsubscribeAll' - A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+newContact ::+  Contact+newContact =+  Contact'+    { emailAddress = Prelude.Nothing,+      lastUpdatedTimestamp = Prelude.Nothing,+      topicDefaultPreferences = Prelude.Nothing,+      topicPreferences = Prelude.Nothing,+      unsubscribeAll = Prelude.Nothing+    }++-- | The contact\'s email address.+contact_emailAddress :: Lens.Lens' Contact (Prelude.Maybe Prelude.Text)+contact_emailAddress = Lens.lens (\Contact' {emailAddress} -> emailAddress) (\s@Contact' {} a -> s {emailAddress = a} :: Contact)++-- | A timestamp noting the last time the contact\'s information was updated.+contact_lastUpdatedTimestamp :: Lens.Lens' Contact (Prelude.Maybe Prelude.UTCTime)+contact_lastUpdatedTimestamp = Lens.lens (\Contact' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@Contact' {} a -> s {lastUpdatedTimestamp = a} :: Contact) Prelude.. Lens.mapping Data._Time++-- | The default topic preferences applied to the contact.+contact_topicDefaultPreferences :: Lens.Lens' Contact (Prelude.Maybe [TopicPreference])+contact_topicDefaultPreferences = Lens.lens (\Contact' {topicDefaultPreferences} -> topicDefaultPreferences) (\s@Contact' {} a -> s {topicDefaultPreferences = a} :: Contact) Prelude.. Lens.mapping Lens.coerced++-- | The contact\'s preference for being opted-in to or opted-out of a topic.+contact_topicPreferences :: Lens.Lens' Contact (Prelude.Maybe [TopicPreference])+contact_topicPreferences = Lens.lens (\Contact' {topicPreferences} -> topicPreferences) (\s@Contact' {} a -> s {topicPreferences = a} :: Contact) Prelude.. Lens.mapping Lens.coerced++-- | A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+contact_unsubscribeAll :: Lens.Lens' Contact (Prelude.Maybe Prelude.Bool)+contact_unsubscribeAll = Lens.lens (\Contact' {unsubscribeAll} -> unsubscribeAll) (\s@Contact' {} a -> s {unsubscribeAll = a} :: Contact)++instance Data.FromJSON Contact where+  parseJSON =+    Data.withObject+      "Contact"+      ( \x ->+          Contact'+            Prelude.<$> (x Data..:? "EmailAddress")+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")+            Prelude.<*> ( x+                            Data..:? "TopicDefaultPreferences"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> ( x+                            Data..:? "TopicPreferences"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "UnsubscribeAll")+      )++instance Prelude.Hashable Contact where+  hashWithSalt _salt Contact' {..} =+    _salt+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` lastUpdatedTimestamp+      `Prelude.hashWithSalt` topicDefaultPreferences+      `Prelude.hashWithSalt` topicPreferences+      `Prelude.hashWithSalt` unsubscribeAll++instance Prelude.NFData Contact where+  rnf Contact' {..} =+    Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp+      `Prelude.seq` Prelude.rnf topicDefaultPreferences+      `Prelude.seq` Prelude.rnf topicPreferences+      `Prelude.seq` Prelude.rnf unsubscribeAll
+ gen/Amazonka/SESV2/Types/ContactLanguage.hs view
@@ -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.SESV2.Types.ContactLanguage+-- 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.SESV2.Types.ContactLanguage+  ( ContactLanguage+      ( ..,+        ContactLanguage_EN,+        ContactLanguage_JA+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ContactLanguage = ContactLanguage'+  { fromContactLanguage ::+      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 ContactLanguage_EN :: ContactLanguage+pattern ContactLanguage_EN = ContactLanguage' "EN"++pattern ContactLanguage_JA :: ContactLanguage+pattern ContactLanguage_JA = ContactLanguage' "JA"++{-# COMPLETE+  ContactLanguage_EN,+  ContactLanguage_JA,+  ContactLanguage'+  #-}
+ gen/Amazonka/SESV2/Types/ContactList.hs view
@@ -0,0 +1,85 @@+{-# 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.SESV2.Types.ContactList+-- 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.SESV2.Types.ContactList 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 list that contains contacts that have subscribed to a particular topic+-- or topics.+--+-- /See:/ 'newContactList' smart constructor.+data ContactList = ContactList'+  { -- | The name of the contact list.+    contactListName :: Prelude.Maybe Prelude.Text,+    -- | A timestamp noting the last time the contact list was updated.+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ContactList' 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:+--+-- 'contactListName', 'contactList_contactListName' - The name of the contact list.+--+-- 'lastUpdatedTimestamp', 'contactList_lastUpdatedTimestamp' - A timestamp noting the last time the contact list was updated.+newContactList ::+  ContactList+newContactList =+  ContactList'+    { contactListName = Prelude.Nothing,+      lastUpdatedTimestamp = Prelude.Nothing+    }++-- | The name of the contact list.+contactList_contactListName :: Lens.Lens' ContactList (Prelude.Maybe Prelude.Text)+contactList_contactListName = Lens.lens (\ContactList' {contactListName} -> contactListName) (\s@ContactList' {} a -> s {contactListName = a} :: ContactList)++-- | A timestamp noting the last time the contact list was updated.+contactList_lastUpdatedTimestamp :: Lens.Lens' ContactList (Prelude.Maybe Prelude.UTCTime)+contactList_lastUpdatedTimestamp = Lens.lens (\ContactList' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@ContactList' {} a -> s {lastUpdatedTimestamp = a} :: ContactList) Prelude.. Lens.mapping Data._Time++instance Data.FromJSON ContactList where+  parseJSON =+    Data.withObject+      "ContactList"+      ( \x ->+          ContactList'+            Prelude.<$> (x Data..:? "ContactListName")+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")+      )++instance Prelude.Hashable ContactList where+  hashWithSalt _salt ContactList' {..} =+    _salt+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` lastUpdatedTimestamp++instance Prelude.NFData ContactList where+  rnf ContactList' {..} =+    Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp
+ gen/Amazonka/SESV2/Types/ContactListDestination.hs view
@@ -0,0 +1,123 @@+{-# 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.SESV2.Types.ContactListDestination+-- 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.SESV2.Types.ContactListDestination 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.SESV2.Types.ContactListImportAction++-- | An object that contains details about the action of a contact list.+--+-- /See:/ 'newContactListDestination' smart constructor.+data ContactListDestination = ContactListDestination'+  { -- | The name of the contact list.+    contactListName :: Prelude.Text,+    -- | >The type of action to perform on the addresses. The following are the+    -- possible values:+    --+    -- -   PUT: add the addresses to the contact list. If the record already+    --     exists, it will override it with the new value.+    --+    -- -   DELETE: remove the addresses from the contact list.+    contactListImportAction :: ContactListImportAction+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ContactListDestination' 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:+--+-- 'contactListName', 'contactListDestination_contactListName' - The name of the contact list.+--+-- 'contactListImportAction', 'contactListDestination_contactListImportAction' - >The type of action to perform on the addresses. The following are the+-- possible values:+--+-- -   PUT: add the addresses to the contact list. If the record already+--     exists, it will override it with the new value.+--+-- -   DELETE: remove the addresses from the contact list.+newContactListDestination ::+  -- | 'contactListName'+  Prelude.Text ->+  -- | 'contactListImportAction'+  ContactListImportAction ->+  ContactListDestination+newContactListDestination+  pContactListName_+  pContactListImportAction_ =+    ContactListDestination'+      { contactListName =+          pContactListName_,+        contactListImportAction = pContactListImportAction_+      }++-- | The name of the contact list.+contactListDestination_contactListName :: Lens.Lens' ContactListDestination Prelude.Text+contactListDestination_contactListName = Lens.lens (\ContactListDestination' {contactListName} -> contactListName) (\s@ContactListDestination' {} a -> s {contactListName = a} :: ContactListDestination)++-- | >The type of action to perform on the addresses. The following are the+-- possible values:+--+-- -   PUT: add the addresses to the contact list. If the record already+--     exists, it will override it with the new value.+--+-- -   DELETE: remove the addresses from the contact list.+contactListDestination_contactListImportAction :: Lens.Lens' ContactListDestination ContactListImportAction+contactListDestination_contactListImportAction = Lens.lens (\ContactListDestination' {contactListImportAction} -> contactListImportAction) (\s@ContactListDestination' {} a -> s {contactListImportAction = a} :: ContactListDestination)++instance Data.FromJSON ContactListDestination where+  parseJSON =+    Data.withObject+      "ContactListDestination"+      ( \x ->+          ContactListDestination'+            Prelude.<$> (x Data..: "ContactListName")+            Prelude.<*> (x Data..: "ContactListImportAction")+      )++instance Prelude.Hashable ContactListDestination where+  hashWithSalt _salt ContactListDestination' {..} =+    _salt+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` contactListImportAction++instance Prelude.NFData ContactListDestination where+  rnf ContactListDestination' {..} =+    Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf contactListImportAction++instance Data.ToJSON ContactListDestination where+  toJSON ContactListDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("ContactListName" Data..= contactListName),+            Prelude.Just+              ( "ContactListImportAction"+                  Data..= contactListImportAction+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/ContactListImportAction.hs view
@@ -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.SESV2.Types.ContactListImportAction+-- 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.SESV2.Types.ContactListImportAction+  ( ContactListImportAction+      ( ..,+        ContactListImportAction_DELETE,+        ContactListImportAction_PUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ContactListImportAction = ContactListImportAction'+  { fromContactListImportAction ::+      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 ContactListImportAction_DELETE :: ContactListImportAction+pattern ContactListImportAction_DELETE = ContactListImportAction' "DELETE"++pattern ContactListImportAction_PUT :: ContactListImportAction+pattern ContactListImportAction_PUT = ContactListImportAction' "PUT"++{-# COMPLETE+  ContactListImportAction_DELETE,+  ContactListImportAction_PUT,+  ContactListImportAction'+  #-}
+ gen/Amazonka/SESV2/Types/Content.hs view
@@ -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.SESV2.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.SESV2.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++-- | An object that represents the content of the email, and optionally a+-- character set specification.+--+-- /See:/ 'newContent' smart constructor.+data Content = Content'+  { -- | The character set for the content. Because of the constraints of the+    -- SMTP protocol, Amazon SES uses 7-bit ASCII by default. If the text+    -- includes characters outside of the ASCII range, you have to specify a+    -- character set. For example, you could specify @UTF-8@, @ISO-8859-1@, or+    -- @Shift_JIS@.+    charset :: Prelude.Maybe Prelude.Text,+    -- | The content of the message itself.+    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 for the content. Because of the constraints of the+-- SMTP protocol, Amazon SES uses 7-bit ASCII by default. If the text+-- includes characters outside of the ASCII range, you have to specify a+-- character set. For example, you could specify @UTF-8@, @ISO-8859-1@, or+-- @Shift_JIS@.+--+-- 'data'', 'content_data' - The content of the message itself.+newContent ::+  -- | 'data''+  Prelude.Text ->+  Content+newContent pData_ =+  Content' {charset = Prelude.Nothing, data' = pData_}++-- | The character set for the content. Because of the constraints of the+-- SMTP protocol, Amazon SES uses 7-bit ASCII by default. If the text+-- includes characters outside of the ASCII range, you have to specify a+-- character set. For example, you could specify @UTF-8@, @ISO-8859-1@, or+-- @Shift_JIS@.+content_charset :: Lens.Lens' Content (Prelude.Maybe Prelude.Text)+content_charset = Lens.lens (\Content' {charset} -> charset) (\s@Content' {} a -> s {charset = a} :: Content)++-- | The content of the message itself.+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.ToJSON Content where+  toJSON Content' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Charset" Data..=) Prelude.<$> charset,+            Prelude.Just ("Data" Data..= data')+          ]+      )
+ gen/Amazonka/SESV2/Types/CustomVerificationEmailTemplateMetadata.hs view
@@ -0,0 +1,139 @@+{-# 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.SESV2.Types.CustomVerificationEmailTemplateMetadata+-- 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.SESV2.Types.CustomVerificationEmailTemplateMetadata 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:/ 'newCustomVerificationEmailTemplateMetadata' smart constructor.+data CustomVerificationEmailTemplateMetadata = CustomVerificationEmailTemplateMetadata'+  { -- | 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 'CustomVerificationEmailTemplateMetadata' 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', 'customVerificationEmailTemplateMetadata_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his+-- or her address is not successfully verified.+--+-- 'fromEmailAddress', 'customVerificationEmailTemplateMetadata_fromEmailAddress' - The email address that the custom verification email is sent from.+--+-- 'successRedirectionURL', 'customVerificationEmailTemplateMetadata_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his+-- or her address is successfully verified.+--+-- 'templateName', 'customVerificationEmailTemplateMetadata_templateName' - The name of the custom verification email template.+--+-- 'templateSubject', 'customVerificationEmailTemplateMetadata_templateSubject' - The subject line of the custom verification email.+newCustomVerificationEmailTemplateMetadata ::+  CustomVerificationEmailTemplateMetadata+newCustomVerificationEmailTemplateMetadata =+  CustomVerificationEmailTemplateMetadata'+    { 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.+customVerificationEmailTemplateMetadata_failureRedirectionURL :: Lens.Lens' CustomVerificationEmailTemplateMetadata (Prelude.Maybe Prelude.Text)+customVerificationEmailTemplateMetadata_failureRedirectionURL = Lens.lens (\CustomVerificationEmailTemplateMetadata' {failureRedirectionURL} -> failureRedirectionURL) (\s@CustomVerificationEmailTemplateMetadata' {} a -> s {failureRedirectionURL = a} :: CustomVerificationEmailTemplateMetadata)++-- | The email address that the custom verification email is sent from.+customVerificationEmailTemplateMetadata_fromEmailAddress :: Lens.Lens' CustomVerificationEmailTemplateMetadata (Prelude.Maybe Prelude.Text)+customVerificationEmailTemplateMetadata_fromEmailAddress = Lens.lens (\CustomVerificationEmailTemplateMetadata' {fromEmailAddress} -> fromEmailAddress) (\s@CustomVerificationEmailTemplateMetadata' {} a -> s {fromEmailAddress = a} :: CustomVerificationEmailTemplateMetadata)++-- | The URL that the recipient of the verification email is sent to if his+-- or her address is successfully verified.+customVerificationEmailTemplateMetadata_successRedirectionURL :: Lens.Lens' CustomVerificationEmailTemplateMetadata (Prelude.Maybe Prelude.Text)+customVerificationEmailTemplateMetadata_successRedirectionURL = Lens.lens (\CustomVerificationEmailTemplateMetadata' {successRedirectionURL} -> successRedirectionURL) (\s@CustomVerificationEmailTemplateMetadata' {} a -> s {successRedirectionURL = a} :: CustomVerificationEmailTemplateMetadata)++-- | The name of the custom verification email template.+customVerificationEmailTemplateMetadata_templateName :: Lens.Lens' CustomVerificationEmailTemplateMetadata (Prelude.Maybe Prelude.Text)+customVerificationEmailTemplateMetadata_templateName = Lens.lens (\CustomVerificationEmailTemplateMetadata' {templateName} -> templateName) (\s@CustomVerificationEmailTemplateMetadata' {} a -> s {templateName = a} :: CustomVerificationEmailTemplateMetadata)++-- | The subject line of the custom verification email.+customVerificationEmailTemplateMetadata_templateSubject :: Lens.Lens' CustomVerificationEmailTemplateMetadata (Prelude.Maybe Prelude.Text)+customVerificationEmailTemplateMetadata_templateSubject = Lens.lens (\CustomVerificationEmailTemplateMetadata' {templateSubject} -> templateSubject) (\s@CustomVerificationEmailTemplateMetadata' {} a -> s {templateSubject = a} :: CustomVerificationEmailTemplateMetadata)++instance+  Data.FromJSON+    CustomVerificationEmailTemplateMetadata+  where+  parseJSON =+    Data.withObject+      "CustomVerificationEmailTemplateMetadata"+      ( \x ->+          CustomVerificationEmailTemplateMetadata'+            Prelude.<$> (x Data..:? "FailureRedirectionURL")+            Prelude.<*> (x Data..:? "FromEmailAddress")+            Prelude.<*> (x Data..:? "SuccessRedirectionURL")+            Prelude.<*> (x Data..:? "TemplateName")+            Prelude.<*> (x Data..:? "TemplateSubject")+      )++instance+  Prelude.Hashable+    CustomVerificationEmailTemplateMetadata+  where+  hashWithSalt+    _salt+    CustomVerificationEmailTemplateMetadata' {..} =+      _salt+        `Prelude.hashWithSalt` failureRedirectionURL+        `Prelude.hashWithSalt` fromEmailAddress+        `Prelude.hashWithSalt` successRedirectionURL+        `Prelude.hashWithSalt` templateName+        `Prelude.hashWithSalt` templateSubject++instance+  Prelude.NFData+    CustomVerificationEmailTemplateMetadata+  where+  rnf CustomVerificationEmailTemplateMetadata' {..} =+    Prelude.rnf failureRedirectionURL+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf successRedirectionURL+      `Prelude.seq` Prelude.rnf templateName+      `Prelude.seq` Prelude.rnf templateSubject
+ gen/Amazonka/SESV2/Types/DailyVolume.hs view
@@ -0,0 +1,108 @@+{-# 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.SESV2.Types.DailyVolume+-- 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.SESV2.Types.DailyVolume 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.SESV2.Types.DomainIspPlacement+import Amazonka.SESV2.Types.VolumeStatistics++-- | An object that contains information about the volume of email sent on+-- each day of the analysis period.+--+-- /See:/ 'newDailyVolume' smart constructor.+data DailyVolume = DailyVolume'+  { -- | An object that contains inbox placement metrics for a specified day in+    -- the analysis period, broken out by the recipient\'s email provider.+    domainIspPlacements :: Prelude.Maybe [DomainIspPlacement],+    -- | The date that the DailyVolume metrics apply to, in Unix time.+    startDate :: Prelude.Maybe Data.POSIX,+    -- | An object that contains inbox placement metrics for a specific day in+    -- the analysis period.+    volumeStatistics :: Prelude.Maybe VolumeStatistics+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DailyVolume' 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:+--+-- 'domainIspPlacements', 'dailyVolume_domainIspPlacements' - An object that contains inbox placement metrics for a specified day in+-- the analysis period, broken out by the recipient\'s email provider.+--+-- 'startDate', 'dailyVolume_startDate' - The date that the DailyVolume metrics apply to, in Unix time.+--+-- 'volumeStatistics', 'dailyVolume_volumeStatistics' - An object that contains inbox placement metrics for a specific day in+-- the analysis period.+newDailyVolume ::+  DailyVolume+newDailyVolume =+  DailyVolume'+    { domainIspPlacements = Prelude.Nothing,+      startDate = Prelude.Nothing,+      volumeStatistics = Prelude.Nothing+    }++-- | An object that contains inbox placement metrics for a specified day in+-- the analysis period, broken out by the recipient\'s email provider.+dailyVolume_domainIspPlacements :: Lens.Lens' DailyVolume (Prelude.Maybe [DomainIspPlacement])+dailyVolume_domainIspPlacements = Lens.lens (\DailyVolume' {domainIspPlacements} -> domainIspPlacements) (\s@DailyVolume' {} a -> s {domainIspPlacements = a} :: DailyVolume) Prelude.. Lens.mapping Lens.coerced++-- | The date that the DailyVolume metrics apply to, in Unix time.+dailyVolume_startDate :: Lens.Lens' DailyVolume (Prelude.Maybe Prelude.UTCTime)+dailyVolume_startDate = Lens.lens (\DailyVolume' {startDate} -> startDate) (\s@DailyVolume' {} a -> s {startDate = a} :: DailyVolume) Prelude.. Lens.mapping Data._Time++-- | An object that contains inbox placement metrics for a specific day in+-- the analysis period.+dailyVolume_volumeStatistics :: Lens.Lens' DailyVolume (Prelude.Maybe VolumeStatistics)+dailyVolume_volumeStatistics = Lens.lens (\DailyVolume' {volumeStatistics} -> volumeStatistics) (\s@DailyVolume' {} a -> s {volumeStatistics = a} :: DailyVolume)++instance Data.FromJSON DailyVolume where+  parseJSON =+    Data.withObject+      "DailyVolume"+      ( \x ->+          DailyVolume'+            Prelude.<$> ( x+                            Data..:? "DomainIspPlacements"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "StartDate")+            Prelude.<*> (x Data..:? "VolumeStatistics")+      )++instance Prelude.Hashable DailyVolume where+  hashWithSalt _salt DailyVolume' {..} =+    _salt+      `Prelude.hashWithSalt` domainIspPlacements+      `Prelude.hashWithSalt` startDate+      `Prelude.hashWithSalt` volumeStatistics++instance Prelude.NFData DailyVolume where+  rnf DailyVolume' {..} =+    Prelude.rnf domainIspPlacements+      `Prelude.seq` Prelude.rnf startDate+      `Prelude.seq` Prelude.rnf volumeStatistics
+ gen/Amazonka/SESV2/Types/DashboardAttributes.hs view
@@ -0,0 +1,101 @@+{-# 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.SESV2.Types.DashboardAttributes+-- 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.SESV2.Types.DashboardAttributes 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.SESV2.Types.FeatureStatus++-- | An object containing additional settings for your VDM configuration as+-- applicable to the Dashboard.+--+-- /See:/ 'newDashboardAttributes' smart constructor.+data DashboardAttributes = DashboardAttributes'+  { -- | Specifies the status of your VDM engagement metrics collection. Can be+    -- one of the following:+    --+    -- -   @ENABLED@ – Amazon SES enables engagement metrics for your account.+    --+    -- -   @DISABLED@ – Amazon SES disables engagement metrics for your+    --     account.+    engagementMetrics :: Prelude.Maybe FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DashboardAttributes' 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:+--+-- 'engagementMetrics', 'dashboardAttributes_engagementMetrics' - Specifies the status of your VDM engagement metrics collection. Can be+-- one of the following:+--+-- -   @ENABLED@ – Amazon SES enables engagement metrics for your account.+--+-- -   @DISABLED@ – Amazon SES disables engagement metrics for your+--     account.+newDashboardAttributes ::+  DashboardAttributes+newDashboardAttributes =+  DashboardAttributes'+    { engagementMetrics =+        Prelude.Nothing+    }++-- | Specifies the status of your VDM engagement metrics collection. Can be+-- one of the following:+--+-- -   @ENABLED@ – Amazon SES enables engagement metrics for your account.+--+-- -   @DISABLED@ – Amazon SES disables engagement metrics for your+--     account.+dashboardAttributes_engagementMetrics :: Lens.Lens' DashboardAttributes (Prelude.Maybe FeatureStatus)+dashboardAttributes_engagementMetrics = Lens.lens (\DashboardAttributes' {engagementMetrics} -> engagementMetrics) (\s@DashboardAttributes' {} a -> s {engagementMetrics = a} :: DashboardAttributes)++instance Data.FromJSON DashboardAttributes where+  parseJSON =+    Data.withObject+      "DashboardAttributes"+      ( \x ->+          DashboardAttributes'+            Prelude.<$> (x Data..:? "EngagementMetrics")+      )++instance Prelude.Hashable DashboardAttributes where+  hashWithSalt _salt DashboardAttributes' {..} =+    _salt `Prelude.hashWithSalt` engagementMetrics++instance Prelude.NFData DashboardAttributes where+  rnf DashboardAttributes' {..} =+    Prelude.rnf engagementMetrics++instance Data.ToJSON DashboardAttributes where+  toJSON DashboardAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EngagementMetrics" Data..=)+              Prelude.<$> engagementMetrics+          ]+      )
+ gen/Amazonka/SESV2/Types/DashboardOptions.hs view
@@ -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.SESV2.Types.DashboardOptions+-- 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.SESV2.Types.DashboardOptions 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.SESV2.Types.FeatureStatus++-- | An object containing additional settings for your VDM configuration as+-- applicable to the Dashboard.+--+-- /See:/ 'newDashboardOptions' smart constructor.+data DashboardOptions = DashboardOptions'+  { -- | Specifies the status of your VDM engagement metrics collection. Can be+    -- one of the following:+    --+    -- -   @ENABLED@ – Amazon SES enables engagement metrics for the+    --     configuration set.+    --+    -- -   @DISABLED@ – Amazon SES disables engagement metrics for the+    --     configuration set.+    engagementMetrics :: Prelude.Maybe FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DashboardOptions' 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:+--+-- 'engagementMetrics', 'dashboardOptions_engagementMetrics' - Specifies the status of your VDM engagement metrics collection. Can be+-- one of the following:+--+-- -   @ENABLED@ – Amazon SES enables engagement metrics for the+--     configuration set.+--+-- -   @DISABLED@ – Amazon SES disables engagement metrics for the+--     configuration set.+newDashboardOptions ::+  DashboardOptions+newDashboardOptions =+  DashboardOptions'+    { engagementMetrics =+        Prelude.Nothing+    }++-- | Specifies the status of your VDM engagement metrics collection. Can be+-- one of the following:+--+-- -   @ENABLED@ – Amazon SES enables engagement metrics for the+--     configuration set.+--+-- -   @DISABLED@ – Amazon SES disables engagement metrics for the+--     configuration set.+dashboardOptions_engagementMetrics :: Lens.Lens' DashboardOptions (Prelude.Maybe FeatureStatus)+dashboardOptions_engagementMetrics = Lens.lens (\DashboardOptions' {engagementMetrics} -> engagementMetrics) (\s@DashboardOptions' {} a -> s {engagementMetrics = a} :: DashboardOptions)++instance Data.FromJSON DashboardOptions where+  parseJSON =+    Data.withObject+      "DashboardOptions"+      ( \x ->+          DashboardOptions'+            Prelude.<$> (x Data..:? "EngagementMetrics")+      )++instance Prelude.Hashable DashboardOptions where+  hashWithSalt _salt DashboardOptions' {..} =+    _salt `Prelude.hashWithSalt` engagementMetrics++instance Prelude.NFData DashboardOptions where+  rnf DashboardOptions' {..} =+    Prelude.rnf engagementMetrics++instance Data.ToJSON DashboardOptions where+  toJSON DashboardOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("EngagementMetrics" Data..=)+              Prelude.<$> engagementMetrics+          ]+      )
+ gen/Amazonka/SESV2/Types/DataFormat.hs view
@@ -0,0 +1,72 @@+{-# 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.SESV2.Types.DataFormat+-- 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.SESV2.Types.DataFormat+  ( DataFormat+      ( ..,+        DataFormat_CSV,+        DataFormat_JSON+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The data format of the import job\'s data source.+newtype DataFormat = DataFormat'+  { fromDataFormat ::+      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 DataFormat_CSV :: DataFormat+pattern DataFormat_CSV = DataFormat' "CSV"++pattern DataFormat_JSON :: DataFormat+pattern DataFormat_JSON = DataFormat' "JSON"++{-# COMPLETE+  DataFormat_CSV,+  DataFormat_JSON,+  DataFormat'+  #-}
+ gen/Amazonka/SESV2/Types/DedicatedIp.hs view
@@ -0,0 +1,150 @@+{-# 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.SESV2.Types.DedicatedIp+-- 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.SESV2.Types.DedicatedIp 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.SESV2.Types.WarmupStatus++-- | Contains information about a dedicated IP address that is associated+-- with your Amazon SES account.+--+-- To learn more about requesting dedicated IP addresses, see+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/dedicated-ip-case.html Requesting and Relinquishing Dedicated IP Addresses>+-- in the /Amazon SES Developer Guide/.+--+-- /See:/ 'newDedicatedIp' smart constructor.+data DedicatedIp = DedicatedIp'+  { -- | The name of the dedicated IP pool that the IP address is associated+    -- with.+    poolName :: Prelude.Maybe Prelude.Text,+    -- | An IPv4 address.+    ip :: Prelude.Text,+    -- | The warm-up status of a dedicated IP address. The status can have one of+    -- the following values:+    --+    -- -   @IN_PROGRESS@ – The IP address isn\'t ready to use because the+    --     dedicated IP warm-up process is ongoing.+    --+    -- -   @DONE@ – The dedicated IP warm-up process is complete, and the IP+    --     address is ready to use.+    warmupStatus :: WarmupStatus,+    -- | Indicates how complete the dedicated IP warm-up process is. When this+    -- value equals 1, the address has completed the warm-up process and is+    -- ready for use.+    warmupPercentage :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DedicatedIp' 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:+--+-- 'poolName', 'dedicatedIp_poolName' - The name of the dedicated IP pool that the IP address is associated+-- with.+--+-- 'ip', 'dedicatedIp_ip' - An IPv4 address.+--+-- 'warmupStatus', 'dedicatedIp_warmupStatus' - The warm-up status of a dedicated IP address. The status can have one of+-- the following values:+--+-- -   @IN_PROGRESS@ – The IP address isn\'t ready to use because the+--     dedicated IP warm-up process is ongoing.+--+-- -   @DONE@ – The dedicated IP warm-up process is complete, and the IP+--     address is ready to use.+--+-- 'warmupPercentage', 'dedicatedIp_warmupPercentage' - Indicates how complete the dedicated IP warm-up process is. When this+-- value equals 1, the address has completed the warm-up process and is+-- ready for use.+newDedicatedIp ::+  -- | 'ip'+  Prelude.Text ->+  -- | 'warmupStatus'+  WarmupStatus ->+  -- | 'warmupPercentage'+  Prelude.Int ->+  DedicatedIp+newDedicatedIp pIp_ pWarmupStatus_ pWarmupPercentage_ =+  DedicatedIp'+    { poolName = Prelude.Nothing,+      ip = pIp_,+      warmupStatus = pWarmupStatus_,+      warmupPercentage = pWarmupPercentage_+    }++-- | The name of the dedicated IP pool that the IP address is associated+-- with.+dedicatedIp_poolName :: Lens.Lens' DedicatedIp (Prelude.Maybe Prelude.Text)+dedicatedIp_poolName = Lens.lens (\DedicatedIp' {poolName} -> poolName) (\s@DedicatedIp' {} a -> s {poolName = a} :: DedicatedIp)++-- | An IPv4 address.+dedicatedIp_ip :: Lens.Lens' DedicatedIp Prelude.Text+dedicatedIp_ip = Lens.lens (\DedicatedIp' {ip} -> ip) (\s@DedicatedIp' {} a -> s {ip = a} :: DedicatedIp)++-- | The warm-up status of a dedicated IP address. The status can have one of+-- the following values:+--+-- -   @IN_PROGRESS@ – The IP address isn\'t ready to use because the+--     dedicated IP warm-up process is ongoing.+--+-- -   @DONE@ – The dedicated IP warm-up process is complete, and the IP+--     address is ready to use.+dedicatedIp_warmupStatus :: Lens.Lens' DedicatedIp WarmupStatus+dedicatedIp_warmupStatus = Lens.lens (\DedicatedIp' {warmupStatus} -> warmupStatus) (\s@DedicatedIp' {} a -> s {warmupStatus = a} :: DedicatedIp)++-- | Indicates how complete the dedicated IP warm-up process is. When this+-- value equals 1, the address has completed the warm-up process and is+-- ready for use.+dedicatedIp_warmupPercentage :: Lens.Lens' DedicatedIp Prelude.Int+dedicatedIp_warmupPercentage = Lens.lens (\DedicatedIp' {warmupPercentage} -> warmupPercentage) (\s@DedicatedIp' {} a -> s {warmupPercentage = a} :: DedicatedIp)++instance Data.FromJSON DedicatedIp where+  parseJSON =+    Data.withObject+      "DedicatedIp"+      ( \x ->+          DedicatedIp'+            Prelude.<$> (x Data..:? "PoolName")+            Prelude.<*> (x Data..: "Ip")+            Prelude.<*> (x Data..: "WarmupStatus")+            Prelude.<*> (x Data..: "WarmupPercentage")+      )++instance Prelude.Hashable DedicatedIp where+  hashWithSalt _salt DedicatedIp' {..} =+    _salt+      `Prelude.hashWithSalt` poolName+      `Prelude.hashWithSalt` ip+      `Prelude.hashWithSalt` warmupStatus+      `Prelude.hashWithSalt` warmupPercentage++instance Prelude.NFData DedicatedIp where+  rnf DedicatedIp' {..} =+    Prelude.rnf poolName+      `Prelude.seq` Prelude.rnf ip+      `Prelude.seq` Prelude.rnf warmupStatus+      `Prelude.seq` Prelude.rnf warmupPercentage
+ gen/Amazonka/SESV2/Types/DedicatedIpPool.hs view
@@ -0,0 +1,107 @@+{-# 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.SESV2.Types.DedicatedIpPool+-- 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.SESV2.Types.DedicatedIpPool 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.SESV2.Types.ScalingMode++-- | Contains information about a dedicated IP pool.+--+-- /See:/ 'newDedicatedIpPool' smart constructor.+data DedicatedIpPool = DedicatedIpPool'+  { -- | The name of the dedicated IP pool.+    poolName :: Prelude.Text,+    -- | The type of the dedicated IP pool.+    --+    -- -   @STANDARD@ – A dedicated IP pool where the customer can control+    --     which IPs are part of the pool.+    --+    -- -   @MANAGED@ – A dedicated IP pool where the reputation and number of+    --     IPs is automatically managed by Amazon SES.+    scalingMode :: ScalingMode+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DedicatedIpPool' 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:+--+-- 'poolName', 'dedicatedIpPool_poolName' - The name of the dedicated IP pool.+--+-- 'scalingMode', 'dedicatedIpPool_scalingMode' - The type of the dedicated IP pool.+--+-- -   @STANDARD@ – A dedicated IP pool where the customer can control+--     which IPs are part of the pool.+--+-- -   @MANAGED@ – A dedicated IP pool where the reputation and number of+--     IPs is automatically managed by Amazon SES.+newDedicatedIpPool ::+  -- | 'poolName'+  Prelude.Text ->+  -- | 'scalingMode'+  ScalingMode ->+  DedicatedIpPool+newDedicatedIpPool pPoolName_ pScalingMode_ =+  DedicatedIpPool'+    { poolName = pPoolName_,+      scalingMode = pScalingMode_+    }++-- | The name of the dedicated IP pool.+dedicatedIpPool_poolName :: Lens.Lens' DedicatedIpPool Prelude.Text+dedicatedIpPool_poolName = Lens.lens (\DedicatedIpPool' {poolName} -> poolName) (\s@DedicatedIpPool' {} a -> s {poolName = a} :: DedicatedIpPool)++-- | The type of the dedicated IP pool.+--+-- -   @STANDARD@ – A dedicated IP pool where the customer can control+--     which IPs are part of the pool.+--+-- -   @MANAGED@ – A dedicated IP pool where the reputation and number of+--     IPs is automatically managed by Amazon SES.+dedicatedIpPool_scalingMode :: Lens.Lens' DedicatedIpPool ScalingMode+dedicatedIpPool_scalingMode = Lens.lens (\DedicatedIpPool' {scalingMode} -> scalingMode) (\s@DedicatedIpPool' {} a -> s {scalingMode = a} :: DedicatedIpPool)++instance Data.FromJSON DedicatedIpPool where+  parseJSON =+    Data.withObject+      "DedicatedIpPool"+      ( \x ->+          DedicatedIpPool'+            Prelude.<$> (x Data..: "PoolName")+            Prelude.<*> (x Data..: "ScalingMode")+      )++instance Prelude.Hashable DedicatedIpPool where+  hashWithSalt _salt DedicatedIpPool' {..} =+    _salt+      `Prelude.hashWithSalt` poolName+      `Prelude.hashWithSalt` scalingMode++instance Prelude.NFData DedicatedIpPool where+  rnf DedicatedIpPool' {..} =+    Prelude.rnf poolName+      `Prelude.seq` Prelude.rnf scalingMode
+ gen/Amazonka/SESV2/Types/DeliverabilityDashboardAccountStatus.hs view
@@ -0,0 +1,79 @@+{-# 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.SESV2.Types.DeliverabilityDashboardAccountStatus+-- 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.SESV2.Types.DeliverabilityDashboardAccountStatus+  ( DeliverabilityDashboardAccountStatus+      ( ..,+        DeliverabilityDashboardAccountStatus_ACTIVE,+        DeliverabilityDashboardAccountStatus_DISABLED,+        DeliverabilityDashboardAccountStatus_PENDING_EXPIRATION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The current status of your Deliverability dashboard subscription. If+-- this value is @PENDING_EXPIRATION@, your subscription is scheduled to+-- expire at the end of the current calendar month.+newtype DeliverabilityDashboardAccountStatus = DeliverabilityDashboardAccountStatus'+  { fromDeliverabilityDashboardAccountStatus ::+      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 DeliverabilityDashboardAccountStatus_ACTIVE :: DeliverabilityDashboardAccountStatus+pattern DeliverabilityDashboardAccountStatus_ACTIVE = DeliverabilityDashboardAccountStatus' "ACTIVE"++pattern DeliverabilityDashboardAccountStatus_DISABLED :: DeliverabilityDashboardAccountStatus+pattern DeliverabilityDashboardAccountStatus_DISABLED = DeliverabilityDashboardAccountStatus' "DISABLED"++pattern DeliverabilityDashboardAccountStatus_PENDING_EXPIRATION :: DeliverabilityDashboardAccountStatus+pattern DeliverabilityDashboardAccountStatus_PENDING_EXPIRATION = DeliverabilityDashboardAccountStatus' "PENDING_EXPIRATION"++{-# COMPLETE+  DeliverabilityDashboardAccountStatus_ACTIVE,+  DeliverabilityDashboardAccountStatus_DISABLED,+  DeliverabilityDashboardAccountStatus_PENDING_EXPIRATION,+  DeliverabilityDashboardAccountStatus'+  #-}
+ gen/Amazonka/SESV2/Types/DeliverabilityTestReport.hs view
@@ -0,0 +1,156 @@+{-# 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.SESV2.Types.DeliverabilityTestReport+-- 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.SESV2.Types.DeliverabilityTestReport 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.SESV2.Types.DeliverabilityTestStatus++-- | An object that contains metadata related to a predictive inbox placement+-- test.+--+-- /See:/ 'newDeliverabilityTestReport' smart constructor.+data DeliverabilityTestReport = DeliverabilityTestReport'+  { -- | The date and time when the predictive inbox placement test was created.+    createDate :: Prelude.Maybe Data.POSIX,+    -- | The status of the predictive inbox placement test. If the status is+    -- @IN_PROGRESS@, then the predictive inbox placement test is currently+    -- running. Predictive inbox placement tests are usually complete within 24+    -- hours of creating the test. If the status is @COMPLETE@, then the test+    -- is finished, and you can use the @GetDeliverabilityTestReport@ to view+    -- the results of the test.+    deliverabilityTestStatus :: Prelude.Maybe DeliverabilityTestStatus,+    -- | The sender address that you specified for the predictive inbox placement+    -- test.+    fromEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | A unique string that identifies the predictive inbox placement test.+    reportId :: Prelude.Maybe Prelude.Text,+    -- | A name that helps you identify a predictive inbox placement test report.+    reportName :: Prelude.Maybe Prelude.Text,+    -- | The subject line for an email that you submitted in a predictive inbox+    -- placement test.+    subject :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeliverabilityTestReport' 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:+--+-- 'createDate', 'deliverabilityTestReport_createDate' - The date and time when the predictive inbox placement test was created.+--+-- 'deliverabilityTestStatus', 'deliverabilityTestReport_deliverabilityTestStatus' - The status of the predictive inbox placement test. If the status is+-- @IN_PROGRESS@, then the predictive inbox placement test is currently+-- running. Predictive inbox placement tests are usually complete within 24+-- hours of creating the test. If the status is @COMPLETE@, then the test+-- is finished, and you can use the @GetDeliverabilityTestReport@ to view+-- the results of the test.+--+-- 'fromEmailAddress', 'deliverabilityTestReport_fromEmailAddress' - The sender address that you specified for the predictive inbox placement+-- test.+--+-- 'reportId', 'deliverabilityTestReport_reportId' - A unique string that identifies the predictive inbox placement test.+--+-- 'reportName', 'deliverabilityTestReport_reportName' - A name that helps you identify a predictive inbox placement test report.+--+-- 'subject', 'deliverabilityTestReport_subject' - The subject line for an email that you submitted in a predictive inbox+-- placement test.+newDeliverabilityTestReport ::+  DeliverabilityTestReport+newDeliverabilityTestReport =+  DeliverabilityTestReport'+    { createDate =+        Prelude.Nothing,+      deliverabilityTestStatus = Prelude.Nothing,+      fromEmailAddress = Prelude.Nothing,+      reportId = Prelude.Nothing,+      reportName = Prelude.Nothing,+      subject = Prelude.Nothing+    }++-- | The date and time when the predictive inbox placement test was created.+deliverabilityTestReport_createDate :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe Prelude.UTCTime)+deliverabilityTestReport_createDate = Lens.lens (\DeliverabilityTestReport' {createDate} -> createDate) (\s@DeliverabilityTestReport' {} a -> s {createDate = a} :: DeliverabilityTestReport) Prelude.. Lens.mapping Data._Time++-- | The status of the predictive inbox placement test. If the status is+-- @IN_PROGRESS@, then the predictive inbox placement test is currently+-- running. Predictive inbox placement tests are usually complete within 24+-- hours of creating the test. If the status is @COMPLETE@, then the test+-- is finished, and you can use the @GetDeliverabilityTestReport@ to view+-- the results of the test.+deliverabilityTestReport_deliverabilityTestStatus :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe DeliverabilityTestStatus)+deliverabilityTestReport_deliverabilityTestStatus = Lens.lens (\DeliverabilityTestReport' {deliverabilityTestStatus} -> deliverabilityTestStatus) (\s@DeliverabilityTestReport' {} a -> s {deliverabilityTestStatus = a} :: DeliverabilityTestReport)++-- | The sender address that you specified for the predictive inbox placement+-- test.+deliverabilityTestReport_fromEmailAddress :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe Prelude.Text)+deliverabilityTestReport_fromEmailAddress = Lens.lens (\DeliverabilityTestReport' {fromEmailAddress} -> fromEmailAddress) (\s@DeliverabilityTestReport' {} a -> s {fromEmailAddress = a} :: DeliverabilityTestReport)++-- | A unique string that identifies the predictive inbox placement test.+deliverabilityTestReport_reportId :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe Prelude.Text)+deliverabilityTestReport_reportId = Lens.lens (\DeliverabilityTestReport' {reportId} -> reportId) (\s@DeliverabilityTestReport' {} a -> s {reportId = a} :: DeliverabilityTestReport)++-- | A name that helps you identify a predictive inbox placement test report.+deliverabilityTestReport_reportName :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe Prelude.Text)+deliverabilityTestReport_reportName = Lens.lens (\DeliverabilityTestReport' {reportName} -> reportName) (\s@DeliverabilityTestReport' {} a -> s {reportName = a} :: DeliverabilityTestReport)++-- | The subject line for an email that you submitted in a predictive inbox+-- placement test.+deliverabilityTestReport_subject :: Lens.Lens' DeliverabilityTestReport (Prelude.Maybe Prelude.Text)+deliverabilityTestReport_subject = Lens.lens (\DeliverabilityTestReport' {subject} -> subject) (\s@DeliverabilityTestReport' {} a -> s {subject = a} :: DeliverabilityTestReport)++instance Data.FromJSON DeliverabilityTestReport where+  parseJSON =+    Data.withObject+      "DeliverabilityTestReport"+      ( \x ->+          DeliverabilityTestReport'+            Prelude.<$> (x Data..:? "CreateDate")+            Prelude.<*> (x Data..:? "DeliverabilityTestStatus")+            Prelude.<*> (x Data..:? "FromEmailAddress")+            Prelude.<*> (x Data..:? "ReportId")+            Prelude.<*> (x Data..:? "ReportName")+            Prelude.<*> (x Data..:? "Subject")+      )++instance Prelude.Hashable DeliverabilityTestReport where+  hashWithSalt _salt DeliverabilityTestReport' {..} =+    _salt+      `Prelude.hashWithSalt` createDate+      `Prelude.hashWithSalt` deliverabilityTestStatus+      `Prelude.hashWithSalt` fromEmailAddress+      `Prelude.hashWithSalt` reportId+      `Prelude.hashWithSalt` reportName+      `Prelude.hashWithSalt` subject++instance Prelude.NFData DeliverabilityTestReport where+  rnf DeliverabilityTestReport' {..} =+    Prelude.rnf createDate+      `Prelude.seq` Prelude.rnf deliverabilityTestStatus+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf reportId+      `Prelude.seq` Prelude.rnf reportName+      `Prelude.seq` Prelude.rnf subject
+ gen/Amazonka/SESV2/Types/DeliverabilityTestStatus.hs view
@@ -0,0 +1,77 @@+{-# 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.SESV2.Types.DeliverabilityTestStatus+-- 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.SESV2.Types.DeliverabilityTestStatus+  ( DeliverabilityTestStatus+      ( ..,+        DeliverabilityTestStatus_COMPLETED,+        DeliverabilityTestStatus_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The status of a predictive inbox placement test. If the status is+-- @IN_PROGRESS@, then the predictive inbox placement test is currently+-- running. Predictive inbox placement tests are usually complete within 24+-- hours of creating the test. If the status is @COMPLETE@, then the test+-- is finished, and you can use the @GetDeliverabilityTestReport@ operation+-- to view the results of the test.+newtype DeliverabilityTestStatus = DeliverabilityTestStatus'+  { fromDeliverabilityTestStatus ::+      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 DeliverabilityTestStatus_COMPLETED :: DeliverabilityTestStatus+pattern DeliverabilityTestStatus_COMPLETED = DeliverabilityTestStatus' "COMPLETED"++pattern DeliverabilityTestStatus_IN_PROGRESS :: DeliverabilityTestStatus+pattern DeliverabilityTestStatus_IN_PROGRESS = DeliverabilityTestStatus' "IN_PROGRESS"++{-# COMPLETE+  DeliverabilityTestStatus_COMPLETED,+  DeliverabilityTestStatus_IN_PROGRESS,+  DeliverabilityTestStatus'+  #-}
+ gen/Amazonka/SESV2/Types/DeliveryOptions.hs view
@@ -0,0 +1,110 @@+{-# 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.SESV2.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.SESV2.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.SESV2.Types.TlsPolicy++-- | Used to associate a configuration set with a dedicated IP pool.+--+-- /See:/ 'newDeliveryOptions' smart constructor.+data DeliveryOptions = DeliveryOptions'+  { -- | The name of the dedicated IP pool to associate with the configuration+    -- set.+    sendingPoolName :: Prelude.Maybe Prelude.Text,+    -- | 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:+--+-- 'sendingPoolName', 'deliveryOptions_sendingPoolName' - The name of the dedicated IP pool to associate with the configuration+-- set.+--+-- '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'+    { sendingPoolName = Prelude.Nothing,+      tlsPolicy = Prelude.Nothing+    }++-- | The name of the dedicated IP pool to associate with the configuration+-- set.+deliveryOptions_sendingPoolName :: Lens.Lens' DeliveryOptions (Prelude.Maybe Prelude.Text)+deliveryOptions_sendingPoolName = Lens.lens (\DeliveryOptions' {sendingPoolName} -> sendingPoolName) (\s@DeliveryOptions' {} a -> s {sendingPoolName = a} :: 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.+deliveryOptions_tlsPolicy :: Lens.Lens' DeliveryOptions (Prelude.Maybe TlsPolicy)+deliveryOptions_tlsPolicy = Lens.lens (\DeliveryOptions' {tlsPolicy} -> tlsPolicy) (\s@DeliveryOptions' {} a -> s {tlsPolicy = a} :: DeliveryOptions)++instance Data.FromJSON DeliveryOptions where+  parseJSON =+    Data.withObject+      "DeliveryOptions"+      ( \x ->+          DeliveryOptions'+            Prelude.<$> (x Data..:? "SendingPoolName")+            Prelude.<*> (x Data..:? "TlsPolicy")+      )++instance Prelude.Hashable DeliveryOptions where+  hashWithSalt _salt DeliveryOptions' {..} =+    _salt+      `Prelude.hashWithSalt` sendingPoolName+      `Prelude.hashWithSalt` tlsPolicy++instance Prelude.NFData DeliveryOptions where+  rnf DeliveryOptions' {..} =+    Prelude.rnf sendingPoolName+      `Prelude.seq` Prelude.rnf tlsPolicy++instance Data.ToJSON DeliveryOptions where+  toJSON DeliveryOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SendingPoolName" Data..=)+              Prelude.<$> sendingPoolName,+            ("TlsPolicy" Data..=) Prelude.<$> tlsPolicy+          ]+      )
+ gen/Amazonka/SESV2/Types/Destination.hs view
@@ -0,0 +1,113 @@+{-# 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.SESV2.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.SESV2.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++-- | An object that describes the recipients for an email.+--+-- 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'+  { -- | An array that contains the email addresses of the \"BCC\" (blind carbon+    -- copy) recipients for the email.+    bccAddresses :: Prelude.Maybe [Prelude.Text],+    -- | An array that contains the email addresses of the \"CC\" (carbon copy)+    -- recipients for the email.+    ccAddresses :: Prelude.Maybe [Prelude.Text],+    -- | An array that contains the email addresses of the \"To\" recipients for+    -- the email.+    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' - An array that contains the email addresses of the \"BCC\" (blind carbon+-- copy) recipients for the email.+--+-- 'ccAddresses', 'destination_ccAddresses' - An array that contains the email addresses of the \"CC\" (carbon copy)+-- recipients for the email.+--+-- 'toAddresses', 'destination_toAddresses' - An array that contains the email addresses of the \"To\" recipients for+-- the email.+newDestination ::+  Destination+newDestination =+  Destination'+    { bccAddresses = Prelude.Nothing,+      ccAddresses = Prelude.Nothing,+      toAddresses = Prelude.Nothing+    }++-- | An array that contains the email addresses of the \"BCC\" (blind carbon+-- copy) recipients for the email.+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++-- | An array that contains the email addresses of the \"CC\" (carbon copy)+-- recipients for the email.+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++-- | An array that contains the email addresses of the \"To\" recipients for+-- the email.+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.ToJSON Destination where+  toJSON Destination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("BccAddresses" Data..=) Prelude.<$> bccAddresses,+            ("CcAddresses" Data..=) Prelude.<$> ccAddresses,+            ("ToAddresses" Data..=) Prelude.<$> toAddresses+          ]+      )
+ gen/Amazonka/SESV2/Types/DimensionValueSource.hs view
@@ -0,0 +1,82 @@+{-# 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.SESV2.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.SESV2.Types.DimensionValueSource+  ( DimensionValueSource+      ( ..,+        DimensionValueSource_EMAIL_HEADER,+        DimensionValueSource_LINK_TAG,+        DimensionValueSource_MESSAGE_TAG+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The location where the Amazon SES API v2 finds the value of a dimension+-- to publish to Amazon CloudWatch. To use the message tags that you+-- specify using an @X-SES-MESSAGE-TAGS@ header or a parameter to the+-- @SendEmail@ or @SendRawEmail@ API, choose @messageTag@. To use your own+-- email headers, choose @emailHeader@. To use link tags, choose+-- @linkTags@.+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_EMAIL_HEADER :: DimensionValueSource+pattern DimensionValueSource_EMAIL_HEADER = DimensionValueSource' "EMAIL_HEADER"++pattern DimensionValueSource_LINK_TAG :: DimensionValueSource+pattern DimensionValueSource_LINK_TAG = DimensionValueSource' "LINK_TAG"++pattern DimensionValueSource_MESSAGE_TAG :: DimensionValueSource+pattern DimensionValueSource_MESSAGE_TAG = DimensionValueSource' "MESSAGE_TAG"++{-# COMPLETE+  DimensionValueSource_EMAIL_HEADER,+  DimensionValueSource_LINK_TAG,+  DimensionValueSource_MESSAGE_TAG,+  DimensionValueSource'+  #-}
+ gen/Amazonka/SESV2/Types/DkimAttributes.hs view
@@ -0,0 +1,288 @@+{-# 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.SESV2.Types.DkimAttributes+-- 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.SESV2.Types.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 Amazonka.SESV2.Types.DkimSigningAttributesOrigin+import Amazonka.SESV2.Types.DkimSigningKeyLength+import Amazonka.SESV2.Types.DkimStatus++-- | An object that contains information about the DKIM authentication status+-- for an email identity.+--+-- Amazon SES determines the authentication status by searching for+-- specific records in the DNS configuration for the domain. If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to set up DKIM authentication, Amazon SES tries to find three unique+-- CNAME records in the DNS configuration for your domain. If you provided+-- a public key to perform DKIM authentication, Amazon SES tries to find a+-- TXT record that uses the selector that you specified. The value of the+-- TXT record must be a public key that\'s paired with the private key that+-- you specified in the process of creating the identity+--+-- /See:/ 'newDkimAttributes' smart constructor.+data DkimAttributes = DkimAttributes'+  { -- | [Easy DKIM] The key length of the DKIM key pair in use.+    currentSigningKeyLength :: Prelude.Maybe DkimSigningKeyLength,+    -- | [Easy DKIM] The last time a key pair was generated for this identity.+    lastKeyGenerationTimestamp :: Prelude.Maybe Data.POSIX,+    -- | [Easy DKIM] The key length of the future DKIM key pair to be generated.+    -- This can be changed at most once per day.+    nextSigningKeyLength :: Prelude.Maybe DkimSigningKeyLength,+    -- | A string that indicates how DKIM was configured for the identity. These+    -- are the possible values:+    --+    -- -   @AWS_SES@ – Indicates that DKIM was configured for the identity by+    --     using+    --     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+    --+    -- -   @EXTERNAL@ – Indicates that DKIM was configured for the identity by+    --     using Bring Your Own DKIM (BYODKIM).+    signingAttributesOrigin :: Prelude.Maybe DkimSigningAttributesOrigin,+    -- | If the value is @true@, then the messages that you send from the+    -- identity are signed using DKIM. If the value is @false@, then the+    -- messages that you send from the identity aren\'t DKIM-signed.+    signingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | Describes whether or not Amazon SES has successfully located the DKIM+    -- records in the DNS records for the domain. The status can be one of the+    -- following:+    --+    -- -   @PENDING@ – The verification process was initiated, but Amazon SES+    --     hasn\'t yet detected the DKIM records in the DNS configuration for+    --     the domain.+    --+    -- -   @SUCCESS@ – The verification process completed successfully.+    --+    -- -   @FAILED@ – The verification process failed. This typically occurs+    --     when Amazon SES fails to find the DKIM records in the DNS+    --     configuration of the domain.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+    --     from determining the DKIM authentication status of the domain.+    --+    -- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+    --     for the domain.+    status :: Prelude.Maybe DkimStatus,+    -- | If you used+    -- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+    -- to configure DKIM authentication for the domain, then this object+    -- contains a set of unique strings that you use to create a set of CNAME+    -- records that you add to the DNS configuration for your domain. When+    -- Amazon SES detects these records in the DNS configuration for your+    -- domain, the DKIM authentication process is complete.+    --+    -- If you configured DKIM authentication for the domain by providing your+    -- own public-private key pair, then this object contains the selector for+    -- the public key.+    --+    -- Regardless of the DKIM authentication method you use, Amazon SES+    -- searches for the appropriate records in the DNS configuration of the+    -- domain for up to 72 hours.+    tokens :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DkimAttributes' 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:+--+-- 'currentSigningKeyLength', 'dkimAttributes_currentSigningKeyLength' - [Easy DKIM] The key length of the DKIM key pair in use.+--+-- 'lastKeyGenerationTimestamp', 'dkimAttributes_lastKeyGenerationTimestamp' - [Easy DKIM] The last time a key pair was generated for this identity.+--+-- 'nextSigningKeyLength', 'dkimAttributes_nextSigningKeyLength' - [Easy DKIM] The key length of the future DKIM key pair to be generated.+-- This can be changed at most once per day.+--+-- 'signingAttributesOrigin', 'dkimAttributes_signingAttributesOrigin' - A string that indicates how DKIM was configured for the identity. These+-- are the possible values:+--+-- -   @AWS_SES@ – Indicates that DKIM was configured for the identity by+--     using+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- -   @EXTERNAL@ – Indicates that DKIM was configured for the identity by+--     using Bring Your Own DKIM (BYODKIM).+--+-- 'signingEnabled', 'dkimAttributes_signingEnabled' - If the value is @true@, then the messages that you send from the+-- identity are signed using DKIM. If the value is @false@, then the+-- messages that you send from the identity aren\'t DKIM-signed.+--+-- 'status', 'dkimAttributes_status' - Describes whether or not Amazon SES has successfully located the DKIM+-- records in the DNS records for the domain. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet detected the DKIM records in the DNS configuration for+--     the domain.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed. This typically occurs+--     when Amazon SES fails to find the DKIM records in the DNS+--     configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the DKIM authentication status of the domain.+--+-- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+--     for the domain.+--+-- 'tokens', 'dkimAttributes_tokens' - If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to configure DKIM authentication for the domain, then this object+-- contains a set of unique strings that you use to create a set of CNAME+-- records that you add to the DNS configuration for your domain. When+-- Amazon SES detects these records in the DNS configuration for your+-- domain, the DKIM authentication process is complete.+--+-- If you configured DKIM authentication for the domain by providing your+-- own public-private key pair, then this object contains the selector for+-- the public key.+--+-- Regardless of the DKIM authentication method you use, Amazon SES+-- searches for the appropriate records in the DNS configuration of the+-- domain for up to 72 hours.+newDkimAttributes ::+  DkimAttributes+newDkimAttributes =+  DkimAttributes'+    { currentSigningKeyLength =+        Prelude.Nothing,+      lastKeyGenerationTimestamp = Prelude.Nothing,+      nextSigningKeyLength = Prelude.Nothing,+      signingAttributesOrigin = Prelude.Nothing,+      signingEnabled = Prelude.Nothing,+      status = Prelude.Nothing,+      tokens = Prelude.Nothing+    }++-- | [Easy DKIM] The key length of the DKIM key pair in use.+dkimAttributes_currentSigningKeyLength :: Lens.Lens' DkimAttributes (Prelude.Maybe DkimSigningKeyLength)+dkimAttributes_currentSigningKeyLength = Lens.lens (\DkimAttributes' {currentSigningKeyLength} -> currentSigningKeyLength) (\s@DkimAttributes' {} a -> s {currentSigningKeyLength = a} :: DkimAttributes)++-- | [Easy DKIM] The last time a key pair was generated for this identity.+dkimAttributes_lastKeyGenerationTimestamp :: Lens.Lens' DkimAttributes (Prelude.Maybe Prelude.UTCTime)+dkimAttributes_lastKeyGenerationTimestamp = Lens.lens (\DkimAttributes' {lastKeyGenerationTimestamp} -> lastKeyGenerationTimestamp) (\s@DkimAttributes' {} a -> s {lastKeyGenerationTimestamp = a} :: DkimAttributes) Prelude.. Lens.mapping Data._Time++-- | [Easy DKIM] The key length of the future DKIM key pair to be generated.+-- This can be changed at most once per day.+dkimAttributes_nextSigningKeyLength :: Lens.Lens' DkimAttributes (Prelude.Maybe DkimSigningKeyLength)+dkimAttributes_nextSigningKeyLength = Lens.lens (\DkimAttributes' {nextSigningKeyLength} -> nextSigningKeyLength) (\s@DkimAttributes' {} a -> s {nextSigningKeyLength = a} :: DkimAttributes)++-- | A string that indicates how DKIM was configured for the identity. These+-- are the possible values:+--+-- -   @AWS_SES@ – Indicates that DKIM was configured for the identity by+--     using+--     <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>.+--+-- -   @EXTERNAL@ – Indicates that DKIM was configured for the identity by+--     using Bring Your Own DKIM (BYODKIM).+dkimAttributes_signingAttributesOrigin :: Lens.Lens' DkimAttributes (Prelude.Maybe DkimSigningAttributesOrigin)+dkimAttributes_signingAttributesOrigin = Lens.lens (\DkimAttributes' {signingAttributesOrigin} -> signingAttributesOrigin) (\s@DkimAttributes' {} a -> s {signingAttributesOrigin = a} :: DkimAttributes)++-- | If the value is @true@, then the messages that you send from the+-- identity are signed using DKIM. If the value is @false@, then the+-- messages that you send from the identity aren\'t DKIM-signed.+dkimAttributes_signingEnabled :: Lens.Lens' DkimAttributes (Prelude.Maybe Prelude.Bool)+dkimAttributes_signingEnabled = Lens.lens (\DkimAttributes' {signingEnabled} -> signingEnabled) (\s@DkimAttributes' {} a -> s {signingEnabled = a} :: DkimAttributes)++-- | Describes whether or not Amazon SES has successfully located the DKIM+-- records in the DNS records for the domain. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet detected the DKIM records in the DNS configuration for+--     the domain.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed. This typically occurs+--     when Amazon SES fails to find the DKIM records in the DNS+--     configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the DKIM authentication status of the domain.+--+-- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+--     for the domain.+dkimAttributes_status :: Lens.Lens' DkimAttributes (Prelude.Maybe DkimStatus)+dkimAttributes_status = Lens.lens (\DkimAttributes' {status} -> status) (\s@DkimAttributes' {} a -> s {status = a} :: DkimAttributes)++-- | If you used+-- <https://docs.aws.amazon.com/ses/latest/DeveloperGuide/easy-dkim.html Easy DKIM>+-- to configure DKIM authentication for the domain, then this object+-- contains a set of unique strings that you use to create a set of CNAME+-- records that you add to the DNS configuration for your domain. When+-- Amazon SES detects these records in the DNS configuration for your+-- domain, the DKIM authentication process is complete.+--+-- If you configured DKIM authentication for the domain by providing your+-- own public-private key pair, then this object contains the selector for+-- the public key.+--+-- Regardless of the DKIM authentication method you use, Amazon SES+-- searches for the appropriate records in the DNS configuration of the+-- domain for up to 72 hours.+dkimAttributes_tokens :: Lens.Lens' DkimAttributes (Prelude.Maybe [Prelude.Text])+dkimAttributes_tokens = Lens.lens (\DkimAttributes' {tokens} -> tokens) (\s@DkimAttributes' {} a -> s {tokens = a} :: DkimAttributes) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON DkimAttributes where+  parseJSON =+    Data.withObject+      "DkimAttributes"+      ( \x ->+          DkimAttributes'+            Prelude.<$> (x Data..:? "CurrentSigningKeyLength")+            Prelude.<*> (x Data..:? "LastKeyGenerationTimestamp")+            Prelude.<*> (x Data..:? "NextSigningKeyLength")+            Prelude.<*> (x Data..:? "SigningAttributesOrigin")+            Prelude.<*> (x Data..:? "SigningEnabled")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Tokens" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable DkimAttributes where+  hashWithSalt _salt DkimAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` currentSigningKeyLength+      `Prelude.hashWithSalt` lastKeyGenerationTimestamp+      `Prelude.hashWithSalt` nextSigningKeyLength+      `Prelude.hashWithSalt` signingAttributesOrigin+      `Prelude.hashWithSalt` signingEnabled+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tokens++instance Prelude.NFData DkimAttributes where+  rnf DkimAttributes' {..} =+    Prelude.rnf currentSigningKeyLength+      `Prelude.seq` Prelude.rnf lastKeyGenerationTimestamp+      `Prelude.seq` Prelude.rnf nextSigningKeyLength+      `Prelude.seq` Prelude.rnf signingAttributesOrigin+      `Prelude.seq` Prelude.rnf signingEnabled+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tokens
+ gen/Amazonka/SESV2/Types/DkimSigningAttributes.hs view
@@ -0,0 +1,119 @@+{-# 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.SESV2.Types.DkimSigningAttributes+-- 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.SESV2.Types.DkimSigningAttributes 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.SESV2.Types.DkimSigningKeyLength++-- | An object that contains configuration for Bring Your Own DKIM (BYODKIM),+-- or, for Easy DKIM+--+-- /See:/ 'newDkimSigningAttributes' smart constructor.+data DkimSigningAttributes = DkimSigningAttributes'+  { -- | [Bring Your Own DKIM] A private key that\'s used to generate a DKIM+    -- signature.+    --+    -- The private key must use 1024 or 2048-bit RSA encryption, and must be+    -- encoded using base64 encoding.+    domainSigningPrivateKey :: Prelude.Maybe (Data.Sensitive Prelude.Text),+    -- | [Bring Your Own DKIM] A string that\'s used to identify a public key in+    -- the DNS configuration for a domain.+    domainSigningSelector :: Prelude.Maybe Prelude.Text,+    -- | [Easy DKIM] The key length of the future DKIM key pair to be generated.+    -- This can be changed at most once per day.+    nextSigningKeyLength :: Prelude.Maybe DkimSigningKeyLength+  }+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DkimSigningAttributes' 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:+--+-- 'domainSigningPrivateKey', 'dkimSigningAttributes_domainSigningPrivateKey' - [Bring Your Own DKIM] A private key that\'s used to generate a DKIM+-- signature.+--+-- The private key must use 1024 or 2048-bit RSA encryption, and must be+-- encoded using base64 encoding.+--+-- 'domainSigningSelector', 'dkimSigningAttributes_domainSigningSelector' - [Bring Your Own DKIM] A string that\'s used to identify a public key in+-- the DNS configuration for a domain.+--+-- 'nextSigningKeyLength', 'dkimSigningAttributes_nextSigningKeyLength' - [Easy DKIM] The key length of the future DKIM key pair to be generated.+-- This can be changed at most once per day.+newDkimSigningAttributes ::+  DkimSigningAttributes+newDkimSigningAttributes =+  DkimSigningAttributes'+    { domainSigningPrivateKey =+        Prelude.Nothing,+      domainSigningSelector = Prelude.Nothing,+      nextSigningKeyLength = Prelude.Nothing+    }++-- | [Bring Your Own DKIM] A private key that\'s used to generate a DKIM+-- signature.+--+-- The private key must use 1024 or 2048-bit RSA encryption, and must be+-- encoded using base64 encoding.+dkimSigningAttributes_domainSigningPrivateKey :: Lens.Lens' DkimSigningAttributes (Prelude.Maybe Prelude.Text)+dkimSigningAttributes_domainSigningPrivateKey = Lens.lens (\DkimSigningAttributes' {domainSigningPrivateKey} -> domainSigningPrivateKey) (\s@DkimSigningAttributes' {} a -> s {domainSigningPrivateKey = a} :: DkimSigningAttributes) Prelude.. Lens.mapping Data._Sensitive++-- | [Bring Your Own DKIM] A string that\'s used to identify a public key in+-- the DNS configuration for a domain.+dkimSigningAttributes_domainSigningSelector :: Lens.Lens' DkimSigningAttributes (Prelude.Maybe Prelude.Text)+dkimSigningAttributes_domainSigningSelector = Lens.lens (\DkimSigningAttributes' {domainSigningSelector} -> domainSigningSelector) (\s@DkimSigningAttributes' {} a -> s {domainSigningSelector = a} :: DkimSigningAttributes)++-- | [Easy DKIM] The key length of the future DKIM key pair to be generated.+-- This can be changed at most once per day.+dkimSigningAttributes_nextSigningKeyLength :: Lens.Lens' DkimSigningAttributes (Prelude.Maybe DkimSigningKeyLength)+dkimSigningAttributes_nextSigningKeyLength = Lens.lens (\DkimSigningAttributes' {nextSigningKeyLength} -> nextSigningKeyLength) (\s@DkimSigningAttributes' {} a -> s {nextSigningKeyLength = a} :: DkimSigningAttributes)++instance Prelude.Hashable DkimSigningAttributes where+  hashWithSalt _salt DkimSigningAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` domainSigningPrivateKey+      `Prelude.hashWithSalt` domainSigningSelector+      `Prelude.hashWithSalt` nextSigningKeyLength++instance Prelude.NFData DkimSigningAttributes where+  rnf DkimSigningAttributes' {..} =+    Prelude.rnf domainSigningPrivateKey+      `Prelude.seq` Prelude.rnf domainSigningSelector+      `Prelude.seq` Prelude.rnf nextSigningKeyLength++instance Data.ToJSON DkimSigningAttributes where+  toJSON DkimSigningAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DomainSigningPrivateKey" Data..=)+              Prelude.<$> domainSigningPrivateKey,+            ("DomainSigningSelector" Data..=)+              Prelude.<$> domainSigningSelector,+            ("NextSigningKeyLength" Data..=)+              Prelude.<$> nextSigningKeyLength+          ]+      )
+ gen/Amazonka/SESV2/Types/DkimSigningAttributesOrigin.hs view
@@ -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.SESV2.Types.DkimSigningAttributesOrigin+-- 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.SESV2.Types.DkimSigningAttributesOrigin+  ( DkimSigningAttributesOrigin+      ( ..,+        DkimSigningAttributesOrigin_AWS_SES,+        DkimSigningAttributesOrigin_EXTERNAL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DkimSigningAttributesOrigin = DkimSigningAttributesOrigin'+  { fromDkimSigningAttributesOrigin ::+      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 DkimSigningAttributesOrigin_AWS_SES :: DkimSigningAttributesOrigin+pattern DkimSigningAttributesOrigin_AWS_SES = DkimSigningAttributesOrigin' "AWS_SES"++pattern DkimSigningAttributesOrigin_EXTERNAL :: DkimSigningAttributesOrigin+pattern DkimSigningAttributesOrigin_EXTERNAL = DkimSigningAttributesOrigin' "EXTERNAL"++{-# COMPLETE+  DkimSigningAttributesOrigin_AWS_SES,+  DkimSigningAttributesOrigin_EXTERNAL,+  DkimSigningAttributesOrigin'+  #-}
+ gen/Amazonka/SESV2/Types/DkimSigningKeyLength.hs view
@@ -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.SESV2.Types.DkimSigningKeyLength+-- 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.SESV2.Types.DkimSigningKeyLength+  ( DkimSigningKeyLength+      ( ..,+        DkimSigningKeyLength_RSA_1024_BIT,+        DkimSigningKeyLength_RSA_2048_BIT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype DkimSigningKeyLength = DkimSigningKeyLength'+  { fromDkimSigningKeyLength ::+      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 DkimSigningKeyLength_RSA_1024_BIT :: DkimSigningKeyLength+pattern DkimSigningKeyLength_RSA_1024_BIT = DkimSigningKeyLength' "RSA_1024_BIT"++pattern DkimSigningKeyLength_RSA_2048_BIT :: DkimSigningKeyLength+pattern DkimSigningKeyLength_RSA_2048_BIT = DkimSigningKeyLength' "RSA_2048_BIT"++{-# COMPLETE+  DkimSigningKeyLength_RSA_1024_BIT,+  DkimSigningKeyLength_RSA_2048_BIT,+  DkimSigningKeyLength'+  #-}
+ gen/Amazonka/SESV2/Types/DkimStatus.hs view
@@ -0,0 +1,104 @@+{-# 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.SESV2.Types.DkimStatus+-- 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.SESV2.Types.DkimStatus+  ( DkimStatus+      ( ..,+        DkimStatus_FAILED,+        DkimStatus_NOT_STARTED,+        DkimStatus_PENDING,+        DkimStatus_SUCCESS,+        DkimStatus_TEMPORARY_FAILURE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The DKIM authentication status of the identity. The status can be one of+-- the following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet detected the DKIM records in the DNS configuration for+--     the domain.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed. This typically occurs+--     when Amazon SES fails to find the DKIM records in the DNS+--     configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the DKIM authentication status of the domain.+--+-- -   @NOT_STARTED@ – The DKIM verification process hasn\'t been initiated+--     for the domain.+newtype DkimStatus = DkimStatus'+  { fromDkimStatus ::+      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 DkimStatus_FAILED :: DkimStatus+pattern DkimStatus_FAILED = DkimStatus' "FAILED"++pattern DkimStatus_NOT_STARTED :: DkimStatus+pattern DkimStatus_NOT_STARTED = DkimStatus' "NOT_STARTED"++pattern DkimStatus_PENDING :: DkimStatus+pattern DkimStatus_PENDING = DkimStatus' "PENDING"++pattern DkimStatus_SUCCESS :: DkimStatus+pattern DkimStatus_SUCCESS = DkimStatus' "SUCCESS"++pattern DkimStatus_TEMPORARY_FAILURE :: DkimStatus+pattern DkimStatus_TEMPORARY_FAILURE = DkimStatus' "TEMPORARY_FAILURE"++{-# COMPLETE+  DkimStatus_FAILED,+  DkimStatus_NOT_STARTED,+  DkimStatus_PENDING,+  DkimStatus_SUCCESS,+  DkimStatus_TEMPORARY_FAILURE,+  DkimStatus'+  #-}
+ gen/Amazonka/SESV2/Types/DomainDeliverabilityCampaign.hs view
@@ -0,0 +1,280 @@+{-# 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.SESV2.Types.DomainDeliverabilityCampaign+-- 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.SESV2.Types.DomainDeliverabilityCampaign 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++-- | An object that contains the deliverability data for a specific campaign.+-- This data is available for a campaign only if the campaign sent email by+-- using a domain that the Deliverability dashboard is enabled for+-- (@PutDeliverabilityDashboardOption@ operation).+--+-- /See:/ 'newDomainDeliverabilityCampaign' smart constructor.+data DomainDeliverabilityCampaign = DomainDeliverabilityCampaign'+  { -- | The unique identifier for the campaign. The Deliverability dashboard+    -- automatically generates and assigns this identifier to a campaign.+    campaignId :: Prelude.Maybe Prelude.Text,+    -- | The percentage of email messages that were deleted by recipients,+    -- without being opened first. Due to technical limitations, this value+    -- only includes recipients who opened the message by using an email client+    -- that supports images.+    deleteRate :: Prelude.Maybe Prelude.Double,+    -- | The major email providers who handled the email message.+    esps :: Prelude.Maybe [Prelude.Text],+    -- | The first time when the email message was delivered to any recipient\'s+    -- inbox. This value can help you determine how long it took for a campaign+    -- to deliver an email message.+    firstSeenDateTime :: Prelude.Maybe Data.POSIX,+    -- | The verified email address that the email message was sent from.+    fromAddress :: Prelude.Maybe Prelude.Text,+    -- | The URL of an image that contains a snapshot of the email message that+    -- was sent.+    imageUrl :: Prelude.Maybe Prelude.Text,+    -- | The number of email messages that were delivered to recipients’ inboxes.+    inboxCount :: Prelude.Maybe Prelude.Integer,+    -- | The last time when the email message was delivered to any recipient\'s+    -- inbox. This value can help you determine how long it took for a campaign+    -- to deliver an email message.+    lastSeenDateTime :: Prelude.Maybe Data.POSIX,+    -- | The projected number of recipients that the email message was sent to.+    projectedVolume :: Prelude.Maybe Prelude.Integer,+    -- | The percentage of email messages that were opened and then deleted by+    -- recipients. Due to technical limitations, this value only includes+    -- recipients who opened the message by using an email client that supports+    -- images.+    readDeleteRate :: Prelude.Maybe Prelude.Double,+    -- | The percentage of email messages that were opened by recipients. Due to+    -- technical limitations, this value only includes recipients who opened+    -- the message by using an email client that supports images.+    readRate :: Prelude.Maybe Prelude.Double,+    -- | The IP addresses that were used to send the email message.+    sendingIps :: Prelude.Maybe [Prelude.Text],+    -- | The number of email messages that were delivered to recipients\' spam or+    -- junk mail folders.+    spamCount :: Prelude.Maybe Prelude.Integer,+    -- | The subject line, or title, of the email message.+    subject :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DomainDeliverabilityCampaign' 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:+--+-- 'campaignId', 'domainDeliverabilityCampaign_campaignId' - The unique identifier for the campaign. The Deliverability dashboard+-- automatically generates and assigns this identifier to a campaign.+--+-- 'deleteRate', 'domainDeliverabilityCampaign_deleteRate' - The percentage of email messages that were deleted by recipients,+-- without being opened first. Due to technical limitations, this value+-- only includes recipients who opened the message by using an email client+-- that supports images.+--+-- 'esps', 'domainDeliverabilityCampaign_esps' - The major email providers who handled the email message.+--+-- 'firstSeenDateTime', 'domainDeliverabilityCampaign_firstSeenDateTime' - The first time when the email message was delivered to any recipient\'s+-- inbox. This value can help you determine how long it took for a campaign+-- to deliver an email message.+--+-- 'fromAddress', 'domainDeliverabilityCampaign_fromAddress' - The verified email address that the email message was sent from.+--+-- 'imageUrl', 'domainDeliverabilityCampaign_imageUrl' - The URL of an image that contains a snapshot of the email message that+-- was sent.+--+-- 'inboxCount', 'domainDeliverabilityCampaign_inboxCount' - The number of email messages that were delivered to recipients’ inboxes.+--+-- 'lastSeenDateTime', 'domainDeliverabilityCampaign_lastSeenDateTime' - The last time when the email message was delivered to any recipient\'s+-- inbox. This value can help you determine how long it took for a campaign+-- to deliver an email message.+--+-- 'projectedVolume', 'domainDeliverabilityCampaign_projectedVolume' - The projected number of recipients that the email message was sent to.+--+-- 'readDeleteRate', 'domainDeliverabilityCampaign_readDeleteRate' - The percentage of email messages that were opened and then deleted by+-- recipients. Due to technical limitations, this value only includes+-- recipients who opened the message by using an email client that supports+-- images.+--+-- 'readRate', 'domainDeliverabilityCampaign_readRate' - The percentage of email messages that were opened by recipients. Due to+-- technical limitations, this value only includes recipients who opened+-- the message by using an email client that supports images.+--+-- 'sendingIps', 'domainDeliverabilityCampaign_sendingIps' - The IP addresses that were used to send the email message.+--+-- 'spamCount', 'domainDeliverabilityCampaign_spamCount' - The number of email messages that were delivered to recipients\' spam or+-- junk mail folders.+--+-- 'subject', 'domainDeliverabilityCampaign_subject' - The subject line, or title, of the email message.+newDomainDeliverabilityCampaign ::+  DomainDeliverabilityCampaign+newDomainDeliverabilityCampaign =+  DomainDeliverabilityCampaign'+    { campaignId =+        Prelude.Nothing,+      deleteRate = Prelude.Nothing,+      esps = Prelude.Nothing,+      firstSeenDateTime = Prelude.Nothing,+      fromAddress = Prelude.Nothing,+      imageUrl = Prelude.Nothing,+      inboxCount = Prelude.Nothing,+      lastSeenDateTime = Prelude.Nothing,+      projectedVolume = Prelude.Nothing,+      readDeleteRate = Prelude.Nothing,+      readRate = Prelude.Nothing,+      sendingIps = Prelude.Nothing,+      spamCount = Prelude.Nothing,+      subject = Prelude.Nothing+    }++-- | The unique identifier for the campaign. The Deliverability dashboard+-- automatically generates and assigns this identifier to a campaign.+domainDeliverabilityCampaign_campaignId :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)+domainDeliverabilityCampaign_campaignId = Lens.lens (\DomainDeliverabilityCampaign' {campaignId} -> campaignId) (\s@DomainDeliverabilityCampaign' {} a -> s {campaignId = a} :: DomainDeliverabilityCampaign)++-- | The percentage of email messages that were deleted by recipients,+-- without being opened first. Due to technical limitations, this value+-- only includes recipients who opened the message by using an email client+-- that supports images.+domainDeliverabilityCampaign_deleteRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)+domainDeliverabilityCampaign_deleteRate = Lens.lens (\DomainDeliverabilityCampaign' {deleteRate} -> deleteRate) (\s@DomainDeliverabilityCampaign' {} a -> s {deleteRate = a} :: DomainDeliverabilityCampaign)++-- | The major email providers who handled the email message.+domainDeliverabilityCampaign_esps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])+domainDeliverabilityCampaign_esps = Lens.lens (\DomainDeliverabilityCampaign' {esps} -> esps) (\s@DomainDeliverabilityCampaign' {} a -> s {esps = a} :: DomainDeliverabilityCampaign) Prelude.. Lens.mapping Lens.coerced++-- | The first time when the email message was delivered to any recipient\'s+-- inbox. This value can help you determine how long it took for a campaign+-- to deliver an email message.+domainDeliverabilityCampaign_firstSeenDateTime :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.UTCTime)+domainDeliverabilityCampaign_firstSeenDateTime = Lens.lens (\DomainDeliverabilityCampaign' {firstSeenDateTime} -> firstSeenDateTime) (\s@DomainDeliverabilityCampaign' {} a -> s {firstSeenDateTime = a} :: DomainDeliverabilityCampaign) Prelude.. Lens.mapping Data._Time++-- | The verified email address that the email message was sent from.+domainDeliverabilityCampaign_fromAddress :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)+domainDeliverabilityCampaign_fromAddress = Lens.lens (\DomainDeliverabilityCampaign' {fromAddress} -> fromAddress) (\s@DomainDeliverabilityCampaign' {} a -> s {fromAddress = a} :: DomainDeliverabilityCampaign)++-- | The URL of an image that contains a snapshot of the email message that+-- was sent.+domainDeliverabilityCampaign_imageUrl :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)+domainDeliverabilityCampaign_imageUrl = Lens.lens (\DomainDeliverabilityCampaign' {imageUrl} -> imageUrl) (\s@DomainDeliverabilityCampaign' {} a -> s {imageUrl = a} :: DomainDeliverabilityCampaign)++-- | The number of email messages that were delivered to recipients’ inboxes.+domainDeliverabilityCampaign_inboxCount :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)+domainDeliverabilityCampaign_inboxCount = Lens.lens (\DomainDeliverabilityCampaign' {inboxCount} -> inboxCount) (\s@DomainDeliverabilityCampaign' {} a -> s {inboxCount = a} :: DomainDeliverabilityCampaign)++-- | The last time when the email message was delivered to any recipient\'s+-- inbox. This value can help you determine how long it took for a campaign+-- to deliver an email message.+domainDeliverabilityCampaign_lastSeenDateTime :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.UTCTime)+domainDeliverabilityCampaign_lastSeenDateTime = Lens.lens (\DomainDeliverabilityCampaign' {lastSeenDateTime} -> lastSeenDateTime) (\s@DomainDeliverabilityCampaign' {} a -> s {lastSeenDateTime = a} :: DomainDeliverabilityCampaign) Prelude.. Lens.mapping Data._Time++-- | The projected number of recipients that the email message was sent to.+domainDeliverabilityCampaign_projectedVolume :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)+domainDeliverabilityCampaign_projectedVolume = Lens.lens (\DomainDeliverabilityCampaign' {projectedVolume} -> projectedVolume) (\s@DomainDeliverabilityCampaign' {} a -> s {projectedVolume = a} :: DomainDeliverabilityCampaign)++-- | The percentage of email messages that were opened and then deleted by+-- recipients. Due to technical limitations, this value only includes+-- recipients who opened the message by using an email client that supports+-- images.+domainDeliverabilityCampaign_readDeleteRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)+domainDeliverabilityCampaign_readDeleteRate = Lens.lens (\DomainDeliverabilityCampaign' {readDeleteRate} -> readDeleteRate) (\s@DomainDeliverabilityCampaign' {} a -> s {readDeleteRate = a} :: DomainDeliverabilityCampaign)++-- | The percentage of email messages that were opened by recipients. Due to+-- technical limitations, this value only includes recipients who opened+-- the message by using an email client that supports images.+domainDeliverabilityCampaign_readRate :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Double)+domainDeliverabilityCampaign_readRate = Lens.lens (\DomainDeliverabilityCampaign' {readRate} -> readRate) (\s@DomainDeliverabilityCampaign' {} a -> s {readRate = a} :: DomainDeliverabilityCampaign)++-- | The IP addresses that were used to send the email message.+domainDeliverabilityCampaign_sendingIps :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe [Prelude.Text])+domainDeliverabilityCampaign_sendingIps = Lens.lens (\DomainDeliverabilityCampaign' {sendingIps} -> sendingIps) (\s@DomainDeliverabilityCampaign' {} a -> s {sendingIps = a} :: DomainDeliverabilityCampaign) Prelude.. Lens.mapping Lens.coerced++-- | The number of email messages that were delivered to recipients\' spam or+-- junk mail folders.+domainDeliverabilityCampaign_spamCount :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Integer)+domainDeliverabilityCampaign_spamCount = Lens.lens (\DomainDeliverabilityCampaign' {spamCount} -> spamCount) (\s@DomainDeliverabilityCampaign' {} a -> s {spamCount = a} :: DomainDeliverabilityCampaign)++-- | The subject line, or title, of the email message.+domainDeliverabilityCampaign_subject :: Lens.Lens' DomainDeliverabilityCampaign (Prelude.Maybe Prelude.Text)+domainDeliverabilityCampaign_subject = Lens.lens (\DomainDeliverabilityCampaign' {subject} -> subject) (\s@DomainDeliverabilityCampaign' {} a -> s {subject = a} :: DomainDeliverabilityCampaign)++instance Data.FromJSON DomainDeliverabilityCampaign where+  parseJSON =+    Data.withObject+      "DomainDeliverabilityCampaign"+      ( \x ->+          DomainDeliverabilityCampaign'+            Prelude.<$> (x Data..:? "CampaignId")+            Prelude.<*> (x Data..:? "DeleteRate")+            Prelude.<*> (x Data..:? "Esps" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "FirstSeenDateTime")+            Prelude.<*> (x Data..:? "FromAddress")+            Prelude.<*> (x Data..:? "ImageUrl")+            Prelude.<*> (x Data..:? "InboxCount")+            Prelude.<*> (x Data..:? "LastSeenDateTime")+            Prelude.<*> (x Data..:? "ProjectedVolume")+            Prelude.<*> (x Data..:? "ReadDeleteRate")+            Prelude.<*> (x Data..:? "ReadRate")+            Prelude.<*> (x Data..:? "SendingIps" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "SpamCount")+            Prelude.<*> (x Data..:? "Subject")+      )++instance+  Prelude.Hashable+    DomainDeliverabilityCampaign+  where+  hashWithSalt _salt DomainDeliverabilityCampaign' {..} =+    _salt+      `Prelude.hashWithSalt` campaignId+      `Prelude.hashWithSalt` deleteRate+      `Prelude.hashWithSalt` esps+      `Prelude.hashWithSalt` firstSeenDateTime+      `Prelude.hashWithSalt` fromAddress+      `Prelude.hashWithSalt` imageUrl+      `Prelude.hashWithSalt` inboxCount+      `Prelude.hashWithSalt` lastSeenDateTime+      `Prelude.hashWithSalt` projectedVolume+      `Prelude.hashWithSalt` readDeleteRate+      `Prelude.hashWithSalt` readRate+      `Prelude.hashWithSalt` sendingIps+      `Prelude.hashWithSalt` spamCount+      `Prelude.hashWithSalt` subject++instance Prelude.NFData DomainDeliverabilityCampaign where+  rnf DomainDeliverabilityCampaign' {..} =+    Prelude.rnf campaignId+      `Prelude.seq` Prelude.rnf deleteRate+      `Prelude.seq` Prelude.rnf esps+      `Prelude.seq` Prelude.rnf firstSeenDateTime+      `Prelude.seq` Prelude.rnf fromAddress+      `Prelude.seq` Prelude.rnf imageUrl+      `Prelude.seq` Prelude.rnf inboxCount+      `Prelude.seq` Prelude.rnf lastSeenDateTime+      `Prelude.seq` Prelude.rnf projectedVolume+      `Prelude.seq` Prelude.rnf readDeleteRate+      `Prelude.seq` Prelude.rnf readRate+      `Prelude.seq` Prelude.rnf sendingIps+      `Prelude.seq` Prelude.rnf spamCount+      `Prelude.seq` Prelude.rnf subject
+ gen/Amazonka/SESV2/Types/DomainDeliverabilityTrackingOption.hs view
@@ -0,0 +1,138 @@+{-# 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.SESV2.Types.DomainDeliverabilityTrackingOption+-- 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.SESV2.Types.DomainDeliverabilityTrackingOption 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.SESV2.Types.InboxPlacementTrackingOption++-- | An object that contains information about the Deliverability dashboard+-- subscription for a verified domain that you use to send email and+-- currently has an active Deliverability dashboard subscription. If a+-- Deliverability dashboard subscription is active for a domain, you gain+-- access to reputation, inbox placement, and other metrics for the domain.+--+-- /See:/ 'newDomainDeliverabilityTrackingOption' smart constructor.+data DomainDeliverabilityTrackingOption = DomainDeliverabilityTrackingOption'+  { -- | A verified domain that’s associated with your Amazon Web Services+    -- account and currently has an active Deliverability dashboard+    -- subscription.+    domain :: Prelude.Maybe Prelude.Text,+    -- | An object that contains information about the inbox placement data+    -- settings for the domain.+    inboxPlacementTrackingOption :: Prelude.Maybe InboxPlacementTrackingOption,+    -- | The date when you enabled the Deliverability dashboard for the domain.+    subscriptionStartDate :: Prelude.Maybe Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DomainDeliverabilityTrackingOption' 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', 'domainDeliverabilityTrackingOption_domain' - A verified domain that’s associated with your Amazon Web Services+-- account and currently has an active Deliverability dashboard+-- subscription.+--+-- 'inboxPlacementTrackingOption', 'domainDeliverabilityTrackingOption_inboxPlacementTrackingOption' - An object that contains information about the inbox placement data+-- settings for the domain.+--+-- 'subscriptionStartDate', 'domainDeliverabilityTrackingOption_subscriptionStartDate' - The date when you enabled the Deliverability dashboard for the domain.+newDomainDeliverabilityTrackingOption ::+  DomainDeliverabilityTrackingOption+newDomainDeliverabilityTrackingOption =+  DomainDeliverabilityTrackingOption'+    { domain =+        Prelude.Nothing,+      inboxPlacementTrackingOption =+        Prelude.Nothing,+      subscriptionStartDate = Prelude.Nothing+    }++-- | A verified domain that’s associated with your Amazon Web Services+-- account and currently has an active Deliverability dashboard+-- subscription.+domainDeliverabilityTrackingOption_domain :: Lens.Lens' DomainDeliverabilityTrackingOption (Prelude.Maybe Prelude.Text)+domainDeliverabilityTrackingOption_domain = Lens.lens (\DomainDeliverabilityTrackingOption' {domain} -> domain) (\s@DomainDeliverabilityTrackingOption' {} a -> s {domain = a} :: DomainDeliverabilityTrackingOption)++-- | An object that contains information about the inbox placement data+-- settings for the domain.+domainDeliverabilityTrackingOption_inboxPlacementTrackingOption :: Lens.Lens' DomainDeliverabilityTrackingOption (Prelude.Maybe InboxPlacementTrackingOption)+domainDeliverabilityTrackingOption_inboxPlacementTrackingOption = Lens.lens (\DomainDeliverabilityTrackingOption' {inboxPlacementTrackingOption} -> inboxPlacementTrackingOption) (\s@DomainDeliverabilityTrackingOption' {} a -> s {inboxPlacementTrackingOption = a} :: DomainDeliverabilityTrackingOption)++-- | The date when you enabled the Deliverability dashboard for the domain.+domainDeliverabilityTrackingOption_subscriptionStartDate :: Lens.Lens' DomainDeliverabilityTrackingOption (Prelude.Maybe Prelude.UTCTime)+domainDeliverabilityTrackingOption_subscriptionStartDate = Lens.lens (\DomainDeliverabilityTrackingOption' {subscriptionStartDate} -> subscriptionStartDate) (\s@DomainDeliverabilityTrackingOption' {} a -> s {subscriptionStartDate = a} :: DomainDeliverabilityTrackingOption) Prelude.. Lens.mapping Data._Time++instance+  Data.FromJSON+    DomainDeliverabilityTrackingOption+  where+  parseJSON =+    Data.withObject+      "DomainDeliverabilityTrackingOption"+      ( \x ->+          DomainDeliverabilityTrackingOption'+            Prelude.<$> (x Data..:? "Domain")+            Prelude.<*> (x Data..:? "InboxPlacementTrackingOption")+            Prelude.<*> (x Data..:? "SubscriptionStartDate")+      )++instance+  Prelude.Hashable+    DomainDeliverabilityTrackingOption+  where+  hashWithSalt+    _salt+    DomainDeliverabilityTrackingOption' {..} =+      _salt+        `Prelude.hashWithSalt` domain+        `Prelude.hashWithSalt` inboxPlacementTrackingOption+        `Prelude.hashWithSalt` subscriptionStartDate++instance+  Prelude.NFData+    DomainDeliverabilityTrackingOption+  where+  rnf DomainDeliverabilityTrackingOption' {..} =+    Prelude.rnf domain+      `Prelude.seq` Prelude.rnf inboxPlacementTrackingOption+      `Prelude.seq` Prelude.rnf subscriptionStartDate++instance+  Data.ToJSON+    DomainDeliverabilityTrackingOption+  where+  toJSON DomainDeliverabilityTrackingOption' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Domain" Data..=) Prelude.<$> domain,+            ("InboxPlacementTrackingOption" Data..=)+              Prelude.<$> inboxPlacementTrackingOption,+            ("SubscriptionStartDate" Data..=)+              Prelude.<$> subscriptionStartDate+          ]+      )
+ gen/Amazonka/SESV2/Types/DomainIspPlacement.hs view
@@ -0,0 +1,140 @@+{-# 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.SESV2.Types.DomainIspPlacement+-- 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.SESV2.Types.DomainIspPlacement 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++-- | An object that contains inbox placement data for email sent from one of+-- your email domains to a specific email provider.+--+-- /See:/ 'newDomainIspPlacement' smart constructor.+data DomainIspPlacement = DomainIspPlacement'+  { -- | The percentage of messages that were sent from the selected domain to+    -- the specified email provider that arrived in recipients\' inboxes.+    inboxPercentage :: Prelude.Maybe Prelude.Double,+    -- | The total number of messages that were sent from the selected domain to+    -- the specified email provider that arrived in recipients\' inboxes.+    inboxRawCount :: Prelude.Maybe Prelude.Integer,+    -- | The name of the email provider that the inbox placement data applies to.+    ispName :: Prelude.Maybe Prelude.Text,+    -- | The percentage of messages that were sent from the selected domain to+    -- the specified email provider that arrived in recipients\' spam or junk+    -- mail folders.+    spamPercentage :: Prelude.Maybe Prelude.Double,+    -- | The total number of messages that were sent from the selected domain to+    -- the specified email provider that arrived in recipients\' spam or junk+    -- mail folders.+    spamRawCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DomainIspPlacement' 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:+--+-- 'inboxPercentage', 'domainIspPlacement_inboxPercentage' - The percentage of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' inboxes.+--+-- 'inboxRawCount', 'domainIspPlacement_inboxRawCount' - The total number of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' inboxes.+--+-- 'ispName', 'domainIspPlacement_ispName' - The name of the email provider that the inbox placement data applies to.+--+-- 'spamPercentage', 'domainIspPlacement_spamPercentage' - The percentage of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' spam or junk+-- mail folders.+--+-- 'spamRawCount', 'domainIspPlacement_spamRawCount' - The total number of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' spam or junk+-- mail folders.+newDomainIspPlacement ::+  DomainIspPlacement+newDomainIspPlacement =+  DomainIspPlacement'+    { inboxPercentage =+        Prelude.Nothing,+      inboxRawCount = Prelude.Nothing,+      ispName = Prelude.Nothing,+      spamPercentage = Prelude.Nothing,+      spamRawCount = Prelude.Nothing+    }++-- | The percentage of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' inboxes.+domainIspPlacement_inboxPercentage :: Lens.Lens' DomainIspPlacement (Prelude.Maybe Prelude.Double)+domainIspPlacement_inboxPercentage = Lens.lens (\DomainIspPlacement' {inboxPercentage} -> inboxPercentage) (\s@DomainIspPlacement' {} a -> s {inboxPercentage = a} :: DomainIspPlacement)++-- | The total number of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' inboxes.+domainIspPlacement_inboxRawCount :: Lens.Lens' DomainIspPlacement (Prelude.Maybe Prelude.Integer)+domainIspPlacement_inboxRawCount = Lens.lens (\DomainIspPlacement' {inboxRawCount} -> inboxRawCount) (\s@DomainIspPlacement' {} a -> s {inboxRawCount = a} :: DomainIspPlacement)++-- | The name of the email provider that the inbox placement data applies to.+domainIspPlacement_ispName :: Lens.Lens' DomainIspPlacement (Prelude.Maybe Prelude.Text)+domainIspPlacement_ispName = Lens.lens (\DomainIspPlacement' {ispName} -> ispName) (\s@DomainIspPlacement' {} a -> s {ispName = a} :: DomainIspPlacement)++-- | The percentage of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' spam or junk+-- mail folders.+domainIspPlacement_spamPercentage :: Lens.Lens' DomainIspPlacement (Prelude.Maybe Prelude.Double)+domainIspPlacement_spamPercentage = Lens.lens (\DomainIspPlacement' {spamPercentage} -> spamPercentage) (\s@DomainIspPlacement' {} a -> s {spamPercentage = a} :: DomainIspPlacement)++-- | The total number of messages that were sent from the selected domain to+-- the specified email provider that arrived in recipients\' spam or junk+-- mail folders.+domainIspPlacement_spamRawCount :: Lens.Lens' DomainIspPlacement (Prelude.Maybe Prelude.Integer)+domainIspPlacement_spamRawCount = Lens.lens (\DomainIspPlacement' {spamRawCount} -> spamRawCount) (\s@DomainIspPlacement' {} a -> s {spamRawCount = a} :: DomainIspPlacement)++instance Data.FromJSON DomainIspPlacement where+  parseJSON =+    Data.withObject+      "DomainIspPlacement"+      ( \x ->+          DomainIspPlacement'+            Prelude.<$> (x Data..:? "InboxPercentage")+            Prelude.<*> (x Data..:? "InboxRawCount")+            Prelude.<*> (x Data..:? "IspName")+            Prelude.<*> (x Data..:? "SpamPercentage")+            Prelude.<*> (x Data..:? "SpamRawCount")+      )++instance Prelude.Hashable DomainIspPlacement where+  hashWithSalt _salt DomainIspPlacement' {..} =+    _salt+      `Prelude.hashWithSalt` inboxPercentage+      `Prelude.hashWithSalt` inboxRawCount+      `Prelude.hashWithSalt` ispName+      `Prelude.hashWithSalt` spamPercentage+      `Prelude.hashWithSalt` spamRawCount++instance Prelude.NFData DomainIspPlacement where+  rnf DomainIspPlacement' {..} =+    Prelude.rnf inboxPercentage+      `Prelude.seq` Prelude.rnf inboxRawCount+      `Prelude.seq` Prelude.rnf ispName+      `Prelude.seq` Prelude.rnf spamPercentage+      `Prelude.seq` Prelude.rnf spamRawCount
+ gen/Amazonka/SESV2/Types/EmailContent.hs view
@@ -0,0 +1,169 @@+{-# 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.SESV2.Types.EmailContent+-- 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.SESV2.Types.EmailContent 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.SESV2.Types.Message+import Amazonka.SESV2.Types.RawMessage+import Amazonka.SESV2.Types.Template++-- | An object that defines the entire content of the email, including the+-- message headers and the body content. You can create a simple email+-- message, in which you specify the subject and the text and HTML versions+-- of the message body. You can also create raw messages, in which you+-- specify a complete MIME-formatted message. Raw messages can include+-- attachments and custom headers.+--+-- /See:/ 'newEmailContent' smart constructor.+data EmailContent = EmailContent'+  { -- | The raw email message. The message has to meet the following criteria:+    --+    -- -   The message has to contain a header and a body, separated by one+    --     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.+    --+    -- -   If you include attachments, they must be in a file format that the+    --     Amazon SES API v2 supports.+    --+    -- -   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, you should encode that+    --     content to ensure that recipients\' email clients render the message+    --     properly.+    --+    -- -   The length of any single line of text in the message can\'t exceed+    --     1,000 characters. This restriction is defined in+    --     <https://tools.ietf.org/html/rfc5321 RFC 5321>.+    raw :: Prelude.Maybe RawMessage,+    -- | The simple email message. The message consists of a subject and a+    -- message body.+    simple :: Prelude.Maybe Message,+    -- | The template to use for the email message.+    template :: Prelude.Maybe Template+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EmailContent' 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:+--+-- 'raw', 'emailContent_raw' - The raw email message. The message has to meet the following criteria:+--+-- -   The message has to contain a header and a body, separated by one+--     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.+--+-- -   If you include attachments, they must be in a file format that the+--     Amazon SES API v2 supports.+--+-- -   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, you should encode that+--     content to ensure that recipients\' email clients render the message+--     properly.+--+-- -   The length of any single line of text in the message can\'t exceed+--     1,000 characters. This restriction is defined in+--     <https://tools.ietf.org/html/rfc5321 RFC 5321>.+--+-- 'simple', 'emailContent_simple' - The simple email message. The message consists of a subject and a+-- message body.+--+-- 'template', 'emailContent_template' - The template to use for the email message.+newEmailContent ::+  EmailContent+newEmailContent =+  EmailContent'+    { raw = Prelude.Nothing,+      simple = Prelude.Nothing,+      template = Prelude.Nothing+    }++-- | The raw email message. The message has to meet the following criteria:+--+-- -   The message has to contain a header and a body, separated by one+--     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.+--+-- -   If you include attachments, they must be in a file format that the+--     Amazon SES API v2 supports.+--+-- -   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, you should encode that+--     content to ensure that recipients\' email clients render the message+--     properly.+--+-- -   The length of any single line of text in the message can\'t exceed+--     1,000 characters. This restriction is defined in+--     <https://tools.ietf.org/html/rfc5321 RFC 5321>.+emailContent_raw :: Lens.Lens' EmailContent (Prelude.Maybe RawMessage)+emailContent_raw = Lens.lens (\EmailContent' {raw} -> raw) (\s@EmailContent' {} a -> s {raw = a} :: EmailContent)++-- | The simple email message. The message consists of a subject and a+-- message body.+emailContent_simple :: Lens.Lens' EmailContent (Prelude.Maybe Message)+emailContent_simple = Lens.lens (\EmailContent' {simple} -> simple) (\s@EmailContent' {} a -> s {simple = a} :: EmailContent)++-- | The template to use for the email message.+emailContent_template :: Lens.Lens' EmailContent (Prelude.Maybe Template)+emailContent_template = Lens.lens (\EmailContent' {template} -> template) (\s@EmailContent' {} a -> s {template = a} :: EmailContent)++instance Prelude.Hashable EmailContent where+  hashWithSalt _salt EmailContent' {..} =+    _salt+      `Prelude.hashWithSalt` raw+      `Prelude.hashWithSalt` simple+      `Prelude.hashWithSalt` template++instance Prelude.NFData EmailContent where+  rnf EmailContent' {..} =+    Prelude.rnf raw+      `Prelude.seq` Prelude.rnf simple+      `Prelude.seq` Prelude.rnf template++instance Data.ToJSON EmailContent where+  toJSON EmailContent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Raw" Data..=) Prelude.<$> raw,+            ("Simple" Data..=) Prelude.<$> simple,+            ("Template" Data..=) Prelude.<$> template+          ]+      )
+ gen/Amazonka/SESV2/Types/EmailTemplateContent.hs view
@@ -0,0 +1,110 @@+{-# 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.SESV2.Types.EmailTemplateContent+-- 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.SESV2.Types.EmailTemplateContent 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:/ 'newEmailTemplateContent' smart constructor.+data EmailTemplateContent = EmailTemplateContent'+  { -- | The HTML body of the email.+    html :: Prelude.Maybe Prelude.Text,+    -- | The subject line of the email.+    subject :: Prelude.Maybe Prelude.Text,+    -- | The email body that will be visible to recipients whose email clients do+    -- not display HTML.+    text :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EmailTemplateContent' 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', 'emailTemplateContent_html' - The HTML body of the email.+--+-- 'subject', 'emailTemplateContent_subject' - The subject line of the email.+--+-- 'text', 'emailTemplateContent_text' - The email body that will be visible to recipients whose email clients do+-- not display HTML.+newEmailTemplateContent ::+  EmailTemplateContent+newEmailTemplateContent =+  EmailTemplateContent'+    { html = Prelude.Nothing,+      subject = Prelude.Nothing,+      text = Prelude.Nothing+    }++-- | The HTML body of the email.+emailTemplateContent_html :: Lens.Lens' EmailTemplateContent (Prelude.Maybe Prelude.Text)+emailTemplateContent_html = Lens.lens (\EmailTemplateContent' {html} -> html) (\s@EmailTemplateContent' {} a -> s {html = a} :: EmailTemplateContent)++-- | The subject line of the email.+emailTemplateContent_subject :: Lens.Lens' EmailTemplateContent (Prelude.Maybe Prelude.Text)+emailTemplateContent_subject = Lens.lens (\EmailTemplateContent' {subject} -> subject) (\s@EmailTemplateContent' {} a -> s {subject = a} :: EmailTemplateContent)++-- | The email body that will be visible to recipients whose email clients do+-- not display HTML.+emailTemplateContent_text :: Lens.Lens' EmailTemplateContent (Prelude.Maybe Prelude.Text)+emailTemplateContent_text = Lens.lens (\EmailTemplateContent' {text} -> text) (\s@EmailTemplateContent' {} a -> s {text = a} :: EmailTemplateContent)++instance Data.FromJSON EmailTemplateContent where+  parseJSON =+    Data.withObject+      "EmailTemplateContent"+      ( \x ->+          EmailTemplateContent'+            Prelude.<$> (x Data..:? "Html")+            Prelude.<*> (x Data..:? "Subject")+            Prelude.<*> (x Data..:? "Text")+      )++instance Prelude.Hashable EmailTemplateContent where+  hashWithSalt _salt EmailTemplateContent' {..} =+    _salt+      `Prelude.hashWithSalt` html+      `Prelude.hashWithSalt` subject+      `Prelude.hashWithSalt` text++instance Prelude.NFData EmailTemplateContent where+  rnf EmailTemplateContent' {..} =+    Prelude.rnf html+      `Prelude.seq` Prelude.rnf subject+      `Prelude.seq` Prelude.rnf text++instance Data.ToJSON EmailTemplateContent where+  toJSON EmailTemplateContent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Html" Data..=) Prelude.<$> html,+            ("Subject" Data..=) Prelude.<$> subject,+            ("Text" Data..=) Prelude.<$> text+          ]+      )
+ gen/Amazonka/SESV2/Types/EmailTemplateMetadata.hs view
@@ -0,0 +1,85 @@+{-# 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.SESV2.Types.EmailTemplateMetadata+-- 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.SESV2.Types.EmailTemplateMetadata 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:/ 'newEmailTemplateMetadata' smart constructor.+data EmailTemplateMetadata = EmailTemplateMetadata'+  { -- | The time and date the template was created.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The name of the template.+    templateName :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EmailTemplateMetadata' 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', 'emailTemplateMetadata_createdTimestamp' - The time and date the template was created.+--+-- 'templateName', 'emailTemplateMetadata_templateName' - The name of the template.+newEmailTemplateMetadata ::+  EmailTemplateMetadata+newEmailTemplateMetadata =+  EmailTemplateMetadata'+    { createdTimestamp =+        Prelude.Nothing,+      templateName = Prelude.Nothing+    }++-- | The time and date the template was created.+emailTemplateMetadata_createdTimestamp :: Lens.Lens' EmailTemplateMetadata (Prelude.Maybe Prelude.UTCTime)+emailTemplateMetadata_createdTimestamp = Lens.lens (\EmailTemplateMetadata' {createdTimestamp} -> createdTimestamp) (\s@EmailTemplateMetadata' {} a -> s {createdTimestamp = a} :: EmailTemplateMetadata) Prelude.. Lens.mapping Data._Time++-- | The name of the template.+emailTemplateMetadata_templateName :: Lens.Lens' EmailTemplateMetadata (Prelude.Maybe Prelude.Text)+emailTemplateMetadata_templateName = Lens.lens (\EmailTemplateMetadata' {templateName} -> templateName) (\s@EmailTemplateMetadata' {} a -> s {templateName = a} :: EmailTemplateMetadata)++instance Data.FromJSON EmailTemplateMetadata where+  parseJSON =+    Data.withObject+      "EmailTemplateMetadata"+      ( \x ->+          EmailTemplateMetadata'+            Prelude.<$> (x Data..:? "CreatedTimestamp")+            Prelude.<*> (x Data..:? "TemplateName")+      )++instance Prelude.Hashable EmailTemplateMetadata where+  hashWithSalt _salt EmailTemplateMetadata' {..} =+    _salt+      `Prelude.hashWithSalt` createdTimestamp+      `Prelude.hashWithSalt` templateName++instance Prelude.NFData EmailTemplateMetadata where+  rnf EmailTemplateMetadata' {..} =+    Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf templateName
+ gen/Amazonka/SESV2/Types/EventDestination.hs view
@@ -0,0 +1,212 @@+{-# 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.SESV2.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.SESV2.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.SESV2.Types.CloudWatchDestination+import Amazonka.SESV2.Types.EventType+import Amazonka.SESV2.Types.KinesisFirehoseDestination+import Amazonka.SESV2.Types.PinpointDestination+import Amazonka.SESV2.Types.SnsDestination++-- | In the Amazon SES API v2, /events/ include message sends, deliveries,+-- opens, clicks, bounces, complaints and delivery delays. /Event+-- destinations/ are places that you can send information about these+-- events to. For example, you can send event data to Amazon SNS to receive+-- notifications when you receive bounces or complaints, or you can use+-- Amazon Kinesis Data Firehose to stream data to Amazon S3 for long-term+-- storage.+--+-- /See:/ 'newEventDestination' smart constructor.+data EventDestination = EventDestination'+  { -- | An object that defines an Amazon CloudWatch destination for email+    -- events. You can use Amazon CloudWatch to monitor and gain insights on+    -- your email sending metrics.+    cloudWatchDestination :: Prelude.Maybe CloudWatchDestination,+    -- | If @true@, the event destination is enabled. When the event destination+    -- is enabled, the specified event types are sent to the destinations in+    -- this @EventDestinationDefinition@.+    --+    -- If @false@, the event destination is disabled. When the event+    -- destination is disabled, events aren\'t sent to the specified+    -- destinations.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | An object that defines an Amazon Kinesis Data Firehose destination for+    -- email events. You can use Amazon Kinesis Data Firehose to stream data to+    -- other services, such as Amazon S3 and Amazon Redshift.+    kinesisFirehoseDestination :: Prelude.Maybe KinesisFirehoseDestination,+    -- | An object that defines an Amazon Pinpoint project destination for email+    -- events. You can send email event data to a Amazon Pinpoint project to+    -- view metrics using the Transactional Messaging dashboards that are built+    -- in to Amazon Pinpoint. For more information, see+    -- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+    -- in the /Amazon Pinpoint User Guide/.+    pinpointDestination :: Prelude.Maybe PinpointDestination,+    -- | An object that defines an Amazon SNS destination for email events. You+    -- can use Amazon SNS to send notification when certain email events occur.+    snsDestination :: Prelude.Maybe SnsDestination,+    -- | A name that identifies the event destination.+    name :: Prelude.Text,+    -- | The types of events that Amazon SES sends to the specified event+    -- destinations.+    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 defines an Amazon CloudWatch destination for email+-- events. You can use Amazon CloudWatch to monitor and gain insights on+-- your email sending metrics.+--+-- 'enabled', 'eventDestination_enabled' - If @true@, the event destination is enabled. When the event destination+-- is enabled, the specified event types are sent to the destinations in+-- this @EventDestinationDefinition@.+--+-- If @false@, the event destination is disabled. When the event+-- destination is disabled, events aren\'t sent to the specified+-- destinations.+--+-- 'kinesisFirehoseDestination', 'eventDestination_kinesisFirehoseDestination' - An object that defines an Amazon Kinesis Data Firehose destination for+-- email events. You can use Amazon Kinesis Data Firehose to stream data to+-- other services, such as Amazon S3 and Amazon Redshift.+--+-- 'pinpointDestination', 'eventDestination_pinpointDestination' - An object that defines an Amazon Pinpoint project destination for email+-- events. You can send email event data to a Amazon Pinpoint project to+-- view metrics using the Transactional Messaging dashboards that are built+-- in to Amazon Pinpoint. For more information, see+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+-- in the /Amazon Pinpoint User Guide/.+--+-- 'snsDestination', 'eventDestination_snsDestination' - An object that defines an Amazon SNS destination for email events. You+-- can use Amazon SNS to send notification when certain email events occur.+--+-- 'name', 'eventDestination_name' - A name that identifies the event destination.+--+-- 'matchingEventTypes', 'eventDestination_matchingEventTypes' - The types of events that Amazon SES sends to the specified event+-- destinations.+newEventDestination ::+  -- | 'name'+  Prelude.Text ->+  EventDestination+newEventDestination pName_ =+  EventDestination'+    { cloudWatchDestination =+        Prelude.Nothing,+      enabled = Prelude.Nothing,+      kinesisFirehoseDestination = Prelude.Nothing,+      pinpointDestination = Prelude.Nothing,+      snsDestination = Prelude.Nothing,+      name = pName_,+      matchingEventTypes = Prelude.mempty+    }++-- | An object that defines an Amazon CloudWatch destination for email+-- events. You can use Amazon CloudWatch to monitor and gain insights on+-- your email sending metrics.+eventDestination_cloudWatchDestination :: Lens.Lens' EventDestination (Prelude.Maybe CloudWatchDestination)+eventDestination_cloudWatchDestination = Lens.lens (\EventDestination' {cloudWatchDestination} -> cloudWatchDestination) (\s@EventDestination' {} a -> s {cloudWatchDestination = a} :: EventDestination)++-- | If @true@, the event destination is enabled. When the event destination+-- is enabled, the specified event types are sent to the destinations in+-- this @EventDestinationDefinition@.+--+-- If @false@, the event destination is disabled. When the event+-- destination is disabled, events aren\'t sent to the specified+-- destinations.+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 defines an Amazon Kinesis Data Firehose destination for+-- email events. You can use Amazon Kinesis Data Firehose to stream data to+-- other services, such as Amazon S3 and Amazon Redshift.+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 defines an Amazon Pinpoint project destination for email+-- events. You can send email event data to a Amazon Pinpoint project to+-- view metrics using the Transactional Messaging dashboards that are built+-- in to Amazon Pinpoint. For more information, see+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+-- in the /Amazon Pinpoint User Guide/.+eventDestination_pinpointDestination :: Lens.Lens' EventDestination (Prelude.Maybe PinpointDestination)+eventDestination_pinpointDestination = Lens.lens (\EventDestination' {pinpointDestination} -> pinpointDestination) (\s@EventDestination' {} a -> s {pinpointDestination = a} :: EventDestination)++-- | An object that defines an Amazon SNS destination for email events. You+-- can use Amazon SNS to send notification when certain email events occur.+eventDestination_snsDestination :: Lens.Lens' EventDestination (Prelude.Maybe SnsDestination)+eventDestination_snsDestination = Lens.lens (\EventDestination' {snsDestination} -> snsDestination) (\s@EventDestination' {} a -> s {snsDestination = a} :: EventDestination)++-- | A name that identifies the event destination.+eventDestination_name :: Lens.Lens' EventDestination Prelude.Text+eventDestination_name = Lens.lens (\EventDestination' {name} -> name) (\s@EventDestination' {} a -> s {name = a} :: EventDestination)++-- | The types of events that Amazon SES sends to the specified event+-- destinations.+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.FromJSON EventDestination where+  parseJSON =+    Data.withObject+      "EventDestination"+      ( \x ->+          EventDestination'+            Prelude.<$> (x Data..:? "CloudWatchDestination")+            Prelude.<*> (x Data..:? "Enabled")+            Prelude.<*> (x Data..:? "KinesisFirehoseDestination")+            Prelude.<*> (x Data..:? "PinpointDestination")+            Prelude.<*> (x Data..:? "SnsDestination")+            Prelude.<*> (x Data..: "Name")+            Prelude.<*> ( x+                            Data..:? "MatchingEventTypes"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable EventDestination where+  hashWithSalt _salt EventDestination' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchDestination+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` kinesisFirehoseDestination+      `Prelude.hashWithSalt` pinpointDestination+      `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 pinpointDestination+      `Prelude.seq` Prelude.rnf snsDestination+      `Prelude.seq` Prelude.rnf name+      `Prelude.seq` Prelude.rnf matchingEventTypes
+ gen/Amazonka/SESV2/Types/EventDestinationDefinition.hs view
@@ -0,0 +1,196 @@+{-# 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.SESV2.Types.EventDestinationDefinition+-- 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.SESV2.Types.EventDestinationDefinition 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.SESV2.Types.CloudWatchDestination+import Amazonka.SESV2.Types.EventType+import Amazonka.SESV2.Types.KinesisFirehoseDestination+import Amazonka.SESV2.Types.PinpointDestination+import Amazonka.SESV2.Types.SnsDestination++-- | An object that defines the event destination. Specifically, it defines+-- which services receive events from emails sent using the configuration+-- set that the event destination is associated with. Also defines the+-- types of events that are sent to the event destination.+--+-- /See:/ 'newEventDestinationDefinition' smart constructor.+data EventDestinationDefinition = EventDestinationDefinition'+  { -- | An object that defines an Amazon CloudWatch destination for email+    -- events. You can use Amazon CloudWatch to monitor and gain insights on+    -- your email sending metrics.+    cloudWatchDestination :: Prelude.Maybe CloudWatchDestination,+    -- | If @true@, the event destination is enabled. When the event destination+    -- is enabled, the specified event types are sent to the destinations in+    -- this @EventDestinationDefinition@.+    --+    -- If @false@, the event destination is disabled. When the event+    -- destination is disabled, events aren\'t sent to the specified+    -- destinations.+    enabled :: Prelude.Maybe Prelude.Bool,+    -- | An object that defines an Amazon Kinesis Data Firehose destination for+    -- email events. You can use Amazon Kinesis Data Firehose to stream data to+    -- other services, such as Amazon S3 and Amazon Redshift.+    kinesisFirehoseDestination :: Prelude.Maybe KinesisFirehoseDestination,+    -- | An array that specifies which events the Amazon SES API v2 should send+    -- to the destinations in this @EventDestinationDefinition@.+    matchingEventTypes :: Prelude.Maybe [EventType],+    -- | An object that defines an Amazon Pinpoint project destination for email+    -- events. You can send email event data to a Amazon Pinpoint project to+    -- view metrics using the Transactional Messaging dashboards that are built+    -- in to Amazon Pinpoint. For more information, see+    -- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+    -- in the /Amazon Pinpoint User Guide/.+    pinpointDestination :: Prelude.Maybe PinpointDestination,+    -- | An object that defines an Amazon SNS destination for email events. You+    -- can use Amazon SNS to send notification when certain email events occur.+    snsDestination :: Prelude.Maybe SnsDestination+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'EventDestinationDefinition' 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', 'eventDestinationDefinition_cloudWatchDestination' - An object that defines an Amazon CloudWatch destination for email+-- events. You can use Amazon CloudWatch to monitor and gain insights on+-- your email sending metrics.+--+-- 'enabled', 'eventDestinationDefinition_enabled' - If @true@, the event destination is enabled. When the event destination+-- is enabled, the specified event types are sent to the destinations in+-- this @EventDestinationDefinition@.+--+-- If @false@, the event destination is disabled. When the event+-- destination is disabled, events aren\'t sent to the specified+-- destinations.+--+-- 'kinesisFirehoseDestination', 'eventDestinationDefinition_kinesisFirehoseDestination' - An object that defines an Amazon Kinesis Data Firehose destination for+-- email events. You can use Amazon Kinesis Data Firehose to stream data to+-- other services, such as Amazon S3 and Amazon Redshift.+--+-- 'matchingEventTypes', 'eventDestinationDefinition_matchingEventTypes' - An array that specifies which events the Amazon SES API v2 should send+-- to the destinations in this @EventDestinationDefinition@.+--+-- 'pinpointDestination', 'eventDestinationDefinition_pinpointDestination' - An object that defines an Amazon Pinpoint project destination for email+-- events. You can send email event data to a Amazon Pinpoint project to+-- view metrics using the Transactional Messaging dashboards that are built+-- in to Amazon Pinpoint. For more information, see+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+-- in the /Amazon Pinpoint User Guide/.+--+-- 'snsDestination', 'eventDestinationDefinition_snsDestination' - An object that defines an Amazon SNS destination for email events. You+-- can use Amazon SNS to send notification when certain email events occur.+newEventDestinationDefinition ::+  EventDestinationDefinition+newEventDestinationDefinition =+  EventDestinationDefinition'+    { cloudWatchDestination =+        Prelude.Nothing,+      enabled = Prelude.Nothing,+      kinesisFirehoseDestination = Prelude.Nothing,+      matchingEventTypes = Prelude.Nothing,+      pinpointDestination = Prelude.Nothing,+      snsDestination = Prelude.Nothing+    }++-- | An object that defines an Amazon CloudWatch destination for email+-- events. You can use Amazon CloudWatch to monitor and gain insights on+-- your email sending metrics.+eventDestinationDefinition_cloudWatchDestination :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe CloudWatchDestination)+eventDestinationDefinition_cloudWatchDestination = Lens.lens (\EventDestinationDefinition' {cloudWatchDestination} -> cloudWatchDestination) (\s@EventDestinationDefinition' {} a -> s {cloudWatchDestination = a} :: EventDestinationDefinition)++-- | If @true@, the event destination is enabled. When the event destination+-- is enabled, the specified event types are sent to the destinations in+-- this @EventDestinationDefinition@.+--+-- If @false@, the event destination is disabled. When the event+-- destination is disabled, events aren\'t sent to the specified+-- destinations.+eventDestinationDefinition_enabled :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe Prelude.Bool)+eventDestinationDefinition_enabled = Lens.lens (\EventDestinationDefinition' {enabled} -> enabled) (\s@EventDestinationDefinition' {} a -> s {enabled = a} :: EventDestinationDefinition)++-- | An object that defines an Amazon Kinesis Data Firehose destination for+-- email events. You can use Amazon Kinesis Data Firehose to stream data to+-- other services, such as Amazon S3 and Amazon Redshift.+eventDestinationDefinition_kinesisFirehoseDestination :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe KinesisFirehoseDestination)+eventDestinationDefinition_kinesisFirehoseDestination = Lens.lens (\EventDestinationDefinition' {kinesisFirehoseDestination} -> kinesisFirehoseDestination) (\s@EventDestinationDefinition' {} a -> s {kinesisFirehoseDestination = a} :: EventDestinationDefinition)++-- | An array that specifies which events the Amazon SES API v2 should send+-- to the destinations in this @EventDestinationDefinition@.+eventDestinationDefinition_matchingEventTypes :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe [EventType])+eventDestinationDefinition_matchingEventTypes = Lens.lens (\EventDestinationDefinition' {matchingEventTypes} -> matchingEventTypes) (\s@EventDestinationDefinition' {} a -> s {matchingEventTypes = a} :: EventDestinationDefinition) Prelude.. Lens.mapping Lens.coerced++-- | An object that defines an Amazon Pinpoint project destination for email+-- events. You can send email event data to a Amazon Pinpoint project to+-- view metrics using the Transactional Messaging dashboards that are built+-- in to Amazon Pinpoint. For more information, see+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+-- in the /Amazon Pinpoint User Guide/.+eventDestinationDefinition_pinpointDestination :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe PinpointDestination)+eventDestinationDefinition_pinpointDestination = Lens.lens (\EventDestinationDefinition' {pinpointDestination} -> pinpointDestination) (\s@EventDestinationDefinition' {} a -> s {pinpointDestination = a} :: EventDestinationDefinition)++-- | An object that defines an Amazon SNS destination for email events. You+-- can use Amazon SNS to send notification when certain email events occur.+eventDestinationDefinition_snsDestination :: Lens.Lens' EventDestinationDefinition (Prelude.Maybe SnsDestination)+eventDestinationDefinition_snsDestination = Lens.lens (\EventDestinationDefinition' {snsDestination} -> snsDestination) (\s@EventDestinationDefinition' {} a -> s {snsDestination = a} :: EventDestinationDefinition)++instance Prelude.Hashable EventDestinationDefinition where+  hashWithSalt _salt EventDestinationDefinition' {..} =+    _salt+      `Prelude.hashWithSalt` cloudWatchDestination+      `Prelude.hashWithSalt` enabled+      `Prelude.hashWithSalt` kinesisFirehoseDestination+      `Prelude.hashWithSalt` matchingEventTypes+      `Prelude.hashWithSalt` pinpointDestination+      `Prelude.hashWithSalt` snsDestination++instance Prelude.NFData EventDestinationDefinition where+  rnf EventDestinationDefinition' {..} =+    Prelude.rnf cloudWatchDestination+      `Prelude.seq` Prelude.rnf enabled+      `Prelude.seq` Prelude.rnf kinesisFirehoseDestination+      `Prelude.seq` Prelude.rnf matchingEventTypes+      `Prelude.seq` Prelude.rnf pinpointDestination+      `Prelude.seq` Prelude.rnf snsDestination++instance Data.ToJSON EventDestinationDefinition where+  toJSON EventDestinationDefinition' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("CloudWatchDestination" Data..=)+              Prelude.<$> cloudWatchDestination,+            ("Enabled" Data..=) Prelude.<$> enabled,+            ("KinesisFirehoseDestination" Data..=)+              Prelude.<$> kinesisFirehoseDestination,+            ("MatchingEventTypes" Data..=)+              Prelude.<$> matchingEventTypes,+            ("PinpointDestination" Data..=)+              Prelude.<$> pinpointDestination,+            ("SnsDestination" Data..=)+              Prelude.<$> snsDestination+          ]+      )
+ gen/Amazonka/SESV2/Types/EventType.hs view
@@ -0,0 +1,113 @@+{-# 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.SESV2.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.SESV2.Types.EventType+  ( EventType+      ( ..,+        EventType_BOUNCE,+        EventType_CLICK,+        EventType_COMPLAINT,+        EventType_DELIVERY,+        EventType_DELIVERY_DELAY,+        EventType_OPEN,+        EventType_REJECT,+        EventType_RENDERING_FAILURE,+        EventType_SEND,+        EventType_SUBSCRIPTION+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | An email sending event type. For example, email sends, opens, and+-- bounces are all email events.+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_DELIVERY_DELAY :: EventType+pattern EventType_DELIVERY_DELAY = EventType' "DELIVERY_DELAY"++pattern EventType_OPEN :: EventType+pattern EventType_OPEN = EventType' "OPEN"++pattern EventType_REJECT :: EventType+pattern EventType_REJECT = EventType' "REJECT"++pattern EventType_RENDERING_FAILURE :: EventType+pattern EventType_RENDERING_FAILURE = EventType' "RENDERING_FAILURE"++pattern EventType_SEND :: EventType+pattern EventType_SEND = EventType' "SEND"++pattern EventType_SUBSCRIPTION :: EventType+pattern EventType_SUBSCRIPTION = EventType' "SUBSCRIPTION"++{-# COMPLETE+  EventType_BOUNCE,+  EventType_CLICK,+  EventType_COMPLAINT,+  EventType_DELIVERY,+  EventType_DELIVERY_DELAY,+  EventType_OPEN,+  EventType_REJECT,+  EventType_RENDERING_FAILURE,+  EventType_SEND,+  EventType_SUBSCRIPTION,+  EventType'+  #-}
+ gen/Amazonka/SESV2/Types/FailureInfo.hs view
@@ -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.SESV2.Types.FailureInfo+-- 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.SESV2.Types.FailureInfo 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++-- | An object that contains the failure details about an import job.+--+-- /See:/ 'newFailureInfo' smart constructor.+data FailureInfo = FailureInfo'+  { -- | A message about why the import job failed.+    errorMessage :: Prelude.Maybe Prelude.Text,+    -- | An Amazon S3 presigned URL that contains all the failed records and+    -- related information.+    failedRecordsS3Url :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'FailureInfo' 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:+--+-- 'errorMessage', 'failureInfo_errorMessage' - A message about why the import job failed.+--+-- 'failedRecordsS3Url', 'failureInfo_failedRecordsS3Url' - An Amazon S3 presigned URL that contains all the failed records and+-- related information.+newFailureInfo ::+  FailureInfo+newFailureInfo =+  FailureInfo'+    { errorMessage = Prelude.Nothing,+      failedRecordsS3Url = Prelude.Nothing+    }++-- | A message about why the import job failed.+failureInfo_errorMessage :: Lens.Lens' FailureInfo (Prelude.Maybe Prelude.Text)+failureInfo_errorMessage = Lens.lens (\FailureInfo' {errorMessage} -> errorMessage) (\s@FailureInfo' {} a -> s {errorMessage = a} :: FailureInfo)++-- | An Amazon S3 presigned URL that contains all the failed records and+-- related information.+failureInfo_failedRecordsS3Url :: Lens.Lens' FailureInfo (Prelude.Maybe Prelude.Text)+failureInfo_failedRecordsS3Url = Lens.lens (\FailureInfo' {failedRecordsS3Url} -> failedRecordsS3Url) (\s@FailureInfo' {} a -> s {failedRecordsS3Url = a} :: FailureInfo)++instance Data.FromJSON FailureInfo where+  parseJSON =+    Data.withObject+      "FailureInfo"+      ( \x ->+          FailureInfo'+            Prelude.<$> (x Data..:? "ErrorMessage")+            Prelude.<*> (x Data..:? "FailedRecordsS3Url")+      )++instance Prelude.Hashable FailureInfo where+  hashWithSalt _salt FailureInfo' {..} =+    _salt+      `Prelude.hashWithSalt` errorMessage+      `Prelude.hashWithSalt` failedRecordsS3Url++instance Prelude.NFData FailureInfo where+  rnf FailureInfo' {..} =+    Prelude.rnf errorMessage+      `Prelude.seq` Prelude.rnf failedRecordsS3Url
+ gen/Amazonka/SESV2/Types/FeatureStatus.hs view
@@ -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.SESV2.Types.FeatureStatus+-- 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.SESV2.Types.FeatureStatus+  ( FeatureStatus+      ( ..,+        FeatureStatus_DISABLED,+        FeatureStatus_ENABLED+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype FeatureStatus = FeatureStatus'+  { fromFeatureStatus ::+      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 FeatureStatus_DISABLED :: FeatureStatus+pattern FeatureStatus_DISABLED = FeatureStatus' "DISABLED"++pattern FeatureStatus_ENABLED :: FeatureStatus+pattern FeatureStatus_ENABLED = FeatureStatus' "ENABLED"++{-# COMPLETE+  FeatureStatus_DISABLED,+  FeatureStatus_ENABLED,+  FeatureStatus'+  #-}
+ gen/Amazonka/SESV2/Types/GuardianAttributes.hs view
@@ -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.SESV2.Types.GuardianAttributes+-- 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.SESV2.Types.GuardianAttributes 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.SESV2.Types.FeatureStatus++-- | An object containing additional settings for your VDM configuration as+-- applicable to the Guardian.+--+-- /See:/ 'newGuardianAttributes' smart constructor.+data GuardianAttributes = GuardianAttributes'+  { -- | Specifies the status of your VDM optimized shared delivery. Can be one+    -- of the following:+    --+    -- -   @ENABLED@ – Amazon SES enables optimized shared delivery for your+    --     account.+    --+    -- -   @DISABLED@ – Amazon SES disables optimized shared delivery for your+    --     account.+    optimizedSharedDelivery :: Prelude.Maybe FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GuardianAttributes' 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:+--+-- 'optimizedSharedDelivery', 'guardianAttributes_optimizedSharedDelivery' - Specifies the status of your VDM optimized shared delivery. Can be one+-- of the following:+--+-- -   @ENABLED@ – Amazon SES enables optimized shared delivery for your+--     account.+--+-- -   @DISABLED@ – Amazon SES disables optimized shared delivery for your+--     account.+newGuardianAttributes ::+  GuardianAttributes+newGuardianAttributes =+  GuardianAttributes'+    { optimizedSharedDelivery =+        Prelude.Nothing+    }++-- | Specifies the status of your VDM optimized shared delivery. Can be one+-- of the following:+--+-- -   @ENABLED@ – Amazon SES enables optimized shared delivery for your+--     account.+--+-- -   @DISABLED@ – Amazon SES disables optimized shared delivery for your+--     account.+guardianAttributes_optimizedSharedDelivery :: Lens.Lens' GuardianAttributes (Prelude.Maybe FeatureStatus)+guardianAttributes_optimizedSharedDelivery = Lens.lens (\GuardianAttributes' {optimizedSharedDelivery} -> optimizedSharedDelivery) (\s@GuardianAttributes' {} a -> s {optimizedSharedDelivery = a} :: GuardianAttributes)++instance Data.FromJSON GuardianAttributes where+  parseJSON =+    Data.withObject+      "GuardianAttributes"+      ( \x ->+          GuardianAttributes'+            Prelude.<$> (x Data..:? "OptimizedSharedDelivery")+      )++instance Prelude.Hashable GuardianAttributes where+  hashWithSalt _salt GuardianAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` optimizedSharedDelivery++instance Prelude.NFData GuardianAttributes where+  rnf GuardianAttributes' {..} =+    Prelude.rnf optimizedSharedDelivery++instance Data.ToJSON GuardianAttributes where+  toJSON GuardianAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("OptimizedSharedDelivery" Data..=)+              Prelude.<$> optimizedSharedDelivery+          ]+      )
+ gen/Amazonka/SESV2/Types/GuardianOptions.hs view
@@ -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.SESV2.Types.GuardianOptions+-- 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.SESV2.Types.GuardianOptions 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.SESV2.Types.FeatureStatus++-- | An object containing additional settings for your VDM configuration as+-- applicable to the Guardian.+--+-- /See:/ 'newGuardianOptions' smart constructor.+data GuardianOptions = GuardianOptions'+  { -- | Specifies the status of your VDM optimized shared delivery. Can be one+    -- of the following:+    --+    -- -   @ENABLED@ – Amazon SES enables optimized shared delivery for the+    --     configuration set.+    --+    -- -   @DISABLED@ – Amazon SES disables optimized shared delivery for the+    --     configuration set.+    optimizedSharedDelivery :: Prelude.Maybe FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'GuardianOptions' 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:+--+-- 'optimizedSharedDelivery', 'guardianOptions_optimizedSharedDelivery' - Specifies the status of your VDM optimized shared delivery. Can be one+-- of the following:+--+-- -   @ENABLED@ – Amazon SES enables optimized shared delivery for the+--     configuration set.+--+-- -   @DISABLED@ – Amazon SES disables optimized shared delivery for the+--     configuration set.+newGuardianOptions ::+  GuardianOptions+newGuardianOptions =+  GuardianOptions'+    { optimizedSharedDelivery =+        Prelude.Nothing+    }++-- | Specifies the status of your VDM optimized shared delivery. Can be one+-- of the following:+--+-- -   @ENABLED@ – Amazon SES enables optimized shared delivery for the+--     configuration set.+--+-- -   @DISABLED@ – Amazon SES disables optimized shared delivery for the+--     configuration set.+guardianOptions_optimizedSharedDelivery :: Lens.Lens' GuardianOptions (Prelude.Maybe FeatureStatus)+guardianOptions_optimizedSharedDelivery = Lens.lens (\GuardianOptions' {optimizedSharedDelivery} -> optimizedSharedDelivery) (\s@GuardianOptions' {} a -> s {optimizedSharedDelivery = a} :: GuardianOptions)++instance Data.FromJSON GuardianOptions where+  parseJSON =+    Data.withObject+      "GuardianOptions"+      ( \x ->+          GuardianOptions'+            Prelude.<$> (x Data..:? "OptimizedSharedDelivery")+      )++instance Prelude.Hashable GuardianOptions where+  hashWithSalt _salt GuardianOptions' {..} =+    _salt+      `Prelude.hashWithSalt` optimizedSharedDelivery++instance Prelude.NFData GuardianOptions where+  rnf GuardianOptions' {..} =+    Prelude.rnf optimizedSharedDelivery++instance Data.ToJSON GuardianOptions where+  toJSON GuardianOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("OptimizedSharedDelivery" Data..=)+              Prelude.<$> optimizedSharedDelivery+          ]+      )
+ gen/Amazonka/SESV2/Types/IdentityInfo.hs view
@@ -0,0 +1,170 @@+{-# 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.SESV2.Types.IdentityInfo+-- 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.SESV2.Types.IdentityInfo 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.SESV2.Types.IdentityType+import Amazonka.SESV2.Types.VerificationStatus++-- | Information about an email identity.+--+-- /See:/ 'newIdentityInfo' smart constructor.+data IdentityInfo = IdentityInfo'+  { -- | The address or domain of the identity.+    identityName :: Prelude.Maybe Prelude.Text,+    -- | The email identity type. Note: the @MANAGED_DOMAIN@ type is not+    -- supported for email identity types.+    identityType :: Prelude.Maybe IdentityType,+    -- | Indicates whether or not you can send email from the identity.+    --+    -- An /identity/ is an email address or domain that you send email from.+    -- Before you can send email from an identity, you have to demostrate that+    -- you own the identity, and that you authorize Amazon SES to send email+    -- from that identity.+    sendingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The verification status of the identity. The status can be one of the+    -- following:+    --+    -- -   @PENDING@ – The verification process was initiated, but Amazon SES+    --     hasn\'t yet been able to verify the identity.+    --+    -- -   @SUCCESS@ – The verification process completed successfully.+    --+    -- -   @FAILED@ – The verification process failed.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+    --     from determining the verification status of the identity.+    --+    -- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+    --     the identity.+    verificationStatus :: Prelude.Maybe VerificationStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IdentityInfo' 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:+--+-- 'identityName', 'identityInfo_identityName' - The address or domain of the identity.+--+-- 'identityType', 'identityInfo_identityType' - The email identity type. Note: the @MANAGED_DOMAIN@ type is not+-- supported for email identity types.+--+-- 'sendingEnabled', 'identityInfo_sendingEnabled' - Indicates whether or not you can send email from the identity.+--+-- An /identity/ is an email address or domain that you send email from.+-- Before you can send email from an identity, you have to demostrate that+-- you own the identity, and that you authorize Amazon SES to send email+-- from that identity.+--+-- 'verificationStatus', 'identityInfo_verificationStatus' - The verification status of the identity. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet been able to verify the identity.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the verification status of the identity.+--+-- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+--     the identity.+newIdentityInfo ::+  IdentityInfo+newIdentityInfo =+  IdentityInfo'+    { identityName = Prelude.Nothing,+      identityType = Prelude.Nothing,+      sendingEnabled = Prelude.Nothing,+      verificationStatus = Prelude.Nothing+    }++-- | The address or domain of the identity.+identityInfo_identityName :: Lens.Lens' IdentityInfo (Prelude.Maybe Prelude.Text)+identityInfo_identityName = Lens.lens (\IdentityInfo' {identityName} -> identityName) (\s@IdentityInfo' {} a -> s {identityName = a} :: IdentityInfo)++-- | The email identity type. Note: the @MANAGED_DOMAIN@ type is not+-- supported for email identity types.+identityInfo_identityType :: Lens.Lens' IdentityInfo (Prelude.Maybe IdentityType)+identityInfo_identityType = Lens.lens (\IdentityInfo' {identityType} -> identityType) (\s@IdentityInfo' {} a -> s {identityType = a} :: IdentityInfo)++-- | Indicates whether or not you can send email from the identity.+--+-- An /identity/ is an email address or domain that you send email from.+-- Before you can send email from an identity, you have to demostrate that+-- you own the identity, and that you authorize Amazon SES to send email+-- from that identity.+identityInfo_sendingEnabled :: Lens.Lens' IdentityInfo (Prelude.Maybe Prelude.Bool)+identityInfo_sendingEnabled = Lens.lens (\IdentityInfo' {sendingEnabled} -> sendingEnabled) (\s@IdentityInfo' {} a -> s {sendingEnabled = a} :: IdentityInfo)++-- | The verification status of the identity. The status can be one of the+-- following:+--+-- -   @PENDING@ – The verification process was initiated, but Amazon SES+--     hasn\'t yet been able to verify the identity.+--+-- -   @SUCCESS@ – The verification process completed successfully.+--+-- -   @FAILED@ – The verification process failed.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon SES+--     from determining the verification status of the identity.+--+-- -   @NOT_STARTED@ – The verification process hasn\'t been initiated for+--     the identity.+identityInfo_verificationStatus :: Lens.Lens' IdentityInfo (Prelude.Maybe VerificationStatus)+identityInfo_verificationStatus = Lens.lens (\IdentityInfo' {verificationStatus} -> verificationStatus) (\s@IdentityInfo' {} a -> s {verificationStatus = a} :: IdentityInfo)++instance Data.FromJSON IdentityInfo where+  parseJSON =+    Data.withObject+      "IdentityInfo"+      ( \x ->+          IdentityInfo'+            Prelude.<$> (x Data..:? "IdentityName")+            Prelude.<*> (x Data..:? "IdentityType")+            Prelude.<*> (x Data..:? "SendingEnabled")+            Prelude.<*> (x Data..:? "VerificationStatus")+      )++instance Prelude.Hashable IdentityInfo where+  hashWithSalt _salt IdentityInfo' {..} =+    _salt+      `Prelude.hashWithSalt` identityName+      `Prelude.hashWithSalt` identityType+      `Prelude.hashWithSalt` sendingEnabled+      `Prelude.hashWithSalt` verificationStatus++instance Prelude.NFData IdentityInfo where+  rnf IdentityInfo' {..} =+    Prelude.rnf identityName+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf sendingEnabled+      `Prelude.seq` Prelude.rnf verificationStatus
+ gen/Amazonka/SESV2/Types/IdentityType.hs view
@@ -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.SESV2.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.SESV2.Types.IdentityType+  ( IdentityType+      ( ..,+        IdentityType_DOMAIN,+        IdentityType_EMAIL_ADDRESS,+        IdentityType_MANAGED_DOMAIN+      ),+  )+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_EMAIL_ADDRESS :: IdentityType+pattern IdentityType_EMAIL_ADDRESS = IdentityType' "EMAIL_ADDRESS"++pattern IdentityType_MANAGED_DOMAIN :: IdentityType+pattern IdentityType_MANAGED_DOMAIN = IdentityType' "MANAGED_DOMAIN"++{-# COMPLETE+  IdentityType_DOMAIN,+  IdentityType_EMAIL_ADDRESS,+  IdentityType_MANAGED_DOMAIN,+  IdentityType'+  #-}
+ gen/Amazonka/SESV2/Types/ImportDataSource.hs view
@@ -0,0 +1,98 @@+{-# 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.SESV2.Types.ImportDataSource+-- 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.SESV2.Types.ImportDataSource 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.SESV2.Types.DataFormat++-- | An object that contains details about the data source of the import job.+--+-- /See:/ 'newImportDataSource' smart constructor.+data ImportDataSource = ImportDataSource'+  { -- | An Amazon S3 URL in the format s3:\/\//\<bucket_name>/\//\<object>/.+    s3Url :: Prelude.Text,+    -- | The data format of the import job\'s data source.+    dataFormat :: DataFormat+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportDataSource' 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:+--+-- 's3Url', 'importDataSource_s3Url' - An Amazon S3 URL in the format s3:\/\//\<bucket_name>/\//\<object>/.+--+-- 'dataFormat', 'importDataSource_dataFormat' - The data format of the import job\'s data source.+newImportDataSource ::+  -- | 's3Url'+  Prelude.Text ->+  -- | 'dataFormat'+  DataFormat ->+  ImportDataSource+newImportDataSource pS3Url_ pDataFormat_ =+  ImportDataSource'+    { s3Url = pS3Url_,+      dataFormat = pDataFormat_+    }++-- | An Amazon S3 URL in the format s3:\/\//\<bucket_name>/\//\<object>/.+importDataSource_s3Url :: Lens.Lens' ImportDataSource Prelude.Text+importDataSource_s3Url = Lens.lens (\ImportDataSource' {s3Url} -> s3Url) (\s@ImportDataSource' {} a -> s {s3Url = a} :: ImportDataSource)++-- | The data format of the import job\'s data source.+importDataSource_dataFormat :: Lens.Lens' ImportDataSource DataFormat+importDataSource_dataFormat = Lens.lens (\ImportDataSource' {dataFormat} -> dataFormat) (\s@ImportDataSource' {} a -> s {dataFormat = a} :: ImportDataSource)++instance Data.FromJSON ImportDataSource where+  parseJSON =+    Data.withObject+      "ImportDataSource"+      ( \x ->+          ImportDataSource'+            Prelude.<$> (x Data..: "S3Url")+            Prelude.<*> (x Data..: "DataFormat")+      )++instance Prelude.Hashable ImportDataSource where+  hashWithSalt _salt ImportDataSource' {..} =+    _salt+      `Prelude.hashWithSalt` s3Url+      `Prelude.hashWithSalt` dataFormat++instance Prelude.NFData ImportDataSource where+  rnf ImportDataSource' {..} =+    Prelude.rnf s3Url+      `Prelude.seq` Prelude.rnf dataFormat++instance Data.ToJSON ImportDataSource where+  toJSON ImportDataSource' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("S3Url" Data..= s3Url),+            Prelude.Just ("DataFormat" Data..= dataFormat)+          ]+      )
+ gen/Amazonka/SESV2/Types/ImportDestination.hs view
@@ -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.SESV2.Types.ImportDestination+-- 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.SESV2.Types.ImportDestination 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.SESV2.Types.ContactListDestination+import Amazonka.SESV2.Types.SuppressionListDestination++-- | An object that contains details about the resource destination the+-- import job is going to target.+--+-- /See:/ 'newImportDestination' smart constructor.+data ImportDestination = ImportDestination'+  { -- | An object that contains the action of the import job towards a contact+    -- list.+    contactListDestination :: Prelude.Maybe ContactListDestination,+    -- | An object that contains the action of the import job towards suppression+    -- list.+    suppressionListDestination :: Prelude.Maybe SuppressionListDestination+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportDestination' 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:+--+-- 'contactListDestination', 'importDestination_contactListDestination' - An object that contains the action of the import job towards a contact+-- list.+--+-- 'suppressionListDestination', 'importDestination_suppressionListDestination' - An object that contains the action of the import job towards suppression+-- list.+newImportDestination ::+  ImportDestination+newImportDestination =+  ImportDestination'+    { contactListDestination =+        Prelude.Nothing,+      suppressionListDestination = Prelude.Nothing+    }++-- | An object that contains the action of the import job towards a contact+-- list.+importDestination_contactListDestination :: Lens.Lens' ImportDestination (Prelude.Maybe ContactListDestination)+importDestination_contactListDestination = Lens.lens (\ImportDestination' {contactListDestination} -> contactListDestination) (\s@ImportDestination' {} a -> s {contactListDestination = a} :: ImportDestination)++-- | An object that contains the action of the import job towards suppression+-- list.+importDestination_suppressionListDestination :: Lens.Lens' ImportDestination (Prelude.Maybe SuppressionListDestination)+importDestination_suppressionListDestination = Lens.lens (\ImportDestination' {suppressionListDestination} -> suppressionListDestination) (\s@ImportDestination' {} a -> s {suppressionListDestination = a} :: ImportDestination)++instance Data.FromJSON ImportDestination where+  parseJSON =+    Data.withObject+      "ImportDestination"+      ( \x ->+          ImportDestination'+            Prelude.<$> (x Data..:? "ContactListDestination")+            Prelude.<*> (x Data..:? "SuppressionListDestination")+      )++instance Prelude.Hashable ImportDestination where+  hashWithSalt _salt ImportDestination' {..} =+    _salt+      `Prelude.hashWithSalt` contactListDestination+      `Prelude.hashWithSalt` suppressionListDestination++instance Prelude.NFData ImportDestination where+  rnf ImportDestination' {..} =+    Prelude.rnf contactListDestination+      `Prelude.seq` Prelude.rnf suppressionListDestination++instance Data.ToJSON ImportDestination where+  toJSON ImportDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ContactListDestination" Data..=)+              Prelude.<$> contactListDestination,+            ("SuppressionListDestination" Data..=)+              Prelude.<$> suppressionListDestination+          ]+      )
+ gen/Amazonka/SESV2/Types/ImportDestinationType.hs view
@@ -0,0 +1,73 @@+{-# 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.SESV2.Types.ImportDestinationType+-- 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.SESV2.Types.ImportDestinationType+  ( ImportDestinationType+      ( ..,+        ImportDestinationType_CONTACT_LIST,+        ImportDestinationType_SUPPRESSION_LIST+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The destination of the import job, which can be used to list import jobs+-- that have a certain @ImportDestinationType@.+newtype ImportDestinationType = ImportDestinationType'+  { fromImportDestinationType ::+      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 ImportDestinationType_CONTACT_LIST :: ImportDestinationType+pattern ImportDestinationType_CONTACT_LIST = ImportDestinationType' "CONTACT_LIST"++pattern ImportDestinationType_SUPPRESSION_LIST :: ImportDestinationType+pattern ImportDestinationType_SUPPRESSION_LIST = ImportDestinationType' "SUPPRESSION_LIST"++{-# COMPLETE+  ImportDestinationType_CONTACT_LIST,+  ImportDestinationType_SUPPRESSION_LIST,+  ImportDestinationType'+  #-}
+ gen/Amazonka/SESV2/Types/ImportJobSummary.hs view
@@ -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.SESV2.Types.ImportJobSummary+-- 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.SESV2.Types.ImportJobSummary 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.SESV2.Types.ImportDestination+import Amazonka.SESV2.Types.JobStatus++-- | A summary of the import job.+--+-- /See:/ 'newImportJobSummary' smart constructor.+data ImportJobSummary = ImportJobSummary'+  { -- | The date and time when the import job was created.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The number of records that failed processing because of invalid input or+    -- other reasons.+    failedRecordsCount :: Prelude.Maybe Prelude.Int,+    importDestination :: Prelude.Maybe ImportDestination,+    jobId :: Prelude.Maybe Prelude.Text,+    jobStatus :: Prelude.Maybe JobStatus,+    -- | The current number of records processed.+    processedRecordsCount :: Prelude.Maybe Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ImportJobSummary' 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', 'importJobSummary_createdTimestamp' - The date and time when the import job was created.+--+-- 'failedRecordsCount', 'importJobSummary_failedRecordsCount' - The number of records that failed processing because of invalid input or+-- other reasons.+--+-- 'importDestination', 'importJobSummary_importDestination' - Undocumented member.+--+-- 'jobId', 'importJobSummary_jobId' - Undocumented member.+--+-- 'jobStatus', 'importJobSummary_jobStatus' - Undocumented member.+--+-- 'processedRecordsCount', 'importJobSummary_processedRecordsCount' - The current number of records processed.+newImportJobSummary ::+  ImportJobSummary+newImportJobSummary =+  ImportJobSummary'+    { createdTimestamp =+        Prelude.Nothing,+      failedRecordsCount = Prelude.Nothing,+      importDestination = Prelude.Nothing,+      jobId = Prelude.Nothing,+      jobStatus = Prelude.Nothing,+      processedRecordsCount = Prelude.Nothing+    }++-- | The date and time when the import job was created.+importJobSummary_createdTimestamp :: Lens.Lens' ImportJobSummary (Prelude.Maybe Prelude.UTCTime)+importJobSummary_createdTimestamp = Lens.lens (\ImportJobSummary' {createdTimestamp} -> createdTimestamp) (\s@ImportJobSummary' {} a -> s {createdTimestamp = a} :: ImportJobSummary) Prelude.. Lens.mapping Data._Time++-- | The number of records that failed processing because of invalid input or+-- other reasons.+importJobSummary_failedRecordsCount :: Lens.Lens' ImportJobSummary (Prelude.Maybe Prelude.Int)+importJobSummary_failedRecordsCount = Lens.lens (\ImportJobSummary' {failedRecordsCount} -> failedRecordsCount) (\s@ImportJobSummary' {} a -> s {failedRecordsCount = a} :: ImportJobSummary)++-- | Undocumented member.+importJobSummary_importDestination :: Lens.Lens' ImportJobSummary (Prelude.Maybe ImportDestination)+importJobSummary_importDestination = Lens.lens (\ImportJobSummary' {importDestination} -> importDestination) (\s@ImportJobSummary' {} a -> s {importDestination = a} :: ImportJobSummary)++-- | Undocumented member.+importJobSummary_jobId :: Lens.Lens' ImportJobSummary (Prelude.Maybe Prelude.Text)+importJobSummary_jobId = Lens.lens (\ImportJobSummary' {jobId} -> jobId) (\s@ImportJobSummary' {} a -> s {jobId = a} :: ImportJobSummary)++-- | Undocumented member.+importJobSummary_jobStatus :: Lens.Lens' ImportJobSummary (Prelude.Maybe JobStatus)+importJobSummary_jobStatus = Lens.lens (\ImportJobSummary' {jobStatus} -> jobStatus) (\s@ImportJobSummary' {} a -> s {jobStatus = a} :: ImportJobSummary)++-- | The current number of records processed.+importJobSummary_processedRecordsCount :: Lens.Lens' ImportJobSummary (Prelude.Maybe Prelude.Int)+importJobSummary_processedRecordsCount = Lens.lens (\ImportJobSummary' {processedRecordsCount} -> processedRecordsCount) (\s@ImportJobSummary' {} a -> s {processedRecordsCount = a} :: ImportJobSummary)++instance Data.FromJSON ImportJobSummary where+  parseJSON =+    Data.withObject+      "ImportJobSummary"+      ( \x ->+          ImportJobSummary'+            Prelude.<$> (x Data..:? "CreatedTimestamp")+            Prelude.<*> (x Data..:? "FailedRecordsCount")+            Prelude.<*> (x Data..:? "ImportDestination")+            Prelude.<*> (x Data..:? "JobId")+            Prelude.<*> (x Data..:? "JobStatus")+            Prelude.<*> (x Data..:? "ProcessedRecordsCount")+      )++instance Prelude.Hashable ImportJobSummary where+  hashWithSalt _salt ImportJobSummary' {..} =+    _salt+      `Prelude.hashWithSalt` createdTimestamp+      `Prelude.hashWithSalt` failedRecordsCount+      `Prelude.hashWithSalt` importDestination+      `Prelude.hashWithSalt` jobId+      `Prelude.hashWithSalt` jobStatus+      `Prelude.hashWithSalt` processedRecordsCount++instance Prelude.NFData ImportJobSummary where+  rnf ImportJobSummary' {..} =+    Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf failedRecordsCount+      `Prelude.seq` Prelude.rnf importDestination+      `Prelude.seq` Prelude.rnf jobId+      `Prelude.seq` Prelude.rnf jobStatus+      `Prelude.seq` Prelude.rnf processedRecordsCount
+ gen/Amazonka/SESV2/Types/InboxPlacementTrackingOption.hs view
@@ -0,0 +1,103 @@+{-# 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.SESV2.Types.InboxPlacementTrackingOption+-- 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.SESV2.Types.InboxPlacementTrackingOption 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++-- | An object that contains information about the inbox placement data+-- settings for a verified domain that’s associated with your Amazon Web+-- Services account. This data is available only if you enabled the+-- Deliverability dashboard for the domain.+--+-- /See:/ 'newInboxPlacementTrackingOption' smart constructor.+data InboxPlacementTrackingOption = InboxPlacementTrackingOption'+  { -- | Specifies whether inbox placement data is being tracked for the domain.+    global :: Prelude.Maybe Prelude.Bool,+    -- | An array of strings, one for each major email provider that the inbox+    -- placement data applies to.+    trackedIsps :: Prelude.Maybe [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'InboxPlacementTrackingOption' 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:+--+-- 'global', 'inboxPlacementTrackingOption_global' - Specifies whether inbox placement data is being tracked for the domain.+--+-- 'trackedIsps', 'inboxPlacementTrackingOption_trackedIsps' - An array of strings, one for each major email provider that the inbox+-- placement data applies to.+newInboxPlacementTrackingOption ::+  InboxPlacementTrackingOption+newInboxPlacementTrackingOption =+  InboxPlacementTrackingOption'+    { global =+        Prelude.Nothing,+      trackedIsps = Prelude.Nothing+    }++-- | Specifies whether inbox placement data is being tracked for the domain.+inboxPlacementTrackingOption_global :: Lens.Lens' InboxPlacementTrackingOption (Prelude.Maybe Prelude.Bool)+inboxPlacementTrackingOption_global = Lens.lens (\InboxPlacementTrackingOption' {global} -> global) (\s@InboxPlacementTrackingOption' {} a -> s {global = a} :: InboxPlacementTrackingOption)++-- | An array of strings, one for each major email provider that the inbox+-- placement data applies to.+inboxPlacementTrackingOption_trackedIsps :: Lens.Lens' InboxPlacementTrackingOption (Prelude.Maybe [Prelude.Text])+inboxPlacementTrackingOption_trackedIsps = Lens.lens (\InboxPlacementTrackingOption' {trackedIsps} -> trackedIsps) (\s@InboxPlacementTrackingOption' {} a -> s {trackedIsps = a} :: InboxPlacementTrackingOption) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON InboxPlacementTrackingOption where+  parseJSON =+    Data.withObject+      "InboxPlacementTrackingOption"+      ( \x ->+          InboxPlacementTrackingOption'+            Prelude.<$> (x Data..:? "Global")+            Prelude.<*> (x Data..:? "TrackedIsps" Data..!= Prelude.mempty)+      )++instance+  Prelude.Hashable+    InboxPlacementTrackingOption+  where+  hashWithSalt _salt InboxPlacementTrackingOption' {..} =+    _salt+      `Prelude.hashWithSalt` global+      `Prelude.hashWithSalt` trackedIsps++instance Prelude.NFData InboxPlacementTrackingOption where+  rnf InboxPlacementTrackingOption' {..} =+    Prelude.rnf global+      `Prelude.seq` Prelude.rnf trackedIsps++instance Data.ToJSON InboxPlacementTrackingOption where+  toJSON InboxPlacementTrackingOption' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Global" Data..=) Prelude.<$> global,+            ("TrackedIsps" Data..=) Prelude.<$> trackedIsps+          ]+      )
+ gen/Amazonka/SESV2/Types/IspPlacement.hs view
@@ -0,0 +1,89 @@+{-# 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.SESV2.Types.IspPlacement+-- 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.SESV2.Types.IspPlacement 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.SESV2.Types.PlacementStatistics++-- | An object that describes how email sent during the predictive inbox+-- placement test was handled by a certain email provider.+--+-- /See:/ 'newIspPlacement' smart constructor.+data IspPlacement = IspPlacement'+  { -- | The name of the email provider that the inbox placement data applies to.+    ispName :: Prelude.Maybe Prelude.Text,+    -- | An object that contains inbox placement metrics for a specific email+    -- provider.+    placementStatistics :: Prelude.Maybe PlacementStatistics+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'IspPlacement' 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:+--+-- 'ispName', 'ispPlacement_ispName' - The name of the email provider that the inbox placement data applies to.+--+-- 'placementStatistics', 'ispPlacement_placementStatistics' - An object that contains inbox placement metrics for a specific email+-- provider.+newIspPlacement ::+  IspPlacement+newIspPlacement =+  IspPlacement'+    { ispName = Prelude.Nothing,+      placementStatistics = Prelude.Nothing+    }++-- | The name of the email provider that the inbox placement data applies to.+ispPlacement_ispName :: Lens.Lens' IspPlacement (Prelude.Maybe Prelude.Text)+ispPlacement_ispName = Lens.lens (\IspPlacement' {ispName} -> ispName) (\s@IspPlacement' {} a -> s {ispName = a} :: IspPlacement)++-- | An object that contains inbox placement metrics for a specific email+-- provider.+ispPlacement_placementStatistics :: Lens.Lens' IspPlacement (Prelude.Maybe PlacementStatistics)+ispPlacement_placementStatistics = Lens.lens (\IspPlacement' {placementStatistics} -> placementStatistics) (\s@IspPlacement' {} a -> s {placementStatistics = a} :: IspPlacement)++instance Data.FromJSON IspPlacement where+  parseJSON =+    Data.withObject+      "IspPlacement"+      ( \x ->+          IspPlacement'+            Prelude.<$> (x Data..:? "IspName")+            Prelude.<*> (x Data..:? "PlacementStatistics")+      )++instance Prelude.Hashable IspPlacement where+  hashWithSalt _salt IspPlacement' {..} =+    _salt+      `Prelude.hashWithSalt` ispName+      `Prelude.hashWithSalt` placementStatistics++instance Prelude.NFData IspPlacement where+  rnf IspPlacement' {..} =+    Prelude.rnf ispName+      `Prelude.seq` Prelude.rnf placementStatistics
+ gen/Amazonka/SESV2/Types/JobStatus.hs view
@@ -0,0 +1,82 @@+{-# 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.SESV2.Types.JobStatus+-- 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.SESV2.Types.JobStatus+  ( JobStatus+      ( ..,+        JobStatus_COMPLETED,+        JobStatus_CREATED,+        JobStatus_FAILED,+        JobStatus_PROCESSING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The status of the import job.+newtype JobStatus = JobStatus'+  { fromJobStatus ::+      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 JobStatus_COMPLETED :: JobStatus+pattern JobStatus_COMPLETED = JobStatus' "COMPLETED"++pattern JobStatus_CREATED :: JobStatus+pattern JobStatus_CREATED = JobStatus' "CREATED"++pattern JobStatus_FAILED :: JobStatus+pattern JobStatus_FAILED = JobStatus' "FAILED"++pattern JobStatus_PROCESSING :: JobStatus+pattern JobStatus_PROCESSING = JobStatus' "PROCESSING"++{-# COMPLETE+  JobStatus_COMPLETED,+  JobStatus_CREATED,+  JobStatus_FAILED,+  JobStatus_PROCESSING,+  JobStatus'+  #-}
+ gen/Amazonka/SESV2/Types/KinesisFirehoseDestination.hs view
@@ -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.SESV2.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.SESV2.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++-- | An object that defines an Amazon Kinesis Data Firehose destination for+-- email events. You can use Amazon Kinesis Data Firehose to stream data to+-- other services, such as Amazon S3 and Amazon Redshift.+--+-- /See:/ 'newKinesisFirehoseDestination' smart constructor.+data KinesisFirehoseDestination = KinesisFirehoseDestination'+  { -- | The Amazon Resource Name (ARN) of the IAM role that the Amazon SES API+    -- v2 uses to send email events to the Amazon Kinesis Data Firehose stream.+    iamRoleArn :: Prelude.Text,+    -- | The Amazon Resource Name (ARN) of the Amazon Kinesis Data Firehose+    -- stream that the Amazon SES API v2 sends email events 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 Amazon Resource Name (ARN) of the IAM role that the Amazon SES API+-- v2 uses to send email events to the Amazon Kinesis Data Firehose stream.+--+-- 'deliveryStreamArn', 'kinesisFirehoseDestination_deliveryStreamArn' - The Amazon Resource Name (ARN) of the Amazon Kinesis Data Firehose+-- stream that the Amazon SES API v2 sends email events to.+newKinesisFirehoseDestination ::+  -- | 'iamRoleArn'+  Prelude.Text ->+  -- | 'deliveryStreamArn'+  Prelude.Text ->+  KinesisFirehoseDestination+newKinesisFirehoseDestination+  pIamRoleArn_+  pDeliveryStreamArn_ =+    KinesisFirehoseDestination'+      { iamRoleArn =+          pIamRoleArn_,+        deliveryStreamArn = pDeliveryStreamArn_+      }++-- | The Amazon Resource Name (ARN) of the IAM role that the Amazon SES API+-- v2 uses to send email events to the Amazon Kinesis Data Firehose stream.+kinesisFirehoseDestination_iamRoleArn :: Lens.Lens' KinesisFirehoseDestination Prelude.Text+kinesisFirehoseDestination_iamRoleArn = Lens.lens (\KinesisFirehoseDestination' {iamRoleArn} -> iamRoleArn) (\s@KinesisFirehoseDestination' {} a -> s {iamRoleArn = a} :: KinesisFirehoseDestination)++-- | The Amazon Resource Name (ARN) of the Amazon Kinesis Data Firehose+-- stream that the Amazon SES API v2 sends email events to.+kinesisFirehoseDestination_deliveryStreamArn :: Lens.Lens' KinesisFirehoseDestination Prelude.Text+kinesisFirehoseDestination_deliveryStreamArn = Lens.lens (\KinesisFirehoseDestination' {deliveryStreamArn} -> deliveryStreamArn) (\s@KinesisFirehoseDestination' {} a -> s {deliveryStreamArn = a} :: KinesisFirehoseDestination)++instance Data.FromJSON KinesisFirehoseDestination where+  parseJSON =+    Data.withObject+      "KinesisFirehoseDestination"+      ( \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.ToJSON KinesisFirehoseDestination where+  toJSON KinesisFirehoseDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("IamRoleArn" Data..= iamRoleArn),+            Prelude.Just+              ("DeliveryStreamArn" Data..= deliveryStreamArn)+          ]+      )
+ gen/Amazonka/SESV2/Types/ListContactsFilter.hs view
@@ -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.SESV2.Types.ListContactsFilter+-- 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.SESV2.Types.ListContactsFilter 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.SESV2.Types.SubscriptionStatus+import Amazonka.SESV2.Types.TopicFilter++-- | A filter that can be applied to a list of contacts.+--+-- /See:/ 'newListContactsFilter' smart constructor.+data ListContactsFilter = ListContactsFilter'+  { -- | The status by which you are filtering: @OPT_IN@ or @OPT_OUT@.+    filteredStatus :: Prelude.Maybe SubscriptionStatus,+    -- | Used for filtering by a specific topic preference.+    topicFilter :: Prelude.Maybe TopicFilter+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListContactsFilter' 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:+--+-- 'filteredStatus', 'listContactsFilter_filteredStatus' - The status by which you are filtering: @OPT_IN@ or @OPT_OUT@.+--+-- 'topicFilter', 'listContactsFilter_topicFilter' - Used for filtering by a specific topic preference.+newListContactsFilter ::+  ListContactsFilter+newListContactsFilter =+  ListContactsFilter'+    { filteredStatus =+        Prelude.Nothing,+      topicFilter = Prelude.Nothing+    }++-- | The status by which you are filtering: @OPT_IN@ or @OPT_OUT@.+listContactsFilter_filteredStatus :: Lens.Lens' ListContactsFilter (Prelude.Maybe SubscriptionStatus)+listContactsFilter_filteredStatus = Lens.lens (\ListContactsFilter' {filteredStatus} -> filteredStatus) (\s@ListContactsFilter' {} a -> s {filteredStatus = a} :: ListContactsFilter)++-- | Used for filtering by a specific topic preference.+listContactsFilter_topicFilter :: Lens.Lens' ListContactsFilter (Prelude.Maybe TopicFilter)+listContactsFilter_topicFilter = Lens.lens (\ListContactsFilter' {topicFilter} -> topicFilter) (\s@ListContactsFilter' {} a -> s {topicFilter = a} :: ListContactsFilter)++instance Prelude.Hashable ListContactsFilter where+  hashWithSalt _salt ListContactsFilter' {..} =+    _salt+      `Prelude.hashWithSalt` filteredStatus+      `Prelude.hashWithSalt` topicFilter++instance Prelude.NFData ListContactsFilter where+  rnf ListContactsFilter' {..} =+    Prelude.rnf filteredStatus+      `Prelude.seq` Prelude.rnf topicFilter++instance Data.ToJSON ListContactsFilter where+  toJSON ListContactsFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("FilteredStatus" Data..=)+              Prelude.<$> filteredStatus,+            ("TopicFilter" Data..=) Prelude.<$> topicFilter+          ]+      )
+ gen/Amazonka/SESV2/Types/ListManagementOptions.hs view
@@ -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.SESV2.Types.ListManagementOptions+-- 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.SESV2.Types.ListManagementOptions 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++-- | An object used to specify a list or topic to which an email belongs,+-- which will be used when a contact chooses to unsubscribe.+--+-- /See:/ 'newListManagementOptions' smart constructor.+data ListManagementOptions = ListManagementOptions'+  { -- | The name of the topic.+    topicName :: Prelude.Maybe Prelude.Text,+    -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ListManagementOptions' 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:+--+-- 'topicName', 'listManagementOptions_topicName' - The name of the topic.+--+-- 'contactListName', 'listManagementOptions_contactListName' - The name of the contact list.+newListManagementOptions ::+  -- | 'contactListName'+  Prelude.Text ->+  ListManagementOptions+newListManagementOptions pContactListName_ =+  ListManagementOptions'+    { topicName = Prelude.Nothing,+      contactListName = pContactListName_+    }++-- | The name of the topic.+listManagementOptions_topicName :: Lens.Lens' ListManagementOptions (Prelude.Maybe Prelude.Text)+listManagementOptions_topicName = Lens.lens (\ListManagementOptions' {topicName} -> topicName) (\s@ListManagementOptions' {} a -> s {topicName = a} :: ListManagementOptions)++-- | The name of the contact list.+listManagementOptions_contactListName :: Lens.Lens' ListManagementOptions Prelude.Text+listManagementOptions_contactListName = Lens.lens (\ListManagementOptions' {contactListName} -> contactListName) (\s@ListManagementOptions' {} a -> s {contactListName = a} :: ListManagementOptions)++instance Prelude.Hashable ListManagementOptions where+  hashWithSalt _salt ListManagementOptions' {..} =+    _salt+      `Prelude.hashWithSalt` topicName+      `Prelude.hashWithSalt` contactListName++instance Prelude.NFData ListManagementOptions where+  rnf ListManagementOptions' {..} =+    Prelude.rnf topicName+      `Prelude.seq` Prelude.rnf contactListName++instance Data.ToJSON ListManagementOptions where+  toJSON ListManagementOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TopicName" Data..=) Prelude.<$> topicName,+            Prelude.Just+              ("ContactListName" Data..= contactListName)+          ]+      )
+ gen/Amazonka/SESV2/Types/ListRecommendationsFilterKey.hs view
@@ -0,0 +1,95 @@+{-# 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.SESV2.Types.ListRecommendationsFilterKey+-- 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.SESV2.Types.ListRecommendationsFilterKey+  ( ListRecommendationsFilterKey+      ( ..,+        ListRecommendationsFilterKey_IMPACT,+        ListRecommendationsFilterKey_RESOURCE_ARN,+        ListRecommendationsFilterKey_STATUS,+        ListRecommendationsFilterKey_TYPE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The @ListRecommendations@ filter type. This can be one of the following:+--+-- -   @TYPE@ – The recommendation type, with values like @DKIM@, @SPF@ or+--     @DMARC@.+--+-- -   @IMPACT@ – The recommendation impact, with values like @HIGH@ or+--     @LOW@.+--+-- -   @STATUS@ – The recommendation status, with values like @OPEN@ or+--     @FIXED@.+--+-- -   @RESOURCE_ARN@ – The resource affected by the recommendation, with+--     values like+--     @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.+newtype ListRecommendationsFilterKey = ListRecommendationsFilterKey'+  { fromListRecommendationsFilterKey ::+      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 ListRecommendationsFilterKey_IMPACT :: ListRecommendationsFilterKey+pattern ListRecommendationsFilterKey_IMPACT = ListRecommendationsFilterKey' "IMPACT"++pattern ListRecommendationsFilterKey_RESOURCE_ARN :: ListRecommendationsFilterKey+pattern ListRecommendationsFilterKey_RESOURCE_ARN = ListRecommendationsFilterKey' "RESOURCE_ARN"++pattern ListRecommendationsFilterKey_STATUS :: ListRecommendationsFilterKey+pattern ListRecommendationsFilterKey_STATUS = ListRecommendationsFilterKey' "STATUS"++pattern ListRecommendationsFilterKey_TYPE :: ListRecommendationsFilterKey+pattern ListRecommendationsFilterKey_TYPE = ListRecommendationsFilterKey' "TYPE"++{-# COMPLETE+  ListRecommendationsFilterKey_IMPACT,+  ListRecommendationsFilterKey_RESOURCE_ARN,+  ListRecommendationsFilterKey_STATUS,+  ListRecommendationsFilterKey_TYPE,+  ListRecommendationsFilterKey'+  #-}
+ gen/Amazonka/SESV2/Types/MailFromAttributes.hs view
@@ -0,0 +1,174 @@+{-# 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.SESV2.Types.MailFromAttributes+-- 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.SESV2.Types.MailFromAttributes 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.SESV2.Types.BehaviorOnMxFailure+import Amazonka.SESV2.Types.MailFromDomainStatus++-- | A list of attributes that are associated with a MAIL FROM domain.+--+-- /See:/ 'newMailFromAttributes' smart constructor.+data MailFromAttributes = MailFromAttributes'+  { -- | The name of a domain that an email identity uses as a custom MAIL FROM+    -- domain.+    mailFromDomain :: Prelude.Text,+    -- | The status of the MAIL FROM domain. This status can have the following+    -- values:+    --+    -- -   @PENDING@ – Amazon SES hasn\'t started searching for the MX record+    --     yet.+    --+    -- -   @SUCCESS@ – Amazon SES detected the required MX record for the MAIL+    --     FROM domain.+    --+    -- -   @FAILED@ – Amazon SES can\'t find the required MX record, or the+    --     record no longer exists.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+    --     Amazon SES from determining the status of the MAIL FROM domain.+    mailFromDomainStatus :: MailFromDomainStatus,+    -- | The action to take if the required MX record can\'t be found when you+    -- send an email. When you set this value to @USE_DEFAULT_VALUE@, the mail+    -- is sent using /amazonses.com/ as the MAIL FROM domain. When you set this+    -- value to @REJECT_MESSAGE@, the Amazon SES API v2 returns a+    -- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+    -- email.+    --+    -- These behaviors are taken when the custom MAIL FROM domain configuration+    -- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+    behaviorOnMxFailure :: BehaviorOnMxFailure+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MailFromAttributes' 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', 'mailFromAttributes_mailFromDomain' - The name of a domain that an email identity uses as a custom MAIL FROM+-- domain.+--+-- 'mailFromDomainStatus', 'mailFromAttributes_mailFromDomainStatus' - The status of the MAIL FROM domain. This status can have the following+-- values:+--+-- -   @PENDING@ – Amazon SES hasn\'t started searching for the MX record+--     yet.+--+-- -   @SUCCESS@ – Amazon SES detected the required MX record for the MAIL+--     FROM domain.+--+-- -   @FAILED@ – Amazon SES can\'t find the required MX record, or the+--     record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon SES from determining the status of the MAIL FROM domain.+--+-- 'behaviorOnMxFailure', 'mailFromAttributes_behaviorOnMxFailure' - The action to take if the required MX record can\'t be found when you+-- send an email. When you set this value to @USE_DEFAULT_VALUE@, the mail+-- is sent using /amazonses.com/ as the MAIL FROM domain. When you set this+-- value to @REJECT_MESSAGE@, the Amazon SES API v2 returns a+-- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+-- email.+--+-- These behaviors are taken when the custom MAIL FROM domain configuration+-- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+newMailFromAttributes ::+  -- | 'mailFromDomain'+  Prelude.Text ->+  -- | 'mailFromDomainStatus'+  MailFromDomainStatus ->+  -- | 'behaviorOnMxFailure'+  BehaviorOnMxFailure ->+  MailFromAttributes+newMailFromAttributes+  pMailFromDomain_+  pMailFromDomainStatus_+  pBehaviorOnMxFailure_ =+    MailFromAttributes'+      { mailFromDomain =+          pMailFromDomain_,+        mailFromDomainStatus = pMailFromDomainStatus_,+        behaviorOnMxFailure = pBehaviorOnMxFailure_+      }++-- | The name of a domain that an email identity uses as a custom MAIL FROM+-- domain.+mailFromAttributes_mailFromDomain :: Lens.Lens' MailFromAttributes Prelude.Text+mailFromAttributes_mailFromDomain = Lens.lens (\MailFromAttributes' {mailFromDomain} -> mailFromDomain) (\s@MailFromAttributes' {} a -> s {mailFromDomain = a} :: MailFromAttributes)++-- | The status of the MAIL FROM domain. This status can have the following+-- values:+--+-- -   @PENDING@ – Amazon SES hasn\'t started searching for the MX record+--     yet.+--+-- -   @SUCCESS@ – Amazon SES detected the required MX record for the MAIL+--     FROM domain.+--+-- -   @FAILED@ – Amazon SES can\'t find the required MX record, or the+--     record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon SES from determining the status of the MAIL FROM domain.+mailFromAttributes_mailFromDomainStatus :: Lens.Lens' MailFromAttributes MailFromDomainStatus+mailFromAttributes_mailFromDomainStatus = Lens.lens (\MailFromAttributes' {mailFromDomainStatus} -> mailFromDomainStatus) (\s@MailFromAttributes' {} a -> s {mailFromDomainStatus = a} :: MailFromAttributes)++-- | The action to take if the required MX record can\'t be found when you+-- send an email. When you set this value to @USE_DEFAULT_VALUE@, the mail+-- is sent using /amazonses.com/ as the MAIL FROM domain. When you set this+-- value to @REJECT_MESSAGE@, the Amazon SES API v2 returns a+-- @MailFromDomainNotVerified@ error, and doesn\'t attempt to deliver the+-- email.+--+-- These behaviors are taken when the custom MAIL FROM domain configuration+-- is in the @Pending@, @Failed@, and @TemporaryFailure@ states.+mailFromAttributes_behaviorOnMxFailure :: Lens.Lens' MailFromAttributes BehaviorOnMxFailure+mailFromAttributes_behaviorOnMxFailure = Lens.lens (\MailFromAttributes' {behaviorOnMxFailure} -> behaviorOnMxFailure) (\s@MailFromAttributes' {} a -> s {behaviorOnMxFailure = a} :: MailFromAttributes)++instance Data.FromJSON MailFromAttributes where+  parseJSON =+    Data.withObject+      "MailFromAttributes"+      ( \x ->+          MailFromAttributes'+            Prelude.<$> (x Data..: "MailFromDomain")+            Prelude.<*> (x Data..: "MailFromDomainStatus")+            Prelude.<*> (x Data..: "BehaviorOnMxFailure")+      )++instance Prelude.Hashable MailFromAttributes where+  hashWithSalt _salt MailFromAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` mailFromDomain+      `Prelude.hashWithSalt` mailFromDomainStatus+      `Prelude.hashWithSalt` behaviorOnMxFailure++instance Prelude.NFData MailFromAttributes where+  rnf MailFromAttributes' {..} =+    Prelude.rnf mailFromDomain+      `Prelude.seq` Prelude.rnf mailFromDomainStatus+      `Prelude.seq` Prelude.rnf behaviorOnMxFailure
+ gen/Amazonka/SESV2/Types/MailFromDomainStatus.hs view
@@ -0,0 +1,95 @@+{-# 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.SESV2.Types.MailFromDomainStatus+-- 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.SESV2.Types.MailFromDomainStatus+  ( MailFromDomainStatus+      ( ..,+        MailFromDomainStatus_FAILED,+        MailFromDomainStatus_PENDING,+        MailFromDomainStatus_SUCCESS,+        MailFromDomainStatus_TEMPORARY_FAILURE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The status of the MAIL FROM domain. This status can have the following+-- values:+--+-- -   @PENDING@ – Amazon SES hasn\'t started searching for the MX record+--     yet.+--+-- -   @SUCCESS@ – Amazon SES detected the required MX record for the MAIL+--     FROM domain.+--+-- -   @FAILED@ – Amazon SES can\'t find the required MX record, or the+--     record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon SES from determining the status of the MAIL FROM domain.+newtype MailFromDomainStatus = MailFromDomainStatus'+  { fromMailFromDomainStatus ::+      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 MailFromDomainStatus_FAILED :: MailFromDomainStatus+pattern MailFromDomainStatus_FAILED = MailFromDomainStatus' "FAILED"++pattern MailFromDomainStatus_PENDING :: MailFromDomainStatus+pattern MailFromDomainStatus_PENDING = MailFromDomainStatus' "PENDING"++pattern MailFromDomainStatus_SUCCESS :: MailFromDomainStatus+pattern MailFromDomainStatus_SUCCESS = MailFromDomainStatus' "SUCCESS"++pattern MailFromDomainStatus_TEMPORARY_FAILURE :: MailFromDomainStatus+pattern MailFromDomainStatus_TEMPORARY_FAILURE = MailFromDomainStatus' "TEMPORARY_FAILURE"++{-# COMPLETE+  MailFromDomainStatus_FAILED,+  MailFromDomainStatus_PENDING,+  MailFromDomainStatus_SUCCESS,+  MailFromDomainStatus_TEMPORARY_FAILURE,+  MailFromDomainStatus'+  #-}
+ gen/Amazonka/SESV2/Types/MailType.hs view
@@ -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.SESV2.Types.MailType+-- 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.SESV2.Types.MailType+  ( MailType+      ( ..,+        MailType_MARKETING,+        MailType_TRANSACTIONAL+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MailType = MailType'+  { fromMailType ::+      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 MailType_MARKETING :: MailType+pattern MailType_MARKETING = MailType' "MARKETING"++pattern MailType_TRANSACTIONAL :: MailType+pattern MailType_TRANSACTIONAL = MailType' "TRANSACTIONAL"++{-# COMPLETE+  MailType_MARKETING,+  MailType_TRANSACTIONAL,+  MailType'+  #-}
+ gen/Amazonka/SESV2/Types/Message.hs view
@@ -0,0 +1,98 @@+{-# 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.SESV2.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.SESV2.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.SESV2.Types.Body+import Amazonka.SESV2.Types.Content++-- | Represents the email message that you\'re sending. The @Message@ object+-- consists of a subject line and a message body.+--+-- /See:/ 'newMessage' smart constructor.+data Message = Message'+  { -- | The subject line of the email. The subject line can only contain 7-bit+    -- ASCII characters. However, you can specify non-ASCII characters in the+    -- subject line by using encoded-word syntax, as described in+    -- <https://tools.ietf.org/html/rfc2047 RFC 2047>.+    subject :: Content,+    -- | The body of the message. You can specify an HTML version of the message,+    -- a text-only version of the message, or both.+    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 line of the email. The subject line can only contain 7-bit+-- ASCII characters. However, you can specify non-ASCII characters in the+-- subject line by using encoded-word syntax, as described in+-- <https://tools.ietf.org/html/rfc2047 RFC 2047>.+--+-- 'body', 'message_body' - The body of the message. You can specify an HTML version of the message,+-- a text-only version of the message, or both.+newMessage ::+  -- | 'subject'+  Content ->+  -- | 'body'+  Body ->+  Message+newMessage pSubject_ pBody_ =+  Message' {subject = pSubject_, body = pBody_}++-- | The subject line of the email. The subject line can only contain 7-bit+-- ASCII characters. However, you can specify non-ASCII characters in the+-- subject line by using encoded-word syntax, as described in+-- <https://tools.ietf.org/html/rfc2047 RFC 2047>.+message_subject :: Lens.Lens' Message Content+message_subject = Lens.lens (\Message' {subject} -> subject) (\s@Message' {} a -> s {subject = a} :: Message)++-- | The body of the message. You can specify an HTML version of the message,+-- a text-only version of the message, or both.+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.ToJSON Message where+  toJSON Message' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Subject" Data..= subject),+            Prelude.Just ("Body" Data..= body)+          ]+      )
+ gen/Amazonka/SESV2/Types/MessageTag.hs view
@@ -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.SESV2.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.SESV2.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 apply to an email. You can+-- use message tags when you publish email sending events.+--+-- /See:/ 'newMessageTag' smart constructor.+data MessageTag = MessageTag'+  { -- | The name of the message tag. The message tag name has to meet the+    -- following criteria:+    --+    -- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+    --     underscores (_), or dashes (-).+    --+    -- -   It can contain no more than 256 characters.+    name :: Prelude.Text,+    -- | The value of the message tag. The message tag value has to meet the+    -- following criteria:+    --+    -- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+    --     underscores (_), or dashes (-).+    --+    -- -   It can contain no more 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 message tag. The message tag name has to meet the+-- following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more than 256 characters.+--+-- 'value', 'messageTag_value' - The value of the message tag. The message tag value has to meet the+-- following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more than 256 characters.+newMessageTag ::+  -- | 'name'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  MessageTag+newMessageTag pName_ pValue_ =+  MessageTag' {name = pName_, value = pValue_}++-- | The name of the message tag. The message tag name has to meet the+-- following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more 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 message tag. The message tag value has to meet the+-- following criteria:+--+-- -   It can only contain ASCII letters (a–z, A–Z), numbers (0–9),+--     underscores (_), or dashes (-).+--+-- -   It can contain no more 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.ToJSON MessageTag where+  toJSON MessageTag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Name" Data..= name),+            Prelude.Just ("Value" Data..= value)+          ]+      )
+ gen/Amazonka/SESV2/Types/Metric.hs view
@@ -0,0 +1,108 @@+{-# 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.SESV2.Types.Metric+-- 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.SESV2.Types.Metric+  ( Metric+      ( ..,+        Metric_CLICK,+        Metric_COMPLAINT,+        Metric_DELIVERY,+        Metric_DELIVERY_CLICK,+        Metric_DELIVERY_COMPLAINT,+        Metric_DELIVERY_OPEN,+        Metric_OPEN,+        Metric_PERMANENT_BOUNCE,+        Metric_SEND,+        Metric_TRANSIENT_BOUNCE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype Metric = Metric' {fromMetric :: 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 Metric_CLICK :: Metric+pattern Metric_CLICK = Metric' "CLICK"++pattern Metric_COMPLAINT :: Metric+pattern Metric_COMPLAINT = Metric' "COMPLAINT"++pattern Metric_DELIVERY :: Metric+pattern Metric_DELIVERY = Metric' "DELIVERY"++pattern Metric_DELIVERY_CLICK :: Metric+pattern Metric_DELIVERY_CLICK = Metric' "DELIVERY_CLICK"++pattern Metric_DELIVERY_COMPLAINT :: Metric+pattern Metric_DELIVERY_COMPLAINT = Metric' "DELIVERY_COMPLAINT"++pattern Metric_DELIVERY_OPEN :: Metric+pattern Metric_DELIVERY_OPEN = Metric' "DELIVERY_OPEN"++pattern Metric_OPEN :: Metric+pattern Metric_OPEN = Metric' "OPEN"++pattern Metric_PERMANENT_BOUNCE :: Metric+pattern Metric_PERMANENT_BOUNCE = Metric' "PERMANENT_BOUNCE"++pattern Metric_SEND :: Metric+pattern Metric_SEND = Metric' "SEND"++pattern Metric_TRANSIENT_BOUNCE :: Metric+pattern Metric_TRANSIENT_BOUNCE = Metric' "TRANSIENT_BOUNCE"++{-# COMPLETE+  Metric_CLICK,+  Metric_COMPLAINT,+  Metric_DELIVERY,+  Metric_DELIVERY_CLICK,+  Metric_DELIVERY_COMPLAINT,+  Metric_DELIVERY_OPEN,+  Metric_OPEN,+  Metric_PERMANENT_BOUNCE,+  Metric_SEND,+  Metric_TRANSIENT_BOUNCE,+  Metric'+  #-}
+ gen/Amazonka/SESV2/Types/MetricDataError.hs view
@@ -0,0 +1,116 @@+{-# 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.SESV2.Types.MetricDataError+-- 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.SESV2.Types.MetricDataError 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.SESV2.Types.QueryErrorCode++-- | An error corresponding to the unsuccessful processing of a single metric+-- data query.+--+-- /See:/ 'newMetricDataError' smart constructor.+data MetricDataError = MetricDataError'+  { -- | The query error code. Can be one of:+    --+    -- -   @INTERNAL_FAILURE@ – Amazon SES has failed to process one of the+    --     queries.+    --+    -- -   @ACCESS_DENIED@ – You have insufficient access to retrieve metrics+    --     based on the given query.+    code :: Prelude.Maybe QueryErrorCode,+    -- | The query identifier.+    id :: Prelude.Maybe Prelude.Text,+    -- | The error message associated with the current query error.+    message :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricDataError' 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:+--+-- 'code', 'metricDataError_code' - The query error code. Can be one of:+--+-- -   @INTERNAL_FAILURE@ – Amazon SES has failed to process one of the+--     queries.+--+-- -   @ACCESS_DENIED@ – You have insufficient access to retrieve metrics+--     based on the given query.+--+-- 'id', 'metricDataError_id' - The query identifier.+--+-- 'message', 'metricDataError_message' - The error message associated with the current query error.+newMetricDataError ::+  MetricDataError+newMetricDataError =+  MetricDataError'+    { code = Prelude.Nothing,+      id = Prelude.Nothing,+      message = Prelude.Nothing+    }++-- | The query error code. Can be one of:+--+-- -   @INTERNAL_FAILURE@ – Amazon SES has failed to process one of the+--     queries.+--+-- -   @ACCESS_DENIED@ – You have insufficient access to retrieve metrics+--     based on the given query.+metricDataError_code :: Lens.Lens' MetricDataError (Prelude.Maybe QueryErrorCode)+metricDataError_code = Lens.lens (\MetricDataError' {code} -> code) (\s@MetricDataError' {} a -> s {code = a} :: MetricDataError)++-- | The query identifier.+metricDataError_id :: Lens.Lens' MetricDataError (Prelude.Maybe Prelude.Text)+metricDataError_id = Lens.lens (\MetricDataError' {id} -> id) (\s@MetricDataError' {} a -> s {id = a} :: MetricDataError)++-- | The error message associated with the current query error.+metricDataError_message :: Lens.Lens' MetricDataError (Prelude.Maybe Prelude.Text)+metricDataError_message = Lens.lens (\MetricDataError' {message} -> message) (\s@MetricDataError' {} a -> s {message = a} :: MetricDataError)++instance Data.FromJSON MetricDataError where+  parseJSON =+    Data.withObject+      "MetricDataError"+      ( \x ->+          MetricDataError'+            Prelude.<$> (x Data..:? "Code")+            Prelude.<*> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Message")+      )++instance Prelude.Hashable MetricDataError where+  hashWithSalt _salt MetricDataError' {..} =+    _salt+      `Prelude.hashWithSalt` code+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` message++instance Prelude.NFData MetricDataError where+  rnf MetricDataError' {..} =+    Prelude.rnf code+      `Prelude.seq` Prelude.rnf id+      `Prelude.seq` Prelude.rnf message
+ gen/Amazonka/SESV2/Types/MetricDataResult.hs view
@@ -0,0 +1,96 @@+{-# 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.SESV2.Types.MetricDataResult+-- 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.SESV2.Types.MetricDataResult 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 result of a single metric data query.+--+-- /See:/ 'newMetricDataResult' smart constructor.+data MetricDataResult = MetricDataResult'+  { -- | The query identifier.+    id :: Prelude.Maybe Prelude.Text,+    -- | A list of timestamps for the metric data results.+    timestamps :: Prelude.Maybe [Data.POSIX],+    -- | A list of values (cumulative \/ sum) for the metric data results.+    values :: Prelude.Maybe [Prelude.Integer]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'MetricDataResult' 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:+--+-- 'id', 'metricDataResult_id' - The query identifier.+--+-- 'timestamps', 'metricDataResult_timestamps' - A list of timestamps for the metric data results.+--+-- 'values', 'metricDataResult_values' - A list of values (cumulative \/ sum) for the metric data results.+newMetricDataResult ::+  MetricDataResult+newMetricDataResult =+  MetricDataResult'+    { id = Prelude.Nothing,+      timestamps = Prelude.Nothing,+      values = Prelude.Nothing+    }++-- | The query identifier.+metricDataResult_id :: Lens.Lens' MetricDataResult (Prelude.Maybe Prelude.Text)+metricDataResult_id = Lens.lens (\MetricDataResult' {id} -> id) (\s@MetricDataResult' {} a -> s {id = a} :: MetricDataResult)++-- | A list of timestamps for the metric data results.+metricDataResult_timestamps :: Lens.Lens' MetricDataResult (Prelude.Maybe [Prelude.UTCTime])+metricDataResult_timestamps = Lens.lens (\MetricDataResult' {timestamps} -> timestamps) (\s@MetricDataResult' {} a -> s {timestamps = a} :: MetricDataResult) Prelude.. Lens.mapping Lens.coerced++-- | A list of values (cumulative \/ sum) for the metric data results.+metricDataResult_values :: Lens.Lens' MetricDataResult (Prelude.Maybe [Prelude.Integer])+metricDataResult_values = Lens.lens (\MetricDataResult' {values} -> values) (\s@MetricDataResult' {} a -> s {values = a} :: MetricDataResult) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON MetricDataResult where+  parseJSON =+    Data.withObject+      "MetricDataResult"+      ( \x ->+          MetricDataResult'+            Prelude.<$> (x Data..:? "Id")+            Prelude.<*> (x Data..:? "Timestamps" Data..!= Prelude.mempty)+            Prelude.<*> (x Data..:? "Values" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable MetricDataResult where+  hashWithSalt _salt MetricDataResult' {..} =+    _salt+      `Prelude.hashWithSalt` id+      `Prelude.hashWithSalt` timestamps+      `Prelude.hashWithSalt` values++instance Prelude.NFData MetricDataResult where+  rnf MetricDataResult' {..} =+    Prelude.rnf id+      `Prelude.seq` Prelude.rnf timestamps+      `Prelude.seq` Prelude.rnf values
+ gen/Amazonka/SESV2/Types/MetricDimensionName.hs view
@@ -0,0 +1,85 @@+{-# 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.SESV2.Types.MetricDimensionName+-- 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.SESV2.Types.MetricDimensionName+  ( MetricDimensionName+      ( ..,+        MetricDimensionName_CONFIGURATION_SET,+        MetricDimensionName_EMAIL_IDENTITY,+        MetricDimensionName_ISP+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The @BatchGetMetricDataQuery@ dimension name. This can be one of the+-- following:+--+-- -   @EMAIL_IDENTITY@ – The email identity used when sending messages.+--+-- -   @CONFIGURATION_SET@ – The configuration set used when sending+--     messages (if one was used).+--+-- -   @ISP@ – The recipient ISP (e.g. @Gmail@, @Yahoo@, etc.).+newtype MetricDimensionName = MetricDimensionName'+  { fromMetricDimensionName ::+      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 MetricDimensionName_CONFIGURATION_SET :: MetricDimensionName+pattern MetricDimensionName_CONFIGURATION_SET = MetricDimensionName' "CONFIGURATION_SET"++pattern MetricDimensionName_EMAIL_IDENTITY :: MetricDimensionName+pattern MetricDimensionName_EMAIL_IDENTITY = MetricDimensionName' "EMAIL_IDENTITY"++pattern MetricDimensionName_ISP :: MetricDimensionName+pattern MetricDimensionName_ISP = MetricDimensionName' "ISP"++{-# COMPLETE+  MetricDimensionName_CONFIGURATION_SET,+  MetricDimensionName_EMAIL_IDENTITY,+  MetricDimensionName_ISP,+  MetricDimensionName'+  #-}
+ gen/Amazonka/SESV2/Types/MetricNamespace.hs view
@@ -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.SESV2.Types.MetricNamespace+-- 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.SESV2.Types.MetricNamespace+  ( MetricNamespace+      ( ..,+        MetricNamespace_VDM+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype MetricNamespace = MetricNamespace'+  { fromMetricNamespace ::+      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 MetricNamespace_VDM :: MetricNamespace+pattern MetricNamespace_VDM = MetricNamespace' "VDM"++{-# COMPLETE+  MetricNamespace_VDM,+  MetricNamespace'+  #-}
+ gen/Amazonka/SESV2/Types/OverallVolume.hs view
@@ -0,0 +1,112 @@+{-# 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.SESV2.Types.OverallVolume+-- 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.SESV2.Types.OverallVolume 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.SESV2.Types.DomainIspPlacement+import Amazonka.SESV2.Types.VolumeStatistics++-- | An object that contains information about email that was sent from the+-- selected domain.+--+-- /See:/ 'newOverallVolume' smart constructor.+data OverallVolume = OverallVolume'+  { -- | An object that contains inbox and junk mail placement metrics for+    -- individual email providers.+    domainIspPlacements :: Prelude.Maybe [DomainIspPlacement],+    -- | The percentage of emails that were sent from the domain that were read+    -- by their recipients.+    readRatePercent :: Prelude.Maybe Prelude.Double,+    -- | An object that contains information about the numbers of messages that+    -- arrived in recipients\' inboxes and junk mail folders.+    volumeStatistics :: Prelude.Maybe VolumeStatistics+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'OverallVolume' 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:+--+-- 'domainIspPlacements', 'overallVolume_domainIspPlacements' - An object that contains inbox and junk mail placement metrics for+-- individual email providers.+--+-- 'readRatePercent', 'overallVolume_readRatePercent' - The percentage of emails that were sent from the domain that were read+-- by their recipients.+--+-- 'volumeStatistics', 'overallVolume_volumeStatistics' - An object that contains information about the numbers of messages that+-- arrived in recipients\' inboxes and junk mail folders.+newOverallVolume ::+  OverallVolume+newOverallVolume =+  OverallVolume'+    { domainIspPlacements =+        Prelude.Nothing,+      readRatePercent = Prelude.Nothing,+      volumeStatistics = Prelude.Nothing+    }++-- | An object that contains inbox and junk mail placement metrics for+-- individual email providers.+overallVolume_domainIspPlacements :: Lens.Lens' OverallVolume (Prelude.Maybe [DomainIspPlacement])+overallVolume_domainIspPlacements = Lens.lens (\OverallVolume' {domainIspPlacements} -> domainIspPlacements) (\s@OverallVolume' {} a -> s {domainIspPlacements = a} :: OverallVolume) Prelude.. Lens.mapping Lens.coerced++-- | The percentage of emails that were sent from the domain that were read+-- by their recipients.+overallVolume_readRatePercent :: Lens.Lens' OverallVolume (Prelude.Maybe Prelude.Double)+overallVolume_readRatePercent = Lens.lens (\OverallVolume' {readRatePercent} -> readRatePercent) (\s@OverallVolume' {} a -> s {readRatePercent = a} :: OverallVolume)++-- | An object that contains information about the numbers of messages that+-- arrived in recipients\' inboxes and junk mail folders.+overallVolume_volumeStatistics :: Lens.Lens' OverallVolume (Prelude.Maybe VolumeStatistics)+overallVolume_volumeStatistics = Lens.lens (\OverallVolume' {volumeStatistics} -> volumeStatistics) (\s@OverallVolume' {} a -> s {volumeStatistics = a} :: OverallVolume)++instance Data.FromJSON OverallVolume where+  parseJSON =+    Data.withObject+      "OverallVolume"+      ( \x ->+          OverallVolume'+            Prelude.<$> ( x+                            Data..:? "DomainIspPlacements"+                            Data..!= Prelude.mempty+                        )+            Prelude.<*> (x Data..:? "ReadRatePercent")+            Prelude.<*> (x Data..:? "VolumeStatistics")+      )++instance Prelude.Hashable OverallVolume where+  hashWithSalt _salt OverallVolume' {..} =+    _salt+      `Prelude.hashWithSalt` domainIspPlacements+      `Prelude.hashWithSalt` readRatePercent+      `Prelude.hashWithSalt` volumeStatistics++instance Prelude.NFData OverallVolume where+  rnf OverallVolume' {..} =+    Prelude.rnf domainIspPlacements+      `Prelude.seq` Prelude.rnf readRatePercent+      `Prelude.seq` Prelude.rnf volumeStatistics
+ gen/Amazonka/SESV2/Types/PinpointDestination.hs view
@@ -0,0 +1,89 @@+{-# 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.SESV2.Types.PinpointDestination+-- 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.SESV2.Types.PinpointDestination 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++-- | An object that defines an Amazon Pinpoint project destination for email+-- events. You can send email event data to a Amazon Pinpoint project to+-- view metrics using the Transactional Messaging dashboards that are built+-- in to Amazon Pinpoint. For more information, see+-- <https://docs.aws.amazon.com/pinpoint/latest/userguide/analytics-transactional-messages.html Transactional Messaging Charts>+-- in the /Amazon Pinpoint User Guide/.+--+-- /See:/ 'newPinpointDestination' smart constructor.+data PinpointDestination = PinpointDestination'+  { -- | The Amazon Resource Name (ARN) of the Amazon Pinpoint project to send+    -- email events to.+    applicationArn :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PinpointDestination' 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:+--+-- 'applicationArn', 'pinpointDestination_applicationArn' - The Amazon Resource Name (ARN) of the Amazon Pinpoint project to send+-- email events to.+newPinpointDestination ::+  PinpointDestination+newPinpointDestination =+  PinpointDestination'+    { applicationArn =+        Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the Amazon Pinpoint project to send+-- email events to.+pinpointDestination_applicationArn :: Lens.Lens' PinpointDestination (Prelude.Maybe Prelude.Text)+pinpointDestination_applicationArn = Lens.lens (\PinpointDestination' {applicationArn} -> applicationArn) (\s@PinpointDestination' {} a -> s {applicationArn = a} :: PinpointDestination)++instance Data.FromJSON PinpointDestination where+  parseJSON =+    Data.withObject+      "PinpointDestination"+      ( \x ->+          PinpointDestination'+            Prelude.<$> (x Data..:? "ApplicationArn")+      )++instance Prelude.Hashable PinpointDestination where+  hashWithSalt _salt PinpointDestination' {..} =+    _salt `Prelude.hashWithSalt` applicationArn++instance Prelude.NFData PinpointDestination where+  rnf PinpointDestination' {..} =+    Prelude.rnf applicationArn++instance Data.ToJSON PinpointDestination where+  toJSON PinpointDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ApplicationArn" Data..=)+              Prelude.<$> applicationArn+          ]+      )
+ gen/Amazonka/SESV2/Types/PlacementStatistics.hs view
@@ -0,0 +1,136 @@+{-# 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.SESV2.Types.PlacementStatistics+-- 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.SESV2.Types.PlacementStatistics 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++-- | An object that contains inbox placement data for an email provider.+--+-- /See:/ 'newPlacementStatistics' smart constructor.+data PlacementStatistics = PlacementStatistics'+  { -- | The percentage of emails that were authenticated by using DomainKeys+    -- Identified Mail (DKIM) during the predictive inbox placement test.+    dkimPercentage :: Prelude.Maybe Prelude.Double,+    -- | The percentage of emails that arrived in recipients\' inboxes during the+    -- predictive inbox placement test.+    inboxPercentage :: Prelude.Maybe Prelude.Double,+    -- | The percentage of emails that didn\'t arrive in recipients\' inboxes at+    -- all during the predictive inbox placement test.+    missingPercentage :: Prelude.Maybe Prelude.Double,+    -- | The percentage of emails that arrived in recipients\' spam or junk mail+    -- folders during the predictive inbox placement test.+    spamPercentage :: Prelude.Maybe Prelude.Double,+    -- | The percentage of emails that were authenticated by using Sender Policy+    -- Framework (SPF) during the predictive inbox placement test.+    spfPercentage :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'PlacementStatistics' 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:+--+-- 'dkimPercentage', 'placementStatistics_dkimPercentage' - The percentage of emails that were authenticated by using DomainKeys+-- Identified Mail (DKIM) during the predictive inbox placement test.+--+-- 'inboxPercentage', 'placementStatistics_inboxPercentage' - The percentage of emails that arrived in recipients\' inboxes during the+-- predictive inbox placement test.+--+-- 'missingPercentage', 'placementStatistics_missingPercentage' - The percentage of emails that didn\'t arrive in recipients\' inboxes at+-- all during the predictive inbox placement test.+--+-- 'spamPercentage', 'placementStatistics_spamPercentage' - The percentage of emails that arrived in recipients\' spam or junk mail+-- folders during the predictive inbox placement test.+--+-- 'spfPercentage', 'placementStatistics_spfPercentage' - The percentage of emails that were authenticated by using Sender Policy+-- Framework (SPF) during the predictive inbox placement test.+newPlacementStatistics ::+  PlacementStatistics+newPlacementStatistics =+  PlacementStatistics'+    { dkimPercentage =+        Prelude.Nothing,+      inboxPercentage = Prelude.Nothing,+      missingPercentage = Prelude.Nothing,+      spamPercentage = Prelude.Nothing,+      spfPercentage = Prelude.Nothing+    }++-- | The percentage of emails that were authenticated by using DomainKeys+-- Identified Mail (DKIM) during the predictive inbox placement test.+placementStatistics_dkimPercentage :: Lens.Lens' PlacementStatistics (Prelude.Maybe Prelude.Double)+placementStatistics_dkimPercentage = Lens.lens (\PlacementStatistics' {dkimPercentage} -> dkimPercentage) (\s@PlacementStatistics' {} a -> s {dkimPercentage = a} :: PlacementStatistics)++-- | The percentage of emails that arrived in recipients\' inboxes during the+-- predictive inbox placement test.+placementStatistics_inboxPercentage :: Lens.Lens' PlacementStatistics (Prelude.Maybe Prelude.Double)+placementStatistics_inboxPercentage = Lens.lens (\PlacementStatistics' {inboxPercentage} -> inboxPercentage) (\s@PlacementStatistics' {} a -> s {inboxPercentage = a} :: PlacementStatistics)++-- | The percentage of emails that didn\'t arrive in recipients\' inboxes at+-- all during the predictive inbox placement test.+placementStatistics_missingPercentage :: Lens.Lens' PlacementStatistics (Prelude.Maybe Prelude.Double)+placementStatistics_missingPercentage = Lens.lens (\PlacementStatistics' {missingPercentage} -> missingPercentage) (\s@PlacementStatistics' {} a -> s {missingPercentage = a} :: PlacementStatistics)++-- | The percentage of emails that arrived in recipients\' spam or junk mail+-- folders during the predictive inbox placement test.+placementStatistics_spamPercentage :: Lens.Lens' PlacementStatistics (Prelude.Maybe Prelude.Double)+placementStatistics_spamPercentage = Lens.lens (\PlacementStatistics' {spamPercentage} -> spamPercentage) (\s@PlacementStatistics' {} a -> s {spamPercentage = a} :: PlacementStatistics)++-- | The percentage of emails that were authenticated by using Sender Policy+-- Framework (SPF) during the predictive inbox placement test.+placementStatistics_spfPercentage :: Lens.Lens' PlacementStatistics (Prelude.Maybe Prelude.Double)+placementStatistics_spfPercentage = Lens.lens (\PlacementStatistics' {spfPercentage} -> spfPercentage) (\s@PlacementStatistics' {} a -> s {spfPercentage = a} :: PlacementStatistics)++instance Data.FromJSON PlacementStatistics where+  parseJSON =+    Data.withObject+      "PlacementStatistics"+      ( \x ->+          PlacementStatistics'+            Prelude.<$> (x Data..:? "DkimPercentage")+            Prelude.<*> (x Data..:? "InboxPercentage")+            Prelude.<*> (x Data..:? "MissingPercentage")+            Prelude.<*> (x Data..:? "SpamPercentage")+            Prelude.<*> (x Data..:? "SpfPercentage")+      )++instance Prelude.Hashable PlacementStatistics where+  hashWithSalt _salt PlacementStatistics' {..} =+    _salt+      `Prelude.hashWithSalt` dkimPercentage+      `Prelude.hashWithSalt` inboxPercentage+      `Prelude.hashWithSalt` missingPercentage+      `Prelude.hashWithSalt` spamPercentage+      `Prelude.hashWithSalt` spfPercentage++instance Prelude.NFData PlacementStatistics where+  rnf PlacementStatistics' {..} =+    Prelude.rnf dkimPercentage+      `Prelude.seq` Prelude.rnf inboxPercentage+      `Prelude.seq` Prelude.rnf missingPercentage+      `Prelude.seq` Prelude.rnf spamPercentage+      `Prelude.seq` Prelude.rnf spfPercentage
+ gen/Amazonka/SESV2/Types/QueryErrorCode.hs view
@@ -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.SESV2.Types.QueryErrorCode+-- 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.SESV2.Types.QueryErrorCode+  ( QueryErrorCode+      ( ..,+        QueryErrorCode_ACCESS_DENIED,+        QueryErrorCode_INTERNAL_FAILURE+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype QueryErrorCode = QueryErrorCode'+  { fromQueryErrorCode ::+      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 QueryErrorCode_ACCESS_DENIED :: QueryErrorCode+pattern QueryErrorCode_ACCESS_DENIED = QueryErrorCode' "ACCESS_DENIED"++pattern QueryErrorCode_INTERNAL_FAILURE :: QueryErrorCode+pattern QueryErrorCode_INTERNAL_FAILURE = QueryErrorCode' "INTERNAL_FAILURE"++{-# COMPLETE+  QueryErrorCode_ACCESS_DENIED,+  QueryErrorCode_INTERNAL_FAILURE,+  QueryErrorCode'+  #-}
+ gen/Amazonka/SESV2/Types/RawMessage.hs view
@@ -0,0 +1,136 @@+{-# 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.SESV2.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.SESV2.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 content of an email message.+--+-- /See:/ 'newRawMessage' smart constructor.+data RawMessage = RawMessage'+  { -- | The raw email message. The message has to meet the following criteria:+    --+    -- -   The message has to contain a header and a body, separated by one+    --     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 in a file format that the Amazon SES supports.+    --+    -- -   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, you should encode that+    --     content to ensure that recipients\' email clients render the message+    --     properly.+    --+    -- -   The length of any single line of text in the message can\'t exceed+    --     1,000 characters. This restriction is defined in+    --     <https://tools.ietf.org/html/rfc5321 RFC 5321>.+    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 email message. The message has to meet the following criteria:+--+-- -   The message has to contain a header and a body, separated by one+--     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 in a file format that the Amazon SES supports.+--+-- -   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, you should encode that+--     content to ensure that recipients\' email clients render the message+--     properly.+--+-- -   The length of any single line of text in the message can\'t exceed+--     1,000 characters. This restriction is defined in+--     <https://tools.ietf.org/html/rfc5321 RFC 5321>.--+-- -- /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 email message. The message has to meet the following criteria:+--+-- -   The message has to contain a header and a body, separated by one+--     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 in a file format that the Amazon SES supports.+--+-- -   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, you should encode that+--     content to ensure that recipients\' email clients render the message+--     properly.+--+-- -   The length of any single line of text in the message can\'t exceed+--     1,000 characters. This restriction is defined in+--     <https://tools.ietf.org/html/rfc5321 RFC 5321>.--+-- -- /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.ToJSON RawMessage where+  toJSON RawMessage' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Data" Data..= data')]+      )
+ gen/Amazonka/SESV2/Types/Recommendation.hs view
@@ -0,0 +1,156 @@+{-# 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.SESV2.Types.Recommendation+-- 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.SESV2.Types.Recommendation 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.SESV2.Types.RecommendationImpact+import Amazonka.SESV2.Types.RecommendationStatus+import Amazonka.SESV2.Types.RecommendationType++-- | A recommendation generated for your account.+--+-- /See:/ 'newRecommendation' smart constructor.+data Recommendation = Recommendation'+  { -- | The first time this issue was encountered and the recommendation was+    -- generated.+    createdTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The recommendation description \/ disambiguator - e.g. @DKIM1@ and+    -- @DKIM2@ are different recommendations about your DKIM setup.+    description :: Prelude.Maybe Prelude.Text,+    -- | The recommendation impact, with values like @HIGH@ or @LOW@.+    impact :: Prelude.Maybe RecommendationImpact,+    -- | The last time the recommendation was updated.+    lastUpdatedTimestamp :: Prelude.Maybe Data.POSIX,+    -- | The resource affected by the recommendation, with values like+    -- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.+    resourceArn :: Prelude.Maybe Prelude.Text,+    -- | The recommendation status, with values like @OPEN@ or @FIXED@.+    status :: Prelude.Maybe RecommendationStatus,+    -- | The recommendation type, with values like @DKIM@, @SPF@ or @DMARC@.+    type' :: Prelude.Maybe RecommendationType+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Recommendation' 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', 'recommendation_createdTimestamp' - The first time this issue was encountered and the recommendation was+-- generated.+--+-- 'description', 'recommendation_description' - The recommendation description \/ disambiguator - e.g. @DKIM1@ and+-- @DKIM2@ are different recommendations about your DKIM setup.+--+-- 'impact', 'recommendation_impact' - The recommendation impact, with values like @HIGH@ or @LOW@.+--+-- 'lastUpdatedTimestamp', 'recommendation_lastUpdatedTimestamp' - The last time the recommendation was updated.+--+-- 'resourceArn', 'recommendation_resourceArn' - The resource affected by the recommendation, with values like+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.+--+-- 'status', 'recommendation_status' - The recommendation status, with values like @OPEN@ or @FIXED@.+--+-- 'type'', 'recommendation_type' - The recommendation type, with values like @DKIM@, @SPF@ or @DMARC@.+newRecommendation ::+  Recommendation+newRecommendation =+  Recommendation'+    { createdTimestamp = Prelude.Nothing,+      description = Prelude.Nothing,+      impact = Prelude.Nothing,+      lastUpdatedTimestamp = Prelude.Nothing,+      resourceArn = Prelude.Nothing,+      status = Prelude.Nothing,+      type' = Prelude.Nothing+    }++-- | The first time this issue was encountered and the recommendation was+-- generated.+recommendation_createdTimestamp :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.UTCTime)+recommendation_createdTimestamp = Lens.lens (\Recommendation' {createdTimestamp} -> createdTimestamp) (\s@Recommendation' {} a -> s {createdTimestamp = a} :: Recommendation) Prelude.. Lens.mapping Data._Time++-- | The recommendation description \/ disambiguator - e.g. @DKIM1@ and+-- @DKIM2@ are different recommendations about your DKIM setup.+recommendation_description :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_description = Lens.lens (\Recommendation' {description} -> description) (\s@Recommendation' {} a -> s {description = a} :: Recommendation)++-- | The recommendation impact, with values like @HIGH@ or @LOW@.+recommendation_impact :: Lens.Lens' Recommendation (Prelude.Maybe RecommendationImpact)+recommendation_impact = Lens.lens (\Recommendation' {impact} -> impact) (\s@Recommendation' {} a -> s {impact = a} :: Recommendation)++-- | The last time the recommendation was updated.+recommendation_lastUpdatedTimestamp :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.UTCTime)+recommendation_lastUpdatedTimestamp = Lens.lens (\Recommendation' {lastUpdatedTimestamp} -> lastUpdatedTimestamp) (\s@Recommendation' {} a -> s {lastUpdatedTimestamp = a} :: Recommendation) Prelude.. Lens.mapping Data._Time++-- | The resource affected by the recommendation, with values like+-- @arn:aws:ses:us-east-1:123456789012:identity\/example.com@.+recommendation_resourceArn :: Lens.Lens' Recommendation (Prelude.Maybe Prelude.Text)+recommendation_resourceArn = Lens.lens (\Recommendation' {resourceArn} -> resourceArn) (\s@Recommendation' {} a -> s {resourceArn = a} :: Recommendation)++-- | The recommendation status, with values like @OPEN@ or @FIXED@.+recommendation_status :: Lens.Lens' Recommendation (Prelude.Maybe RecommendationStatus)+recommendation_status = Lens.lens (\Recommendation' {status} -> status) (\s@Recommendation' {} a -> s {status = a} :: Recommendation)++-- | The recommendation type, with values like @DKIM@, @SPF@ or @DMARC@.+recommendation_type :: Lens.Lens' Recommendation (Prelude.Maybe RecommendationType)+recommendation_type = Lens.lens (\Recommendation' {type'} -> type') (\s@Recommendation' {} a -> s {type' = a} :: Recommendation)++instance Data.FromJSON Recommendation where+  parseJSON =+    Data.withObject+      "Recommendation"+      ( \x ->+          Recommendation'+            Prelude.<$> (x Data..:? "CreatedTimestamp")+            Prelude.<*> (x Data..:? "Description")+            Prelude.<*> (x Data..:? "Impact")+            Prelude.<*> (x Data..:? "LastUpdatedTimestamp")+            Prelude.<*> (x Data..:? "ResourceArn")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Type")+      )++instance Prelude.Hashable Recommendation where+  hashWithSalt _salt Recommendation' {..} =+    _salt+      `Prelude.hashWithSalt` createdTimestamp+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` impact+      `Prelude.hashWithSalt` lastUpdatedTimestamp+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` type'++instance Prelude.NFData Recommendation where+  rnf Recommendation' {..} =+    Prelude.rnf createdTimestamp+      `Prelude.seq` Prelude.rnf description+      `Prelude.seq` Prelude.rnf impact+      `Prelude.seq` Prelude.rnf lastUpdatedTimestamp+      `Prelude.seq` Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf type'
+ gen/Amazonka/SESV2/Types/RecommendationImpact.hs view
@@ -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.SESV2.Types.RecommendationImpact+-- 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.SESV2.Types.RecommendationImpact+  ( RecommendationImpact+      ( ..,+        RecommendationImpact_HIGH,+        RecommendationImpact_LOW+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecommendationImpact = RecommendationImpact'+  { fromRecommendationImpact ::+      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 RecommendationImpact_HIGH :: RecommendationImpact+pattern RecommendationImpact_HIGH = RecommendationImpact' "HIGH"++pattern RecommendationImpact_LOW :: RecommendationImpact+pattern RecommendationImpact_LOW = RecommendationImpact' "LOW"++{-# COMPLETE+  RecommendationImpact_HIGH,+  RecommendationImpact_LOW,+  RecommendationImpact'+  #-}
+ gen/Amazonka/SESV2/Types/RecommendationStatus.hs view
@@ -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.SESV2.Types.RecommendationStatus+-- 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.SESV2.Types.RecommendationStatus+  ( RecommendationStatus+      ( ..,+        RecommendationStatus_FIXED,+        RecommendationStatus_OPEN+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecommendationStatus = RecommendationStatus'+  { fromRecommendationStatus ::+      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 RecommendationStatus_FIXED :: RecommendationStatus+pattern RecommendationStatus_FIXED = RecommendationStatus' "FIXED"++pattern RecommendationStatus_OPEN :: RecommendationStatus+pattern RecommendationStatus_OPEN = RecommendationStatus' "OPEN"++{-# COMPLETE+  RecommendationStatus_FIXED,+  RecommendationStatus_OPEN,+  RecommendationStatus'+  #-}
+ gen/Amazonka/SESV2/Types/RecommendationType.hs view
@@ -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.SESV2.Types.RecommendationType+-- 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.SESV2.Types.RecommendationType+  ( RecommendationType+      ( ..,+        RecommendationType_DKIM,+        RecommendationType_DMARC,+        RecommendationType_SPF+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype RecommendationType = RecommendationType'+  { fromRecommendationType ::+      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 RecommendationType_DKIM :: RecommendationType+pattern RecommendationType_DKIM = RecommendationType' "DKIM"++pattern RecommendationType_DMARC :: RecommendationType+pattern RecommendationType_DMARC = RecommendationType' "DMARC"++pattern RecommendationType_SPF :: RecommendationType+pattern RecommendationType_SPF = RecommendationType' "SPF"++{-# COMPLETE+  RecommendationType_DKIM,+  RecommendationType_DMARC,+  RecommendationType_SPF,+  RecommendationType'+  #-}
+ gen/Amazonka/SESV2/Types/ReplacementEmailContent.hs view
@@ -0,0 +1,75 @@+{-# 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.SESV2.Types.ReplacementEmailContent+-- 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.SESV2.Types.ReplacementEmailContent 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.SESV2.Types.ReplacementTemplate++-- | The @ReplaceEmailContent@ object to be used for a specific+-- @BulkEmailEntry@. The @ReplacementTemplate@ can be specified within this+-- object.+--+-- /See:/ 'newReplacementEmailContent' smart constructor.+data ReplacementEmailContent = ReplacementEmailContent'+  { -- | The @ReplacementTemplate@ associated with @ReplacementEmailContent@.+    replacementTemplate :: Prelude.Maybe ReplacementTemplate+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplacementEmailContent' 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:+--+-- 'replacementTemplate', 'replacementEmailContent_replacementTemplate' - The @ReplacementTemplate@ associated with @ReplacementEmailContent@.+newReplacementEmailContent ::+  ReplacementEmailContent+newReplacementEmailContent =+  ReplacementEmailContent'+    { replacementTemplate =+        Prelude.Nothing+    }++-- | The @ReplacementTemplate@ associated with @ReplacementEmailContent@.+replacementEmailContent_replacementTemplate :: Lens.Lens' ReplacementEmailContent (Prelude.Maybe ReplacementTemplate)+replacementEmailContent_replacementTemplate = Lens.lens (\ReplacementEmailContent' {replacementTemplate} -> replacementTemplate) (\s@ReplacementEmailContent' {} a -> s {replacementTemplate = a} :: ReplacementEmailContent)++instance Prelude.Hashable ReplacementEmailContent where+  hashWithSalt _salt ReplacementEmailContent' {..} =+    _salt `Prelude.hashWithSalt` replacementTemplate++instance Prelude.NFData ReplacementEmailContent where+  rnf ReplacementEmailContent' {..} =+    Prelude.rnf replacementTemplate++instance Data.ToJSON ReplacementEmailContent where+  toJSON ReplacementEmailContent' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ReplacementTemplate" Data..=)+              Prelude.<$> replacementTemplate+          ]+      )
+ gen/Amazonka/SESV2/Types/ReplacementTemplate.hs view
@@ -0,0 +1,80 @@+{-# 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.SESV2.Types.ReplacementTemplate+-- 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.SESV2.Types.ReplacementTemplate 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++-- | An object which contains @ReplacementTemplateData@ to be used for a+-- specific @BulkEmailEntry@.+--+-- /See:/ 'newReplacementTemplate' smart constructor.+data ReplacementTemplate = ReplacementTemplate'+  { -- | 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+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReplacementTemplate' 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:+--+-- 'replacementTemplateData', 'replacementTemplate_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.+newReplacementTemplate ::+  ReplacementTemplate+newReplacementTemplate =+  ReplacementTemplate'+    { replacementTemplateData =+        Prelude.Nothing+    }++-- | 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.+replacementTemplate_replacementTemplateData :: Lens.Lens' ReplacementTemplate (Prelude.Maybe Prelude.Text)+replacementTemplate_replacementTemplateData = Lens.lens (\ReplacementTemplate' {replacementTemplateData} -> replacementTemplateData) (\s@ReplacementTemplate' {} a -> s {replacementTemplateData = a} :: ReplacementTemplate)++instance Prelude.Hashable ReplacementTemplate where+  hashWithSalt _salt ReplacementTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` replacementTemplateData++instance Prelude.NFData ReplacementTemplate where+  rnf ReplacementTemplate' {..} =+    Prelude.rnf replacementTemplateData++instance Data.ToJSON ReplacementTemplate where+  toJSON ReplacementTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("ReplacementTemplateData" Data..=)+              Prelude.<$> replacementTemplateData+          ]+      )
+ gen/Amazonka/SESV2/Types/ReputationOptions.hs view
@@ -0,0 +1,113 @@+{-# 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.SESV2.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.SESV2.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++-- | Enable or disable collection of reputation metrics for emails that you+-- send using this configuration set in the current Amazon Web Services+-- Region.+--+-- /See:/ 'newReputationOptions' smart constructor.+data ReputationOptions = ReputationOptions'+  { -- | The date and time (in Unix time) when the reputation metrics were last+    -- given a fresh start. When your account is given a fresh start, your+    -- reputation metrics are calculated starting from the date of the fresh+    -- start.+    lastFreshStart :: Prelude.Maybe Data.POSIX,+    -- | If @true@, tracking of reputation metrics is enabled for the+    -- configuration set. If @false@, tracking of reputation metrics is+    -- disabled for the configuration set.+    reputationMetricsEnabled :: 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 (in Unix time) when the reputation metrics were last+-- given a fresh start. When your account is given a fresh start, your+-- reputation metrics are calculated starting from the date of the fresh+-- start.+--+-- 'reputationMetricsEnabled', 'reputationOptions_reputationMetricsEnabled' - If @true@, tracking of reputation metrics is enabled for the+-- configuration set. If @false@, tracking of reputation metrics is+-- disabled for the configuration set.+newReputationOptions ::+  ReputationOptions+newReputationOptions =+  ReputationOptions'+    { lastFreshStart =+        Prelude.Nothing,+      reputationMetricsEnabled = Prelude.Nothing+    }++-- | The date and time (in Unix time) when the reputation metrics were last+-- given a fresh start. When your account is given a fresh start, your+-- reputation metrics are calculated starting from the date of the fresh+-- start.+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++-- | If @true@, tracking of reputation metrics is enabled for the+-- configuration set. If @false@, tracking of reputation metrics is+-- disabled for the configuration set.+reputationOptions_reputationMetricsEnabled :: Lens.Lens' ReputationOptions (Prelude.Maybe Prelude.Bool)+reputationOptions_reputationMetricsEnabled = Lens.lens (\ReputationOptions' {reputationMetricsEnabled} -> reputationMetricsEnabled) (\s@ReputationOptions' {} a -> s {reputationMetricsEnabled = a} :: ReputationOptions)++instance Data.FromJSON ReputationOptions where+  parseJSON =+    Data.withObject+      "ReputationOptions"+      ( \x ->+          ReputationOptions'+            Prelude.<$> (x Data..:? "LastFreshStart")+            Prelude.<*> (x Data..:? "ReputationMetricsEnabled")+      )++instance Prelude.Hashable ReputationOptions where+  hashWithSalt _salt ReputationOptions' {..} =+    _salt+      `Prelude.hashWithSalt` lastFreshStart+      `Prelude.hashWithSalt` reputationMetricsEnabled++instance Prelude.NFData ReputationOptions where+  rnf ReputationOptions' {..} =+    Prelude.rnf lastFreshStart+      `Prelude.seq` Prelude.rnf reputationMetricsEnabled++instance Data.ToJSON ReputationOptions where+  toJSON ReputationOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("LastFreshStart" Data..=)+              Prelude.<$> lastFreshStart,+            ("ReputationMetricsEnabled" Data..=)+              Prelude.<$> reputationMetricsEnabled+          ]+      )
+ gen/Amazonka/SESV2/Types/ReviewDetails.hs view
@@ -0,0 +1,123 @@+{-# 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.SESV2.Types.ReviewDetails+-- 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.SESV2.Types.ReviewDetails 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.SESV2.Types.ReviewStatus++-- | An object that contains information about your account details review.+--+-- /See:/ 'newReviewDetails' smart constructor.+data ReviewDetails = ReviewDetails'+  { -- | The associated support center case ID (if any).+    caseId :: Prelude.Maybe Prelude.Text,+    -- | The status of the latest review of your account. The status can be one+    -- of the following:+    --+    -- -   @PENDING@ – We have received your appeal and are in the process of+    --     reviewing it.+    --+    -- -   @GRANTED@ – Your appeal has been reviewed and your production access+    --     has been granted.+    --+    -- -   @DENIED@ – Your appeal has been reviewed and your production access+    --     has been denied.+    --+    -- -   @FAILED@ – An internal error occurred and we didn\'t receive your+    --     appeal. You can submit your appeal again.+    status :: Prelude.Maybe ReviewStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'ReviewDetails' 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:+--+-- 'caseId', 'reviewDetails_caseId' - The associated support center case ID (if any).+--+-- 'status', 'reviewDetails_status' - The status of the latest review of your account. The status can be one+-- of the following:+--+-- -   @PENDING@ – We have received your appeal and are in the process of+--     reviewing it.+--+-- -   @GRANTED@ – Your appeal has been reviewed and your production access+--     has been granted.+--+-- -   @DENIED@ – Your appeal has been reviewed and your production access+--     has been denied.+--+-- -   @FAILED@ – An internal error occurred and we didn\'t receive your+--     appeal. You can submit your appeal again.+newReviewDetails ::+  ReviewDetails+newReviewDetails =+  ReviewDetails'+    { caseId = Prelude.Nothing,+      status = Prelude.Nothing+    }++-- | The associated support center case ID (if any).+reviewDetails_caseId :: Lens.Lens' ReviewDetails (Prelude.Maybe Prelude.Text)+reviewDetails_caseId = Lens.lens (\ReviewDetails' {caseId} -> caseId) (\s@ReviewDetails' {} a -> s {caseId = a} :: ReviewDetails)++-- | The status of the latest review of your account. The status can be one+-- of the following:+--+-- -   @PENDING@ – We have received your appeal and are in the process of+--     reviewing it.+--+-- -   @GRANTED@ – Your appeal has been reviewed and your production access+--     has been granted.+--+-- -   @DENIED@ – Your appeal has been reviewed and your production access+--     has been denied.+--+-- -   @FAILED@ – An internal error occurred and we didn\'t receive your+--     appeal. You can submit your appeal again.+reviewDetails_status :: Lens.Lens' ReviewDetails (Prelude.Maybe ReviewStatus)+reviewDetails_status = Lens.lens (\ReviewDetails' {status} -> status) (\s@ReviewDetails' {} a -> s {status = a} :: ReviewDetails)++instance Data.FromJSON ReviewDetails where+  parseJSON =+    Data.withObject+      "ReviewDetails"+      ( \x ->+          ReviewDetails'+            Prelude.<$> (x Data..:? "CaseId")+            Prelude.<*> (x Data..:? "Status")+      )++instance Prelude.Hashable ReviewDetails where+  hashWithSalt _salt ReviewDetails' {..} =+    _salt+      `Prelude.hashWithSalt` caseId+      `Prelude.hashWithSalt` status++instance Prelude.NFData ReviewDetails where+  rnf ReviewDetails' {..} =+    Prelude.rnf caseId `Prelude.seq` Prelude.rnf status
+ gen/Amazonka/SESV2/Types/ReviewStatus.hs view
@@ -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.SESV2.Types.ReviewStatus+-- 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.SESV2.Types.ReviewStatus+  ( ReviewStatus+      ( ..,+        ReviewStatus_DENIED,+        ReviewStatus_FAILED,+        ReviewStatus_GRANTED,+        ReviewStatus_PENDING+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ReviewStatus = ReviewStatus'+  { fromReviewStatus ::+      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 ReviewStatus_DENIED :: ReviewStatus+pattern ReviewStatus_DENIED = ReviewStatus' "DENIED"++pattern ReviewStatus_FAILED :: ReviewStatus+pattern ReviewStatus_FAILED = ReviewStatus' "FAILED"++pattern ReviewStatus_GRANTED :: ReviewStatus+pattern ReviewStatus_GRANTED = ReviewStatus' "GRANTED"++pattern ReviewStatus_PENDING :: ReviewStatus+pattern ReviewStatus_PENDING = ReviewStatus' "PENDING"++{-# COMPLETE+  ReviewStatus_DENIED,+  ReviewStatus_FAILED,+  ReviewStatus_GRANTED,+  ReviewStatus_PENDING,+  ReviewStatus'+  #-}
+ gen/Amazonka/SESV2/Types/ScalingMode.hs view
@@ -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.SESV2.Types.ScalingMode+-- 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.SESV2.Types.ScalingMode+  ( ScalingMode+      ( ..,+        ScalingMode_MANAGED,+        ScalingMode_STANDARD+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype ScalingMode = ScalingMode'+  { fromScalingMode ::+      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 ScalingMode_MANAGED :: ScalingMode+pattern ScalingMode_MANAGED = ScalingMode' "MANAGED"++pattern ScalingMode_STANDARD :: ScalingMode+pattern ScalingMode_STANDARD = ScalingMode' "STANDARD"++{-# COMPLETE+  ScalingMode_MANAGED,+  ScalingMode_STANDARD,+  ScalingMode'+  #-}
+ gen/Amazonka/SESV2/Types/SendQuota.hs view
@@ -0,0 +1,116 @@+{-# 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.SESV2.Types.SendQuota+-- 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.SESV2.Types.SendQuota 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++-- | An object that contains information about the per-day and per-second+-- sending limits for your Amazon SES account in the current Amazon Web+-- Services Region.+--+-- /See:/ 'newSendQuota' smart constructor.+data SendQuota = SendQuota'+  { -- | The maximum number of emails that you can send in the current Amazon Web+    -- Services Region over a 24-hour period. A value of -1 signifies an+    -- unlimited quota. (This value is also referred to as your /sending+    -- quota/.)+    max24HourSend :: Prelude.Maybe Prelude.Double,+    -- | The maximum number of emails that you can send per second in the current+    -- Amazon Web Services Region. This value is also called your /maximum+    -- sending rate/ or your /maximum TPS (transactions per second) rate/.+    maxSendRate :: Prelude.Maybe Prelude.Double,+    -- | The number of emails sent from your Amazon SES account in the current+    -- Amazon Web Services Region over the past 24 hours.+    sentLast24Hours :: Prelude.Maybe Prelude.Double+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SendQuota' 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', 'sendQuota_max24HourSend' - The maximum number of emails that you can send in the current Amazon Web+-- Services Region over a 24-hour period. A value of -1 signifies an+-- unlimited quota. (This value is also referred to as your /sending+-- quota/.)+--+-- 'maxSendRate', 'sendQuota_maxSendRate' - The maximum number of emails that you can send per second in the current+-- Amazon Web Services Region. This value is also called your /maximum+-- sending rate/ or your /maximum TPS (transactions per second) rate/.+--+-- 'sentLast24Hours', 'sendQuota_sentLast24Hours' - The number of emails sent from your Amazon SES account in the current+-- Amazon Web Services Region over the past 24 hours.+newSendQuota ::+  SendQuota+newSendQuota =+  SendQuota'+    { max24HourSend = Prelude.Nothing,+      maxSendRate = Prelude.Nothing,+      sentLast24Hours = Prelude.Nothing+    }++-- | The maximum number of emails that you can send in the current Amazon Web+-- Services Region over a 24-hour period. A value of -1 signifies an+-- unlimited quota. (This value is also referred to as your /sending+-- quota/.)+sendQuota_max24HourSend :: Lens.Lens' SendQuota (Prelude.Maybe Prelude.Double)+sendQuota_max24HourSend = Lens.lens (\SendQuota' {max24HourSend} -> max24HourSend) (\s@SendQuota' {} a -> s {max24HourSend = a} :: SendQuota)++-- | The maximum number of emails that you can send per second in the current+-- Amazon Web Services Region. This value is also called your /maximum+-- sending rate/ or your /maximum TPS (transactions per second) rate/.+sendQuota_maxSendRate :: Lens.Lens' SendQuota (Prelude.Maybe Prelude.Double)+sendQuota_maxSendRate = Lens.lens (\SendQuota' {maxSendRate} -> maxSendRate) (\s@SendQuota' {} a -> s {maxSendRate = a} :: SendQuota)++-- | The number of emails sent from your Amazon SES account in the current+-- Amazon Web Services Region over the past 24 hours.+sendQuota_sentLast24Hours :: Lens.Lens' SendQuota (Prelude.Maybe Prelude.Double)+sendQuota_sentLast24Hours = Lens.lens (\SendQuota' {sentLast24Hours} -> sentLast24Hours) (\s@SendQuota' {} a -> s {sentLast24Hours = a} :: SendQuota)++instance Data.FromJSON SendQuota where+  parseJSON =+    Data.withObject+      "SendQuota"+      ( \x ->+          SendQuota'+            Prelude.<$> (x Data..:? "Max24HourSend")+            Prelude.<*> (x Data..:? "MaxSendRate")+            Prelude.<*> (x Data..:? "SentLast24Hours")+      )++instance Prelude.Hashable SendQuota where+  hashWithSalt _salt SendQuota' {..} =+    _salt+      `Prelude.hashWithSalt` max24HourSend+      `Prelude.hashWithSalt` maxSendRate+      `Prelude.hashWithSalt` sentLast24Hours++instance Prelude.NFData SendQuota where+  rnf SendQuota' {..} =+    Prelude.rnf max24HourSend+      `Prelude.seq` Prelude.rnf maxSendRate+      `Prelude.seq` Prelude.rnf sentLast24Hours
+ gen/Amazonka/SESV2/Types/SendingOptions.hs view
@@ -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.SESV2.Types.SendingOptions+-- 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.SESV2.Types.SendingOptions 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++-- | Used to enable or disable email sending for messages that use this+-- configuration set in the current Amazon Web Services Region.+--+-- /See:/ 'newSendingOptions' smart constructor.+data SendingOptions = SendingOptions'+  { -- | If @true@, email sending is enabled for the configuration set. If+    -- @false@, email sending is disabled for the configuration set.+    sendingEnabled :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SendingOptions' 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:+--+-- 'sendingEnabled', 'sendingOptions_sendingEnabled' - If @true@, email sending is enabled for the configuration set. If+-- @false@, email sending is disabled for the configuration set.+newSendingOptions ::+  SendingOptions+newSendingOptions =+  SendingOptions' {sendingEnabled = Prelude.Nothing}++-- | If @true@, email sending is enabled for the configuration set. If+-- @false@, email sending is disabled for the configuration set.+sendingOptions_sendingEnabled :: Lens.Lens' SendingOptions (Prelude.Maybe Prelude.Bool)+sendingOptions_sendingEnabled = Lens.lens (\SendingOptions' {sendingEnabled} -> sendingEnabled) (\s@SendingOptions' {} a -> s {sendingEnabled = a} :: SendingOptions)++instance Data.FromJSON SendingOptions where+  parseJSON =+    Data.withObject+      "SendingOptions"+      ( \x ->+          SendingOptions'+            Prelude.<$> (x Data..:? "SendingEnabled")+      )++instance Prelude.Hashable SendingOptions where+  hashWithSalt _salt SendingOptions' {..} =+    _salt `Prelude.hashWithSalt` sendingEnabled++instance Prelude.NFData SendingOptions where+  rnf SendingOptions' {..} = Prelude.rnf sendingEnabled++instance Data.ToJSON SendingOptions where+  toJSON SendingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SendingEnabled" Data..=)+              Prelude.<$> sendingEnabled+          ]+      )
+ gen/Amazonka/SESV2/Types/SnsDestination.hs view
@@ -0,0 +1,83 @@+{-# 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.SESV2.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.SESV2.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++-- | An object that defines an Amazon SNS destination for email events. You+-- can use Amazon SNS to send notification when certain email events occur.+--+-- /See:/ 'newSnsDestination' smart constructor.+data SnsDestination = SnsDestination'+  { -- | The Amazon Resource Name (ARN) of the Amazon SNS topic to publish email+    -- events to. 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 Amazon Resource Name (ARN) of the Amazon SNS topic to publish email+-- events to. 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 Amazon Resource Name (ARN) of the Amazon SNS topic to publish email+-- events to. 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.FromJSON SnsDestination where+  parseJSON =+    Data.withObject+      "SnsDestination"+      ( \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.ToJSON SnsDestination where+  toJSON SnsDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("TopicArn" Data..= topicArn)]+      )
+ gen/Amazonka/SESV2/Types/SubscriptionStatus.hs view
@@ -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.SESV2.Types.SubscriptionStatus+-- 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.SESV2.Types.SubscriptionStatus+  ( SubscriptionStatus+      ( ..,+        SubscriptionStatus_OPT_IN,+        SubscriptionStatus_OPT_OUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++newtype SubscriptionStatus = SubscriptionStatus'+  { fromSubscriptionStatus ::+      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 SubscriptionStatus_OPT_IN :: SubscriptionStatus+pattern SubscriptionStatus_OPT_IN = SubscriptionStatus' "OPT_IN"++pattern SubscriptionStatus_OPT_OUT :: SubscriptionStatus+pattern SubscriptionStatus_OPT_OUT = SubscriptionStatus' "OPT_OUT"++{-# COMPLETE+  SubscriptionStatus_OPT_IN,+  SubscriptionStatus_OPT_OUT,+  SubscriptionStatus'+  #-}
+ gen/Amazonka/SESV2/Types/SuppressedDestination.hs view
@@ -0,0 +1,133 @@+{-# 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.SESV2.Types.SuppressedDestination+-- 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.SESV2.Types.SuppressedDestination 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.SESV2.Types.SuppressedDestinationAttributes+import Amazonka.SESV2.Types.SuppressionListReason++-- | An object that contains information about an email address that is on+-- the suppression list for your account.+--+-- /See:/ 'newSuppressedDestination' smart constructor.+data SuppressedDestination = SuppressedDestination'+  { -- | An optional value that can contain additional information about the+    -- reasons that the address was added to the suppression list for your+    -- account.+    attributes :: Prelude.Maybe SuppressedDestinationAttributes,+    -- | The email address that is on the suppression list for your account.+    emailAddress :: Prelude.Text,+    -- | The reason that the address was added to the suppression list for your+    -- account.+    reason :: SuppressionListReason,+    -- | The date and time when the suppressed destination was last updated,+    -- shown in Unix time format.+    lastUpdateTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressedDestination' 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:+--+-- 'attributes', 'suppressedDestination_attributes' - An optional value that can contain additional information about the+-- reasons that the address was added to the suppression list for your+-- account.+--+-- 'emailAddress', 'suppressedDestination_emailAddress' - The email address that is on the suppression list for your account.+--+-- 'reason', 'suppressedDestination_reason' - The reason that the address was added to the suppression list for your+-- account.+--+-- 'lastUpdateTime', 'suppressedDestination_lastUpdateTime' - The date and time when the suppressed destination was last updated,+-- shown in Unix time format.+newSuppressedDestination ::+  -- | 'emailAddress'+  Prelude.Text ->+  -- | 'reason'+  SuppressionListReason ->+  -- | 'lastUpdateTime'+  Prelude.UTCTime ->+  SuppressedDestination+newSuppressedDestination+  pEmailAddress_+  pReason_+  pLastUpdateTime_ =+    SuppressedDestination'+      { attributes =+          Prelude.Nothing,+        emailAddress = pEmailAddress_,+        reason = pReason_,+        lastUpdateTime = Data._Time Lens.# pLastUpdateTime_+      }++-- | An optional value that can contain additional information about the+-- reasons that the address was added to the suppression list for your+-- account.+suppressedDestination_attributes :: Lens.Lens' SuppressedDestination (Prelude.Maybe SuppressedDestinationAttributes)+suppressedDestination_attributes = Lens.lens (\SuppressedDestination' {attributes} -> attributes) (\s@SuppressedDestination' {} a -> s {attributes = a} :: SuppressedDestination)++-- | The email address that is on the suppression list for your account.+suppressedDestination_emailAddress :: Lens.Lens' SuppressedDestination Prelude.Text+suppressedDestination_emailAddress = Lens.lens (\SuppressedDestination' {emailAddress} -> emailAddress) (\s@SuppressedDestination' {} a -> s {emailAddress = a} :: SuppressedDestination)++-- | The reason that the address was added to the suppression list for your+-- account.+suppressedDestination_reason :: Lens.Lens' SuppressedDestination SuppressionListReason+suppressedDestination_reason = Lens.lens (\SuppressedDestination' {reason} -> reason) (\s@SuppressedDestination' {} a -> s {reason = a} :: SuppressedDestination)++-- | The date and time when the suppressed destination was last updated,+-- shown in Unix time format.+suppressedDestination_lastUpdateTime :: Lens.Lens' SuppressedDestination Prelude.UTCTime+suppressedDestination_lastUpdateTime = Lens.lens (\SuppressedDestination' {lastUpdateTime} -> lastUpdateTime) (\s@SuppressedDestination' {} a -> s {lastUpdateTime = a} :: SuppressedDestination) Prelude.. Data._Time++instance Data.FromJSON SuppressedDestination where+  parseJSON =+    Data.withObject+      "SuppressedDestination"+      ( \x ->+          SuppressedDestination'+            Prelude.<$> (x Data..:? "Attributes")+            Prelude.<*> (x Data..: "EmailAddress")+            Prelude.<*> (x Data..: "Reason")+            Prelude.<*> (x Data..: "LastUpdateTime")+      )++instance Prelude.Hashable SuppressedDestination where+  hashWithSalt _salt SuppressedDestination' {..} =+    _salt+      `Prelude.hashWithSalt` attributes+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` lastUpdateTime++instance Prelude.NFData SuppressedDestination where+  rnf SuppressedDestination' {..} =+    Prelude.rnf attributes+      `Prelude.seq` Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf lastUpdateTime
+ gen/Amazonka/SESV2/Types/SuppressedDestinationAttributes.hs view
@@ -0,0 +1,103 @@+{-# 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.SESV2.Types.SuppressedDestinationAttributes+-- 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.SESV2.Types.SuppressedDestinationAttributes 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++-- | An object that contains additional attributes that are related an email+-- address that is on the suppression list for your account.+--+-- /See:/ 'newSuppressedDestinationAttributes' smart constructor.+data SuppressedDestinationAttributes = SuppressedDestinationAttributes'+  { -- | A unique identifier that\'s generated when an email address is added to+    -- the suppression list for your account.+    feedbackId :: Prelude.Maybe Prelude.Text,+    -- | The unique identifier of the email message that caused the email address+    -- to be added to the suppression list for your account.+    messageId :: Prelude.Maybe Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressedDestinationAttributes' 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:+--+-- 'feedbackId', 'suppressedDestinationAttributes_feedbackId' - A unique identifier that\'s generated when an email address is added to+-- the suppression list for your account.+--+-- 'messageId', 'suppressedDestinationAttributes_messageId' - The unique identifier of the email message that caused the email address+-- to be added to the suppression list for your account.+newSuppressedDestinationAttributes ::+  SuppressedDestinationAttributes+newSuppressedDestinationAttributes =+  SuppressedDestinationAttributes'+    { feedbackId =+        Prelude.Nothing,+      messageId = Prelude.Nothing+    }++-- | A unique identifier that\'s generated when an email address is added to+-- the suppression list for your account.+suppressedDestinationAttributes_feedbackId :: Lens.Lens' SuppressedDestinationAttributes (Prelude.Maybe Prelude.Text)+suppressedDestinationAttributes_feedbackId = Lens.lens (\SuppressedDestinationAttributes' {feedbackId} -> feedbackId) (\s@SuppressedDestinationAttributes' {} a -> s {feedbackId = a} :: SuppressedDestinationAttributes)++-- | The unique identifier of the email message that caused the email address+-- to be added to the suppression list for your account.+suppressedDestinationAttributes_messageId :: Lens.Lens' SuppressedDestinationAttributes (Prelude.Maybe Prelude.Text)+suppressedDestinationAttributes_messageId = Lens.lens (\SuppressedDestinationAttributes' {messageId} -> messageId) (\s@SuppressedDestinationAttributes' {} a -> s {messageId = a} :: SuppressedDestinationAttributes)++instance+  Data.FromJSON+    SuppressedDestinationAttributes+  where+  parseJSON =+    Data.withObject+      "SuppressedDestinationAttributes"+      ( \x ->+          SuppressedDestinationAttributes'+            Prelude.<$> (x Data..:? "FeedbackId")+            Prelude.<*> (x Data..:? "MessageId")+      )++instance+  Prelude.Hashable+    SuppressedDestinationAttributes+  where+  hashWithSalt+    _salt+    SuppressedDestinationAttributes' {..} =+      _salt+        `Prelude.hashWithSalt` feedbackId+        `Prelude.hashWithSalt` messageId++instance+  Prelude.NFData+    SuppressedDestinationAttributes+  where+  rnf SuppressedDestinationAttributes' {..} =+    Prelude.rnf feedbackId+      `Prelude.seq` Prelude.rnf messageId
+ gen/Amazonka/SESV2/Types/SuppressedDestinationSummary.hs view
@@ -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.SESV2.Types.SuppressedDestinationSummary+-- 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.SESV2.Types.SuppressedDestinationSummary 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.SESV2.Types.SuppressionListReason++-- | A summary that describes the suppressed email address.+--+-- /See:/ 'newSuppressedDestinationSummary' smart constructor.+data SuppressedDestinationSummary = SuppressedDestinationSummary'+  { -- | The email address that\'s on the suppression list for your account.+    emailAddress :: Prelude.Text,+    -- | The reason that the address was added to the suppression list for your+    -- account.+    reason :: SuppressionListReason,+    -- | The date and time when the suppressed destination was last updated,+    -- shown in Unix time format.+    lastUpdateTime :: Data.POSIX+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressedDestinationSummary' 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', 'suppressedDestinationSummary_emailAddress' - The email address that\'s on the suppression list for your account.+--+-- 'reason', 'suppressedDestinationSummary_reason' - The reason that the address was added to the suppression list for your+-- account.+--+-- 'lastUpdateTime', 'suppressedDestinationSummary_lastUpdateTime' - The date and time when the suppressed destination was last updated,+-- shown in Unix time format.+newSuppressedDestinationSummary ::+  -- | 'emailAddress'+  Prelude.Text ->+  -- | 'reason'+  SuppressionListReason ->+  -- | 'lastUpdateTime'+  Prelude.UTCTime ->+  SuppressedDestinationSummary+newSuppressedDestinationSummary+  pEmailAddress_+  pReason_+  pLastUpdateTime_ =+    SuppressedDestinationSummary'+      { emailAddress =+          pEmailAddress_,+        reason = pReason_,+        lastUpdateTime =+          Data._Time Lens.# pLastUpdateTime_+      }++-- | The email address that\'s on the suppression list for your account.+suppressedDestinationSummary_emailAddress :: Lens.Lens' SuppressedDestinationSummary Prelude.Text+suppressedDestinationSummary_emailAddress = Lens.lens (\SuppressedDestinationSummary' {emailAddress} -> emailAddress) (\s@SuppressedDestinationSummary' {} a -> s {emailAddress = a} :: SuppressedDestinationSummary)++-- | The reason that the address was added to the suppression list for your+-- account.+suppressedDestinationSummary_reason :: Lens.Lens' SuppressedDestinationSummary SuppressionListReason+suppressedDestinationSummary_reason = Lens.lens (\SuppressedDestinationSummary' {reason} -> reason) (\s@SuppressedDestinationSummary' {} a -> s {reason = a} :: SuppressedDestinationSummary)++-- | The date and time when the suppressed destination was last updated,+-- shown in Unix time format.+suppressedDestinationSummary_lastUpdateTime :: Lens.Lens' SuppressedDestinationSummary Prelude.UTCTime+suppressedDestinationSummary_lastUpdateTime = Lens.lens (\SuppressedDestinationSummary' {lastUpdateTime} -> lastUpdateTime) (\s@SuppressedDestinationSummary' {} a -> s {lastUpdateTime = a} :: SuppressedDestinationSummary) Prelude.. Data._Time++instance Data.FromJSON SuppressedDestinationSummary where+  parseJSON =+    Data.withObject+      "SuppressedDestinationSummary"+      ( \x ->+          SuppressedDestinationSummary'+            Prelude.<$> (x Data..: "EmailAddress")+            Prelude.<*> (x Data..: "Reason")+            Prelude.<*> (x Data..: "LastUpdateTime")+      )++instance+  Prelude.Hashable+    SuppressedDestinationSummary+  where+  hashWithSalt _salt SuppressedDestinationSummary' {..} =+    _salt+      `Prelude.hashWithSalt` emailAddress+      `Prelude.hashWithSalt` reason+      `Prelude.hashWithSalt` lastUpdateTime++instance Prelude.NFData SuppressedDestinationSummary where+  rnf SuppressedDestinationSummary' {..} =+    Prelude.rnf emailAddress+      `Prelude.seq` Prelude.rnf reason+      `Prelude.seq` Prelude.rnf lastUpdateTime
+ gen/Amazonka/SESV2/Types/SuppressionAttributes.hs view
@@ -0,0 +1,107 @@+{-# 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.SESV2.Types.SuppressionAttributes+-- 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.SESV2.Types.SuppressionAttributes 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.SESV2.Types.SuppressionListReason++-- | An object that contains information about the email address suppression+-- preferences for your account in the current Amazon Web Services Region.+--+-- /See:/ 'newSuppressionAttributes' smart constructor.+data SuppressionAttributes = SuppressionAttributes'+  { -- | A list that contains the reasons that email addresses will be+    -- automatically added to the suppression list for your account. This list+    -- can contain any or all of the following:+    --+    -- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+    --     list for your account when a message sent to that address results in+    --     a complaint.+    --+    -- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+    --     for your account when a message sent to that address results in a+    --     hard bounce.+    suppressedReasons :: Prelude.Maybe [SuppressionListReason]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressionAttributes' 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:+--+-- 'suppressedReasons', 'suppressionAttributes_suppressedReasons' - A list that contains the reasons that email addresses will be+-- automatically added to the suppression list for your account. This list+-- can contain any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+newSuppressionAttributes ::+  SuppressionAttributes+newSuppressionAttributes =+  SuppressionAttributes'+    { suppressedReasons =+        Prelude.Nothing+    }++-- | A list that contains the reasons that email addresses will be+-- automatically added to the suppression list for your account. This list+-- can contain any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+suppressionAttributes_suppressedReasons :: Lens.Lens' SuppressionAttributes (Prelude.Maybe [SuppressionListReason])+suppressionAttributes_suppressedReasons = Lens.lens (\SuppressionAttributes' {suppressedReasons} -> suppressedReasons) (\s@SuppressionAttributes' {} a -> s {suppressedReasons = a} :: SuppressionAttributes) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON SuppressionAttributes where+  parseJSON =+    Data.withObject+      "SuppressionAttributes"+      ( \x ->+          SuppressionAttributes'+            Prelude.<$> ( x+                            Data..:? "SuppressedReasons"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable SuppressionAttributes where+  hashWithSalt _salt SuppressionAttributes' {..} =+    _salt `Prelude.hashWithSalt` suppressedReasons++instance Prelude.NFData SuppressionAttributes where+  rnf SuppressionAttributes' {..} =+    Prelude.rnf suppressedReasons
+ gen/Amazonka/SESV2/Types/SuppressionListDestination.hs view
@@ -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.SESV2.Types.SuppressionListDestination+-- 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.SESV2.Types.SuppressionListDestination 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.SESV2.Types.SuppressionListImportAction++-- | An object that contains details about the action of suppression list.+--+-- /See:/ 'newSuppressionListDestination' smart constructor.+data SuppressionListDestination = SuppressionListDestination'+  { -- | The type of action to perform on the address. The following are possible+    -- values:+    --+    -- -   PUT: add the addresses to the suppression list. If the record+    --     already exists, it will override it with the new value.+    --+    -- -   DELETE: remove the addresses from the suppression list.+    suppressionListImportAction :: SuppressionListImportAction+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressionListDestination' 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:+--+-- 'suppressionListImportAction', 'suppressionListDestination_suppressionListImportAction' - The type of action to perform on the address. The following are possible+-- values:+--+-- -   PUT: add the addresses to the suppression list. If the record+--     already exists, it will override it with the new value.+--+-- -   DELETE: remove the addresses from the suppression list.+newSuppressionListDestination ::+  -- | 'suppressionListImportAction'+  SuppressionListImportAction ->+  SuppressionListDestination+newSuppressionListDestination+  pSuppressionListImportAction_ =+    SuppressionListDestination'+      { suppressionListImportAction =+          pSuppressionListImportAction_+      }++-- | The type of action to perform on the address. The following are possible+-- values:+--+-- -   PUT: add the addresses to the suppression list. If the record+--     already exists, it will override it with the new value.+--+-- -   DELETE: remove the addresses from the suppression list.+suppressionListDestination_suppressionListImportAction :: Lens.Lens' SuppressionListDestination SuppressionListImportAction+suppressionListDestination_suppressionListImportAction = Lens.lens (\SuppressionListDestination' {suppressionListImportAction} -> suppressionListImportAction) (\s@SuppressionListDestination' {} a -> s {suppressionListImportAction = a} :: SuppressionListDestination)++instance Data.FromJSON SuppressionListDestination where+  parseJSON =+    Data.withObject+      "SuppressionListDestination"+      ( \x ->+          SuppressionListDestination'+            Prelude.<$> (x Data..: "SuppressionListImportAction")+      )++instance Prelude.Hashable SuppressionListDestination where+  hashWithSalt _salt SuppressionListDestination' {..} =+    _salt+      `Prelude.hashWithSalt` suppressionListImportAction++instance Prelude.NFData SuppressionListDestination where+  rnf SuppressionListDestination' {..} =+    Prelude.rnf suppressionListImportAction++instance Data.ToJSON SuppressionListDestination where+  toJSON SuppressionListDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "SuppressionListImportAction"+                  Data..= suppressionListImportAction+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/SuppressionListImportAction.hs view
@@ -0,0 +1,77 @@+{-# 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.SESV2.Types.SuppressionListImportAction+-- 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.SESV2.Types.SuppressionListImportAction+  ( SuppressionListImportAction+      ( ..,+        SuppressionListImportAction_DELETE,+        SuppressionListImportAction_PUT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The type of action to perform on the address. The following are possible+-- values:+--+-- -   PUT: add the addresses to the suppression list.+--+-- -   DELETE: remove the address from the suppression list.+newtype SuppressionListImportAction = SuppressionListImportAction'+  { fromSuppressionListImportAction ::+      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 SuppressionListImportAction_DELETE :: SuppressionListImportAction+pattern SuppressionListImportAction_DELETE = SuppressionListImportAction' "DELETE"++pattern SuppressionListImportAction_PUT :: SuppressionListImportAction+pattern SuppressionListImportAction_PUT = SuppressionListImportAction' "PUT"++{-# COMPLETE+  SuppressionListImportAction_DELETE,+  SuppressionListImportAction_PUT,+  SuppressionListImportAction'+  #-}
+ gen/Amazonka/SESV2/Types/SuppressionListReason.hs view
@@ -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.SESV2.Types.SuppressionListReason+-- 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.SESV2.Types.SuppressionListReason+  ( SuppressionListReason+      ( ..,+        SuppressionListReason_BOUNCE,+        SuppressionListReason_COMPLAINT+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The reason that the address was added to the suppression list for your+-- account. The value can be one of the following:+--+-- -   @COMPLAINT@ – Amazon SES added an email address to the suppression+--     list for your account because a message sent to that address results+--     in a complaint.+--+-- -   @BOUNCE@ – Amazon SES added an email address to the suppression list+--     for your account because a message sent to that address results in a+--     hard bounce.+newtype SuppressionListReason = SuppressionListReason'+  { fromSuppressionListReason ::+      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 SuppressionListReason_BOUNCE :: SuppressionListReason+pattern SuppressionListReason_BOUNCE = SuppressionListReason' "BOUNCE"++pattern SuppressionListReason_COMPLAINT :: SuppressionListReason+pattern SuppressionListReason_COMPLAINT = SuppressionListReason' "COMPLAINT"++{-# COMPLETE+  SuppressionListReason_BOUNCE,+  SuppressionListReason_COMPLAINT,+  SuppressionListReason'+  #-}
+ gen/Amazonka/SESV2/Types/SuppressionOptions.hs view
@@ -0,0 +1,116 @@+{-# 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.SESV2.Types.SuppressionOptions+-- 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.SESV2.Types.SuppressionOptions 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.SESV2.Types.SuppressionListReason++-- | An object that contains information about the suppression list+-- preferences for your account.+--+-- /See:/ 'newSuppressionOptions' smart constructor.+data SuppressionOptions = SuppressionOptions'+  { -- | A list that contains the reasons that email addresses are automatically+    -- added to the suppression list for your account. This list can contain+    -- any or all of the following:+    --+    -- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+    --     list for your account when a message sent to that address results in+    --     a complaint.+    --+    -- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+    --     for your account when a message sent to that address results in a+    --     hard bounce.+    suppressedReasons :: Prelude.Maybe [SuppressionListReason]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'SuppressionOptions' 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:+--+-- 'suppressedReasons', 'suppressionOptions_suppressedReasons' - A list that contains the reasons that email addresses are automatically+-- added to the suppression list for your account. This list can contain+-- any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+newSuppressionOptions ::+  SuppressionOptions+newSuppressionOptions =+  SuppressionOptions'+    { suppressedReasons =+        Prelude.Nothing+    }++-- | A list that contains the reasons that email addresses are automatically+-- added to the suppression list for your account. This list can contain+-- any or all of the following:+--+-- -   @COMPLAINT@ – Amazon SES adds an email address to the suppression+--     list for your account when a message sent to that address results in+--     a complaint.+--+-- -   @BOUNCE@ – Amazon SES adds an email address to the suppression list+--     for your account when a message sent to that address results in a+--     hard bounce.+suppressionOptions_suppressedReasons :: Lens.Lens' SuppressionOptions (Prelude.Maybe [SuppressionListReason])+suppressionOptions_suppressedReasons = Lens.lens (\SuppressionOptions' {suppressedReasons} -> suppressedReasons) (\s@SuppressionOptions' {} a -> s {suppressedReasons = a} :: SuppressionOptions) Prelude.. Lens.mapping Lens.coerced++instance Data.FromJSON SuppressionOptions where+  parseJSON =+    Data.withObject+      "SuppressionOptions"+      ( \x ->+          SuppressionOptions'+            Prelude.<$> ( x+                            Data..:? "SuppressedReasons"+                            Data..!= Prelude.mempty+                        )+      )++instance Prelude.Hashable SuppressionOptions where+  hashWithSalt _salt SuppressionOptions' {..} =+    _salt `Prelude.hashWithSalt` suppressedReasons++instance Prelude.NFData SuppressionOptions where+  rnf SuppressionOptions' {..} =+    Prelude.rnf suppressedReasons++instance Data.ToJSON SuppressionOptions where+  toJSON SuppressionOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("SuppressedReasons" Data..=)+              Prelude.<$> suppressedReasons+          ]+      )
+ gen/Amazonka/SESV2/Types/Tag.hs view
@@ -0,0 +1,137 @@+{-# 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.SESV2.Types.Tag+-- 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.SESV2.Types.Tag 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++-- | An object that defines the tags that are associated with a resource.+-- A /tag/ is a label that you optionally define and associate with a+-- resource. Tags can help you categorize and manage resources in different+-- ways, such as by purpose, owner, environment, or other criteria. A+-- resource can have as many as 50 tags.+--+-- Each tag consists of a required /tag key/ and an associated /tag value/,+-- both of which you define. A tag key is a general label that acts as a+-- category for a more specific tag value. A tag value acts as a descriptor+-- within a tag key. A tag key can contain as many as 128 characters. A tag+-- value can contain as many as 256 characters. The characters can be+-- Unicode letters, digits, white space, or one of the following symbols: _+-- . : \/ = + -. The following additional restrictions apply to tags:+--+-- -   Tag keys and values are case sensitive.+--+-- -   For each associated resource, each tag key must be unique and it can+--     have only one value.+--+-- -   The @aws:@ prefix is reserved for use by Amazon Web Services; you+--     can’t use it in any tag keys or values that you define. In addition,+--     you can\'t edit or remove tag keys or values that use this prefix.+--     Tags that use this prefix don’t count against the limit of 50 tags+--     per resource.+--+-- -   You can associate tags with public or shared resources, but the tags+--     are available only for your Amazon Web Services account, not any+--     other accounts that share the resource. In addition, the tags are+--     available only for resources that are located in the specified+--     Amazon Web Services Region for your Amazon Web Services account.+--+-- /See:/ 'newTag' smart constructor.+data Tag = Tag'+  { -- | One part of a key-value pair that defines a tag. The maximum length of a+    -- tag key is 128 characters. The minimum length is 1 character.+    key :: Prelude.Text,+    -- | The optional part of a key-value pair that defines a tag. The maximum+    -- length of a tag value is 256 characters. The minimum length is 0+    -- characters. If you don\'t want a resource to have a specific tag value,+    -- don\'t specify a value for this parameter. If you don\'t specify a+    -- value, Amazon SES sets the value to an empty string.+    value :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Tag' 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:+--+-- 'key', 'tag_key' - One part of a key-value pair that defines a tag. The maximum length of a+-- tag key is 128 characters. The minimum length is 1 character.+--+-- 'value', 'tag_value' - The optional part of a key-value pair that defines a tag. The maximum+-- length of a tag value is 256 characters. The minimum length is 0+-- characters. If you don\'t want a resource to have a specific tag value,+-- don\'t specify a value for this parameter. If you don\'t specify a+-- value, Amazon SES sets the value to an empty string.+newTag ::+  -- | 'key'+  Prelude.Text ->+  -- | 'value'+  Prelude.Text ->+  Tag+newTag pKey_ pValue_ =+  Tag' {key = pKey_, value = pValue_}++-- | One part of a key-value pair that defines a tag. The maximum length of a+-- tag key is 128 characters. The minimum length is 1 character.+tag_key :: Lens.Lens' Tag Prelude.Text+tag_key = Lens.lens (\Tag' {key} -> key) (\s@Tag' {} a -> s {key = a} :: Tag)++-- | The optional part of a key-value pair that defines a tag. The maximum+-- length of a tag value is 256 characters. The minimum length is 0+-- characters. If you don\'t want a resource to have a specific tag value,+-- don\'t specify a value for this parameter. If you don\'t specify a+-- value, Amazon SES sets the value to an empty string.+tag_value :: Lens.Lens' Tag Prelude.Text+tag_value = Lens.lens (\Tag' {value} -> value) (\s@Tag' {} a -> s {value = a} :: Tag)++instance Data.FromJSON Tag where+  parseJSON =+    Data.withObject+      "Tag"+      ( \x ->+          Tag'+            Prelude.<$> (x Data..: "Key")+            Prelude.<*> (x Data..: "Value")+      )++instance Prelude.Hashable Tag where+  hashWithSalt _salt Tag' {..} =+    _salt+      `Prelude.hashWithSalt` key+      `Prelude.hashWithSalt` value++instance Prelude.NFData Tag where+  rnf Tag' {..} =+    Prelude.rnf key `Prelude.seq` Prelude.rnf value++instance Data.ToJSON Tag where+  toJSON Tag' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("Key" Data..= key),+            Prelude.Just ("Value" Data..= value)+          ]+      )
+ gen/Amazonka/SESV2/Types/Template.hs view
@@ -0,0 +1,114 @@+{-# 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.SESV2.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.SESV2.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++-- | An object that defines the email template to use for an email message,+-- and the values to use for any message variables in that template. An+-- /email template/ is a type of message template that contains content+-- that you want to define, save, and reuse in email messages that you+-- send.+--+-- /See:/ 'newTemplate' smart constructor.+data Template = Template'+  { -- | The Amazon Resource Name (ARN) of the template.+    templateArn :: Prelude.Maybe Prelude.Text,+    -- | An object that defines the values to use for message variables in the+    -- template. This object is a set of key-value pairs. Each key defines a+    -- message variable in the template. The corresponding value defines the+    -- value to use for that variable.+    templateData :: 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.Maybe 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:+--+-- 'templateArn', 'template_templateArn' - The Amazon Resource Name (ARN) of the template.+--+-- 'templateData', 'template_templateData' - An object that defines the values to use for message variables in the+-- template. This object is a set of key-value pairs. Each key defines a+-- message variable in the template. The corresponding value defines the+-- value to use for that variable.+--+-- '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 ::+  Template+newTemplate =+  Template'+    { templateArn = Prelude.Nothing,+      templateData = Prelude.Nothing,+      templateName = Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the template.+template_templateArn :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)+template_templateArn = Lens.lens (\Template' {templateArn} -> templateArn) (\s@Template' {} a -> s {templateArn = a} :: Template)++-- | An object that defines the values to use for message variables in the+-- template. This object is a set of key-value pairs. Each key defines a+-- message variable in the template. The corresponding value defines the+-- value to use for that variable.+template_templateData :: Lens.Lens' Template (Prelude.Maybe Prelude.Text)+template_templateData = Lens.lens (\Template' {templateData} -> templateData) (\s@Template' {} a -> s {templateData = 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.Maybe Prelude.Text)+template_templateName = Lens.lens (\Template' {templateName} -> templateName) (\s@Template' {} a -> s {templateName = a} :: Template)++instance Prelude.Hashable Template where+  hashWithSalt _salt Template' {..} =+    _salt+      `Prelude.hashWithSalt` templateArn+      `Prelude.hashWithSalt` templateData+      `Prelude.hashWithSalt` templateName++instance Prelude.NFData Template where+  rnf Template' {..} =+    Prelude.rnf templateArn+      `Prelude.seq` Prelude.rnf templateData+      `Prelude.seq` Prelude.rnf templateName++instance Data.ToJSON Template where+  toJSON Template' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TemplateArn" Data..=) Prelude.<$> templateArn,+            ("TemplateData" Data..=) Prelude.<$> templateData,+            ("TemplateName" Data..=) Prelude.<$> templateName+          ]+      )
+ gen/Amazonka/SESV2/Types/TlsPolicy.hs view
@@ -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.SESV2.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.SESV2.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++-- | 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.+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'+  #-}
+ gen/Amazonka/SESV2/Types/Topic.hs view
@@ -0,0 +1,137 @@+{-# 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.SESV2.Types.Topic+-- 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.SESV2.Types.Topic 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.SESV2.Types.SubscriptionStatus++-- | An interest group, theme, or label within a list. Lists can have+-- multiple topics.+--+-- /See:/ 'newTopic' smart constructor.+data Topic = Topic'+  { -- | A description of what the topic is about, which the contact will see.+    description :: Prelude.Maybe Prelude.Text,+    -- | The name of the topic.+    topicName :: Prelude.Text,+    -- | The name of the topic the contact will see.+    displayName :: Prelude.Text,+    -- | The default subscription status to be applied to a contact if the+    -- contact has not noted their preference for subscribing to a topic.+    defaultSubscriptionStatus :: SubscriptionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'Topic' 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:+--+-- 'description', 'topic_description' - A description of what the topic is about, which the contact will see.+--+-- 'topicName', 'topic_topicName' - The name of the topic.+--+-- 'displayName', 'topic_displayName' - The name of the topic the contact will see.+--+-- 'defaultSubscriptionStatus', 'topic_defaultSubscriptionStatus' - The default subscription status to be applied to a contact if the+-- contact has not noted their preference for subscribing to a topic.+newTopic ::+  -- | 'topicName'+  Prelude.Text ->+  -- | 'displayName'+  Prelude.Text ->+  -- | 'defaultSubscriptionStatus'+  SubscriptionStatus ->+  Topic+newTopic+  pTopicName_+  pDisplayName_+  pDefaultSubscriptionStatus_ =+    Topic'+      { description = Prelude.Nothing,+        topicName = pTopicName_,+        displayName = pDisplayName_,+        defaultSubscriptionStatus =+          pDefaultSubscriptionStatus_+      }++-- | A description of what the topic is about, which the contact will see.+topic_description :: Lens.Lens' Topic (Prelude.Maybe Prelude.Text)+topic_description = Lens.lens (\Topic' {description} -> description) (\s@Topic' {} a -> s {description = a} :: Topic)++-- | The name of the topic.+topic_topicName :: Lens.Lens' Topic Prelude.Text+topic_topicName = Lens.lens (\Topic' {topicName} -> topicName) (\s@Topic' {} a -> s {topicName = a} :: Topic)++-- | The name of the topic the contact will see.+topic_displayName :: Lens.Lens' Topic Prelude.Text+topic_displayName = Lens.lens (\Topic' {displayName} -> displayName) (\s@Topic' {} a -> s {displayName = a} :: Topic)++-- | The default subscription status to be applied to a contact if the+-- contact has not noted their preference for subscribing to a topic.+topic_defaultSubscriptionStatus :: Lens.Lens' Topic SubscriptionStatus+topic_defaultSubscriptionStatus = Lens.lens (\Topic' {defaultSubscriptionStatus} -> defaultSubscriptionStatus) (\s@Topic' {} a -> s {defaultSubscriptionStatus = a} :: Topic)++instance Data.FromJSON Topic where+  parseJSON =+    Data.withObject+      "Topic"+      ( \x ->+          Topic'+            Prelude.<$> (x Data..:? "Description")+            Prelude.<*> (x Data..: "TopicName")+            Prelude.<*> (x Data..: "DisplayName")+            Prelude.<*> (x Data..: "DefaultSubscriptionStatus")+      )++instance Prelude.Hashable Topic where+  hashWithSalt _salt Topic' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` topicName+      `Prelude.hashWithSalt` displayName+      `Prelude.hashWithSalt` defaultSubscriptionStatus++instance Prelude.NFData Topic where+  rnf Topic' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf topicName+      `Prelude.seq` Prelude.rnf displayName+      `Prelude.seq` Prelude.rnf defaultSubscriptionStatus++instance Data.ToJSON Topic where+  toJSON Topic' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            Prelude.Just ("TopicName" Data..= topicName),+            Prelude.Just ("DisplayName" Data..= displayName),+            Prelude.Just+              ( "DefaultSubscriptionStatus"+                  Data..= defaultSubscriptionStatus+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/TopicFilter.hs view
@@ -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.SESV2.Types.TopicFilter+-- 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.SESV2.Types.TopicFilter 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++-- | Used for filtering by a specific topic preference.+--+-- /See:/ 'newTopicFilter' smart constructor.+data TopicFilter = TopicFilter'+  { -- | The name of a topic on which you wish to apply the filter.+    topicName :: Prelude.Maybe Prelude.Text,+    -- | Notes that the default subscription status should be applied to a+    -- contact because the contact has not noted their preference for+    -- subscribing to a topic.+    useDefaultIfPreferenceUnavailable :: Prelude.Maybe Prelude.Bool+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TopicFilter' 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:+--+-- 'topicName', 'topicFilter_topicName' - The name of a topic on which you wish to apply the filter.+--+-- 'useDefaultIfPreferenceUnavailable', 'topicFilter_useDefaultIfPreferenceUnavailable' - Notes that the default subscription status should be applied to a+-- contact because the contact has not noted their preference for+-- subscribing to a topic.+newTopicFilter ::+  TopicFilter+newTopicFilter =+  TopicFilter'+    { topicName = Prelude.Nothing,+      useDefaultIfPreferenceUnavailable = Prelude.Nothing+    }++-- | The name of a topic on which you wish to apply the filter.+topicFilter_topicName :: Lens.Lens' TopicFilter (Prelude.Maybe Prelude.Text)+topicFilter_topicName = Lens.lens (\TopicFilter' {topicName} -> topicName) (\s@TopicFilter' {} a -> s {topicName = a} :: TopicFilter)++-- | Notes that the default subscription status should be applied to a+-- contact because the contact has not noted their preference for+-- subscribing to a topic.+topicFilter_useDefaultIfPreferenceUnavailable :: Lens.Lens' TopicFilter (Prelude.Maybe Prelude.Bool)+topicFilter_useDefaultIfPreferenceUnavailable = Lens.lens (\TopicFilter' {useDefaultIfPreferenceUnavailable} -> useDefaultIfPreferenceUnavailable) (\s@TopicFilter' {} a -> s {useDefaultIfPreferenceUnavailable = a} :: TopicFilter)++instance Prelude.Hashable TopicFilter where+  hashWithSalt _salt TopicFilter' {..} =+    _salt+      `Prelude.hashWithSalt` topicName+      `Prelude.hashWithSalt` useDefaultIfPreferenceUnavailable++instance Prelude.NFData TopicFilter where+  rnf TopicFilter' {..} =+    Prelude.rnf topicName+      `Prelude.seq` Prelude.rnf useDefaultIfPreferenceUnavailable++instance Data.ToJSON TopicFilter where+  toJSON TopicFilter' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TopicName" Data..=) Prelude.<$> topicName,+            ("UseDefaultIfPreferenceUnavailable" Data..=)+              Prelude.<$> useDefaultIfPreferenceUnavailable+          ]+      )
+ gen/Amazonka/SESV2/Types/TopicPreference.hs view
@@ -0,0 +1,102 @@+{-# 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.SESV2.Types.TopicPreference+-- 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.SESV2.Types.TopicPreference 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.SESV2.Types.SubscriptionStatus++-- | The contact\'s preference for being opted-in to or opted-out of a topic.+--+-- /See:/ 'newTopicPreference' smart constructor.+data TopicPreference = TopicPreference'+  { -- | The name of the topic.+    topicName :: Prelude.Text,+    -- | The contact\'s subscription status to a topic which is either @OPT_IN@+    -- or @OPT_OUT@.+    subscriptionStatus :: SubscriptionStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'TopicPreference' 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:+--+-- 'topicName', 'topicPreference_topicName' - The name of the topic.+--+-- 'subscriptionStatus', 'topicPreference_subscriptionStatus' - The contact\'s subscription status to a topic which is either @OPT_IN@+-- or @OPT_OUT@.+newTopicPreference ::+  -- | 'topicName'+  Prelude.Text ->+  -- | 'subscriptionStatus'+  SubscriptionStatus ->+  TopicPreference+newTopicPreference pTopicName_ pSubscriptionStatus_ =+  TopicPreference'+    { topicName = pTopicName_,+      subscriptionStatus = pSubscriptionStatus_+    }++-- | The name of the topic.+topicPreference_topicName :: Lens.Lens' TopicPreference Prelude.Text+topicPreference_topicName = Lens.lens (\TopicPreference' {topicName} -> topicName) (\s@TopicPreference' {} a -> s {topicName = a} :: TopicPreference)++-- | The contact\'s subscription status to a topic which is either @OPT_IN@+-- or @OPT_OUT@.+topicPreference_subscriptionStatus :: Lens.Lens' TopicPreference SubscriptionStatus+topicPreference_subscriptionStatus = Lens.lens (\TopicPreference' {subscriptionStatus} -> subscriptionStatus) (\s@TopicPreference' {} a -> s {subscriptionStatus = a} :: TopicPreference)++instance Data.FromJSON TopicPreference where+  parseJSON =+    Data.withObject+      "TopicPreference"+      ( \x ->+          TopicPreference'+            Prelude.<$> (x Data..: "TopicName")+            Prelude.<*> (x Data..: "SubscriptionStatus")+      )++instance Prelude.Hashable TopicPreference where+  hashWithSalt _salt TopicPreference' {..} =+    _salt+      `Prelude.hashWithSalt` topicName+      `Prelude.hashWithSalt` subscriptionStatus++instance Prelude.NFData TopicPreference where+  rnf TopicPreference' {..} =+    Prelude.rnf topicName+      `Prelude.seq` Prelude.rnf subscriptionStatus++instance Data.ToJSON TopicPreference where+  toJSON TopicPreference' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just ("TopicName" Data..= topicName),+            Prelude.Just+              ("SubscriptionStatus" Data..= subscriptionStatus)+          ]+      )
+ gen/Amazonka/SESV2/Types/TrackingOptions.hs view
@@ -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.SESV2.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.SESV2.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++-- | An object that defines the tracking options for a configuration set.+-- When you use the Amazon SES API v2 to send an email, it contains an+-- invisible image that\'s used to track when recipients open your email.+-- If your email contains links, those links are changed slightly in order+-- to track when recipients click them.+--+-- These images and links include references to a domain operated by Amazon+-- Web Services. You can optionally configure the Amazon SES to use a+-- domain that you operate for these images and links.+--+-- /See:/ 'newTrackingOptions' smart constructor.+data TrackingOptions = TrackingOptions'+  { -- | The domain to use for tracking open and click events.+    customRedirectDomain :: 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 domain to use for tracking open and click events.+newTrackingOptions ::+  -- | 'customRedirectDomain'+  Prelude.Text ->+  TrackingOptions+newTrackingOptions pCustomRedirectDomain_ =+  TrackingOptions'+    { customRedirectDomain =+        pCustomRedirectDomain_+    }++-- | The domain to use for tracking open and click events.+trackingOptions_customRedirectDomain :: Lens.Lens' TrackingOptions Prelude.Text+trackingOptions_customRedirectDomain = Lens.lens (\TrackingOptions' {customRedirectDomain} -> customRedirectDomain) (\s@TrackingOptions' {} a -> s {customRedirectDomain = a} :: TrackingOptions)++instance Data.FromJSON TrackingOptions where+  parseJSON =+    Data.withObject+      "TrackingOptions"+      ( \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.ToJSON TrackingOptions where+  toJSON TrackingOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ( "CustomRedirectDomain"+                  Data..= customRedirectDomain+              )+          ]+      )
+ gen/Amazonka/SESV2/Types/VdmAttributes.hs view
@@ -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.SESV2.Types.VdmAttributes+-- 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.SESV2.Types.VdmAttributes 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.SESV2.Types.DashboardAttributes+import Amazonka.SESV2.Types.FeatureStatus+import Amazonka.SESV2.Types.GuardianAttributes++-- | The VDM attributes that apply to your Amazon SES account.+--+-- /See:/ 'newVdmAttributes' smart constructor.+data VdmAttributes = VdmAttributes'+  { -- | Specifies additional settings for your VDM configuration as applicable+    -- to the Dashboard.+    dashboardAttributes :: Prelude.Maybe DashboardAttributes,+    -- | Specifies additional settings for your VDM configuration as applicable+    -- to the Guardian.+    guardianAttributes :: Prelude.Maybe GuardianAttributes,+    -- | Specifies the status of your VDM configuration. Can be one of the+    -- following:+    --+    -- -   @ENABLED@ – Amazon SES enables VDM for your account.+    --+    -- -   @DISABLED@ – Amazon SES disables VDM for your account.+    vdmEnabled :: FeatureStatus+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VdmAttributes' 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:+--+-- 'dashboardAttributes', 'vdmAttributes_dashboardAttributes' - Specifies additional settings for your VDM configuration as applicable+-- to the Dashboard.+--+-- 'guardianAttributes', 'vdmAttributes_guardianAttributes' - Specifies additional settings for your VDM configuration as applicable+-- to the Guardian.+--+-- 'vdmEnabled', 'vdmAttributes_vdmEnabled' - Specifies the status of your VDM configuration. Can be one of the+-- following:+--+-- -   @ENABLED@ – Amazon SES enables VDM for your account.+--+-- -   @DISABLED@ – Amazon SES disables VDM for your account.+newVdmAttributes ::+  -- | 'vdmEnabled'+  FeatureStatus ->+  VdmAttributes+newVdmAttributes pVdmEnabled_ =+  VdmAttributes'+    { dashboardAttributes =+        Prelude.Nothing,+      guardianAttributes = Prelude.Nothing,+      vdmEnabled = pVdmEnabled_+    }++-- | Specifies additional settings for your VDM configuration as applicable+-- to the Dashboard.+vdmAttributes_dashboardAttributes :: Lens.Lens' VdmAttributes (Prelude.Maybe DashboardAttributes)+vdmAttributes_dashboardAttributes = Lens.lens (\VdmAttributes' {dashboardAttributes} -> dashboardAttributes) (\s@VdmAttributes' {} a -> s {dashboardAttributes = a} :: VdmAttributes)++-- | Specifies additional settings for your VDM configuration as applicable+-- to the Guardian.+vdmAttributes_guardianAttributes :: Lens.Lens' VdmAttributes (Prelude.Maybe GuardianAttributes)+vdmAttributes_guardianAttributes = Lens.lens (\VdmAttributes' {guardianAttributes} -> guardianAttributes) (\s@VdmAttributes' {} a -> s {guardianAttributes = a} :: VdmAttributes)++-- | Specifies the status of your VDM configuration. Can be one of the+-- following:+--+-- -   @ENABLED@ – Amazon SES enables VDM for your account.+--+-- -   @DISABLED@ – Amazon SES disables VDM for your account.+vdmAttributes_vdmEnabled :: Lens.Lens' VdmAttributes FeatureStatus+vdmAttributes_vdmEnabled = Lens.lens (\VdmAttributes' {vdmEnabled} -> vdmEnabled) (\s@VdmAttributes' {} a -> s {vdmEnabled = a} :: VdmAttributes)++instance Data.FromJSON VdmAttributes where+  parseJSON =+    Data.withObject+      "VdmAttributes"+      ( \x ->+          VdmAttributes'+            Prelude.<$> (x Data..:? "DashboardAttributes")+            Prelude.<*> (x Data..:? "GuardianAttributes")+            Prelude.<*> (x Data..: "VdmEnabled")+      )++instance Prelude.Hashable VdmAttributes where+  hashWithSalt _salt VdmAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` dashboardAttributes+      `Prelude.hashWithSalt` guardianAttributes+      `Prelude.hashWithSalt` vdmEnabled++instance Prelude.NFData VdmAttributes where+  rnf VdmAttributes' {..} =+    Prelude.rnf dashboardAttributes+      `Prelude.seq` Prelude.rnf guardianAttributes+      `Prelude.seq` Prelude.rnf vdmEnabled++instance Data.ToJSON VdmAttributes where+  toJSON VdmAttributes' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DashboardAttributes" Data..=)+              Prelude.<$> dashboardAttributes,+            ("GuardianAttributes" Data..=)+              Prelude.<$> guardianAttributes,+            Prelude.Just ("VdmEnabled" Data..= vdmEnabled)+          ]+      )
+ gen/Amazonka/SESV2/Types/VdmOptions.hs view
@@ -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.SESV2.Types.VdmOptions+-- 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.SESV2.Types.VdmOptions 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.SESV2.Types.DashboardOptions+import Amazonka.SESV2.Types.GuardianOptions++-- | An object that defines the VDM settings that apply to emails that you+-- send using the configuration set.+--+-- /See:/ 'newVdmOptions' smart constructor.+data VdmOptions = VdmOptions'+  { -- | Specifies additional settings for your VDM configuration as applicable+    -- to the Dashboard.+    dashboardOptions :: Prelude.Maybe DashboardOptions,+    -- | Specifies additional settings for your VDM configuration as applicable+    -- to the Guardian.+    guardianOptions :: Prelude.Maybe GuardianOptions+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VdmOptions' 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:+--+-- 'dashboardOptions', 'vdmOptions_dashboardOptions' - Specifies additional settings for your VDM configuration as applicable+-- to the Dashboard.+--+-- 'guardianOptions', 'vdmOptions_guardianOptions' - Specifies additional settings for your VDM configuration as applicable+-- to the Guardian.+newVdmOptions ::+  VdmOptions+newVdmOptions =+  VdmOptions'+    { dashboardOptions = Prelude.Nothing,+      guardianOptions = Prelude.Nothing+    }++-- | Specifies additional settings for your VDM configuration as applicable+-- to the Dashboard.+vdmOptions_dashboardOptions :: Lens.Lens' VdmOptions (Prelude.Maybe DashboardOptions)+vdmOptions_dashboardOptions = Lens.lens (\VdmOptions' {dashboardOptions} -> dashboardOptions) (\s@VdmOptions' {} a -> s {dashboardOptions = a} :: VdmOptions)++-- | Specifies additional settings for your VDM configuration as applicable+-- to the Guardian.+vdmOptions_guardianOptions :: Lens.Lens' VdmOptions (Prelude.Maybe GuardianOptions)+vdmOptions_guardianOptions = Lens.lens (\VdmOptions' {guardianOptions} -> guardianOptions) (\s@VdmOptions' {} a -> s {guardianOptions = a} :: VdmOptions)++instance Data.FromJSON VdmOptions where+  parseJSON =+    Data.withObject+      "VdmOptions"+      ( \x ->+          VdmOptions'+            Prelude.<$> (x Data..:? "DashboardOptions")+            Prelude.<*> (x Data..:? "GuardianOptions")+      )++instance Prelude.Hashable VdmOptions where+  hashWithSalt _salt VdmOptions' {..} =+    _salt+      `Prelude.hashWithSalt` dashboardOptions+      `Prelude.hashWithSalt` guardianOptions++instance Prelude.NFData VdmOptions where+  rnf VdmOptions' {..} =+    Prelude.rnf dashboardOptions+      `Prelude.seq` Prelude.rnf guardianOptions++instance Data.ToJSON VdmOptions where+  toJSON VdmOptions' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("DashboardOptions" Data..=)+              Prelude.<$> dashboardOptions,+            ("GuardianOptions" Data..=)+              Prelude.<$> guardianOptions+          ]+      )
+ gen/Amazonka/SESV2/Types/VerificationStatus.hs view
@@ -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.SESV2.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.SESV2.Types.VerificationStatus+  ( VerificationStatus+      ( ..,+        VerificationStatus_FAILED,+        VerificationStatus_NOT_STARTED,+        VerificationStatus_PENDING,+        VerificationStatus_SUCCESS,+        VerificationStatus_TEMPORARY_FAILURE+      ),+  )+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_NOT_STARTED :: VerificationStatus+pattern VerificationStatus_NOT_STARTED = VerificationStatus' "NOT_STARTED"++pattern VerificationStatus_PENDING :: VerificationStatus+pattern VerificationStatus_PENDING = VerificationStatus' "PENDING"++pattern VerificationStatus_SUCCESS :: VerificationStatus+pattern VerificationStatus_SUCCESS = VerificationStatus' "SUCCESS"++pattern VerificationStatus_TEMPORARY_FAILURE :: VerificationStatus+pattern VerificationStatus_TEMPORARY_FAILURE = VerificationStatus' "TEMPORARY_FAILURE"++{-# COMPLETE+  VerificationStatus_FAILED,+  VerificationStatus_NOT_STARTED,+  VerificationStatus_PENDING,+  VerificationStatus_SUCCESS,+  VerificationStatus_TEMPORARY_FAILURE,+  VerificationStatus'+  #-}
+ gen/Amazonka/SESV2/Types/VolumeStatistics.hs view
@@ -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.SESV2.Types.VolumeStatistics+-- 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.SESV2.Types.VolumeStatistics 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++-- | An object that contains information about the amount of email that was+-- delivered to recipients.+--+-- /See:/ 'newVolumeStatistics' smart constructor.+data VolumeStatistics = VolumeStatistics'+  { -- | The total number of emails that arrived in recipients\' inboxes.+    inboxRawCount :: Prelude.Maybe Prelude.Integer,+    -- | An estimate of the percentage of emails sent from the current domain+    -- that will arrive in recipients\' inboxes.+    projectedInbox :: Prelude.Maybe Prelude.Integer,+    -- | An estimate of the percentage of emails sent from the current domain+    -- that will arrive in recipients\' spam or junk mail folders.+    projectedSpam :: Prelude.Maybe Prelude.Integer,+    -- | The total number of emails that arrived in recipients\' spam or junk+    -- mail folders.+    spamRawCount :: Prelude.Maybe Prelude.Integer+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'VolumeStatistics' 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:+--+-- 'inboxRawCount', 'volumeStatistics_inboxRawCount' - The total number of emails that arrived in recipients\' inboxes.+--+-- 'projectedInbox', 'volumeStatistics_projectedInbox' - An estimate of the percentage of emails sent from the current domain+-- that will arrive in recipients\' inboxes.+--+-- 'projectedSpam', 'volumeStatistics_projectedSpam' - An estimate of the percentage of emails sent from the current domain+-- that will arrive in recipients\' spam or junk mail folders.+--+-- 'spamRawCount', 'volumeStatistics_spamRawCount' - The total number of emails that arrived in recipients\' spam or junk+-- mail folders.+newVolumeStatistics ::+  VolumeStatistics+newVolumeStatistics =+  VolumeStatistics'+    { inboxRawCount = Prelude.Nothing,+      projectedInbox = Prelude.Nothing,+      projectedSpam = Prelude.Nothing,+      spamRawCount = Prelude.Nothing+    }++-- | The total number of emails that arrived in recipients\' inboxes.+volumeStatistics_inboxRawCount :: Lens.Lens' VolumeStatistics (Prelude.Maybe Prelude.Integer)+volumeStatistics_inboxRawCount = Lens.lens (\VolumeStatistics' {inboxRawCount} -> inboxRawCount) (\s@VolumeStatistics' {} a -> s {inboxRawCount = a} :: VolumeStatistics)++-- | An estimate of the percentage of emails sent from the current domain+-- that will arrive in recipients\' inboxes.+volumeStatistics_projectedInbox :: Lens.Lens' VolumeStatistics (Prelude.Maybe Prelude.Integer)+volumeStatistics_projectedInbox = Lens.lens (\VolumeStatistics' {projectedInbox} -> projectedInbox) (\s@VolumeStatistics' {} a -> s {projectedInbox = a} :: VolumeStatistics)++-- | An estimate of the percentage of emails sent from the current domain+-- that will arrive in recipients\' spam or junk mail folders.+volumeStatistics_projectedSpam :: Lens.Lens' VolumeStatistics (Prelude.Maybe Prelude.Integer)+volumeStatistics_projectedSpam = Lens.lens (\VolumeStatistics' {projectedSpam} -> projectedSpam) (\s@VolumeStatistics' {} a -> s {projectedSpam = a} :: VolumeStatistics)++-- | The total number of emails that arrived in recipients\' spam or junk+-- mail folders.+volumeStatistics_spamRawCount :: Lens.Lens' VolumeStatistics (Prelude.Maybe Prelude.Integer)+volumeStatistics_spamRawCount = Lens.lens (\VolumeStatistics' {spamRawCount} -> spamRawCount) (\s@VolumeStatistics' {} a -> s {spamRawCount = a} :: VolumeStatistics)++instance Data.FromJSON VolumeStatistics where+  parseJSON =+    Data.withObject+      "VolumeStatistics"+      ( \x ->+          VolumeStatistics'+            Prelude.<$> (x Data..:? "InboxRawCount")+            Prelude.<*> (x Data..:? "ProjectedInbox")+            Prelude.<*> (x Data..:? "ProjectedSpam")+            Prelude.<*> (x Data..:? "SpamRawCount")+      )++instance Prelude.Hashable VolumeStatistics where+  hashWithSalt _salt VolumeStatistics' {..} =+    _salt+      `Prelude.hashWithSalt` inboxRawCount+      `Prelude.hashWithSalt` projectedInbox+      `Prelude.hashWithSalt` projectedSpam+      `Prelude.hashWithSalt` spamRawCount++instance Prelude.NFData VolumeStatistics where+  rnf VolumeStatistics' {..} =+    Prelude.rnf inboxRawCount+      `Prelude.seq` Prelude.rnf projectedInbox+      `Prelude.seq` Prelude.rnf projectedSpam+      `Prelude.seq` Prelude.rnf spamRawCount
+ gen/Amazonka/SESV2/Types/WarmupStatus.hs view
@@ -0,0 +1,72 @@+{-# 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.SESV2.Types.WarmupStatus+-- 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.SESV2.Types.WarmupStatus+  ( WarmupStatus+      ( ..,+        WarmupStatus_DONE,+        WarmupStatus_IN_PROGRESS+      ),+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Data as Data+import qualified Amazonka.Prelude as Prelude++-- | The warmup status of a dedicated IP.+newtype WarmupStatus = WarmupStatus'+  { fromWarmupStatus ::+      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 WarmupStatus_DONE :: WarmupStatus+pattern WarmupStatus_DONE = WarmupStatus' "DONE"++pattern WarmupStatus_IN_PROGRESS :: WarmupStatus+pattern WarmupStatus_IN_PROGRESS = WarmupStatus' "IN_PROGRESS"++{-# COMPLETE+  WarmupStatus_DONE,+  WarmupStatus_IN_PROGRESS,+  WarmupStatus'+  #-}
+ gen/Amazonka/SESV2/UntagResource.hs view
@@ -0,0 +1,186 @@+{-# 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.SESV2.UntagResource+-- Copyright   : (c) 2013-2023 Brendan Hay+-- License     : Mozilla Public License, v. 2.0.+-- Maintainer  : Brendan Hay+-- Stability   : auto-generated+-- Portability : non-portable (GHC extensions)+--+-- Remove one or more tags (keys and values) from a specified resource.+module Amazonka.SESV2.UntagResource+  ( -- * Creating a Request+    UntagResource (..),+    newUntagResource,++    -- * Request Lenses+    untagResource_resourceArn,+    untagResource_tagKeys,++    -- * Destructuring the Response+    UntagResourceResponse (..),+    newUntagResourceResponse,++    -- * Response Lenses+    untagResourceResponse_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.SESV2.Types++-- | /See:/ 'newUntagResource' smart constructor.+data UntagResource = UntagResource'+  { -- | The Amazon Resource Name (ARN) of the resource that you want to remove+    -- one or more tags from.+    resourceArn :: Prelude.Text,+    -- | The tags (tag keys) that you want to remove from the resource. When you+    -- specify a tag key, the action removes both that key and its associated+    -- tag value.+    --+    -- To remove more than one tag from the resource, append the @TagKeys@+    -- parameter and argument for each additional tag to remove, separated by+    -- an ampersand. For example:+    -- @\/v2\/email\/tags?ResourceArn=ResourceArn&TagKeys=Key1&TagKeys=Key2@+    tagKeys :: [Prelude.Text]+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResource' 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:+--+-- 'resourceArn', 'untagResource_resourceArn' - The Amazon Resource Name (ARN) of the resource that you want to remove+-- one or more tags from.+--+-- 'tagKeys', 'untagResource_tagKeys' - The tags (tag keys) that you want to remove from the resource. When you+-- specify a tag key, the action removes both that key and its associated+-- tag value.+--+-- To remove more than one tag from the resource, append the @TagKeys@+-- parameter and argument for each additional tag to remove, separated by+-- an ampersand. For example:+-- @\/v2\/email\/tags?ResourceArn=ResourceArn&TagKeys=Key1&TagKeys=Key2@+newUntagResource ::+  -- | 'resourceArn'+  Prelude.Text ->+  UntagResource+newUntagResource pResourceArn_ =+  UntagResource'+    { resourceArn = pResourceArn_,+      tagKeys = Prelude.mempty+    }++-- | The Amazon Resource Name (ARN) of the resource that you want to remove+-- one or more tags from.+untagResource_resourceArn :: Lens.Lens' UntagResource Prelude.Text+untagResource_resourceArn = Lens.lens (\UntagResource' {resourceArn} -> resourceArn) (\s@UntagResource' {} a -> s {resourceArn = a} :: UntagResource)++-- | The tags (tag keys) that you want to remove from the resource. When you+-- specify a tag key, the action removes both that key and its associated+-- tag value.+--+-- To remove more than one tag from the resource, append the @TagKeys@+-- parameter and argument for each additional tag to remove, separated by+-- an ampersand. For example:+-- @\/v2\/email\/tags?ResourceArn=ResourceArn&TagKeys=Key1&TagKeys=Key2@+untagResource_tagKeys :: Lens.Lens' UntagResource [Prelude.Text]+untagResource_tagKeys = Lens.lens (\UntagResource' {tagKeys} -> tagKeys) (\s@UntagResource' {} a -> s {tagKeys = a} :: UntagResource) Prelude.. Lens.coerced++instance Core.AWSRequest UntagResource where+  type+    AWSResponse UntagResource =+      UntagResourceResponse+  request overrides =+    Request.delete (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UntagResourceResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UntagResource where+  hashWithSalt _salt UntagResource' {..} =+    _salt+      `Prelude.hashWithSalt` resourceArn+      `Prelude.hashWithSalt` tagKeys++instance Prelude.NFData UntagResource where+  rnf UntagResource' {..} =+    Prelude.rnf resourceArn+      `Prelude.seq` Prelude.rnf tagKeys++instance Data.ToHeaders UntagResource where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToPath UntagResource where+  toPath = Prelude.const "/v2/email/tags"++instance Data.ToQuery UntagResource where+  toQuery UntagResource' {..} =+    Prelude.mconcat+      [ "ResourceArn" Data.=: resourceArn,+        "TagKeys" Data.=: Data.toQueryList "member" tagKeys+      ]++-- | /See:/ 'newUntagResourceResponse' smart constructor.+data UntagResourceResponse = UntagResourceResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UntagResourceResponse' 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', 'untagResourceResponse_httpStatus' - The response's http status code.+newUntagResourceResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UntagResourceResponse+newUntagResourceResponse pHttpStatus_ =+  UntagResourceResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+untagResourceResponse_httpStatus :: Lens.Lens' UntagResourceResponse Prelude.Int+untagResourceResponse_httpStatus = Lens.lens (\UntagResourceResponse' {httpStatus} -> httpStatus) (\s@UntagResourceResponse' {} a -> s {httpStatus = a} :: UntagResourceResponse)++instance Prelude.NFData UntagResourceResponse where+  rnf UntagResourceResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/UpdateConfigurationSetEventDestination.hs view
@@ -0,0 +1,244 @@+{-# 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.SESV2.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)+--+-- Update the configuration of an event destination for a configuration+-- set.+--+-- /Events/ include message sends, deliveries, opens, clicks, bounces, and+-- complaints. /Event destinations/ are places that you can send+-- information about these events to. For example, you can send event data+-- to Amazon SNS to receive notifications when you receive bounces or+-- complaints, or you can use Amazon Kinesis Data Firehose to stream data+-- to Amazon S3 for long-term storage.+module Amazonka.SESV2.UpdateConfigurationSetEventDestination+  ( -- * Creating a Request+    UpdateConfigurationSetEventDestination (..),+    newUpdateConfigurationSetEventDestination,++    -- * Request Lenses+    updateConfigurationSetEventDestination_configurationSetName,+    updateConfigurationSetEventDestination_eventDestinationName,+    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.SESV2.Types++-- | A request to change the settings for an event destination for a+-- configuration set.+--+-- /See:/ 'newUpdateConfigurationSetEventDestination' smart constructor.+data UpdateConfigurationSetEventDestination = UpdateConfigurationSetEventDestination'+  { -- | The name of the configuration set that contains the event destination to+    -- modify.+    configurationSetName :: Prelude.Text,+    -- | The name of the event destination.+    eventDestinationName :: Prelude.Text,+    -- | An object that defines the event destination.+    eventDestination :: EventDestinationDefinition+  }+  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 to+-- modify.+--+-- 'eventDestinationName', 'updateConfigurationSetEventDestination_eventDestinationName' - The name of the event destination.+--+-- 'eventDestination', 'updateConfigurationSetEventDestination_eventDestination' - An object that defines the event destination.+newUpdateConfigurationSetEventDestination ::+  -- | 'configurationSetName'+  Prelude.Text ->+  -- | 'eventDestinationName'+  Prelude.Text ->+  -- | 'eventDestination'+  EventDestinationDefinition ->+  UpdateConfigurationSetEventDestination+newUpdateConfigurationSetEventDestination+  pConfigurationSetName_+  pEventDestinationName_+  pEventDestination_ =+    UpdateConfigurationSetEventDestination'+      { configurationSetName =+          pConfigurationSetName_,+        eventDestinationName =+          pEventDestinationName_,+        eventDestination =+          pEventDestination_+      }++-- | The name of the configuration set that contains the event destination to+-- modify.+updateConfigurationSetEventDestination_configurationSetName :: Lens.Lens' UpdateConfigurationSetEventDestination Prelude.Text+updateConfigurationSetEventDestination_configurationSetName = Lens.lens (\UpdateConfigurationSetEventDestination' {configurationSetName} -> configurationSetName) (\s@UpdateConfigurationSetEventDestination' {} a -> s {configurationSetName = a} :: UpdateConfigurationSetEventDestination)++-- | The name of the event destination.+updateConfigurationSetEventDestination_eventDestinationName :: Lens.Lens' UpdateConfigurationSetEventDestination Prelude.Text+updateConfigurationSetEventDestination_eventDestinationName = Lens.lens (\UpdateConfigurationSetEventDestination' {eventDestinationName} -> eventDestinationName) (\s@UpdateConfigurationSetEventDestination' {} a -> s {eventDestinationName = a} :: UpdateConfigurationSetEventDestination)++-- | An object that defines the event destination.+updateConfigurationSetEventDestination_eventDestination :: Lens.Lens' UpdateConfigurationSetEventDestination EventDestinationDefinition+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.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateConfigurationSetEventDestinationResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateConfigurationSetEventDestination+  where+  hashWithSalt+    _salt+    UpdateConfigurationSetEventDestination' {..} =+      _salt+        `Prelude.hashWithSalt` configurationSetName+        `Prelude.hashWithSalt` eventDestinationName+        `Prelude.hashWithSalt` eventDestination++instance+  Prelude.NFData+    UpdateConfigurationSetEventDestination+  where+  rnf UpdateConfigurationSetEventDestination' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf eventDestinationName+      `Prelude.seq` Prelude.rnf eventDestination++instance+  Data.ToHeaders+    UpdateConfigurationSetEventDestination+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateConfigurationSetEventDestination+  where+  toJSON UpdateConfigurationSetEventDestination' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("EventDestination" Data..= eventDestination)+          ]+      )++instance+  Data.ToPath+    UpdateConfigurationSetEventDestination+  where+  toPath UpdateConfigurationSetEventDestination' {..} =+    Prelude.mconcat+      [ "/v2/email/configuration-sets/",+        Data.toBS configurationSetName,+        "/event-destinations/",+        Data.toBS eventDestinationName+      ]++instance+  Data.ToQuery+    UpdateConfigurationSetEventDestination+  where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /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
+ gen/Amazonka/SESV2/UpdateContact.hs view
@@ -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.SESV2.UpdateContact+-- 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 contact\'s preferences for a list. It is not necessary to+-- specify all existing topic preferences in the TopicPreferences object,+-- just the ones that need updating.+module Amazonka.SESV2.UpdateContact+  ( -- * Creating a Request+    UpdateContact (..),+    newUpdateContact,++    -- * Request Lenses+    updateContact_attributesData,+    updateContact_topicPreferences,+    updateContact_unsubscribeAll,+    updateContact_contactListName,+    updateContact_emailAddress,++    -- * Destructuring the Response+    UpdateContactResponse (..),+    newUpdateContactResponse,++    -- * Response Lenses+    updateContactResponse_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.SESV2.Types++-- | /See:/ 'newUpdateContact' smart constructor.+data UpdateContact = UpdateContact'+  { -- | The attribute data attached to a contact.+    attributesData :: Prelude.Maybe Prelude.Text,+    -- | The contact\'s preference for being opted-in to or opted-out of a topic.+    topicPreferences :: Prelude.Maybe [TopicPreference],+    -- | A boolean value status noting if the contact is unsubscribed from all+    -- contact list topics.+    unsubscribeAll :: Prelude.Maybe Prelude.Bool,+    -- | The name of the contact list.+    contactListName :: Prelude.Text,+    -- | The contact\'s email addres.+    emailAddress :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateContact' 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:+--+-- 'attributesData', 'updateContact_attributesData' - The attribute data attached to a contact.+--+-- 'topicPreferences', 'updateContact_topicPreferences' - The contact\'s preference for being opted-in to or opted-out of a topic.+--+-- 'unsubscribeAll', 'updateContact_unsubscribeAll' - A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+--+-- 'contactListName', 'updateContact_contactListName' - The name of the contact list.+--+-- 'emailAddress', 'updateContact_emailAddress' - The contact\'s email addres.+newUpdateContact ::+  -- | 'contactListName'+  Prelude.Text ->+  -- | 'emailAddress'+  Prelude.Text ->+  UpdateContact+newUpdateContact pContactListName_ pEmailAddress_ =+  UpdateContact'+    { attributesData = Prelude.Nothing,+      topicPreferences = Prelude.Nothing,+      unsubscribeAll = Prelude.Nothing,+      contactListName = pContactListName_,+      emailAddress = pEmailAddress_+    }++-- | The attribute data attached to a contact.+updateContact_attributesData :: Lens.Lens' UpdateContact (Prelude.Maybe Prelude.Text)+updateContact_attributesData = Lens.lens (\UpdateContact' {attributesData} -> attributesData) (\s@UpdateContact' {} a -> s {attributesData = a} :: UpdateContact)++-- | The contact\'s preference for being opted-in to or opted-out of a topic.+updateContact_topicPreferences :: Lens.Lens' UpdateContact (Prelude.Maybe [TopicPreference])+updateContact_topicPreferences = Lens.lens (\UpdateContact' {topicPreferences} -> topicPreferences) (\s@UpdateContact' {} a -> s {topicPreferences = a} :: UpdateContact) Prelude.. Lens.mapping Lens.coerced++-- | A boolean value status noting if the contact is unsubscribed from all+-- contact list topics.+updateContact_unsubscribeAll :: Lens.Lens' UpdateContact (Prelude.Maybe Prelude.Bool)+updateContact_unsubscribeAll = Lens.lens (\UpdateContact' {unsubscribeAll} -> unsubscribeAll) (\s@UpdateContact' {} a -> s {unsubscribeAll = a} :: UpdateContact)++-- | The name of the contact list.+updateContact_contactListName :: Lens.Lens' UpdateContact Prelude.Text+updateContact_contactListName = Lens.lens (\UpdateContact' {contactListName} -> contactListName) (\s@UpdateContact' {} a -> s {contactListName = a} :: UpdateContact)++-- | The contact\'s email addres.+updateContact_emailAddress :: Lens.Lens' UpdateContact Prelude.Text+updateContact_emailAddress = Lens.lens (\UpdateContact' {emailAddress} -> emailAddress) (\s@UpdateContact' {} a -> s {emailAddress = a} :: UpdateContact)++instance Core.AWSRequest UpdateContact where+  type+    AWSResponse UpdateContact =+      UpdateContactResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateContactResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateContact where+  hashWithSalt _salt UpdateContact' {..} =+    _salt+      `Prelude.hashWithSalt` attributesData+      `Prelude.hashWithSalt` topicPreferences+      `Prelude.hashWithSalt` unsubscribeAll+      `Prelude.hashWithSalt` contactListName+      `Prelude.hashWithSalt` emailAddress++instance Prelude.NFData UpdateContact where+  rnf UpdateContact' {..} =+    Prelude.rnf attributesData+      `Prelude.seq` Prelude.rnf topicPreferences+      `Prelude.seq` Prelude.rnf unsubscribeAll+      `Prelude.seq` Prelude.rnf contactListName+      `Prelude.seq` Prelude.rnf emailAddress++instance Data.ToHeaders UpdateContact where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateContact where+  toJSON UpdateContact' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("AttributesData" Data..=)+              Prelude.<$> attributesData,+            ("TopicPreferences" Data..=)+              Prelude.<$> topicPreferences,+            ("UnsubscribeAll" Data..=)+              Prelude.<$> unsubscribeAll+          ]+      )++instance Data.ToPath UpdateContact where+  toPath UpdateContact' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName,+        "/contacts/",+        Data.toBS emailAddress+      ]++instance Data.ToQuery UpdateContact where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateContactResponse' smart constructor.+data UpdateContactResponse = UpdateContactResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateContactResponse' 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', 'updateContactResponse_httpStatus' - The response's http status code.+newUpdateContactResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateContactResponse+newUpdateContactResponse pHttpStatus_ =+  UpdateContactResponse' {httpStatus = pHttpStatus_}++-- | The response's http status code.+updateContactResponse_httpStatus :: Lens.Lens' UpdateContactResponse Prelude.Int+updateContactResponse_httpStatus = Lens.lens (\UpdateContactResponse' {httpStatus} -> httpStatus) (\s@UpdateContactResponse' {} a -> s {httpStatus = a} :: UpdateContactResponse)++instance Prelude.NFData UpdateContactResponse where+  rnf UpdateContactResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/UpdateContactList.hs view
@@ -0,0 +1,190 @@+{-# 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.SESV2.UpdateContactList+-- 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 contact list metadata. This operation does a complete+-- replacement.+module Amazonka.SESV2.UpdateContactList+  ( -- * Creating a Request+    UpdateContactList (..),+    newUpdateContactList,++    -- * Request Lenses+    updateContactList_description,+    updateContactList_topics,+    updateContactList_contactListName,++    -- * Destructuring the Response+    UpdateContactListResponse (..),+    newUpdateContactListResponse,++    -- * Response Lenses+    updateContactListResponse_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.SESV2.Types++-- | /See:/ 'newUpdateContactList' smart constructor.+data UpdateContactList = UpdateContactList'+  { -- | A description of what the contact list is about.+    description :: Prelude.Maybe Prelude.Text,+    -- | An interest group, theme, or label within a list. A contact list can+    -- have multiple topics.+    topics :: Prelude.Maybe [Topic],+    -- | The name of the contact list.+    contactListName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateContactList' 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:+--+-- 'description', 'updateContactList_description' - A description of what the contact list is about.+--+-- 'topics', 'updateContactList_topics' - An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+--+-- 'contactListName', 'updateContactList_contactListName' - The name of the contact list.+newUpdateContactList ::+  -- | 'contactListName'+  Prelude.Text ->+  UpdateContactList+newUpdateContactList pContactListName_ =+  UpdateContactList'+    { description = Prelude.Nothing,+      topics = Prelude.Nothing,+      contactListName = pContactListName_+    }++-- | A description of what the contact list is about.+updateContactList_description :: Lens.Lens' UpdateContactList (Prelude.Maybe Prelude.Text)+updateContactList_description = Lens.lens (\UpdateContactList' {description} -> description) (\s@UpdateContactList' {} a -> s {description = a} :: UpdateContactList)++-- | An interest group, theme, or label within a list. A contact list can+-- have multiple topics.+updateContactList_topics :: Lens.Lens' UpdateContactList (Prelude.Maybe [Topic])+updateContactList_topics = Lens.lens (\UpdateContactList' {topics} -> topics) (\s@UpdateContactList' {} a -> s {topics = a} :: UpdateContactList) Prelude.. Lens.mapping Lens.coerced++-- | The name of the contact list.+updateContactList_contactListName :: Lens.Lens' UpdateContactList Prelude.Text+updateContactList_contactListName = Lens.lens (\UpdateContactList' {contactListName} -> contactListName) (\s@UpdateContactList' {} a -> s {contactListName = a} :: UpdateContactList)++instance Core.AWSRequest UpdateContactList where+  type+    AWSResponse UpdateContactList =+      UpdateContactListResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateContactListResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateContactList where+  hashWithSalt _salt UpdateContactList' {..} =+    _salt+      `Prelude.hashWithSalt` description+      `Prelude.hashWithSalt` topics+      `Prelude.hashWithSalt` contactListName++instance Prelude.NFData UpdateContactList where+  rnf UpdateContactList' {..} =+    Prelude.rnf description+      `Prelude.seq` Prelude.rnf topics+      `Prelude.seq` Prelude.rnf contactListName++instance Data.ToHeaders UpdateContactList where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateContactList where+  toJSON UpdateContactList' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("Description" Data..=) Prelude.<$> description,+            ("Topics" Data..=) Prelude.<$> topics+          ]+      )++instance Data.ToPath UpdateContactList where+  toPath UpdateContactList' {..} =+    Prelude.mconcat+      [ "/v2/email/contact-lists/",+        Data.toBS contactListName+      ]++instance Data.ToQuery UpdateContactList where+  toQuery = Prelude.const Prelude.mempty++-- | /See:/ 'newUpdateContactListResponse' smart constructor.+data UpdateContactListResponse = UpdateContactListResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateContactListResponse' 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', 'updateContactListResponse_httpStatus' - The response's http status code.+newUpdateContactListResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateContactListResponse+newUpdateContactListResponse pHttpStatus_ =+  UpdateContactListResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateContactListResponse_httpStatus :: Lens.Lens' UpdateContactListResponse Prelude.Int+updateContactListResponse_httpStatus = Lens.lens (\UpdateContactListResponse' {httpStatus} -> httpStatus) (\s@UpdateContactListResponse' {} a -> s {httpStatus = a} :: UpdateContactListResponse)++instance Prelude.NFData UpdateContactListResponse where+  rnf UpdateContactListResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/UpdateCustomVerificationEmailTemplate.hs view
@@ -0,0 +1,316 @@+{-# 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.SESV2.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/dg/creating-identities.html#send-email-verify-address-custom Using custom verification email templates>+-- in the /Amazon SES Developer Guide/.+--+-- You can execute this operation no more than once per second.+module Amazonka.SESV2.UpdateCustomVerificationEmailTemplate+  ( -- * Creating a Request+    UpdateCustomVerificationEmailTemplate (..),+    newUpdateCustomVerificationEmailTemplate,++    -- * Request Lenses+    updateCustomVerificationEmailTemplate_templateName,+    updateCustomVerificationEmailTemplate_fromEmailAddress,+    updateCustomVerificationEmailTemplate_templateSubject,+    updateCustomVerificationEmailTemplate_templateContent,+    updateCustomVerificationEmailTemplate_successRedirectionURL,+    updateCustomVerificationEmailTemplate_failureRedirectionURL,++    -- * Destructuring the Response+    UpdateCustomVerificationEmailTemplateResponse (..),+    newUpdateCustomVerificationEmailTemplateResponse,++    -- * Response Lenses+    updateCustomVerificationEmailTemplateResponse_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.SESV2.Types++-- | Represents a request to update an existing custom verification email+-- template.+--+-- /See:/ 'newUpdateCustomVerificationEmailTemplate' smart constructor.+data UpdateCustomVerificationEmailTemplate = UpdateCustomVerificationEmailTemplate'+  { -- | The name of the custom verification email template that you want to+    -- update.+    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/dg/creating-identities.html#send-email-verify-address-custom-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 '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:+--+-- 'templateName', 'updateCustomVerificationEmailTemplate_templateName' - The name of the custom verification email template that you want to+-- update.+--+-- 'fromEmailAddress', 'updateCustomVerificationEmailTemplate_fromEmailAddress' - The email address that the custom verification email is sent from.+--+-- 'templateSubject', 'updateCustomVerificationEmailTemplate_templateSubject' - The subject line of the custom verification email.+--+-- '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/dg/creating-identities.html#send-email-verify-address-custom-faq Custom verification email frequently asked questions>+-- in the /Amazon SES Developer Guide/.+--+-- 'successRedirectionURL', 'updateCustomVerificationEmailTemplate_successRedirectionURL' - The URL that the recipient of the verification email is sent to if his+-- or her address is successfully verified.+--+-- 'failureRedirectionURL', 'updateCustomVerificationEmailTemplate_failureRedirectionURL' - The URL that the recipient of the verification email is sent to if his+-- or her address is not successfully verified.+newUpdateCustomVerificationEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  -- | 'fromEmailAddress'+  Prelude.Text ->+  -- | 'templateSubject'+  Prelude.Text ->+  -- | 'templateContent'+  Prelude.Text ->+  -- | 'successRedirectionURL'+  Prelude.Text ->+  -- | 'failureRedirectionURL'+  Prelude.Text ->+  UpdateCustomVerificationEmailTemplate+newUpdateCustomVerificationEmailTemplate+  pTemplateName_+  pFromEmailAddress_+  pTemplateSubject_+  pTemplateContent_+  pSuccessRedirectionURL_+  pFailureRedirectionURL_ =+    UpdateCustomVerificationEmailTemplate'+      { templateName =+          pTemplateName_,+        fromEmailAddress =+          pFromEmailAddress_,+        templateSubject = pTemplateSubject_,+        templateContent = pTemplateContent_,+        successRedirectionURL =+          pSuccessRedirectionURL_,+        failureRedirectionURL =+          pFailureRedirectionURL_+      }++-- | 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)++-- | The email address that the custom verification email is sent from.+updateCustomVerificationEmailTemplate_fromEmailAddress :: Lens.Lens' UpdateCustomVerificationEmailTemplate Prelude.Text+updateCustomVerificationEmailTemplate_fromEmailAddress = Lens.lens (\UpdateCustomVerificationEmailTemplate' {fromEmailAddress} -> fromEmailAddress) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {fromEmailAddress = a} :: UpdateCustomVerificationEmailTemplate)++-- | The subject line of the custom verification email.+updateCustomVerificationEmailTemplate_templateSubject :: Lens.Lens' UpdateCustomVerificationEmailTemplate Prelude.Text+updateCustomVerificationEmailTemplate_templateSubject = Lens.lens (\UpdateCustomVerificationEmailTemplate' {templateSubject} -> templateSubject) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {templateSubject = 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/dg/creating-identities.html#send-email-verify-address-custom-faq Custom verification email frequently asked questions>+-- in the /Amazon SES Developer Guide/.+updateCustomVerificationEmailTemplate_templateContent :: Lens.Lens' UpdateCustomVerificationEmailTemplate Prelude.Text+updateCustomVerificationEmailTemplate_templateContent = Lens.lens (\UpdateCustomVerificationEmailTemplate' {templateContent} -> templateContent) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {templateContent = 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.Text+updateCustomVerificationEmailTemplate_successRedirectionURL = Lens.lens (\UpdateCustomVerificationEmailTemplate' {successRedirectionURL} -> successRedirectionURL) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {successRedirectionURL = a} :: UpdateCustomVerificationEmailTemplate)++-- | 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.Text+updateCustomVerificationEmailTemplate_failureRedirectionURL = Lens.lens (\UpdateCustomVerificationEmailTemplate' {failureRedirectionURL} -> failureRedirectionURL) (\s@UpdateCustomVerificationEmailTemplate' {} a -> s {failureRedirectionURL = a} :: UpdateCustomVerificationEmailTemplate)++instance+  Core.AWSRequest+    UpdateCustomVerificationEmailTemplate+  where+  type+    AWSResponse+      UpdateCustomVerificationEmailTemplate =+      UpdateCustomVerificationEmailTemplateResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateCustomVerificationEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance+  Prelude.Hashable+    UpdateCustomVerificationEmailTemplate+  where+  hashWithSalt+    _salt+    UpdateCustomVerificationEmailTemplate' {..} =+      _salt+        `Prelude.hashWithSalt` templateName+        `Prelude.hashWithSalt` fromEmailAddress+        `Prelude.hashWithSalt` templateSubject+        `Prelude.hashWithSalt` templateContent+        `Prelude.hashWithSalt` successRedirectionURL+        `Prelude.hashWithSalt` failureRedirectionURL++instance+  Prelude.NFData+    UpdateCustomVerificationEmailTemplate+  where+  rnf UpdateCustomVerificationEmailTemplate' {..} =+    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+    UpdateCustomVerificationEmailTemplate+  where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance+  Data.ToJSON+    UpdateCustomVerificationEmailTemplate+  where+  toJSON UpdateCustomVerificationEmailTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("FromEmailAddress" Data..= fromEmailAddress),+            Prelude.Just+              ("TemplateSubject" Data..= templateSubject),+            Prelude.Just+              ("TemplateContent" Data..= templateContent),+            Prelude.Just+              ( "SuccessRedirectionURL"+                  Data..= successRedirectionURL+              ),+            Prelude.Just+              ( "FailureRedirectionURL"+                  Data..= failureRedirectionURL+              )+          ]+      )++instance+  Data.ToPath+    UpdateCustomVerificationEmailTemplate+  where+  toPath UpdateCustomVerificationEmailTemplate' {..} =+    Prelude.mconcat+      [ "/v2/email/custom-verification-email-templates/",+        Data.toBS templateName+      ]++instance+  Data.ToQuery+    UpdateCustomVerificationEmailTemplate+  where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newUpdateCustomVerificationEmailTemplateResponse' smart constructor.+data UpdateCustomVerificationEmailTemplateResponse = UpdateCustomVerificationEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  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.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'httpStatus', 'updateCustomVerificationEmailTemplateResponse_httpStatus' - The response's http status code.+newUpdateCustomVerificationEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateCustomVerificationEmailTemplateResponse+newUpdateCustomVerificationEmailTemplateResponse+  pHttpStatus_ =+    UpdateCustomVerificationEmailTemplateResponse'+      { httpStatus =+          pHttpStatus_+      }++-- | The response's http status code.+updateCustomVerificationEmailTemplateResponse_httpStatus :: Lens.Lens' UpdateCustomVerificationEmailTemplateResponse Prelude.Int+updateCustomVerificationEmailTemplateResponse_httpStatus = Lens.lens (\UpdateCustomVerificationEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@UpdateCustomVerificationEmailTemplateResponse' {} a -> s {httpStatus = a} :: UpdateCustomVerificationEmailTemplateResponse)++instance+  Prelude.NFData+    UpdateCustomVerificationEmailTemplateResponse+  where+  rnf+    UpdateCustomVerificationEmailTemplateResponse' {..} =+      Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/UpdateEmailIdentityPolicy.hs view
@@ -0,0 +1,239 @@+{-# 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.SESV2.UpdateEmailIdentityPolicy+-- 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 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.SESV2.UpdateEmailIdentityPolicy+  ( -- * Creating a Request+    UpdateEmailIdentityPolicy (..),+    newUpdateEmailIdentityPolicy,++    -- * Request Lenses+    updateEmailIdentityPolicy_emailIdentity,+    updateEmailIdentityPolicy_policyName,+    updateEmailIdentityPolicy_policy,++    -- * Destructuring the Response+    UpdateEmailIdentityPolicyResponse (..),+    newUpdateEmailIdentityPolicyResponse,++    -- * Response Lenses+    updateEmailIdentityPolicyResponse_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.SESV2.Types++-- | Represents a request to 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-identity-owner-tasks-management.html Amazon SES Developer Guide>.+--+-- /See:/ 'newUpdateEmailIdentityPolicy' smart constructor.+data UpdateEmailIdentityPolicy = UpdateEmailIdentityPolicy'+  { -- | The email identity.+    emailIdentity :: 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 'UpdateEmailIdentityPolicy' 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:+--+-- 'emailIdentity', 'updateEmailIdentityPolicy_emailIdentity' - The email identity.+--+-- 'policyName', 'updateEmailIdentityPolicy_policyName' - The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+--+-- 'policy', 'updateEmailIdentityPolicy_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>.+newUpdateEmailIdentityPolicy ::+  -- | 'emailIdentity'+  Prelude.Text ->+  -- | 'policyName'+  Prelude.Text ->+  -- | 'policy'+  Prelude.Text ->+  UpdateEmailIdentityPolicy+newUpdateEmailIdentityPolicy+  pEmailIdentity_+  pPolicyName_+  pPolicy_ =+    UpdateEmailIdentityPolicy'+      { emailIdentity =+          pEmailIdentity_,+        policyName = pPolicyName_,+        policy = pPolicy_+      }++-- | The email identity.+updateEmailIdentityPolicy_emailIdentity :: Lens.Lens' UpdateEmailIdentityPolicy Prelude.Text+updateEmailIdentityPolicy_emailIdentity = Lens.lens (\UpdateEmailIdentityPolicy' {emailIdentity} -> emailIdentity) (\s@UpdateEmailIdentityPolicy' {} a -> s {emailIdentity = a} :: UpdateEmailIdentityPolicy)++-- | The name of the policy.+--+-- The policy name cannot exceed 64 characters and can only include+-- alphanumeric characters, dashes, and underscores.+updateEmailIdentityPolicy_policyName :: Lens.Lens' UpdateEmailIdentityPolicy Prelude.Text+updateEmailIdentityPolicy_policyName = Lens.lens (\UpdateEmailIdentityPolicy' {policyName} -> policyName) (\s@UpdateEmailIdentityPolicy' {} a -> s {policyName = a} :: UpdateEmailIdentityPolicy)++-- | 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>.+updateEmailIdentityPolicy_policy :: Lens.Lens' UpdateEmailIdentityPolicy Prelude.Text+updateEmailIdentityPolicy_policy = Lens.lens (\UpdateEmailIdentityPolicy' {policy} -> policy) (\s@UpdateEmailIdentityPolicy' {} a -> s {policy = a} :: UpdateEmailIdentityPolicy)++instance Core.AWSRequest UpdateEmailIdentityPolicy where+  type+    AWSResponse UpdateEmailIdentityPolicy =+      UpdateEmailIdentityPolicyResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateEmailIdentityPolicyResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateEmailIdentityPolicy where+  hashWithSalt _salt UpdateEmailIdentityPolicy' {..} =+    _salt+      `Prelude.hashWithSalt` emailIdentity+      `Prelude.hashWithSalt` policyName+      `Prelude.hashWithSalt` policy++instance Prelude.NFData UpdateEmailIdentityPolicy where+  rnf UpdateEmailIdentityPolicy' {..} =+    Prelude.rnf emailIdentity+      `Prelude.seq` Prelude.rnf policyName+      `Prelude.seq` Prelude.rnf policy++instance Data.ToHeaders UpdateEmailIdentityPolicy where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateEmailIdentityPolicy where+  toJSON UpdateEmailIdentityPolicy' {..} =+    Data.object+      ( Prelude.catMaybes+          [Prelude.Just ("Policy" Data..= policy)]+      )++instance Data.ToPath UpdateEmailIdentityPolicy where+  toPath UpdateEmailIdentityPolicy' {..} =+    Prelude.mconcat+      [ "/v2/email/identities/",+        Data.toBS emailIdentity,+        "/policies/",+        Data.toBS policyName+      ]++instance Data.ToQuery UpdateEmailIdentityPolicy where+  toQuery = Prelude.const Prelude.mempty++-- | An HTTP 200 response if the request succeeds, or an error message if the+-- request fails.+--+-- /See:/ 'newUpdateEmailIdentityPolicyResponse' smart constructor.+data UpdateEmailIdentityPolicyResponse = UpdateEmailIdentityPolicyResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEmailIdentityPolicyResponse' 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', 'updateEmailIdentityPolicyResponse_httpStatus' - The response's http status code.+newUpdateEmailIdentityPolicyResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateEmailIdentityPolicyResponse+newUpdateEmailIdentityPolicyResponse pHttpStatus_ =+  UpdateEmailIdentityPolicyResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateEmailIdentityPolicyResponse_httpStatus :: Lens.Lens' UpdateEmailIdentityPolicyResponse Prelude.Int+updateEmailIdentityPolicyResponse_httpStatus = Lens.lens (\UpdateEmailIdentityPolicyResponse' {httpStatus} -> httpStatus) (\s@UpdateEmailIdentityPolicyResponse' {} a -> s {httpStatus = a} :: UpdateEmailIdentityPolicyResponse)++instance+  Prelude.NFData+    UpdateEmailIdentityPolicyResponse+  where+  rnf UpdateEmailIdentityPolicyResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/UpdateEmailTemplate.hs view
@@ -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.SESV2.UpdateEmailTemplate+-- 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.SESV2.UpdateEmailTemplate+  ( -- * Creating a Request+    UpdateEmailTemplate (..),+    newUpdateEmailTemplate,++    -- * Request Lenses+    updateEmailTemplate_templateName,+    updateEmailTemplate_templateContent,++    -- * Destructuring the Response+    UpdateEmailTemplateResponse (..),+    newUpdateEmailTemplateResponse,++    -- * Response Lenses+    updateEmailTemplateResponse_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.SESV2.Types++-- | Represents a request to update 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:/ 'newUpdateEmailTemplate' smart constructor.+data UpdateEmailTemplate = UpdateEmailTemplate'+  { -- | The name of the template.+    templateName :: Prelude.Text,+    -- | The content of the email template, composed of a subject line, an HTML+    -- part, and a text-only part.+    templateContent :: EmailTemplateContent+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEmailTemplate' 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', 'updateEmailTemplate_templateName' - The name of the template.+--+-- 'templateContent', 'updateEmailTemplate_templateContent' - The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+newUpdateEmailTemplate ::+  -- | 'templateName'+  Prelude.Text ->+  -- | 'templateContent'+  EmailTemplateContent ->+  UpdateEmailTemplate+newUpdateEmailTemplate+  pTemplateName_+  pTemplateContent_ =+    UpdateEmailTemplate'+      { templateName = pTemplateName_,+        templateContent = pTemplateContent_+      }++-- | The name of the template.+updateEmailTemplate_templateName :: Lens.Lens' UpdateEmailTemplate Prelude.Text+updateEmailTemplate_templateName = Lens.lens (\UpdateEmailTemplate' {templateName} -> templateName) (\s@UpdateEmailTemplate' {} a -> s {templateName = a} :: UpdateEmailTemplate)++-- | The content of the email template, composed of a subject line, an HTML+-- part, and a text-only part.+updateEmailTemplate_templateContent :: Lens.Lens' UpdateEmailTemplate EmailTemplateContent+updateEmailTemplate_templateContent = Lens.lens (\UpdateEmailTemplate' {templateContent} -> templateContent) (\s@UpdateEmailTemplate' {} a -> s {templateContent = a} :: UpdateEmailTemplate)++instance Core.AWSRequest UpdateEmailTemplate where+  type+    AWSResponse UpdateEmailTemplate =+      UpdateEmailTemplateResponse+  request overrides =+    Request.putJSON (overrides defaultService)+  response =+    Response.receiveEmpty+      ( \s h x ->+          UpdateEmailTemplateResponse'+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))+      )++instance Prelude.Hashable UpdateEmailTemplate where+  hashWithSalt _salt UpdateEmailTemplate' {..} =+    _salt+      `Prelude.hashWithSalt` templateName+      `Prelude.hashWithSalt` templateContent++instance Prelude.NFData UpdateEmailTemplate where+  rnf UpdateEmailTemplate' {..} =+    Prelude.rnf templateName+      `Prelude.seq` Prelude.rnf templateContent++instance Data.ToHeaders UpdateEmailTemplate where+  toHeaders =+    Prelude.const+      ( Prelude.mconcat+          [ "Content-Type"+              Data.=# ( "application/x-amz-json-1.1" ::+                          Prelude.ByteString+                      )+          ]+      )++instance Data.ToJSON UpdateEmailTemplate where+  toJSON UpdateEmailTemplate' {..} =+    Data.object+      ( Prelude.catMaybes+          [ Prelude.Just+              ("TemplateContent" Data..= templateContent)+          ]+      )++instance Data.ToPath UpdateEmailTemplate where+  toPath UpdateEmailTemplate' {..} =+    Prelude.mconcat+      ["/v2/email/templates/", Data.toBS templateName]++instance Data.ToQuery UpdateEmailTemplate where+  toQuery = Prelude.const Prelude.mempty++-- | If the action is successful, the service sends back an HTTP 200 response+-- with an empty HTTP body.+--+-- /See:/ 'newUpdateEmailTemplateResponse' smart constructor.+data UpdateEmailTemplateResponse = UpdateEmailTemplateResponse'+  { -- | The response's http status code.+    httpStatus :: Prelude.Int+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'UpdateEmailTemplateResponse' 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', 'updateEmailTemplateResponse_httpStatus' - The response's http status code.+newUpdateEmailTemplateResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  UpdateEmailTemplateResponse+newUpdateEmailTemplateResponse pHttpStatus_ =+  UpdateEmailTemplateResponse'+    { httpStatus =+        pHttpStatus_+    }++-- | The response's http status code.+updateEmailTemplateResponse_httpStatus :: Lens.Lens' UpdateEmailTemplateResponse Prelude.Int+updateEmailTemplateResponse_httpStatus = Lens.lens (\UpdateEmailTemplateResponse' {httpStatus} -> httpStatus) (\s@UpdateEmailTemplateResponse' {} a -> s {httpStatus = a} :: UpdateEmailTemplateResponse)++instance Prelude.NFData UpdateEmailTemplateResponse where+  rnf UpdateEmailTemplateResponse' {..} =+    Prelude.rnf httpStatus
+ gen/Amazonka/SESV2/Waiters.hs view
@@ -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.SESV2.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.SESV2.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.SESV2.Lens+import Amazonka.SESV2.Types
+ src/.gitkeep view
+ test/Main.hs view
@@ -0,0 +1,23 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Main+-- 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 Main (main) where++import Test.Amazonka.SESV2+import Test.Amazonka.SESV2.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "SESV2"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/SESV2.hs view
@@ -0,0 +1,1758 @@+{-# 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.SESV2+-- 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.SESV2 where++import Amazonka.SESV2+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.Prelude+import Test.Amazonka.SESV2.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"+--         [ requestBatchGetMetricData $+--             newBatchGetMetricData+--+--         , requestCreateConfigurationSet $+--             newCreateConfigurationSet+--+--         , requestCreateConfigurationSetEventDestination $+--             newCreateConfigurationSetEventDestination+--+--         , requestCreateContact $+--             newCreateContact+--+--         , requestCreateContactList $+--             newCreateContactList+--+--         , requestCreateCustomVerificationEmailTemplate $+--             newCreateCustomVerificationEmailTemplate+--+--         , requestCreateDedicatedIpPool $+--             newCreateDedicatedIpPool+--+--         , requestCreateDeliverabilityTestReport $+--             newCreateDeliverabilityTestReport+--+--         , requestCreateEmailIdentity $+--             newCreateEmailIdentity+--+--         , requestCreateEmailIdentityPolicy $+--             newCreateEmailIdentityPolicy+--+--         , requestCreateEmailTemplate $+--             newCreateEmailTemplate+--+--         , requestCreateImportJob $+--             newCreateImportJob+--+--         , requestDeleteConfigurationSet $+--             newDeleteConfigurationSet+--+--         , requestDeleteConfigurationSetEventDestination $+--             newDeleteConfigurationSetEventDestination+--+--         , requestDeleteContact $+--             newDeleteContact+--+--         , requestDeleteContactList $+--             newDeleteContactList+--+--         , requestDeleteCustomVerificationEmailTemplate $+--             newDeleteCustomVerificationEmailTemplate+--+--         , requestDeleteDedicatedIpPool $+--             newDeleteDedicatedIpPool+--+--         , requestDeleteEmailIdentity $+--             newDeleteEmailIdentity+--+--         , requestDeleteEmailIdentityPolicy $+--             newDeleteEmailIdentityPolicy+--+--         , requestDeleteEmailTemplate $+--             newDeleteEmailTemplate+--+--         , requestDeleteSuppressedDestination $+--             newDeleteSuppressedDestination+--+--         , requestGetAccount $+--             newGetAccount+--+--         , requestGetBlacklistReports $+--             newGetBlacklistReports+--+--         , requestGetConfigurationSet $+--             newGetConfigurationSet+--+--         , requestGetConfigurationSetEventDestinations $+--             newGetConfigurationSetEventDestinations+--+--         , requestGetContact $+--             newGetContact+--+--         , requestGetContactList $+--             newGetContactList+--+--         , requestGetCustomVerificationEmailTemplate $+--             newGetCustomVerificationEmailTemplate+--+--         , requestGetDedicatedIp $+--             newGetDedicatedIp+--+--         , requestGetDedicatedIpPool $+--             newGetDedicatedIpPool+--+--         , requestGetDedicatedIps $+--             newGetDedicatedIps+--+--         , requestGetDeliverabilityDashboardOptions $+--             newGetDeliverabilityDashboardOptions+--+--         , requestGetDeliverabilityTestReport $+--             newGetDeliverabilityTestReport+--+--         , requestGetDomainDeliverabilityCampaign $+--             newGetDomainDeliverabilityCampaign+--+--         , requestGetDomainStatisticsReport $+--             newGetDomainStatisticsReport+--+--         , requestGetEmailIdentity $+--             newGetEmailIdentity+--+--         , requestGetEmailIdentityPolicies $+--             newGetEmailIdentityPolicies+--+--         , requestGetEmailTemplate $+--             newGetEmailTemplate+--+--         , requestGetImportJob $+--             newGetImportJob+--+--         , requestGetSuppressedDestination $+--             newGetSuppressedDestination+--+--         , requestListConfigurationSets $+--             newListConfigurationSets+--+--         , requestListContactLists $+--             newListContactLists+--+--         , requestListContacts $+--             newListContacts+--+--         , requestListCustomVerificationEmailTemplates $+--             newListCustomVerificationEmailTemplates+--+--         , requestListDedicatedIpPools $+--             newListDedicatedIpPools+--+--         , requestListDeliverabilityTestReports $+--             newListDeliverabilityTestReports+--+--         , requestListDomainDeliverabilityCampaigns $+--             newListDomainDeliverabilityCampaigns+--+--         , requestListEmailIdentities $+--             newListEmailIdentities+--+--         , requestListEmailTemplates $+--             newListEmailTemplates+--+--         , requestListImportJobs $+--             newListImportJobs+--+--         , requestListRecommendations $+--             newListRecommendations+--+--         , requestListSuppressedDestinations $+--             newListSuppressedDestinations+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutAccountDedicatedIpWarmupAttributes $+--             newPutAccountDedicatedIpWarmupAttributes+--+--         , requestPutAccountDetails $+--             newPutAccountDetails+--+--         , requestPutAccountSendingAttributes $+--             newPutAccountSendingAttributes+--+--         , requestPutAccountSuppressionAttributes $+--             newPutAccountSuppressionAttributes+--+--         , requestPutAccountVdmAttributes $+--             newPutAccountVdmAttributes+--+--         , requestPutConfigurationSetDeliveryOptions $+--             newPutConfigurationSetDeliveryOptions+--+--         , requestPutConfigurationSetReputationOptions $+--             newPutConfigurationSetReputationOptions+--+--         , requestPutConfigurationSetSendingOptions $+--             newPutConfigurationSetSendingOptions+--+--         , requestPutConfigurationSetSuppressionOptions $+--             newPutConfigurationSetSuppressionOptions+--+--         , requestPutConfigurationSetTrackingOptions $+--             newPutConfigurationSetTrackingOptions+--+--         , requestPutConfigurationSetVdmOptions $+--             newPutConfigurationSetVdmOptions+--+--         , requestPutDedicatedIpInPool $+--             newPutDedicatedIpInPool+--+--         , requestPutDedicatedIpWarmupAttributes $+--             newPutDedicatedIpWarmupAttributes+--+--         , requestPutDeliverabilityDashboardOption $+--             newPutDeliverabilityDashboardOption+--+--         , requestPutEmailIdentityConfigurationSetAttributes $+--             newPutEmailIdentityConfigurationSetAttributes+--+--         , requestPutEmailIdentityDkimAttributes $+--             newPutEmailIdentityDkimAttributes+--+--         , requestPutEmailIdentityDkimSigningAttributes $+--             newPutEmailIdentityDkimSigningAttributes+--+--         , requestPutEmailIdentityFeedbackAttributes $+--             newPutEmailIdentityFeedbackAttributes+--+--         , requestPutEmailIdentityMailFromAttributes $+--             newPutEmailIdentityMailFromAttributes+--+--         , requestPutSuppressedDestination $+--             newPutSuppressedDestination+--+--         , requestSendBulkEmail $+--             newSendBulkEmail+--+--         , requestSendCustomVerificationEmail $+--             newSendCustomVerificationEmail+--+--         , requestSendEmail $+--             newSendEmail+--+--         , requestTagResource $+--             newTagResource+--+--         , requestTestRenderEmailTemplate $+--             newTestRenderEmailTemplate+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateConfigurationSetEventDestination $+--             newUpdateConfigurationSetEventDestination+--+--         , requestUpdateContact $+--             newUpdateContact+--+--         , requestUpdateContactList $+--             newUpdateContactList+--+--         , requestUpdateCustomVerificationEmailTemplate $+--             newUpdateCustomVerificationEmailTemplate+--+--         , requestUpdateEmailIdentityPolicy $+--             newUpdateEmailIdentityPolicy+--+--         , requestUpdateEmailTemplate $+--             newUpdateEmailTemplate+--+--           ]++--     , testGroup "response"+--         [ responseBatchGetMetricData $+--             newBatchGetMetricDataResponse+--+--         , responseCreateConfigurationSet $+--             newCreateConfigurationSetResponse+--+--         , responseCreateConfigurationSetEventDestination $+--             newCreateConfigurationSetEventDestinationResponse+--+--         , responseCreateContact $+--             newCreateContactResponse+--+--         , responseCreateContactList $+--             newCreateContactListResponse+--+--         , responseCreateCustomVerificationEmailTemplate $+--             newCreateCustomVerificationEmailTemplateResponse+--+--         , responseCreateDedicatedIpPool $+--             newCreateDedicatedIpPoolResponse+--+--         , responseCreateDeliverabilityTestReport $+--             newCreateDeliverabilityTestReportResponse+--+--         , responseCreateEmailIdentity $+--             newCreateEmailIdentityResponse+--+--         , responseCreateEmailIdentityPolicy $+--             newCreateEmailIdentityPolicyResponse+--+--         , responseCreateEmailTemplate $+--             newCreateEmailTemplateResponse+--+--         , responseCreateImportJob $+--             newCreateImportJobResponse+--+--         , responseDeleteConfigurationSet $+--             newDeleteConfigurationSetResponse+--+--         , responseDeleteConfigurationSetEventDestination $+--             newDeleteConfigurationSetEventDestinationResponse+--+--         , responseDeleteContact $+--             newDeleteContactResponse+--+--         , responseDeleteContactList $+--             newDeleteContactListResponse+--+--         , responseDeleteCustomVerificationEmailTemplate $+--             newDeleteCustomVerificationEmailTemplateResponse+--+--         , responseDeleteDedicatedIpPool $+--             newDeleteDedicatedIpPoolResponse+--+--         , responseDeleteEmailIdentity $+--             newDeleteEmailIdentityResponse+--+--         , responseDeleteEmailIdentityPolicy $+--             newDeleteEmailIdentityPolicyResponse+--+--         , responseDeleteEmailTemplate $+--             newDeleteEmailTemplateResponse+--+--         , responseDeleteSuppressedDestination $+--             newDeleteSuppressedDestinationResponse+--+--         , responseGetAccount $+--             newGetAccountResponse+--+--         , responseGetBlacklistReports $+--             newGetBlacklistReportsResponse+--+--         , responseGetConfigurationSet $+--             newGetConfigurationSetResponse+--+--         , responseGetConfigurationSetEventDestinations $+--             newGetConfigurationSetEventDestinationsResponse+--+--         , responseGetContact $+--             newGetContactResponse+--+--         , responseGetContactList $+--             newGetContactListResponse+--+--         , responseGetCustomVerificationEmailTemplate $+--             newGetCustomVerificationEmailTemplateResponse+--+--         , responseGetDedicatedIp $+--             newGetDedicatedIpResponse+--+--         , responseGetDedicatedIpPool $+--             newGetDedicatedIpPoolResponse+--+--         , responseGetDedicatedIps $+--             newGetDedicatedIpsResponse+--+--         , responseGetDeliverabilityDashboardOptions $+--             newGetDeliverabilityDashboardOptionsResponse+--+--         , responseGetDeliverabilityTestReport $+--             newGetDeliverabilityTestReportResponse+--+--         , responseGetDomainDeliverabilityCampaign $+--             newGetDomainDeliverabilityCampaignResponse+--+--         , responseGetDomainStatisticsReport $+--             newGetDomainStatisticsReportResponse+--+--         , responseGetEmailIdentity $+--             newGetEmailIdentityResponse+--+--         , responseGetEmailIdentityPolicies $+--             newGetEmailIdentityPoliciesResponse+--+--         , responseGetEmailTemplate $+--             newGetEmailTemplateResponse+--+--         , responseGetImportJob $+--             newGetImportJobResponse+--+--         , responseGetSuppressedDestination $+--             newGetSuppressedDestinationResponse+--+--         , responseListConfigurationSets $+--             newListConfigurationSetsResponse+--+--         , responseListContactLists $+--             newListContactListsResponse+--+--         , responseListContacts $+--             newListContactsResponse+--+--         , responseListCustomVerificationEmailTemplates $+--             newListCustomVerificationEmailTemplatesResponse+--+--         , responseListDedicatedIpPools $+--             newListDedicatedIpPoolsResponse+--+--         , responseListDeliverabilityTestReports $+--             newListDeliverabilityTestReportsResponse+--+--         , responseListDomainDeliverabilityCampaigns $+--             newListDomainDeliverabilityCampaignsResponse+--+--         , responseListEmailIdentities $+--             newListEmailIdentitiesResponse+--+--         , responseListEmailTemplates $+--             newListEmailTemplatesResponse+--+--         , responseListImportJobs $+--             newListImportJobsResponse+--+--         , responseListRecommendations $+--             newListRecommendationsResponse+--+--         , responseListSuppressedDestinations $+--             newListSuppressedDestinationsResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutAccountDedicatedIpWarmupAttributes $+--             newPutAccountDedicatedIpWarmupAttributesResponse+--+--         , responsePutAccountDetails $+--             newPutAccountDetailsResponse+--+--         , responsePutAccountSendingAttributes $+--             newPutAccountSendingAttributesResponse+--+--         , responsePutAccountSuppressionAttributes $+--             newPutAccountSuppressionAttributesResponse+--+--         , responsePutAccountVdmAttributes $+--             newPutAccountVdmAttributesResponse+--+--         , responsePutConfigurationSetDeliveryOptions $+--             newPutConfigurationSetDeliveryOptionsResponse+--+--         , responsePutConfigurationSetReputationOptions $+--             newPutConfigurationSetReputationOptionsResponse+--+--         , responsePutConfigurationSetSendingOptions $+--             newPutConfigurationSetSendingOptionsResponse+--+--         , responsePutConfigurationSetSuppressionOptions $+--             newPutConfigurationSetSuppressionOptionsResponse+--+--         , responsePutConfigurationSetTrackingOptions $+--             newPutConfigurationSetTrackingOptionsResponse+--+--         , responsePutConfigurationSetVdmOptions $+--             newPutConfigurationSetVdmOptionsResponse+--+--         , responsePutDedicatedIpInPool $+--             newPutDedicatedIpInPoolResponse+--+--         , responsePutDedicatedIpWarmupAttributes $+--             newPutDedicatedIpWarmupAttributesResponse+--+--         , responsePutDeliverabilityDashboardOption $+--             newPutDeliverabilityDashboardOptionResponse+--+--         , responsePutEmailIdentityConfigurationSetAttributes $+--             newPutEmailIdentityConfigurationSetAttributesResponse+--+--         , responsePutEmailIdentityDkimAttributes $+--             newPutEmailIdentityDkimAttributesResponse+--+--         , responsePutEmailIdentityDkimSigningAttributes $+--             newPutEmailIdentityDkimSigningAttributesResponse+--+--         , responsePutEmailIdentityFeedbackAttributes $+--             newPutEmailIdentityFeedbackAttributesResponse+--+--         , responsePutEmailIdentityMailFromAttributes $+--             newPutEmailIdentityMailFromAttributesResponse+--+--         , responsePutSuppressedDestination $+--             newPutSuppressedDestinationResponse+--+--         , responseSendBulkEmail $+--             newSendBulkEmailResponse+--+--         , responseSendCustomVerificationEmail $+--             newSendCustomVerificationEmailResponse+--+--         , responseSendEmail $+--             newSendEmailResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseTestRenderEmailTemplate $+--             newTestRenderEmailTemplateResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateConfigurationSetEventDestination $+--             newUpdateConfigurationSetEventDestinationResponse+--+--         , responseUpdateContact $+--             newUpdateContactResponse+--+--         , responseUpdateContactList $+--             newUpdateContactListResponse+--+--         , responseUpdateCustomVerificationEmailTemplate $+--             newUpdateCustomVerificationEmailTemplateResponse+--+--         , responseUpdateEmailIdentityPolicy $+--             newUpdateEmailIdentityPolicyResponse+--+--         , responseUpdateEmailTemplate $+--             newUpdateEmailTemplateResponse+--+--           ]+--     ]++-- Requests++requestBatchGetMetricData :: BatchGetMetricData -> TestTree+requestBatchGetMetricData =+  req+    "BatchGetMetricData"+    "fixture/BatchGetMetricData.yaml"++requestCreateConfigurationSet :: CreateConfigurationSet -> TestTree+requestCreateConfigurationSet =+  req+    "CreateConfigurationSet"+    "fixture/CreateConfigurationSet.yaml"++requestCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestination -> TestTree+requestCreateConfigurationSetEventDestination =+  req+    "CreateConfigurationSetEventDestination"+    "fixture/CreateConfigurationSetEventDestination.yaml"++requestCreateContact :: CreateContact -> TestTree+requestCreateContact =+  req+    "CreateContact"+    "fixture/CreateContact.yaml"++requestCreateContactList :: CreateContactList -> TestTree+requestCreateContactList =+  req+    "CreateContactList"+    "fixture/CreateContactList.yaml"++requestCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplate -> TestTree+requestCreateCustomVerificationEmailTemplate =+  req+    "CreateCustomVerificationEmailTemplate"+    "fixture/CreateCustomVerificationEmailTemplate.yaml"++requestCreateDedicatedIpPool :: CreateDedicatedIpPool -> TestTree+requestCreateDedicatedIpPool =+  req+    "CreateDedicatedIpPool"+    "fixture/CreateDedicatedIpPool.yaml"++requestCreateDeliverabilityTestReport :: CreateDeliverabilityTestReport -> TestTree+requestCreateDeliverabilityTestReport =+  req+    "CreateDeliverabilityTestReport"+    "fixture/CreateDeliverabilityTestReport.yaml"++requestCreateEmailIdentity :: CreateEmailIdentity -> TestTree+requestCreateEmailIdentity =+  req+    "CreateEmailIdentity"+    "fixture/CreateEmailIdentity.yaml"++requestCreateEmailIdentityPolicy :: CreateEmailIdentityPolicy -> TestTree+requestCreateEmailIdentityPolicy =+  req+    "CreateEmailIdentityPolicy"+    "fixture/CreateEmailIdentityPolicy.yaml"++requestCreateEmailTemplate :: CreateEmailTemplate -> TestTree+requestCreateEmailTemplate =+  req+    "CreateEmailTemplate"+    "fixture/CreateEmailTemplate.yaml"++requestCreateImportJob :: CreateImportJob -> TestTree+requestCreateImportJob =+  req+    "CreateImportJob"+    "fixture/CreateImportJob.yaml"++requestDeleteConfigurationSet :: DeleteConfigurationSet -> TestTree+requestDeleteConfigurationSet =+  req+    "DeleteConfigurationSet"+    "fixture/DeleteConfigurationSet.yaml"++requestDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestination -> TestTree+requestDeleteConfigurationSetEventDestination =+  req+    "DeleteConfigurationSetEventDestination"+    "fixture/DeleteConfigurationSetEventDestination.yaml"++requestDeleteContact :: DeleteContact -> TestTree+requestDeleteContact =+  req+    "DeleteContact"+    "fixture/DeleteContact.yaml"++requestDeleteContactList :: DeleteContactList -> TestTree+requestDeleteContactList =+  req+    "DeleteContactList"+    "fixture/DeleteContactList.yaml"++requestDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplate -> TestTree+requestDeleteCustomVerificationEmailTemplate =+  req+    "DeleteCustomVerificationEmailTemplate"+    "fixture/DeleteCustomVerificationEmailTemplate.yaml"++requestDeleteDedicatedIpPool :: DeleteDedicatedIpPool -> TestTree+requestDeleteDedicatedIpPool =+  req+    "DeleteDedicatedIpPool"+    "fixture/DeleteDedicatedIpPool.yaml"++requestDeleteEmailIdentity :: DeleteEmailIdentity -> TestTree+requestDeleteEmailIdentity =+  req+    "DeleteEmailIdentity"+    "fixture/DeleteEmailIdentity.yaml"++requestDeleteEmailIdentityPolicy :: DeleteEmailIdentityPolicy -> TestTree+requestDeleteEmailIdentityPolicy =+  req+    "DeleteEmailIdentityPolicy"+    "fixture/DeleteEmailIdentityPolicy.yaml"++requestDeleteEmailTemplate :: DeleteEmailTemplate -> TestTree+requestDeleteEmailTemplate =+  req+    "DeleteEmailTemplate"+    "fixture/DeleteEmailTemplate.yaml"++requestDeleteSuppressedDestination :: DeleteSuppressedDestination -> TestTree+requestDeleteSuppressedDestination =+  req+    "DeleteSuppressedDestination"+    "fixture/DeleteSuppressedDestination.yaml"++requestGetAccount :: GetAccount -> TestTree+requestGetAccount =+  req+    "GetAccount"+    "fixture/GetAccount.yaml"++requestGetBlacklistReports :: GetBlacklistReports -> TestTree+requestGetBlacklistReports =+  req+    "GetBlacklistReports"+    "fixture/GetBlacklistReports.yaml"++requestGetConfigurationSet :: GetConfigurationSet -> TestTree+requestGetConfigurationSet =+  req+    "GetConfigurationSet"+    "fixture/GetConfigurationSet.yaml"++requestGetConfigurationSetEventDestinations :: GetConfigurationSetEventDestinations -> TestTree+requestGetConfigurationSetEventDestinations =+  req+    "GetConfigurationSetEventDestinations"+    "fixture/GetConfigurationSetEventDestinations.yaml"++requestGetContact :: GetContact -> TestTree+requestGetContact =+  req+    "GetContact"+    "fixture/GetContact.yaml"++requestGetContactList :: GetContactList -> TestTree+requestGetContactList =+  req+    "GetContactList"+    "fixture/GetContactList.yaml"++requestGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplate -> TestTree+requestGetCustomVerificationEmailTemplate =+  req+    "GetCustomVerificationEmailTemplate"+    "fixture/GetCustomVerificationEmailTemplate.yaml"++requestGetDedicatedIp :: GetDedicatedIp -> TestTree+requestGetDedicatedIp =+  req+    "GetDedicatedIp"+    "fixture/GetDedicatedIp.yaml"++requestGetDedicatedIpPool :: GetDedicatedIpPool -> TestTree+requestGetDedicatedIpPool =+  req+    "GetDedicatedIpPool"+    "fixture/GetDedicatedIpPool.yaml"++requestGetDedicatedIps :: GetDedicatedIps -> TestTree+requestGetDedicatedIps =+  req+    "GetDedicatedIps"+    "fixture/GetDedicatedIps.yaml"++requestGetDeliverabilityDashboardOptions :: GetDeliverabilityDashboardOptions -> TestTree+requestGetDeliverabilityDashboardOptions =+  req+    "GetDeliverabilityDashboardOptions"+    "fixture/GetDeliverabilityDashboardOptions.yaml"++requestGetDeliverabilityTestReport :: GetDeliverabilityTestReport -> TestTree+requestGetDeliverabilityTestReport =+  req+    "GetDeliverabilityTestReport"+    "fixture/GetDeliverabilityTestReport.yaml"++requestGetDomainDeliverabilityCampaign :: GetDomainDeliverabilityCampaign -> TestTree+requestGetDomainDeliverabilityCampaign =+  req+    "GetDomainDeliverabilityCampaign"+    "fixture/GetDomainDeliverabilityCampaign.yaml"++requestGetDomainStatisticsReport :: GetDomainStatisticsReport -> TestTree+requestGetDomainStatisticsReport =+  req+    "GetDomainStatisticsReport"+    "fixture/GetDomainStatisticsReport.yaml"++requestGetEmailIdentity :: GetEmailIdentity -> TestTree+requestGetEmailIdentity =+  req+    "GetEmailIdentity"+    "fixture/GetEmailIdentity.yaml"++requestGetEmailIdentityPolicies :: GetEmailIdentityPolicies -> TestTree+requestGetEmailIdentityPolicies =+  req+    "GetEmailIdentityPolicies"+    "fixture/GetEmailIdentityPolicies.yaml"++requestGetEmailTemplate :: GetEmailTemplate -> TestTree+requestGetEmailTemplate =+  req+    "GetEmailTemplate"+    "fixture/GetEmailTemplate.yaml"++requestGetImportJob :: GetImportJob -> TestTree+requestGetImportJob =+  req+    "GetImportJob"+    "fixture/GetImportJob.yaml"++requestGetSuppressedDestination :: GetSuppressedDestination -> TestTree+requestGetSuppressedDestination =+  req+    "GetSuppressedDestination"+    "fixture/GetSuppressedDestination.yaml"++requestListConfigurationSets :: ListConfigurationSets -> TestTree+requestListConfigurationSets =+  req+    "ListConfigurationSets"+    "fixture/ListConfigurationSets.yaml"++requestListContactLists :: ListContactLists -> TestTree+requestListContactLists =+  req+    "ListContactLists"+    "fixture/ListContactLists.yaml"++requestListContacts :: ListContacts -> TestTree+requestListContacts =+  req+    "ListContacts"+    "fixture/ListContacts.yaml"++requestListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplates -> TestTree+requestListCustomVerificationEmailTemplates =+  req+    "ListCustomVerificationEmailTemplates"+    "fixture/ListCustomVerificationEmailTemplates.yaml"++requestListDedicatedIpPools :: ListDedicatedIpPools -> TestTree+requestListDedicatedIpPools =+  req+    "ListDedicatedIpPools"+    "fixture/ListDedicatedIpPools.yaml"++requestListDeliverabilityTestReports :: ListDeliverabilityTestReports -> TestTree+requestListDeliverabilityTestReports =+  req+    "ListDeliverabilityTestReports"+    "fixture/ListDeliverabilityTestReports.yaml"++requestListDomainDeliverabilityCampaigns :: ListDomainDeliverabilityCampaigns -> TestTree+requestListDomainDeliverabilityCampaigns =+  req+    "ListDomainDeliverabilityCampaigns"+    "fixture/ListDomainDeliverabilityCampaigns.yaml"++requestListEmailIdentities :: ListEmailIdentities -> TestTree+requestListEmailIdentities =+  req+    "ListEmailIdentities"+    "fixture/ListEmailIdentities.yaml"++requestListEmailTemplates :: ListEmailTemplates -> TestTree+requestListEmailTemplates =+  req+    "ListEmailTemplates"+    "fixture/ListEmailTemplates.yaml"++requestListImportJobs :: ListImportJobs -> TestTree+requestListImportJobs =+  req+    "ListImportJobs"+    "fixture/ListImportJobs.yaml"++requestListRecommendations :: ListRecommendations -> TestTree+requestListRecommendations =+  req+    "ListRecommendations"+    "fixture/ListRecommendations.yaml"++requestListSuppressedDestinations :: ListSuppressedDestinations -> TestTree+requestListSuppressedDestinations =+  req+    "ListSuppressedDestinations"+    "fixture/ListSuppressedDestinations.yaml"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutAccountDedicatedIpWarmupAttributes :: PutAccountDedicatedIpWarmupAttributes -> TestTree+requestPutAccountDedicatedIpWarmupAttributes =+  req+    "PutAccountDedicatedIpWarmupAttributes"+    "fixture/PutAccountDedicatedIpWarmupAttributes.yaml"++requestPutAccountDetails :: PutAccountDetails -> TestTree+requestPutAccountDetails =+  req+    "PutAccountDetails"+    "fixture/PutAccountDetails.yaml"++requestPutAccountSendingAttributes :: PutAccountSendingAttributes -> TestTree+requestPutAccountSendingAttributes =+  req+    "PutAccountSendingAttributes"+    "fixture/PutAccountSendingAttributes.yaml"++requestPutAccountSuppressionAttributes :: PutAccountSuppressionAttributes -> TestTree+requestPutAccountSuppressionAttributes =+  req+    "PutAccountSuppressionAttributes"+    "fixture/PutAccountSuppressionAttributes.yaml"++requestPutAccountVdmAttributes :: PutAccountVdmAttributes -> TestTree+requestPutAccountVdmAttributes =+  req+    "PutAccountVdmAttributes"+    "fixture/PutAccountVdmAttributes.yaml"++requestPutConfigurationSetDeliveryOptions :: PutConfigurationSetDeliveryOptions -> TestTree+requestPutConfigurationSetDeliveryOptions =+  req+    "PutConfigurationSetDeliveryOptions"+    "fixture/PutConfigurationSetDeliveryOptions.yaml"++requestPutConfigurationSetReputationOptions :: PutConfigurationSetReputationOptions -> TestTree+requestPutConfigurationSetReputationOptions =+  req+    "PutConfigurationSetReputationOptions"+    "fixture/PutConfigurationSetReputationOptions.yaml"++requestPutConfigurationSetSendingOptions :: PutConfigurationSetSendingOptions -> TestTree+requestPutConfigurationSetSendingOptions =+  req+    "PutConfigurationSetSendingOptions"+    "fixture/PutConfigurationSetSendingOptions.yaml"++requestPutConfigurationSetSuppressionOptions :: PutConfigurationSetSuppressionOptions -> TestTree+requestPutConfigurationSetSuppressionOptions =+  req+    "PutConfigurationSetSuppressionOptions"+    "fixture/PutConfigurationSetSuppressionOptions.yaml"++requestPutConfigurationSetTrackingOptions :: PutConfigurationSetTrackingOptions -> TestTree+requestPutConfigurationSetTrackingOptions =+  req+    "PutConfigurationSetTrackingOptions"+    "fixture/PutConfigurationSetTrackingOptions.yaml"++requestPutConfigurationSetVdmOptions :: PutConfigurationSetVdmOptions -> TestTree+requestPutConfigurationSetVdmOptions =+  req+    "PutConfigurationSetVdmOptions"+    "fixture/PutConfigurationSetVdmOptions.yaml"++requestPutDedicatedIpInPool :: PutDedicatedIpInPool -> TestTree+requestPutDedicatedIpInPool =+  req+    "PutDedicatedIpInPool"+    "fixture/PutDedicatedIpInPool.yaml"++requestPutDedicatedIpWarmupAttributes :: PutDedicatedIpWarmupAttributes -> TestTree+requestPutDedicatedIpWarmupAttributes =+  req+    "PutDedicatedIpWarmupAttributes"+    "fixture/PutDedicatedIpWarmupAttributes.yaml"++requestPutDeliverabilityDashboardOption :: PutDeliverabilityDashboardOption -> TestTree+requestPutDeliverabilityDashboardOption =+  req+    "PutDeliverabilityDashboardOption"+    "fixture/PutDeliverabilityDashboardOption.yaml"++requestPutEmailIdentityConfigurationSetAttributes :: PutEmailIdentityConfigurationSetAttributes -> TestTree+requestPutEmailIdentityConfigurationSetAttributes =+  req+    "PutEmailIdentityConfigurationSetAttributes"+    "fixture/PutEmailIdentityConfigurationSetAttributes.yaml"++requestPutEmailIdentityDkimAttributes :: PutEmailIdentityDkimAttributes -> TestTree+requestPutEmailIdentityDkimAttributes =+  req+    "PutEmailIdentityDkimAttributes"+    "fixture/PutEmailIdentityDkimAttributes.yaml"++requestPutEmailIdentityDkimSigningAttributes :: PutEmailIdentityDkimSigningAttributes -> TestTree+requestPutEmailIdentityDkimSigningAttributes =+  req+    "PutEmailIdentityDkimSigningAttributes"+    "fixture/PutEmailIdentityDkimSigningAttributes.yaml"++requestPutEmailIdentityFeedbackAttributes :: PutEmailIdentityFeedbackAttributes -> TestTree+requestPutEmailIdentityFeedbackAttributes =+  req+    "PutEmailIdentityFeedbackAttributes"+    "fixture/PutEmailIdentityFeedbackAttributes.yaml"++requestPutEmailIdentityMailFromAttributes :: PutEmailIdentityMailFromAttributes -> TestTree+requestPutEmailIdentityMailFromAttributes =+  req+    "PutEmailIdentityMailFromAttributes"+    "fixture/PutEmailIdentityMailFromAttributes.yaml"++requestPutSuppressedDestination :: PutSuppressedDestination -> TestTree+requestPutSuppressedDestination =+  req+    "PutSuppressedDestination"+    "fixture/PutSuppressedDestination.yaml"++requestSendBulkEmail :: SendBulkEmail -> TestTree+requestSendBulkEmail =+  req+    "SendBulkEmail"+    "fixture/SendBulkEmail.yaml"++requestSendCustomVerificationEmail :: SendCustomVerificationEmail -> TestTree+requestSendCustomVerificationEmail =+  req+    "SendCustomVerificationEmail"+    "fixture/SendCustomVerificationEmail.yaml"++requestSendEmail :: SendEmail -> TestTree+requestSendEmail =+  req+    "SendEmail"+    "fixture/SendEmail.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestTestRenderEmailTemplate :: TestRenderEmailTemplate -> TestTree+requestTestRenderEmailTemplate =+  req+    "TestRenderEmailTemplate"+    "fixture/TestRenderEmailTemplate.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestination -> TestTree+requestUpdateConfigurationSetEventDestination =+  req+    "UpdateConfigurationSetEventDestination"+    "fixture/UpdateConfigurationSetEventDestination.yaml"++requestUpdateContact :: UpdateContact -> TestTree+requestUpdateContact =+  req+    "UpdateContact"+    "fixture/UpdateContact.yaml"++requestUpdateContactList :: UpdateContactList -> TestTree+requestUpdateContactList =+  req+    "UpdateContactList"+    "fixture/UpdateContactList.yaml"++requestUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplate -> TestTree+requestUpdateCustomVerificationEmailTemplate =+  req+    "UpdateCustomVerificationEmailTemplate"+    "fixture/UpdateCustomVerificationEmailTemplate.yaml"++requestUpdateEmailIdentityPolicy :: UpdateEmailIdentityPolicy -> TestTree+requestUpdateEmailIdentityPolicy =+  req+    "UpdateEmailIdentityPolicy"+    "fixture/UpdateEmailIdentityPolicy.yaml"++requestUpdateEmailTemplate :: UpdateEmailTemplate -> TestTree+requestUpdateEmailTemplate =+  req+    "UpdateEmailTemplate"+    "fixture/UpdateEmailTemplate.yaml"++-- Responses++responseBatchGetMetricData :: BatchGetMetricDataResponse -> TestTree+responseBatchGetMetricData =+  res+    "BatchGetMetricDataResponse"+    "fixture/BatchGetMetricDataResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy BatchGetMetricData)++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)++responseCreateContact :: CreateContactResponse -> TestTree+responseCreateContact =+  res+    "CreateContactResponse"+    "fixture/CreateContactResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateContact)++responseCreateContactList :: CreateContactListResponse -> TestTree+responseCreateContactList =+  res+    "CreateContactListResponse"+    "fixture/CreateContactListResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateContactList)++responseCreateCustomVerificationEmailTemplate :: CreateCustomVerificationEmailTemplateResponse -> TestTree+responseCreateCustomVerificationEmailTemplate =+  res+    "CreateCustomVerificationEmailTemplateResponse"+    "fixture/CreateCustomVerificationEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateCustomVerificationEmailTemplate)++responseCreateDedicatedIpPool :: CreateDedicatedIpPoolResponse -> TestTree+responseCreateDedicatedIpPool =+  res+    "CreateDedicatedIpPoolResponse"+    "fixture/CreateDedicatedIpPoolResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDedicatedIpPool)++responseCreateDeliverabilityTestReport :: CreateDeliverabilityTestReportResponse -> TestTree+responseCreateDeliverabilityTestReport =+  res+    "CreateDeliverabilityTestReportResponse"+    "fixture/CreateDeliverabilityTestReportResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateDeliverabilityTestReport)++responseCreateEmailIdentity :: CreateEmailIdentityResponse -> TestTree+responseCreateEmailIdentity =+  res+    "CreateEmailIdentityResponse"+    "fixture/CreateEmailIdentityResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateEmailIdentity)++responseCreateEmailIdentityPolicy :: CreateEmailIdentityPolicyResponse -> TestTree+responseCreateEmailIdentityPolicy =+  res+    "CreateEmailIdentityPolicyResponse"+    "fixture/CreateEmailIdentityPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateEmailIdentityPolicy)++responseCreateEmailTemplate :: CreateEmailTemplateResponse -> TestTree+responseCreateEmailTemplate =+  res+    "CreateEmailTemplateResponse"+    "fixture/CreateEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateEmailTemplate)++responseCreateImportJob :: CreateImportJobResponse -> TestTree+responseCreateImportJob =+  res+    "CreateImportJobResponse"+    "fixture/CreateImportJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy CreateImportJob)++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)++responseDeleteContact :: DeleteContactResponse -> TestTree+responseDeleteContact =+  res+    "DeleteContactResponse"+    "fixture/DeleteContactResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteContact)++responseDeleteContactList :: DeleteContactListResponse -> TestTree+responseDeleteContactList =+  res+    "DeleteContactListResponse"+    "fixture/DeleteContactListResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteContactList)++responseDeleteCustomVerificationEmailTemplate :: DeleteCustomVerificationEmailTemplateResponse -> TestTree+responseDeleteCustomVerificationEmailTemplate =+  res+    "DeleteCustomVerificationEmailTemplateResponse"+    "fixture/DeleteCustomVerificationEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomVerificationEmailTemplate)++responseDeleteDedicatedIpPool :: DeleteDedicatedIpPoolResponse -> TestTree+responseDeleteDedicatedIpPool =+  res+    "DeleteDedicatedIpPoolResponse"+    "fixture/DeleteDedicatedIpPoolResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteDedicatedIpPool)++responseDeleteEmailIdentity :: DeleteEmailIdentityResponse -> TestTree+responseDeleteEmailIdentity =+  res+    "DeleteEmailIdentityResponse"+    "fixture/DeleteEmailIdentityResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteEmailIdentity)++responseDeleteEmailIdentityPolicy :: DeleteEmailIdentityPolicyResponse -> TestTree+responseDeleteEmailIdentityPolicy =+  res+    "DeleteEmailIdentityPolicyResponse"+    "fixture/DeleteEmailIdentityPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteEmailIdentityPolicy)++responseDeleteEmailTemplate :: DeleteEmailTemplateResponse -> TestTree+responseDeleteEmailTemplate =+  res+    "DeleteEmailTemplateResponse"+    "fixture/DeleteEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteEmailTemplate)++responseDeleteSuppressedDestination :: DeleteSuppressedDestinationResponse -> TestTree+responseDeleteSuppressedDestination =+  res+    "DeleteSuppressedDestinationResponse"+    "fixture/DeleteSuppressedDestinationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy DeleteSuppressedDestination)++responseGetAccount :: GetAccountResponse -> TestTree+responseGetAccount =+  res+    "GetAccountResponse"+    "fixture/GetAccountResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetAccount)++responseGetBlacklistReports :: GetBlacklistReportsResponse -> TestTree+responseGetBlacklistReports =+  res+    "GetBlacklistReportsResponse"+    "fixture/GetBlacklistReportsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetBlacklistReports)++responseGetConfigurationSet :: GetConfigurationSetResponse -> TestTree+responseGetConfigurationSet =+  res+    "GetConfigurationSetResponse"+    "fixture/GetConfigurationSetResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetConfigurationSet)++responseGetConfigurationSetEventDestinations :: GetConfigurationSetEventDestinationsResponse -> TestTree+responseGetConfigurationSetEventDestinations =+  res+    "GetConfigurationSetEventDestinationsResponse"+    "fixture/GetConfigurationSetEventDestinationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetConfigurationSetEventDestinations)++responseGetContact :: GetContactResponse -> TestTree+responseGetContact =+  res+    "GetContactResponse"+    "fixture/GetContactResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetContact)++responseGetContactList :: GetContactListResponse -> TestTree+responseGetContactList =+  res+    "GetContactListResponse"+    "fixture/GetContactListResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetContactList)++responseGetCustomVerificationEmailTemplate :: GetCustomVerificationEmailTemplateResponse -> TestTree+responseGetCustomVerificationEmailTemplate =+  res+    "GetCustomVerificationEmailTemplateResponse"+    "fixture/GetCustomVerificationEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetCustomVerificationEmailTemplate)++responseGetDedicatedIp :: GetDedicatedIpResponse -> TestTree+responseGetDedicatedIp =+  res+    "GetDedicatedIpResponse"+    "fixture/GetDedicatedIpResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDedicatedIp)++responseGetDedicatedIpPool :: GetDedicatedIpPoolResponse -> TestTree+responseGetDedicatedIpPool =+  res+    "GetDedicatedIpPoolResponse"+    "fixture/GetDedicatedIpPoolResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDedicatedIpPool)++responseGetDedicatedIps :: GetDedicatedIpsResponse -> TestTree+responseGetDedicatedIps =+  res+    "GetDedicatedIpsResponse"+    "fixture/GetDedicatedIpsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDedicatedIps)++responseGetDeliverabilityDashboardOptions :: GetDeliverabilityDashboardOptionsResponse -> TestTree+responseGetDeliverabilityDashboardOptions =+  res+    "GetDeliverabilityDashboardOptionsResponse"+    "fixture/GetDeliverabilityDashboardOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDeliverabilityDashboardOptions)++responseGetDeliverabilityTestReport :: GetDeliverabilityTestReportResponse -> TestTree+responseGetDeliverabilityTestReport =+  res+    "GetDeliverabilityTestReportResponse"+    "fixture/GetDeliverabilityTestReportResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDeliverabilityTestReport)++responseGetDomainDeliverabilityCampaign :: GetDomainDeliverabilityCampaignResponse -> TestTree+responseGetDomainDeliverabilityCampaign =+  res+    "GetDomainDeliverabilityCampaignResponse"+    "fixture/GetDomainDeliverabilityCampaignResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDomainDeliverabilityCampaign)++responseGetDomainStatisticsReport :: GetDomainStatisticsReportResponse -> TestTree+responseGetDomainStatisticsReport =+  res+    "GetDomainStatisticsReportResponse"+    "fixture/GetDomainStatisticsReportResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDomainStatisticsReport)++responseGetEmailIdentity :: GetEmailIdentityResponse -> TestTree+responseGetEmailIdentity =+  res+    "GetEmailIdentityResponse"+    "fixture/GetEmailIdentityResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetEmailIdentity)++responseGetEmailIdentityPolicies :: GetEmailIdentityPoliciesResponse -> TestTree+responseGetEmailIdentityPolicies =+  res+    "GetEmailIdentityPoliciesResponse"+    "fixture/GetEmailIdentityPoliciesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetEmailIdentityPolicies)++responseGetEmailTemplate :: GetEmailTemplateResponse -> TestTree+responseGetEmailTemplate =+  res+    "GetEmailTemplateResponse"+    "fixture/GetEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetEmailTemplate)++responseGetImportJob :: GetImportJobResponse -> TestTree+responseGetImportJob =+  res+    "GetImportJobResponse"+    "fixture/GetImportJobResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetImportJob)++responseGetSuppressedDestination :: GetSuppressedDestinationResponse -> TestTree+responseGetSuppressedDestination =+  res+    "GetSuppressedDestinationResponse"+    "fixture/GetSuppressedDestinationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetSuppressedDestination)++responseListConfigurationSets :: ListConfigurationSetsResponse -> TestTree+responseListConfigurationSets =+  res+    "ListConfigurationSetsResponse"+    "fixture/ListConfigurationSetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListConfigurationSets)++responseListContactLists :: ListContactListsResponse -> TestTree+responseListContactLists =+  res+    "ListContactListsResponse"+    "fixture/ListContactListsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListContactLists)++responseListContacts :: ListContactsResponse -> TestTree+responseListContacts =+  res+    "ListContactsResponse"+    "fixture/ListContactsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListContacts)++responseListCustomVerificationEmailTemplates :: ListCustomVerificationEmailTemplatesResponse -> TestTree+responseListCustomVerificationEmailTemplates =+  res+    "ListCustomVerificationEmailTemplatesResponse"+    "fixture/ListCustomVerificationEmailTemplatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListCustomVerificationEmailTemplates)++responseListDedicatedIpPools :: ListDedicatedIpPoolsResponse -> TestTree+responseListDedicatedIpPools =+  res+    "ListDedicatedIpPoolsResponse"+    "fixture/ListDedicatedIpPoolsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDedicatedIpPools)++responseListDeliverabilityTestReports :: ListDeliverabilityTestReportsResponse -> TestTree+responseListDeliverabilityTestReports =+  res+    "ListDeliverabilityTestReportsResponse"+    "fixture/ListDeliverabilityTestReportsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDeliverabilityTestReports)++responseListDomainDeliverabilityCampaigns :: ListDomainDeliverabilityCampaignsResponse -> TestTree+responseListDomainDeliverabilityCampaigns =+  res+    "ListDomainDeliverabilityCampaignsResponse"+    "fixture/ListDomainDeliverabilityCampaignsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListDomainDeliverabilityCampaigns)++responseListEmailIdentities :: ListEmailIdentitiesResponse -> TestTree+responseListEmailIdentities =+  res+    "ListEmailIdentitiesResponse"+    "fixture/ListEmailIdentitiesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListEmailIdentities)++responseListEmailTemplates :: ListEmailTemplatesResponse -> TestTree+responseListEmailTemplates =+  res+    "ListEmailTemplatesResponse"+    "fixture/ListEmailTemplatesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListEmailTemplates)++responseListImportJobs :: ListImportJobsResponse -> TestTree+responseListImportJobs =+  res+    "ListImportJobsResponse"+    "fixture/ListImportJobsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListImportJobs)++responseListRecommendations :: ListRecommendationsResponse -> TestTree+responseListRecommendations =+  res+    "ListRecommendationsResponse"+    "fixture/ListRecommendationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListRecommendations)++responseListSuppressedDestinations :: ListSuppressedDestinationsResponse -> TestTree+responseListSuppressedDestinations =+  res+    "ListSuppressedDestinationsResponse"+    "fixture/ListSuppressedDestinationsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListSuppressedDestinations)++responseListTagsForResource :: ListTagsForResourceResponse -> TestTree+responseListTagsForResource =+  res+    "ListTagsForResourceResponse"+    "fixture/ListTagsForResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListTagsForResource)++responsePutAccountDedicatedIpWarmupAttributes :: PutAccountDedicatedIpWarmupAttributesResponse -> TestTree+responsePutAccountDedicatedIpWarmupAttributes =+  res+    "PutAccountDedicatedIpWarmupAttributesResponse"+    "fixture/PutAccountDedicatedIpWarmupAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountDedicatedIpWarmupAttributes)++responsePutAccountDetails :: PutAccountDetailsResponse -> TestTree+responsePutAccountDetails =+  res+    "PutAccountDetailsResponse"+    "fixture/PutAccountDetailsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountDetails)++responsePutAccountSendingAttributes :: PutAccountSendingAttributesResponse -> TestTree+responsePutAccountSendingAttributes =+  res+    "PutAccountSendingAttributesResponse"+    "fixture/PutAccountSendingAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountSendingAttributes)++responsePutAccountSuppressionAttributes :: PutAccountSuppressionAttributesResponse -> TestTree+responsePutAccountSuppressionAttributes =+  res+    "PutAccountSuppressionAttributesResponse"+    "fixture/PutAccountSuppressionAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountSuppressionAttributes)++responsePutAccountVdmAttributes :: PutAccountVdmAttributesResponse -> TestTree+responsePutAccountVdmAttributes =+  res+    "PutAccountVdmAttributesResponse"+    "fixture/PutAccountVdmAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountVdmAttributes)++responsePutConfigurationSetDeliveryOptions :: PutConfigurationSetDeliveryOptionsResponse -> TestTree+responsePutConfigurationSetDeliveryOptions =+  res+    "PutConfigurationSetDeliveryOptionsResponse"+    "fixture/PutConfigurationSetDeliveryOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetDeliveryOptions)++responsePutConfigurationSetReputationOptions :: PutConfigurationSetReputationOptionsResponse -> TestTree+responsePutConfigurationSetReputationOptions =+  res+    "PutConfigurationSetReputationOptionsResponse"+    "fixture/PutConfigurationSetReputationOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetReputationOptions)++responsePutConfigurationSetSendingOptions :: PutConfigurationSetSendingOptionsResponse -> TestTree+responsePutConfigurationSetSendingOptions =+  res+    "PutConfigurationSetSendingOptionsResponse"+    "fixture/PutConfigurationSetSendingOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetSendingOptions)++responsePutConfigurationSetSuppressionOptions :: PutConfigurationSetSuppressionOptionsResponse -> TestTree+responsePutConfigurationSetSuppressionOptions =+  res+    "PutConfigurationSetSuppressionOptionsResponse"+    "fixture/PutConfigurationSetSuppressionOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetSuppressionOptions)++responsePutConfigurationSetTrackingOptions :: PutConfigurationSetTrackingOptionsResponse -> TestTree+responsePutConfigurationSetTrackingOptions =+  res+    "PutConfigurationSetTrackingOptionsResponse"+    "fixture/PutConfigurationSetTrackingOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetTrackingOptions)++responsePutConfigurationSetVdmOptions :: PutConfigurationSetVdmOptionsResponse -> TestTree+responsePutConfigurationSetVdmOptions =+  res+    "PutConfigurationSetVdmOptionsResponse"+    "fixture/PutConfigurationSetVdmOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetVdmOptions)++responsePutDedicatedIpInPool :: PutDedicatedIpInPoolResponse -> TestTree+responsePutDedicatedIpInPool =+  res+    "PutDedicatedIpInPoolResponse"+    "fixture/PutDedicatedIpInPoolResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutDedicatedIpInPool)++responsePutDedicatedIpWarmupAttributes :: PutDedicatedIpWarmupAttributesResponse -> TestTree+responsePutDedicatedIpWarmupAttributes =+  res+    "PutDedicatedIpWarmupAttributesResponse"+    "fixture/PutDedicatedIpWarmupAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutDedicatedIpWarmupAttributes)++responsePutDeliverabilityDashboardOption :: PutDeliverabilityDashboardOptionResponse -> TestTree+responsePutDeliverabilityDashboardOption =+  res+    "PutDeliverabilityDashboardOptionResponse"+    "fixture/PutDeliverabilityDashboardOptionResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutDeliverabilityDashboardOption)++responsePutEmailIdentityConfigurationSetAttributes :: PutEmailIdentityConfigurationSetAttributesResponse -> TestTree+responsePutEmailIdentityConfigurationSetAttributes =+  res+    "PutEmailIdentityConfigurationSetAttributesResponse"+    "fixture/PutEmailIdentityConfigurationSetAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityConfigurationSetAttributes)++responsePutEmailIdentityDkimAttributes :: PutEmailIdentityDkimAttributesResponse -> TestTree+responsePutEmailIdentityDkimAttributes =+  res+    "PutEmailIdentityDkimAttributesResponse"+    "fixture/PutEmailIdentityDkimAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityDkimAttributes)++responsePutEmailIdentityDkimSigningAttributes :: PutEmailIdentityDkimSigningAttributesResponse -> TestTree+responsePutEmailIdentityDkimSigningAttributes =+  res+    "PutEmailIdentityDkimSigningAttributesResponse"+    "fixture/PutEmailIdentityDkimSigningAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityDkimSigningAttributes)++responsePutEmailIdentityFeedbackAttributes :: PutEmailIdentityFeedbackAttributesResponse -> TestTree+responsePutEmailIdentityFeedbackAttributes =+  res+    "PutEmailIdentityFeedbackAttributesResponse"+    "fixture/PutEmailIdentityFeedbackAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityFeedbackAttributes)++responsePutEmailIdentityMailFromAttributes :: PutEmailIdentityMailFromAttributesResponse -> TestTree+responsePutEmailIdentityMailFromAttributes =+  res+    "PutEmailIdentityMailFromAttributesResponse"+    "fixture/PutEmailIdentityMailFromAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityMailFromAttributes)++responsePutSuppressedDestination :: PutSuppressedDestinationResponse -> TestTree+responsePutSuppressedDestination =+  res+    "PutSuppressedDestinationResponse"+    "fixture/PutSuppressedDestinationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutSuppressedDestination)++responseSendBulkEmail :: SendBulkEmailResponse -> TestTree+responseSendBulkEmail =+  res+    "SendBulkEmailResponse"+    "fixture/SendBulkEmailResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy SendBulkEmail)++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)++responseTagResource :: TagResourceResponse -> TestTree+responseTagResource =+  res+    "TagResourceResponse"+    "fixture/TagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TagResource)++responseTestRenderEmailTemplate :: TestRenderEmailTemplateResponse -> TestTree+responseTestRenderEmailTemplate =+  res+    "TestRenderEmailTemplateResponse"+    "fixture/TestRenderEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy TestRenderEmailTemplate)++responseUntagResource :: UntagResourceResponse -> TestTree+responseUntagResource =+  res+    "UntagResourceResponse"+    "fixture/UntagResourceResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UntagResource)++responseUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestinationResponse -> TestTree+responseUpdateConfigurationSetEventDestination =+  res+    "UpdateConfigurationSetEventDestinationResponse"+    "fixture/UpdateConfigurationSetEventDestinationResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateConfigurationSetEventDestination)++responseUpdateContact :: UpdateContactResponse -> TestTree+responseUpdateContact =+  res+    "UpdateContactResponse"+    "fixture/UpdateContactResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateContact)++responseUpdateContactList :: UpdateContactListResponse -> TestTree+responseUpdateContactList =+  res+    "UpdateContactListResponse"+    "fixture/UpdateContactListResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateContactList)++responseUpdateCustomVerificationEmailTemplate :: UpdateCustomVerificationEmailTemplateResponse -> TestTree+responseUpdateCustomVerificationEmailTemplate =+  res+    "UpdateCustomVerificationEmailTemplateResponse"+    "fixture/UpdateCustomVerificationEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateCustomVerificationEmailTemplate)++responseUpdateEmailIdentityPolicy :: UpdateEmailIdentityPolicyResponse -> TestTree+responseUpdateEmailIdentityPolicy =+  res+    "UpdateEmailIdentityPolicyResponse"+    "fixture/UpdateEmailIdentityPolicyResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateEmailIdentityPolicy)++responseUpdateEmailTemplate :: UpdateEmailTemplateResponse -> TestTree+responseUpdateEmailTemplate =+  res+    "UpdateEmailTemplateResponse"+    "fixture/UpdateEmailTemplateResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy UpdateEmailTemplate)
+ test/Test/Amazonka/SESV2.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.SESV2+-- 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.SESV2+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/SESV2/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.SESV2.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.SESV2.Internal where