packages feed

amazonka-pinpoint-email (empty) → 2.0

raw patch · 184 files changed

+18781/−0 lines, 184 filesdep +amazonka-coredep +amazonka-pinpoint-emaildep +amazonka-test

Dependencies added: amazonka-core, amazonka-pinpoint-email, 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 Pinpoint Email Service SDK++* [Version](#version)+* [Description](#description)+* [Contribute](#contribute)+* [Licence](#licence)+++## Version+ +`2.0` - Derived from API version @2018-07-26@ of the AWS service descriptions, licensed under Apache 2.0.++## Description++Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-pinpoint-email)+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.PinpointEmail](http://hackage.haskell.org/package/amazonka-pinpoint-email/docs/Amazonka-PinpointEmail.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-pinpoint-email` 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-pinpoint-email.cabal view
@@ -0,0 +1,171 @@+cabal-version:      2.2+name:               amazonka-pinpoint-email+version:            2.0+synopsis:           Amazon Pinpoint 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 @2018-07-26@ 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.PinpointEmail.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.PinpointEmail" 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-pinpoint-email++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.PinpointEmail+    Amazonka.PinpointEmail.CreateConfigurationSet+    Amazonka.PinpointEmail.CreateConfigurationSetEventDestination+    Amazonka.PinpointEmail.CreateDedicatedIpPool+    Amazonka.PinpointEmail.CreateDeliverabilityTestReport+    Amazonka.PinpointEmail.CreateEmailIdentity+    Amazonka.PinpointEmail.DeleteConfigurationSet+    Amazonka.PinpointEmail.DeleteConfigurationSetEventDestination+    Amazonka.PinpointEmail.DeleteDedicatedIpPool+    Amazonka.PinpointEmail.DeleteEmailIdentity+    Amazonka.PinpointEmail.GetAccount+    Amazonka.PinpointEmail.GetBlacklistReports+    Amazonka.PinpointEmail.GetConfigurationSet+    Amazonka.PinpointEmail.GetConfigurationSetEventDestinations+    Amazonka.PinpointEmail.GetDedicatedIp+    Amazonka.PinpointEmail.GetDedicatedIps+    Amazonka.PinpointEmail.GetDeliverabilityDashboardOptions+    Amazonka.PinpointEmail.GetDeliverabilityTestReport+    Amazonka.PinpointEmail.GetDomainDeliverabilityCampaign+    Amazonka.PinpointEmail.GetDomainStatisticsReport+    Amazonka.PinpointEmail.GetEmailIdentity+    Amazonka.PinpointEmail.Lens+    Amazonka.PinpointEmail.ListConfigurationSets+    Amazonka.PinpointEmail.ListDedicatedIpPools+    Amazonka.PinpointEmail.ListDeliverabilityTestReports+    Amazonka.PinpointEmail.ListDomainDeliverabilityCampaigns+    Amazonka.PinpointEmail.ListEmailIdentities+    Amazonka.PinpointEmail.ListTagsForResource+    Amazonka.PinpointEmail.PutAccountDedicatedIpWarmupAttributes+    Amazonka.PinpointEmail.PutAccountSendingAttributes+    Amazonka.PinpointEmail.PutConfigurationSetDeliveryOptions+    Amazonka.PinpointEmail.PutConfigurationSetReputationOptions+    Amazonka.PinpointEmail.PutConfigurationSetSendingOptions+    Amazonka.PinpointEmail.PutConfigurationSetTrackingOptions+    Amazonka.PinpointEmail.PutDedicatedIpInPool+    Amazonka.PinpointEmail.PutDedicatedIpWarmupAttributes+    Amazonka.PinpointEmail.PutDeliverabilityDashboardOption+    Amazonka.PinpointEmail.PutEmailIdentityDkimAttributes+    Amazonka.PinpointEmail.PutEmailIdentityFeedbackAttributes+    Amazonka.PinpointEmail.PutEmailIdentityMailFromAttributes+    Amazonka.PinpointEmail.SendEmail+    Amazonka.PinpointEmail.TagResource+    Amazonka.PinpointEmail.Types+    Amazonka.PinpointEmail.Types.BehaviorOnMxFailure+    Amazonka.PinpointEmail.Types.BlacklistEntry+    Amazonka.PinpointEmail.Types.Body+    Amazonka.PinpointEmail.Types.CloudWatchDestination+    Amazonka.PinpointEmail.Types.CloudWatchDimensionConfiguration+    Amazonka.PinpointEmail.Types.Content+    Amazonka.PinpointEmail.Types.DailyVolume+    Amazonka.PinpointEmail.Types.DedicatedIp+    Amazonka.PinpointEmail.Types.DeliverabilityDashboardAccountStatus+    Amazonka.PinpointEmail.Types.DeliverabilityTestReport+    Amazonka.PinpointEmail.Types.DeliverabilityTestStatus+    Amazonka.PinpointEmail.Types.DeliveryOptions+    Amazonka.PinpointEmail.Types.Destination+    Amazonka.PinpointEmail.Types.DimensionValueSource+    Amazonka.PinpointEmail.Types.DkimAttributes+    Amazonka.PinpointEmail.Types.DkimStatus+    Amazonka.PinpointEmail.Types.DomainDeliverabilityCampaign+    Amazonka.PinpointEmail.Types.DomainDeliverabilityTrackingOption+    Amazonka.PinpointEmail.Types.DomainIspPlacement+    Amazonka.PinpointEmail.Types.EmailContent+    Amazonka.PinpointEmail.Types.EventDestination+    Amazonka.PinpointEmail.Types.EventDestinationDefinition+    Amazonka.PinpointEmail.Types.EventType+    Amazonka.PinpointEmail.Types.IdentityInfo+    Amazonka.PinpointEmail.Types.IdentityType+    Amazonka.PinpointEmail.Types.InboxPlacementTrackingOption+    Amazonka.PinpointEmail.Types.IspPlacement+    Amazonka.PinpointEmail.Types.KinesisFirehoseDestination+    Amazonka.PinpointEmail.Types.MailFromAttributes+    Amazonka.PinpointEmail.Types.MailFromDomainStatus+    Amazonka.PinpointEmail.Types.Message+    Amazonka.PinpointEmail.Types.MessageTag+    Amazonka.PinpointEmail.Types.OverallVolume+    Amazonka.PinpointEmail.Types.PinpointDestination+    Amazonka.PinpointEmail.Types.PlacementStatistics+    Amazonka.PinpointEmail.Types.RawMessage+    Amazonka.PinpointEmail.Types.ReputationOptions+    Amazonka.PinpointEmail.Types.SendingOptions+    Amazonka.PinpointEmail.Types.SendQuota+    Amazonka.PinpointEmail.Types.SnsDestination+    Amazonka.PinpointEmail.Types.Tag+    Amazonka.PinpointEmail.Types.Template+    Amazonka.PinpointEmail.Types.TlsPolicy+    Amazonka.PinpointEmail.Types.TrackingOptions+    Amazonka.PinpointEmail.Types.VolumeStatistics+    Amazonka.PinpointEmail.Types.WarmupStatus+    Amazonka.PinpointEmail.UntagResource+    Amazonka.PinpointEmail.UpdateConfigurationSetEventDestination+    Amazonka.PinpointEmail.Waiters++  build-depends:+    , amazonka-core  >=2.0  && <2.1+    , base           >=4.12 && <5++test-suite amazonka-pinpoint-email-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.PinpointEmail+    Test.Amazonka.PinpointEmail+    Test.Amazonka.PinpointEmail.Internal++  build-depends:+    , amazonka-core            >=2.0 && <2.1+    , amazonka-pinpoint-email+    , amazonka-test            >=2.0 && <2.1+    , base+    , bytestring+    , case-insensitive+    , tasty+    , tasty-hunit+    , text+    , time+    , unordered-containers
+ 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/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/CreateEmailIdentityResponse.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/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/DeleteEmailIdentityResponse.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/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/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/GetEmailIdentityResponse.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/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/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/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/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/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/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/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/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/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/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
+ gen/Amazonka/PinpointEmail.hs view
@@ -0,0 +1,598 @@+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module      : Amazonka.PinpointEmail+-- 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 @2018-07-26@ of the AWS service descriptions, licensed under Apache 2.0.+--+-- Amazon Pinpoint Email Service+--+-- Welcome to the /Amazon Pinpoint Email API Reference/. This guide+-- provides information about the Amazon Pinpoint Email API (version 1.0),+-- including supported operations, data types, parameters, and schemas.+--+-- <https://aws.amazon.com/pinpoint Amazon Pinpoint> is an AWS service that+-- you can use to engage with your customers across multiple messaging+-- channels. You can use Amazon Pinpoint to send email, SMS text messages,+-- voice messages, and push notifications. The Amazon Pinpoint Email API+-- provides programmatic access to options that are unique to the email+-- channel and supplement the options provided by the Amazon Pinpoint API.+--+-- If you\'re new to Amazon Pinpoint, you might find it helpful to also+-- review the+-- <https://docs.aws.amazon.com/pinpoint/latest/developerguide/welcome.html Amazon Pinpoint Developer Guide>.+-- The /Amazon Pinpoint Developer Guide/ provides tutorials, code samples,+-- and procedures that demonstrate how to use Amazon Pinpoint features+-- programmatically and how to integrate Amazon Pinpoint functionality into+-- mobile apps and other types of applications. The guide also provides+-- information about key topics such as Amazon Pinpoint integration with+-- other AWS services and the limits that apply to using the service.+--+-- The Amazon Pinpoint Email API is available in several AWS Regions and it+-- provides an endpoint for each of these Regions. For a list of all the+-- Regions and endpoints where the API is currently available, see+-- <https://docs.aws.amazon.com/general/latest/gr/rande.html#pinpoint_region AWS Service Endpoints>+-- in the /Amazon Web Services General Reference/. To learn more about AWS+-- Regions, see+-- <https://docs.aws.amazon.com/general/latest/gr/rande-manage.html Managing AWS Regions>+-- in the /Amazon Web Services General Reference/.+--+-- In each Region, AWS maintains multiple Availability Zones. These+-- Availability Zones are physically isolated from each other, but are+-- united by private, low-latency, high-throughput, and highly redundant+-- network connections. These Availability Zones enable us to provide very+-- high levels of availability and redundancy, while also minimizing+-- latency. To learn more about the number of Availability Zones that are+-- available in each Region, see+-- <http://aws.amazon.com/about-aws/global-infrastructure/ AWS Global Infrastructure>.+module Amazonka.PinpointEmail+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    -- $errors++    -- ** AccountSuspendedException+    _AccountSuspendedException,++    -- ** AlreadyExistsException+    _AlreadyExistsException,++    -- ** BadRequestException+    _BadRequestException,++    -- ** ConcurrentModificationException+    _ConcurrentModificationException,++    -- ** LimitExceededException+    _LimitExceededException,++    -- ** MailFromDomainNotVerifiedException+    _MailFromDomainNotVerifiedException,++    -- ** MessageRejected+    _MessageRejected,++    -- ** NotFoundException+    _NotFoundException,++    -- ** SendingPausedException+    _SendingPausedException,++    -- ** TooManyRequestsException+    _TooManyRequestsException,++    -- * Waiters+    -- $waiters++    -- * Operations+    -- $operations++    -- ** CreateConfigurationSet+    CreateConfigurationSet (CreateConfigurationSet'),+    newCreateConfigurationSet,+    CreateConfigurationSetResponse (CreateConfigurationSetResponse'),+    newCreateConfigurationSetResponse,++    -- ** CreateConfigurationSetEventDestination+    CreateConfigurationSetEventDestination (CreateConfigurationSetEventDestination'),+    newCreateConfigurationSetEventDestination,+    CreateConfigurationSetEventDestinationResponse (CreateConfigurationSetEventDestinationResponse'),+    newCreateConfigurationSetEventDestinationResponse,++    -- ** CreateDedicatedIpPool+    CreateDedicatedIpPool (CreateDedicatedIpPool'),+    newCreateDedicatedIpPool,+    CreateDedicatedIpPoolResponse (CreateDedicatedIpPoolResponse'),+    newCreateDedicatedIpPoolResponse,++    -- ** CreateDeliverabilityTestReport+    CreateDeliverabilityTestReport (CreateDeliverabilityTestReport'),+    newCreateDeliverabilityTestReport,+    CreateDeliverabilityTestReportResponse (CreateDeliverabilityTestReportResponse'),+    newCreateDeliverabilityTestReportResponse,++    -- ** CreateEmailIdentity+    CreateEmailIdentity (CreateEmailIdentity'),+    newCreateEmailIdentity,+    CreateEmailIdentityResponse (CreateEmailIdentityResponse'),+    newCreateEmailIdentityResponse,++    -- ** DeleteConfigurationSet+    DeleteConfigurationSet (DeleteConfigurationSet'),+    newDeleteConfigurationSet,+    DeleteConfigurationSetResponse (DeleteConfigurationSetResponse'),+    newDeleteConfigurationSetResponse,++    -- ** DeleteConfigurationSetEventDestination+    DeleteConfigurationSetEventDestination (DeleteConfigurationSetEventDestination'),+    newDeleteConfigurationSetEventDestination,+    DeleteConfigurationSetEventDestinationResponse (DeleteConfigurationSetEventDestinationResponse'),+    newDeleteConfigurationSetEventDestinationResponse,++    -- ** DeleteDedicatedIpPool+    DeleteDedicatedIpPool (DeleteDedicatedIpPool'),+    newDeleteDedicatedIpPool,+    DeleteDedicatedIpPoolResponse (DeleteDedicatedIpPoolResponse'),+    newDeleteDedicatedIpPoolResponse,++    -- ** DeleteEmailIdentity+    DeleteEmailIdentity (DeleteEmailIdentity'),+    newDeleteEmailIdentity,+    DeleteEmailIdentityResponse (DeleteEmailIdentityResponse'),+    newDeleteEmailIdentityResponse,++    -- ** 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,++    -- ** GetDedicatedIp+    GetDedicatedIp (GetDedicatedIp'),+    newGetDedicatedIp,+    GetDedicatedIpResponse (GetDedicatedIpResponse'),+    newGetDedicatedIpResponse,++    -- ** GetDedicatedIps (Paginated)+    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,++    -- ** ListConfigurationSets (Paginated)+    ListConfigurationSets (ListConfigurationSets'),+    newListConfigurationSets,+    ListConfigurationSetsResponse (ListConfigurationSetsResponse'),+    newListConfigurationSetsResponse,++    -- ** ListDedicatedIpPools (Paginated)+    ListDedicatedIpPools (ListDedicatedIpPools'),+    newListDedicatedIpPools,+    ListDedicatedIpPoolsResponse (ListDedicatedIpPoolsResponse'),+    newListDedicatedIpPoolsResponse,++    -- ** ListDeliverabilityTestReports (Paginated)+    ListDeliverabilityTestReports (ListDeliverabilityTestReports'),+    newListDeliverabilityTestReports,+    ListDeliverabilityTestReportsResponse (ListDeliverabilityTestReportsResponse'),+    newListDeliverabilityTestReportsResponse,++    -- ** ListDomainDeliverabilityCampaigns+    ListDomainDeliverabilityCampaigns (ListDomainDeliverabilityCampaigns'),+    newListDomainDeliverabilityCampaigns,+    ListDomainDeliverabilityCampaignsResponse (ListDomainDeliverabilityCampaignsResponse'),+    newListDomainDeliverabilityCampaignsResponse,++    -- ** ListEmailIdentities (Paginated)+    ListEmailIdentities (ListEmailIdentities'),+    newListEmailIdentities,+    ListEmailIdentitiesResponse (ListEmailIdentitiesResponse'),+    newListEmailIdentitiesResponse,++    -- ** ListTagsForResource+    ListTagsForResource (ListTagsForResource'),+    newListTagsForResource,+    ListTagsForResourceResponse (ListTagsForResourceResponse'),+    newListTagsForResourceResponse,++    -- ** PutAccountDedicatedIpWarmupAttributes+    PutAccountDedicatedIpWarmupAttributes (PutAccountDedicatedIpWarmupAttributes'),+    newPutAccountDedicatedIpWarmupAttributes,+    PutAccountDedicatedIpWarmupAttributesResponse (PutAccountDedicatedIpWarmupAttributesResponse'),+    newPutAccountDedicatedIpWarmupAttributesResponse,++    -- ** PutAccountSendingAttributes+    PutAccountSendingAttributes (PutAccountSendingAttributes'),+    newPutAccountSendingAttributes,+    PutAccountSendingAttributesResponse (PutAccountSendingAttributesResponse'),+    newPutAccountSendingAttributesResponse,++    -- ** PutConfigurationSetDeliveryOptions+    PutConfigurationSetDeliveryOptions (PutConfigurationSetDeliveryOptions'),+    newPutConfigurationSetDeliveryOptions,+    PutConfigurationSetDeliveryOptionsResponse (PutConfigurationSetDeliveryOptionsResponse'),+    newPutConfigurationSetDeliveryOptionsResponse,++    -- ** PutConfigurationSetReputationOptions+    PutConfigurationSetReputationOptions (PutConfigurationSetReputationOptions'),+    newPutConfigurationSetReputationOptions,+    PutConfigurationSetReputationOptionsResponse (PutConfigurationSetReputationOptionsResponse'),+    newPutConfigurationSetReputationOptionsResponse,++    -- ** PutConfigurationSetSendingOptions+    PutConfigurationSetSendingOptions (PutConfigurationSetSendingOptions'),+    newPutConfigurationSetSendingOptions,+    PutConfigurationSetSendingOptionsResponse (PutConfigurationSetSendingOptionsResponse'),+    newPutConfigurationSetSendingOptionsResponse,++    -- ** PutConfigurationSetTrackingOptions+    PutConfigurationSetTrackingOptions (PutConfigurationSetTrackingOptions'),+    newPutConfigurationSetTrackingOptions,+    PutConfigurationSetTrackingOptionsResponse (PutConfigurationSetTrackingOptionsResponse'),+    newPutConfigurationSetTrackingOptionsResponse,++    -- ** PutDedicatedIpInPool+    PutDedicatedIpInPool (PutDedicatedIpInPool'),+    newPutDedicatedIpInPool,+    PutDedicatedIpInPoolResponse (PutDedicatedIpInPoolResponse'),+    newPutDedicatedIpInPoolResponse,++    -- ** PutDedicatedIpWarmupAttributes+    PutDedicatedIpWarmupAttributes (PutDedicatedIpWarmupAttributes'),+    newPutDedicatedIpWarmupAttributes,+    PutDedicatedIpWarmupAttributesResponse (PutDedicatedIpWarmupAttributesResponse'),+    newPutDedicatedIpWarmupAttributesResponse,++    -- ** PutDeliverabilityDashboardOption+    PutDeliverabilityDashboardOption (PutDeliverabilityDashboardOption'),+    newPutDeliverabilityDashboardOption,+    PutDeliverabilityDashboardOptionResponse (PutDeliverabilityDashboardOptionResponse'),+    newPutDeliverabilityDashboardOptionResponse,++    -- ** PutEmailIdentityDkimAttributes+    PutEmailIdentityDkimAttributes (PutEmailIdentityDkimAttributes'),+    newPutEmailIdentityDkimAttributes,+    PutEmailIdentityDkimAttributesResponse (PutEmailIdentityDkimAttributesResponse'),+    newPutEmailIdentityDkimAttributesResponse,++    -- ** PutEmailIdentityFeedbackAttributes+    PutEmailIdentityFeedbackAttributes (PutEmailIdentityFeedbackAttributes'),+    newPutEmailIdentityFeedbackAttributes,+    PutEmailIdentityFeedbackAttributesResponse (PutEmailIdentityFeedbackAttributesResponse'),+    newPutEmailIdentityFeedbackAttributesResponse,++    -- ** PutEmailIdentityMailFromAttributes+    PutEmailIdentityMailFromAttributes (PutEmailIdentityMailFromAttributes'),+    newPutEmailIdentityMailFromAttributes,+    PutEmailIdentityMailFromAttributesResponse (PutEmailIdentityMailFromAttributesResponse'),+    newPutEmailIdentityMailFromAttributesResponse,++    -- ** SendEmail+    SendEmail (SendEmail'),+    newSendEmail,+    SendEmailResponse (SendEmailResponse'),+    newSendEmailResponse,++    -- ** TagResource+    TagResource (TagResource'),+    newTagResource,+    TagResourceResponse (TagResourceResponse'),+    newTagResourceResponse,++    -- ** UntagResource+    UntagResource (UntagResource'),+    newUntagResource,+    UntagResourceResponse (UntagResourceResponse'),+    newUntagResourceResponse,++    -- ** UpdateConfigurationSetEventDestination+    UpdateConfigurationSetEventDestination (UpdateConfigurationSetEventDestination'),+    newUpdateConfigurationSetEventDestination,+    UpdateConfigurationSetEventDestinationResponse (UpdateConfigurationSetEventDestinationResponse'),+    newUpdateConfigurationSetEventDestinationResponse,++    -- * Types++    -- ** BehaviorOnMxFailure+    BehaviorOnMxFailure (..),++    -- ** DeliverabilityDashboardAccountStatus+    DeliverabilityDashboardAccountStatus (..),++    -- ** DeliverabilityTestStatus+    DeliverabilityTestStatus (..),++    -- ** DimensionValueSource+    DimensionValueSource (..),++    -- ** DkimStatus+    DkimStatus (..),++    -- ** EventType+    EventType (..),++    -- ** IdentityType+    IdentityType (..),++    -- ** MailFromDomainStatus+    MailFromDomainStatus (..),++    -- ** TlsPolicy+    TlsPolicy (..),++    -- ** WarmupStatus+    WarmupStatus (..),++    -- ** BlacklistEntry+    BlacklistEntry (BlacklistEntry'),+    newBlacklistEntry,++    -- ** Body+    Body (Body'),+    newBody,++    -- ** CloudWatchDestination+    CloudWatchDestination (CloudWatchDestination'),+    newCloudWatchDestination,++    -- ** CloudWatchDimensionConfiguration+    CloudWatchDimensionConfiguration (CloudWatchDimensionConfiguration'),+    newCloudWatchDimensionConfiguration,++    -- ** Content+    Content (Content'),+    newContent,++    -- ** DailyVolume+    DailyVolume (DailyVolume'),+    newDailyVolume,++    -- ** DedicatedIp+    DedicatedIp (DedicatedIp'),+    newDedicatedIp,++    -- ** DeliverabilityTestReport+    DeliverabilityTestReport (DeliverabilityTestReport'),+    newDeliverabilityTestReport,++    -- ** DeliveryOptions+    DeliveryOptions (DeliveryOptions'),+    newDeliveryOptions,++    -- ** Destination+    Destination (Destination'),+    newDestination,++    -- ** DkimAttributes+    DkimAttributes (DkimAttributes'),+    newDkimAttributes,++    -- ** DomainDeliverabilityCampaign+    DomainDeliverabilityCampaign (DomainDeliverabilityCampaign'),+    newDomainDeliverabilityCampaign,++    -- ** DomainDeliverabilityTrackingOption+    DomainDeliverabilityTrackingOption (DomainDeliverabilityTrackingOption'),+    newDomainDeliverabilityTrackingOption,++    -- ** DomainIspPlacement+    DomainIspPlacement (DomainIspPlacement'),+    newDomainIspPlacement,++    -- ** EmailContent+    EmailContent (EmailContent'),+    newEmailContent,++    -- ** EventDestination+    EventDestination (EventDestination'),+    newEventDestination,++    -- ** EventDestinationDefinition+    EventDestinationDefinition (EventDestinationDefinition'),+    newEventDestinationDefinition,++    -- ** IdentityInfo+    IdentityInfo (IdentityInfo'),+    newIdentityInfo,++    -- ** InboxPlacementTrackingOption+    InboxPlacementTrackingOption (InboxPlacementTrackingOption'),+    newInboxPlacementTrackingOption,++    -- ** IspPlacement+    IspPlacement (IspPlacement'),+    newIspPlacement,++    -- ** KinesisFirehoseDestination+    KinesisFirehoseDestination (KinesisFirehoseDestination'),+    newKinesisFirehoseDestination,++    -- ** MailFromAttributes+    MailFromAttributes (MailFromAttributes'),+    newMailFromAttributes,++    -- ** Message+    Message (Message'),+    newMessage,++    -- ** MessageTag+    MessageTag (MessageTag'),+    newMessageTag,++    -- ** OverallVolume+    OverallVolume (OverallVolume'),+    newOverallVolume,++    -- ** PinpointDestination+    PinpointDestination (PinpointDestination'),+    newPinpointDestination,++    -- ** PlacementStatistics+    PlacementStatistics (PlacementStatistics'),+    newPlacementStatistics,++    -- ** RawMessage+    RawMessage (RawMessage'),+    newRawMessage,++    -- ** ReputationOptions+    ReputationOptions (ReputationOptions'),+    newReputationOptions,++    -- ** SendQuota+    SendQuota (SendQuota'),+    newSendQuota,++    -- ** SendingOptions+    SendingOptions (SendingOptions'),+    newSendingOptions,++    -- ** SnsDestination+    SnsDestination (SnsDestination'),+    newSnsDestination,++    -- ** Tag+    Tag (Tag'),+    newTag,++    -- ** Template+    Template (Template'),+    newTemplate,++    -- ** TrackingOptions+    TrackingOptions (TrackingOptions'),+    newTrackingOptions,++    -- ** VolumeStatistics+    VolumeStatistics (VolumeStatistics'),+    newVolumeStatistics,+  )+where++import Amazonka.PinpointEmail.CreateConfigurationSet+import Amazonka.PinpointEmail.CreateConfigurationSetEventDestination+import Amazonka.PinpointEmail.CreateDedicatedIpPool+import Amazonka.PinpointEmail.CreateDeliverabilityTestReport+import Amazonka.PinpointEmail.CreateEmailIdentity+import Amazonka.PinpointEmail.DeleteConfigurationSet+import Amazonka.PinpointEmail.DeleteConfigurationSetEventDestination+import Amazonka.PinpointEmail.DeleteDedicatedIpPool+import Amazonka.PinpointEmail.DeleteEmailIdentity+import Amazonka.PinpointEmail.GetAccount+import Amazonka.PinpointEmail.GetBlacklistReports+import Amazonka.PinpointEmail.GetConfigurationSet+import Amazonka.PinpointEmail.GetConfigurationSetEventDestinations+import Amazonka.PinpointEmail.GetDedicatedIp+import Amazonka.PinpointEmail.GetDedicatedIps+import Amazonka.PinpointEmail.GetDeliverabilityDashboardOptions+import Amazonka.PinpointEmail.GetDeliverabilityTestReport+import Amazonka.PinpointEmail.GetDomainDeliverabilityCampaign+import Amazonka.PinpointEmail.GetDomainStatisticsReport+import Amazonka.PinpointEmail.GetEmailIdentity+import Amazonka.PinpointEmail.Lens+import Amazonka.PinpointEmail.ListConfigurationSets+import Amazonka.PinpointEmail.ListDedicatedIpPools+import Amazonka.PinpointEmail.ListDeliverabilityTestReports+import Amazonka.PinpointEmail.ListDomainDeliverabilityCampaigns+import Amazonka.PinpointEmail.ListEmailIdentities+import Amazonka.PinpointEmail.ListTagsForResource+import Amazonka.PinpointEmail.PutAccountDedicatedIpWarmupAttributes+import Amazonka.PinpointEmail.PutAccountSendingAttributes+import Amazonka.PinpointEmail.PutConfigurationSetDeliveryOptions+import Amazonka.PinpointEmail.PutConfigurationSetReputationOptions+import Amazonka.PinpointEmail.PutConfigurationSetSendingOptions+import Amazonka.PinpointEmail.PutConfigurationSetTrackingOptions+import Amazonka.PinpointEmail.PutDedicatedIpInPool+import Amazonka.PinpointEmail.PutDedicatedIpWarmupAttributes+import Amazonka.PinpointEmail.PutDeliverabilityDashboardOption+import Amazonka.PinpointEmail.PutEmailIdentityDkimAttributes+import Amazonka.PinpointEmail.PutEmailIdentityFeedbackAttributes+import Amazonka.PinpointEmail.PutEmailIdentityMailFromAttributes+import Amazonka.PinpointEmail.SendEmail+import Amazonka.PinpointEmail.TagResource+import Amazonka.PinpointEmail.Types+import Amazonka.PinpointEmail.UntagResource+import Amazonka.PinpointEmail.UpdateConfigurationSetEventDestination+import Amazonka.PinpointEmail.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 'PinpointEmail'.++-- $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/PinpointEmail/CreateConfigurationSet.hs view
@@ -0,0 +1,261 @@+{-# 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.PinpointEmail.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 you send using Amazon Pinpoint. 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.PinpointEmail.CreateConfigurationSet+  ( -- * Creating a Request+    CreateConfigurationSet (..),+    newCreateConfigurationSet,++    -- * Request Lenses+    createConfigurationSet_deliveryOptions,+    createConfigurationSet_reputationOptions,+    createConfigurationSet_sendingOptions,+    createConfigurationSet_tags,+    createConfigurationSet_trackingOptions,+    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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Pinpoint 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 Pinpoint can send email+    -- that you send using the configuration set.+    sendingOptions :: Prelude.Maybe SendingOptions,+    -- | An array of objects that define the tags (keys and values) that you want+    -- 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,+    -- | The name of the configuration set.+    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 Pinpoint 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 Pinpoint can send email+-- that you send using the configuration set.+--+-- 'tags', 'createConfigurationSet_tags' - An array of objects that define the tags (keys and values) that you want+-- 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.+--+-- 'configurationSetName', 'createConfigurationSet_configurationSetName' - The name of the configuration set.+newCreateConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  CreateConfigurationSet+newCreateConfigurationSet pConfigurationSetName_ =+  CreateConfigurationSet'+    { deliveryOptions =+        Prelude.Nothing,+      reputationOptions = Prelude.Nothing,+      sendingOptions = Prelude.Nothing,+      tags = Prelude.Nothing,+      trackingOptions = 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 Pinpoint 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 Pinpoint 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)++-- | An array of objects that define the tags (keys and values) that you want+-- 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)++-- | The name of the configuration set.+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` tags+      `Prelude.hashWithSalt` trackingOptions+      `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 tags+      `Prelude.seq` Prelude.rnf trackingOptions+      `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,+            ("Tags" Data..=) Prelude.<$> tags,+            ("TrackingOptions" Data..=)+              Prelude.<$> trackingOptions,+            Prelude.Just+              ( "ConfigurationSetName"+                  Data..= configurationSetName+              )+          ]+      )++instance Data.ToPath CreateConfigurationSet where+  toPath = Prelude.const "/v1/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/PinpointEmail/CreateConfigurationSetEventDestination.hs view
@@ -0,0 +1,249 @@+{-# 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.PinpointEmail.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. In Amazon Pinpoint, /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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to add an event destination to a configuration set.+--+-- /See:/ 'newCreateConfigurationSetEventDestination' smart constructor.+data CreateConfigurationSetEventDestination = CreateConfigurationSetEventDestination'+  { -- | The name of the configuration set that you want to add an event+    -- destination to.+    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 that you want to add an event+-- destination to.+--+-- '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 that you want to add an event+-- destination to.+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+      [ "/v1/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/PinpointEmail/CreateDedicatedIpPool.hs view
@@ -0,0 +1,181 @@+{-# 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.PinpointEmail.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+-- Pinpoint account. You can associate a pool with a configuration set.+-- When you send an email that uses that configuration set, Amazon Pinpoint+-- sends it using only the IP addresses in the associated pool.+module Amazonka.PinpointEmail.CreateDedicatedIpPool+  ( -- * Creating a Request+    CreateDedicatedIpPool (..),+    newCreateDedicatedIpPool,++    -- * Request Lenses+    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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to create a new dedicated IP pool.+--+-- /See:/ 'newCreateDedicatedIpPool' smart constructor.+data CreateDedicatedIpPool = CreateDedicatedIpPool'+  { -- | 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:+--+-- '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'+    { tags = Prelude.Nothing,+      poolName = pPoolName_+    }++-- | 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` tags+      `Prelude.hashWithSalt` poolName++instance Prelude.NFData CreateDedicatedIpPool where+  rnf CreateDedicatedIpPool' {..} =+    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+          [ ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just ("PoolName" Data..= poolName)+          ]+      )++instance Data.ToPath CreateDedicatedIpPool where+  toPath = Prelude.const "/v1/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/PinpointEmail/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.PinpointEmail.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 Pinpoint 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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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. Amazon+-- Pinpoint 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.+--+-- /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+      "/v1/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/PinpointEmail/CreateEmailIdentity.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.PinpointEmail.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)+--+-- Verifies an email identity for use with Amazon Pinpoint. In Amazon+-- Pinpoint, an identity is an email address or domain that you use when+-- you send email. Before you can use an identity to send email with Amazon+-- Pinpoint, you first have to verify it. By verifying an address, you+-- demonstrate that you\'re the owner of the address, and that you\'ve+-- given Amazon Pinpoint permission to send email from the address.+--+-- When you verify an email address, Amazon Pinpoint 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, 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 Pinpoint detects these records in the DNS configuration for your+-- domain. It usually takes around 72 hours to complete the domain+-- verification process.+module Amazonka.PinpointEmail.CreateEmailIdentity+  ( -- * Creating a Request+    CreateEmailIdentity (..),+    newCreateEmailIdentity,++    -- * Request Lenses+    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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to begin the verification process for an email identity (an+-- email address or domain).+--+-- /See:/ 'newCreateEmailIdentity' smart constructor.+data CreateEmailIdentity = CreateEmailIdentity'+  { -- | An array of objects that define the tags (keys and values) that you want+    -- to associate with the email identity.+    tags :: Prelude.Maybe [Tag],+    -- | The email address or domain that you want to verify.+    emailIdentity :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, 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:+--+-- 'tags', 'createEmailIdentity_tags' - An array of objects that define the tags (keys and values) that you want+-- to associate with the email identity.+--+-- 'emailIdentity', 'createEmailIdentity_emailIdentity' - The email address or domain that you want to verify.+newCreateEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  CreateEmailIdentity+newCreateEmailIdentity pEmailIdentity_ =+  CreateEmailIdentity'+    { tags = Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | An array of objects that define the tags (keys and values) that you want+-- 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 that you want 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` tags+      `Prelude.hashWithSalt` emailIdentity++instance Prelude.NFData CreateEmailIdentity where+  rnf CreateEmailIdentity' {..} =+    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+          [ ("Tags" Data..=) Prelude.<$> tags,+            Prelude.Just+              ("EmailIdentity" Data..= emailIdentity)+          ]+      )++instance Data.ToPath CreateEmailIdentity where+  toPath = Prelude.const "/v1/email/identities"++instance Data.ToQuery CreateEmailIdentity where+  toQuery = Prelude.const Prelude.mempty++-- | If the email identity is a domain, this object contains tokens that you+-- can use to create a set of CNAME records. To sucessfully verify your+-- domain, you have to add these records to the DNS configuration for your+-- 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. This object includes the tokens that you use to create the+    -- CNAME records that are required to complete the DKIM verification+    -- process.+    dkimAttributes :: Prelude.Maybe DkimAttributes,+    -- | The email identity type.+    identityType :: Prelude.Maybe IdentityType,+    -- | Specifies whether or not the identity is verified. In Amazon Pinpoint,+    -- 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. This object includes the tokens that you use to create the+-- CNAME records that are required to complete the DKIM verification+-- process.+--+-- 'identityType', 'createEmailIdentityResponse_identityType' - The email identity type.+--+-- 'verifiedForSendingStatus', 'createEmailIdentityResponse_verifiedForSendingStatus' - Specifies whether or not the identity is verified. In Amazon Pinpoint,+-- 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. This object includes the tokens that you use to create the+-- CNAME records that are required to complete the DKIM verification+-- process.+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.+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. In Amazon Pinpoint,+-- 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/PinpointEmail/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.PinpointEmail.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.+--+-- In Amazon Pinpoint, /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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to delete a configuration set.+--+-- /See:/ 'newDeleteConfigurationSet' smart constructor.+data DeleteConfigurationSet = DeleteConfigurationSet'+  { -- | The name of the configuration set that you want to delete.+    configurationSetName :: Prelude.Text+  }+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)++-- |+-- Create a value of 'DeleteConfigurationSet' with all optional fields omitted.+--+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.+--+-- The following record fields are available, with the corresponding lenses provided+-- for backwards compatibility:+--+-- 'configurationSetName', 'deleteConfigurationSet_configurationSetName' - The name of the configuration set that you want to delete.+newDeleteConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  DeleteConfigurationSet+newDeleteConfigurationSet pConfigurationSetName_ =+  DeleteConfigurationSet'+    { configurationSetName =+        pConfigurationSetName_+    }++-- | The name of the configuration set that you want to delete.+deleteConfigurationSet_configurationSetName :: Lens.Lens' DeleteConfigurationSet Prelude.Text+deleteConfigurationSet_configurationSetName = Lens.lens (\DeleteConfigurationSet' {configurationSetName} -> configurationSetName) (\s@DeleteConfigurationSet' {} a -> s {configurationSetName = a} :: DeleteConfigurationSet)++instance Core.AWSRequest DeleteConfigurationSet where+  type+    AWSResponse DeleteConfigurationSet =+      DeleteConfigurationSetResponse+  request overrides =+    Request.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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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.+--+-- In Amazon Pinpoint, /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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+    -- that you want to delete.+    configurationSetName :: Prelude.Text,+    -- | The name of the event destination that you want 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+-- that you want to delete.+--+-- 'eventDestinationName', 'deleteConfigurationSetEventDestination_eventDestinationName' - The name of the event destination that you want 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+-- that you want 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 that you want 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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+      ["/v1/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/PinpointEmail/DeleteEmailIdentity.hs view
@@ -0,0 +1,164 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.PinpointEmail.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 that you previously verified for use with+-- Amazon Pinpoint. An identity can be either an email address or a domain+-- name.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to delete an existing email identity. When you delete an+-- identity, you lose the ability to use Amazon Pinpoint 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) that you want to+    -- delete from your Amazon Pinpoint account.+    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) that you want to+-- delete from your Amazon Pinpoint account.+newDeleteEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  DeleteEmailIdentity+newDeleteEmailIdentity pEmailIdentity_ =+  DeleteEmailIdentity'+    { emailIdentity =+        pEmailIdentity_+    }++-- | The identity (that is, the email address or domain) that you want to+-- delete from your Amazon Pinpoint account.+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+      ["/v1/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/PinpointEmail/GetAccount.hs view
@@ -0,0 +1,281 @@+{-# 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.PinpointEmail.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 Pinpoint account in the current AWS Region.+module Amazonka.PinpointEmail.GetAccount+  ( -- * Creating a Request+    GetAccount (..),+    newGetAccount,++    -- * Destructuring the Response+    GetAccountResponse (..),+    newGetAccountResponse,++    -- * Response Lenses+    getAccountResponse_dedicatedIpAutoWarmupEnabled,+    getAccountResponse_enforcementStatus,+    getAccountResponse_productionAccessEnabled,+    getAccountResponse_sendQuota,+    getAccountResponse_sendingEnabled,+    getAccountResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to obtain information about the email-sending capabilities of+-- your Amazon Pinpoint 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..?> "EnforcementStatus")+            Prelude.<*> (x Data..?> "ProductionAccessEnabled")+            Prelude.<*> (x Data..?> "SendQuota")+            Prelude.<*> (x Data..?> "SendingEnabled")+            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 "/v1/email/account"++instance Data.ToQuery GetAccount where+  toQuery = Prelude.const Prelude.mempty++-- | A list of details about the email-sending capabilities of your Amazon+-- Pinpoint account in the current AWS 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,+    -- | The reputation status of your Amazon Pinpoint 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 some issues with your Amazon+    --     Pinpoint 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 AWS 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 Pinpoint account in the current AWS+    -- Region.+    sendQuota :: Prelude.Maybe SendQuota,+    -- | Indicates whether or not email sending is enabled for your Amazon+    -- Pinpoint account in the current AWS Region.+    sendingEnabled :: 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 '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.+--+-- 'enforcementStatus', 'getAccountResponse_enforcementStatus' - The reputation status of your Amazon Pinpoint 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 some issues with your Amazon+--     Pinpoint 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 AWS 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 Pinpoint account in the current AWS+-- Region.+--+-- 'sendingEnabled', 'getAccountResponse_sendingEnabled' - Indicates whether or not email sending is enabled for your Amazon+-- Pinpoint account in the current AWS Region.+--+-- 'httpStatus', 'getAccountResponse_httpStatus' - The response's http status code.+newGetAccountResponse ::+  -- | 'httpStatus'+  Prelude.Int ->+  GetAccountResponse+newGetAccountResponse pHttpStatus_ =+  GetAccountResponse'+    { dedicatedIpAutoWarmupEnabled =+        Prelude.Nothing,+      enforcementStatus = Prelude.Nothing,+      productionAccessEnabled = Prelude.Nothing,+      sendQuota = Prelude.Nothing,+      sendingEnabled = 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)++-- | The reputation status of your Amazon Pinpoint 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 some issues with your Amazon+--     Pinpoint 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 AWS 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 Pinpoint account in the current AWS+-- 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+-- Pinpoint account in the current AWS Region.+getAccountResponse_sendingEnabled :: Lens.Lens' GetAccountResponse (Prelude.Maybe Prelude.Bool)+getAccountResponse_sendingEnabled = Lens.lens (\GetAccountResponse' {sendingEnabled} -> sendingEnabled) (\s@GetAccountResponse' {} a -> s {sendingEnabled = 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 enforcementStatus+      `Prelude.seq` Prelude.rnf productionAccessEnabled+      `Prelude.seq` Prelude.rnf sendQuota+      `Prelude.seq` Prelude.rnf sendingEnabled+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Pinpoint or Amazon SES.+    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 Pinpoint or Amazon SES.+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 Pinpoint or Amazon SES.+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+      "/v1/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/PinpointEmail/GetConfigurationSet.hs view
@@ -0,0 +1,258 @@+{-# 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.PinpointEmail.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.+--+-- In Amazon Pinpoint, /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.PinpointEmail.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_tags,+    getConfigurationSetResponse_trackingOptions,+    getConfigurationSetResponse_httpStatus,+  )+where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to obtain information about a configuration set.+--+-- /See:/ 'newGetConfigurationSet' smart constructor.+data GetConfigurationSet = GetConfigurationSet'+  { -- | The name of the configuration set that you want to obtain more+    -- information about.+    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 that you want to obtain more+-- information about.+newGetConfigurationSet ::+  -- | 'configurationSetName'+  Prelude.Text ->+  GetConfigurationSet+newGetConfigurationSet pConfigurationSetName_ =+  GetConfigurationSet'+    { configurationSetName =+        pConfigurationSetName_+    }++-- | The name of the configuration set that you want to obtain more+-- information about.+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..?> "Tags" Core..!@ Prelude.mempty)+            Prelude.<*> (x Data..?> "TrackingOptions")+            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+      [ "/v1/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 Pinpoint 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 Pinpoint can send email+    -- that you send using the configuration set.+    sendingOptions :: Prelude.Maybe SendingOptions,+    -- | 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,+    -- | 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 Pinpoint 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 Pinpoint can send email+-- that you send using the configuration set.+--+-- '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.+--+-- '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,+      tags = Prelude.Nothing,+      trackingOptions = 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 Pinpoint 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 Pinpoint 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 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)++-- | 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 tags+      `Prelude.seq` Prelude.rnf trackingOptions+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/PinpointEmail/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.PinpointEmail.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.+--+-- In Amazon Pinpoint, /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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Pinpoint 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 Pinpoint 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 Pinpoint 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+      ["/v1/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/PinpointEmail/GetDedicatedIps.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.PinpointEmail.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+-- Pinpoint account.+--+-- This operation returns paginated results.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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.AWSPager GetDedicatedIps where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? getDedicatedIpsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? getDedicatedIpsResponse_dedicatedIps+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& getDedicatedIps_nextToken+          Lens..~ rs+          Lens.^? getDedicatedIpsResponse_nextToken+          Prelude.. Lens._Just++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 "/v1/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 Pinpoint account.+--+-- /See:/ 'newGetDedicatedIpsResponse' smart constructor.+data GetDedicatedIpsResponse = GetDedicatedIpsResponse'+  { -- | A list of dedicated IP addresses that are reserved for use by your+    -- Amazon Pinpoint 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 reserved for use by your+-- Amazon Pinpoint 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 reserved for use by your+-- Amazon Pinpoint 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/PinpointEmail/GetDeliverabilityDashboardOptions.hs view
@@ -0,0 +1,289 @@+{-# 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.PinpointEmail.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 Amazon Pinpoint 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 using Amazon+-- Pinpoint. 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 Pinpoint. For more information about the features and cost+-- of a Deliverability dashboard subscription, see+-- <http://aws.amazon.com/pinpoint/pricing/ Amazon Pinpoint Pricing>.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | Retrieve information about the status of the Deliverability dashboard+-- for your Amazon Pinpoint 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 using Amazon+-- Pinpoint. 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 Pinpoint. 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 "/v1/email/deliverability-dashboard"++instance+  Data.ToQuery+    GetDeliverabilityDashboardOptions+  where+  toQuery = Prelude.const Prelude.mempty++-- | An object that shows the status of the Deliverability dashboard for your+-- Amazon Pinpoint account.+--+-- /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, in Unix time format, 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 for your+    -- Amazon Pinpoint account. 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, in Unix time format, 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 for your+-- Amazon Pinpoint account. 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, in Unix time format, 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 for your+-- Amazon Pinpoint account. 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+      [ "/v1/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/PinpointEmail/GetDomainDeliverabilityCampaign.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.PinpointEmail.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+-- (@PutDeliverabilityDashboardOption@ operation).+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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. Amazon Pinpoint automatically+    -- generates and assigns this identifier to a campaign. This value is not+    -- the same as the campaign identifier that Amazon Pinpoint assigns to+    -- campaigns that you create and manage by using the Amazon Pinpoint API or+    -- the Amazon Pinpoint console.+    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. Amazon Pinpoint automatically+-- generates and assigns this identifier to a campaign. This value is not+-- the same as the campaign identifier that Amazon Pinpoint assigns to+-- campaigns that you create and manage by using the Amazon Pinpoint API or+-- the Amazon Pinpoint console.+newGetDomainDeliverabilityCampaign ::+  -- | 'campaignId'+  Prelude.Text ->+  GetDomainDeliverabilityCampaign+newGetDomainDeliverabilityCampaign pCampaignId_ =+  GetDomainDeliverabilityCampaign'+    { campaignId =+        pCampaignId_+    }++-- | The unique identifier for the campaign. Amazon Pinpoint automatically+-- generates and assigns this identifier to a campaign. This value is not+-- the same as the campaign identifier that Amazon Pinpoint assigns to+-- campaigns that you create and manage by using the Amazon Pinpoint API or+-- the Amazon Pinpoint console.+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+      [ "/v1/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 (@PutDeliverabilityDashboardOption@ operation).+--+-- /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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+      [ "/v1/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/PinpointEmail/GetEmailIdentity.hs view
@@ -0,0 +1,288 @@+{-# 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.PinpointEmail.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 associated with your+-- Amazon Pinpoint account, including the identity\'s verification status,+-- its DKIM authentication status, and its custom Mail-From settings.+module Amazonka.PinpointEmail.GetEmailIdentity+  ( -- * Creating a Request+    GetEmailIdentity (..),+    newGetEmailIdentity,++    -- * Request Lenses+    getEmailIdentity_emailIdentity,++    -- * Destructuring the Response+    GetEmailIdentityResponse (..),+    newGetEmailIdentityResponse,++    -- * Response Lenses+    getEmailIdentityResponse_dkimAttributes,+    getEmailIdentityResponse_feedbackForwardingStatus,+    getEmailIdentityResponse_identityType,+    getEmailIdentityResponse_mailFromAttributes,+    getEmailIdentityResponse_tags,+    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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to return details about an email identity.+--+-- /See:/ 'newGetEmailIdentity' smart constructor.+data GetEmailIdentity = GetEmailIdentity'+  { -- | The email identity that you want to retrieve details for.+    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 that you want to retrieve details for.+newGetEmailIdentity ::+  -- | 'emailIdentity'+  Prelude.Text ->+  GetEmailIdentity+newGetEmailIdentity pEmailIdentity_ =+  GetEmailIdentity' {emailIdentity = pEmailIdentity_}++-- | The email identity that you want to retrieve details for.+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..?> "DkimAttributes")+            Prelude.<*> (x Data..?> "FeedbackForwardingStatus")+            Prelude.<*> (x Data..?> "IdentityType")+            Prelude.<*> (x Data..?> "MailFromAttributes")+            Prelude.<*> (x Data..?> "Tags" Core..!@ Prelude.mempty)+            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+      ["/v1/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'+  { -- | An object that contains information about the DKIM attributes for the+    -- identity. This object includes the tokens that you use to create the+    -- CNAME records that are required to complete the DKIM verification+    -- process.+    dkimAttributes :: Prelude.Maybe DkimAttributes,+    -- | The feedback forwarding configuration for the identity.+    --+    -- If the value is @true@, Amazon Pinpoint sends you email notifications+    -- when bounce or complaint events occur. Amazon Pinpoint sends this+    -- notification to the address that you specified in the Return-Path header+    -- of the original email.+    --+    -- When you set this value to @false@, Amazon Pinpoint sends notifications+    -- through other mechanisms, such as by notifying an Amazon SNS topic or+    -- another event destination. 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, Amazon Pinpoint sends an+    -- email notification when these events occur (even if this setting is+    -- disabled).+    feedbackForwardingStatus :: Prelude.Maybe Prelude.Bool,+    -- | The email identity type.+    identityType :: Prelude.Maybe IdentityType,+    -- | An object that contains information about the Mail-From attributes for+    -- the email identity.+    mailFromAttributes :: Prelude.Maybe MailFromAttributes,+    -- | An array of objects that define the tags (keys and values) that are+    -- associated with the email identity.+    tags :: Prelude.Maybe [Tag],+    -- | Specifies whether or not the identity is verified. In Amazon Pinpoint,+    -- 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:+--+-- 'dkimAttributes', 'getEmailIdentityResponse_dkimAttributes' - An object that contains information about the DKIM attributes for the+-- identity. This object includes the tokens that you use to create the+-- CNAME records that are required to complete the DKIM verification+-- process.+--+-- 'feedbackForwardingStatus', 'getEmailIdentityResponse_feedbackForwardingStatus' - The feedback forwarding configuration for the identity.+--+-- If the value is @true@, Amazon Pinpoint sends you email notifications+-- when bounce or complaint events occur. Amazon Pinpoint sends this+-- notification to the address that you specified in the Return-Path header+-- of the original email.+--+-- When you set this value to @false@, Amazon Pinpoint sends notifications+-- through other mechanisms, such as by notifying an Amazon SNS topic or+-- another event destination. 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, Amazon Pinpoint sends an+-- email notification when these events occur (even if this setting is+-- disabled).+--+-- 'identityType', 'getEmailIdentityResponse_identityType' - The email identity type.+--+-- 'mailFromAttributes', 'getEmailIdentityResponse_mailFromAttributes' - An object that contains information about the Mail-From attributes for+-- the email identity.+--+-- 'tags', 'getEmailIdentityResponse_tags' - An array of objects that define the tags (keys and values) that are+-- associated with the email identity.+--+-- 'verifiedForSendingStatus', 'getEmailIdentityResponse_verifiedForSendingStatus' - Specifies whether or not the identity is verified. In Amazon Pinpoint,+-- 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'+    { dkimAttributes =+        Prelude.Nothing,+      feedbackForwardingStatus = Prelude.Nothing,+      identityType = Prelude.Nothing,+      mailFromAttributes = Prelude.Nothing,+      tags = Prelude.Nothing,+      verifiedForSendingStatus = Prelude.Nothing,+      httpStatus = pHttpStatus_+    }++-- | An object that contains information about the DKIM attributes for the+-- identity. This object includes the tokens that you use to create the+-- CNAME records that are required to complete the DKIM verification+-- process.+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@, Amazon Pinpoint sends you email notifications+-- when bounce or complaint events occur. Amazon Pinpoint sends this+-- notification to the address that you specified in the Return-Path header+-- of the original email.+--+-- When you set this value to @false@, Amazon Pinpoint sends notifications+-- through other mechanisms, such as by notifying an Amazon SNS topic or+-- another event destination. 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, Amazon Pinpoint sends 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.+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)++-- | 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++-- | Specifies whether or not the identity is verified. In Amazon Pinpoint,+-- 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 dkimAttributes+      `Prelude.seq` Prelude.rnf feedbackForwardingStatus+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf mailFromAttributes+      `Prelude.seq` Prelude.rnf tags+      `Prelude.seq` Prelude.rnf verifiedForSendingStatus+      `Prelude.seq` Prelude.rnf httpStatus
+ gen/Amazonka/PinpointEmail/Lens.hs view
@@ -0,0 +1,547 @@+{-# 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.PinpointEmail.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.PinpointEmail.Lens+  ( -- * Operations++    -- ** CreateConfigurationSet+    createConfigurationSet_deliveryOptions,+    createConfigurationSet_reputationOptions,+    createConfigurationSet_sendingOptions,+    createConfigurationSet_tags,+    createConfigurationSet_trackingOptions,+    createConfigurationSet_configurationSetName,+    createConfigurationSetResponse_httpStatus,++    -- ** CreateConfigurationSetEventDestination+    createConfigurationSetEventDestination_configurationSetName,+    createConfigurationSetEventDestination_eventDestinationName,+    createConfigurationSetEventDestination_eventDestination,+    createConfigurationSetEventDestinationResponse_httpStatus,++    -- ** CreateDedicatedIpPool+    createDedicatedIpPool_tags,+    createDedicatedIpPool_poolName,+    createDedicatedIpPoolResponse_httpStatus,++    -- ** CreateDeliverabilityTestReport+    createDeliverabilityTestReport_reportName,+    createDeliverabilityTestReport_tags,+    createDeliverabilityTestReport_fromEmailAddress,+    createDeliverabilityTestReport_content,+    createDeliverabilityTestReportResponse_httpStatus,+    createDeliverabilityTestReportResponse_reportId,+    createDeliverabilityTestReportResponse_deliverabilityTestStatus,++    -- ** CreateEmailIdentity+    createEmailIdentity_tags,+    createEmailIdentity_emailIdentity,+    createEmailIdentityResponse_dkimAttributes,+    createEmailIdentityResponse_identityType,+    createEmailIdentityResponse_verifiedForSendingStatus,+    createEmailIdentityResponse_httpStatus,++    -- ** DeleteConfigurationSet+    deleteConfigurationSet_configurationSetName,+    deleteConfigurationSetResponse_httpStatus,++    -- ** DeleteConfigurationSetEventDestination+    deleteConfigurationSetEventDestination_configurationSetName,+    deleteConfigurationSetEventDestination_eventDestinationName,+    deleteConfigurationSetEventDestinationResponse_httpStatus,++    -- ** DeleteDedicatedIpPool+    deleteDedicatedIpPool_poolName,+    deleteDedicatedIpPoolResponse_httpStatus,++    -- ** DeleteEmailIdentity+    deleteEmailIdentity_emailIdentity,+    deleteEmailIdentityResponse_httpStatus,++    -- ** GetAccount+    getAccountResponse_dedicatedIpAutoWarmupEnabled,+    getAccountResponse_enforcementStatus,+    getAccountResponse_productionAccessEnabled,+    getAccountResponse_sendQuota,+    getAccountResponse_sendingEnabled,+    getAccountResponse_httpStatus,++    -- ** GetBlacklistReports+    getBlacklistReports_blacklistItemNames,+    getBlacklistReportsResponse_httpStatus,+    getBlacklistReportsResponse_blacklistReport,++    -- ** GetConfigurationSet+    getConfigurationSet_configurationSetName,+    getConfigurationSetResponse_configurationSetName,+    getConfigurationSetResponse_deliveryOptions,+    getConfigurationSetResponse_reputationOptions,+    getConfigurationSetResponse_sendingOptions,+    getConfigurationSetResponse_tags,+    getConfigurationSetResponse_trackingOptions,+    getConfigurationSetResponse_httpStatus,++    -- ** GetConfigurationSetEventDestinations+    getConfigurationSetEventDestinations_configurationSetName,+    getConfigurationSetEventDestinationsResponse_eventDestinations,+    getConfigurationSetEventDestinationsResponse_httpStatus,++    -- ** GetDedicatedIp+    getDedicatedIp_ip,+    getDedicatedIpResponse_dedicatedIp,+    getDedicatedIpResponse_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_dkimAttributes,+    getEmailIdentityResponse_feedbackForwardingStatus,+    getEmailIdentityResponse_identityType,+    getEmailIdentityResponse_mailFromAttributes,+    getEmailIdentityResponse_tags,+    getEmailIdentityResponse_verifiedForSendingStatus,+    getEmailIdentityResponse_httpStatus,++    -- ** ListConfigurationSets+    listConfigurationSets_nextToken,+    listConfigurationSets_pageSize,+    listConfigurationSetsResponse_configurationSets,+    listConfigurationSetsResponse_nextToken,+    listConfigurationSetsResponse_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,++    -- ** ListTagsForResource+    listTagsForResource_resourceArn,+    listTagsForResourceResponse_httpStatus,+    listTagsForResourceResponse_tags,++    -- ** PutAccountDedicatedIpWarmupAttributes+    putAccountDedicatedIpWarmupAttributes_autoWarmupEnabled,+    putAccountDedicatedIpWarmupAttributesResponse_httpStatus,++    -- ** PutAccountSendingAttributes+    putAccountSendingAttributes_sendingEnabled,+    putAccountSendingAttributesResponse_httpStatus,++    -- ** PutConfigurationSetDeliveryOptions+    putConfigurationSetDeliveryOptions_sendingPoolName,+    putConfigurationSetDeliveryOptions_tlsPolicy,+    putConfigurationSetDeliveryOptions_configurationSetName,+    putConfigurationSetDeliveryOptionsResponse_httpStatus,++    -- ** PutConfigurationSetReputationOptions+    putConfigurationSetReputationOptions_reputationMetricsEnabled,+    putConfigurationSetReputationOptions_configurationSetName,+    putConfigurationSetReputationOptionsResponse_httpStatus,++    -- ** PutConfigurationSetSendingOptions+    putConfigurationSetSendingOptions_sendingEnabled,+    putConfigurationSetSendingOptions_configurationSetName,+    putConfigurationSetSendingOptionsResponse_httpStatus,++    -- ** PutConfigurationSetTrackingOptions+    putConfigurationSetTrackingOptions_customRedirectDomain,+    putConfigurationSetTrackingOptions_configurationSetName,+    putConfigurationSetTrackingOptionsResponse_httpStatus,++    -- ** PutDedicatedIpInPool+    putDedicatedIpInPool_ip,+    putDedicatedIpInPool_destinationPoolName,+    putDedicatedIpInPoolResponse_httpStatus,++    -- ** PutDedicatedIpWarmupAttributes+    putDedicatedIpWarmupAttributes_ip,+    putDedicatedIpWarmupAttributes_warmupPercentage,+    putDedicatedIpWarmupAttributesResponse_httpStatus,++    -- ** PutDeliverabilityDashboardOption+    putDeliverabilityDashboardOption_subscribedDomains,+    putDeliverabilityDashboardOption_dashboardEnabled,+    putDeliverabilityDashboardOptionResponse_httpStatus,++    -- ** PutEmailIdentityDkimAttributes+    putEmailIdentityDkimAttributes_signingEnabled,+    putEmailIdentityDkimAttributes_emailIdentity,+    putEmailIdentityDkimAttributesResponse_httpStatus,++    -- ** PutEmailIdentityFeedbackAttributes+    putEmailIdentityFeedbackAttributes_emailForwardingEnabled,+    putEmailIdentityFeedbackAttributes_emailIdentity,+    putEmailIdentityFeedbackAttributesResponse_httpStatus,++    -- ** PutEmailIdentityMailFromAttributes+    putEmailIdentityMailFromAttributes_behaviorOnMxFailure,+    putEmailIdentityMailFromAttributes_mailFromDomain,+    putEmailIdentityMailFromAttributes_emailIdentity,+    putEmailIdentityMailFromAttributesResponse_httpStatus,++    -- ** SendEmail+    sendEmail_configurationSetName,+    sendEmail_emailTags,+    sendEmail_feedbackForwardingEmailAddress,+    sendEmail_fromEmailAddress,+    sendEmail_replyToAddresses,+    sendEmail_destination,+    sendEmail_content,+    sendEmailResponse_messageId,+    sendEmailResponse_httpStatus,++    -- ** TagResource+    tagResource_resourceArn,+    tagResource_tags,+    tagResourceResponse_httpStatus,++    -- ** UntagResource+    untagResource_resourceArn,+    untagResource_tagKeys,+    untagResourceResponse_httpStatus,++    -- ** UpdateConfigurationSetEventDestination+    updateConfigurationSetEventDestination_configurationSetName,+    updateConfigurationSetEventDestination_eventDestinationName,+    updateConfigurationSetEventDestination_eventDestination,+    updateConfigurationSetEventDestinationResponse_httpStatus,++    -- * Types++    -- ** BlacklistEntry+    blacklistEntry_description,+    blacklistEntry_listingTime,+    blacklistEntry_rblName,++    -- ** Body+    body_html,+    body_text,++    -- ** CloudWatchDestination+    cloudWatchDestination_dimensionConfigurations,++    -- ** CloudWatchDimensionConfiguration+    cloudWatchDimensionConfiguration_dimensionName,+    cloudWatchDimensionConfiguration_dimensionValueSource,+    cloudWatchDimensionConfiguration_defaultDimensionValue,++    -- ** Content+    content_charset,+    content_data,++    -- ** DailyVolume+    dailyVolume_domainIspPlacements,+    dailyVolume_startDate,+    dailyVolume_volumeStatistics,++    -- ** DedicatedIp+    dedicatedIp_poolName,+    dedicatedIp_ip,+    dedicatedIp_warmupStatus,+    dedicatedIp_warmupPercentage,++    -- ** 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_signingEnabled,+    dkimAttributes_status,+    dkimAttributes_tokens,++    -- ** 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,++    -- ** 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,++    -- ** IdentityInfo+    identityInfo_identityName,+    identityInfo_identityType,+    identityInfo_sendingEnabled,++    -- ** InboxPlacementTrackingOption+    inboxPlacementTrackingOption_global,+    inboxPlacementTrackingOption_trackedIsps,++    -- ** IspPlacement+    ispPlacement_ispName,+    ispPlacement_placementStatistics,++    -- ** KinesisFirehoseDestination+    kinesisFirehoseDestination_iamRoleArn,+    kinesisFirehoseDestination_deliveryStreamArn,++    -- ** MailFromAttributes+    mailFromAttributes_mailFromDomain,+    mailFromAttributes_mailFromDomainStatus,+    mailFromAttributes_behaviorOnMxFailure,++    -- ** Message+    message_subject,+    message_body,++    -- ** MessageTag+    messageTag_name,+    messageTag_value,++    -- ** OverallVolume+    overallVolume_domainIspPlacements,+    overallVolume_readRatePercent,+    overallVolume_volumeStatistics,++    -- ** PinpointDestination+    pinpointDestination_applicationArn,++    -- ** PlacementStatistics+    placementStatistics_dkimPercentage,+    placementStatistics_inboxPercentage,+    placementStatistics_missingPercentage,+    placementStatistics_spamPercentage,+    placementStatistics_spfPercentage,++    -- ** RawMessage+    rawMessage_data,++    -- ** ReputationOptions+    reputationOptions_lastFreshStart,+    reputationOptions_reputationMetricsEnabled,++    -- ** SendQuota+    sendQuota_max24HourSend,+    sendQuota_maxSendRate,+    sendQuota_sentLast24Hours,++    -- ** SendingOptions+    sendingOptions_sendingEnabled,++    -- ** SnsDestination+    snsDestination_topicArn,++    -- ** Tag+    tag_key,+    tag_value,++    -- ** Template+    template_templateArn,+    template_templateData,++    -- ** TrackingOptions+    trackingOptions_customRedirectDomain,++    -- ** VolumeStatistics+    volumeStatistics_inboxRawCount,+    volumeStatistics_projectedInbox,+    volumeStatistics_projectedSpam,+    volumeStatistics_spamRawCount,+  )+where++import Amazonka.PinpointEmail.CreateConfigurationSet+import Amazonka.PinpointEmail.CreateConfigurationSetEventDestination+import Amazonka.PinpointEmail.CreateDedicatedIpPool+import Amazonka.PinpointEmail.CreateDeliverabilityTestReport+import Amazonka.PinpointEmail.CreateEmailIdentity+import Amazonka.PinpointEmail.DeleteConfigurationSet+import Amazonka.PinpointEmail.DeleteConfigurationSetEventDestination+import Amazonka.PinpointEmail.DeleteDedicatedIpPool+import Amazonka.PinpointEmail.DeleteEmailIdentity+import Amazonka.PinpointEmail.GetAccount+import Amazonka.PinpointEmail.GetBlacklistReports+import Amazonka.PinpointEmail.GetConfigurationSet+import Amazonka.PinpointEmail.GetConfigurationSetEventDestinations+import Amazonka.PinpointEmail.GetDedicatedIp+import Amazonka.PinpointEmail.GetDedicatedIps+import Amazonka.PinpointEmail.GetDeliverabilityDashboardOptions+import Amazonka.PinpointEmail.GetDeliverabilityTestReport+import Amazonka.PinpointEmail.GetDomainDeliverabilityCampaign+import Amazonka.PinpointEmail.GetDomainStatisticsReport+import Amazonka.PinpointEmail.GetEmailIdentity+import Amazonka.PinpointEmail.ListConfigurationSets+import Amazonka.PinpointEmail.ListDedicatedIpPools+import Amazonka.PinpointEmail.ListDeliverabilityTestReports+import Amazonka.PinpointEmail.ListDomainDeliverabilityCampaigns+import Amazonka.PinpointEmail.ListEmailIdentities+import Amazonka.PinpointEmail.ListTagsForResource+import Amazonka.PinpointEmail.PutAccountDedicatedIpWarmupAttributes+import Amazonka.PinpointEmail.PutAccountSendingAttributes+import Amazonka.PinpointEmail.PutConfigurationSetDeliveryOptions+import Amazonka.PinpointEmail.PutConfigurationSetReputationOptions+import Amazonka.PinpointEmail.PutConfigurationSetSendingOptions+import Amazonka.PinpointEmail.PutConfigurationSetTrackingOptions+import Amazonka.PinpointEmail.PutDedicatedIpInPool+import Amazonka.PinpointEmail.PutDedicatedIpWarmupAttributes+import Amazonka.PinpointEmail.PutDeliverabilityDashboardOption+import Amazonka.PinpointEmail.PutEmailIdentityDkimAttributes+import Amazonka.PinpointEmail.PutEmailIdentityFeedbackAttributes+import Amazonka.PinpointEmail.PutEmailIdentityMailFromAttributes+import Amazonka.PinpointEmail.SendEmail+import Amazonka.PinpointEmail.TagResource+import Amazonka.PinpointEmail.Types.BlacklistEntry+import Amazonka.PinpointEmail.Types.Body+import Amazonka.PinpointEmail.Types.CloudWatchDestination+import Amazonka.PinpointEmail.Types.CloudWatchDimensionConfiguration+import Amazonka.PinpointEmail.Types.Content+import Amazonka.PinpointEmail.Types.DailyVolume+import Amazonka.PinpointEmail.Types.DedicatedIp+import Amazonka.PinpointEmail.Types.DeliverabilityTestReport+import Amazonka.PinpointEmail.Types.DeliveryOptions+import Amazonka.PinpointEmail.Types.Destination+import Amazonka.PinpointEmail.Types.DkimAttributes+import Amazonka.PinpointEmail.Types.DomainDeliverabilityCampaign+import Amazonka.PinpointEmail.Types.DomainDeliverabilityTrackingOption+import Amazonka.PinpointEmail.Types.DomainIspPlacement+import Amazonka.PinpointEmail.Types.EmailContent+import Amazonka.PinpointEmail.Types.EventDestination+import Amazonka.PinpointEmail.Types.EventDestinationDefinition+import Amazonka.PinpointEmail.Types.IdentityInfo+import Amazonka.PinpointEmail.Types.InboxPlacementTrackingOption+import Amazonka.PinpointEmail.Types.IspPlacement+import Amazonka.PinpointEmail.Types.KinesisFirehoseDestination+import Amazonka.PinpointEmail.Types.MailFromAttributes+import Amazonka.PinpointEmail.Types.Message+import Amazonka.PinpointEmail.Types.MessageTag+import Amazonka.PinpointEmail.Types.OverallVolume+import Amazonka.PinpointEmail.Types.PinpointDestination+import Amazonka.PinpointEmail.Types.PlacementStatistics+import Amazonka.PinpointEmail.Types.RawMessage+import Amazonka.PinpointEmail.Types.ReputationOptions+import Amazonka.PinpointEmail.Types.SendQuota+import Amazonka.PinpointEmail.Types.SendingOptions+import Amazonka.PinpointEmail.Types.SnsDestination+import Amazonka.PinpointEmail.Types.Tag+import Amazonka.PinpointEmail.Types.Template+import Amazonka.PinpointEmail.Types.TrackingOptions+import Amazonka.PinpointEmail.Types.VolumeStatistics+import Amazonka.PinpointEmail.UntagResource+import Amazonka.PinpointEmail.UpdateConfigurationSetEventDestination
+ gen/Amazonka/PinpointEmail/ListConfigurationSets.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.PinpointEmail.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 Amazon Pinpoint+-- account in the current region.+--+-- In Amazon Pinpoint, /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.+--+-- This operation returns paginated results.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to obtain a list of configuration sets for your Amazon+-- Pinpoint account in the current AWS 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.AWSPager ListConfigurationSets where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listConfigurationSetsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listConfigurationSetsResponse_configurationSets+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listConfigurationSets_nextToken+          Lens..~ rs+          Lens.^? listConfigurationSetsResponse_nextToken+          Prelude.. Lens._Just++instance Core.AWSRequest ListConfigurationSets where+  type+    AWSResponse ListConfigurationSets =+      ListConfigurationSetsResponse+  request overrides =+    Request.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 "/v1/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 Pinpoint account in the+-- current AWS Region.+--+-- /See:/ 'newListConfigurationSetsResponse' smart constructor.+data ListConfigurationSetsResponse = ListConfigurationSetsResponse'+  { -- | An array that contains all of the configuration sets in your Amazon+    -- Pinpoint account in the current AWS 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+-- Pinpoint account in the current AWS 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+-- Pinpoint account in the current AWS 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/PinpointEmail/ListDedicatedIpPools.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.PinpointEmail.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 Pinpoint+-- account in the current AWS Region.+--+-- This operation returns paginated results.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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.AWSPager ListDedicatedIpPools where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDedicatedIpPoolsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listDedicatedIpPoolsResponse_dedicatedIpPools+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDedicatedIpPools_nextToken+          Lens..~ rs+          Lens.^? listDedicatedIpPoolsResponse_nextToken+          Prelude.. Lens._Just++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 "/v1/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 Pinpoint account.+    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 Pinpoint account.+--+-- '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 Pinpoint account.+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/PinpointEmail/ListDeliverabilityTestReports.hs view
@@ -0,0 +1,271 @@+{-# 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.PinpointEmail.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.+--+-- This operation returns paginated results.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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.AWSPager ListDeliverabilityTestReports where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listDeliverabilityTestReportsResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^. listDeliverabilityTestReportsResponse_deliverabilityTestReports+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listDeliverabilityTestReports_nextToken+          Lens..~ rs+          Lens.^? listDeliverabilityTestReportsResponse_nextToken+          Prelude.. Lens._Just++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+      "/v1/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/PinpointEmail/ListDomainDeliverabilityCampaigns.hs view
@@ -0,0 +1,319 @@+{-# 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.PinpointEmail.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+-- (@PutDeliverabilityDashboardOption@ operation) for the domain.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+-- (@PutDeliverabilityDashboardOption@ operation) for the domain.+--+-- /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, in Unix time format, that you want to obtain+    -- deliverability data for.+    startDate :: Data.POSIX,+    -- | The last day, in Unix time format, 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, in Unix time format, that you want to obtain+-- deliverability data for.+--+-- 'endDate', 'listDomainDeliverabilityCampaigns_endDate' - The last day, in Unix time format, 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, in Unix time format, 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, in Unix time format, 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+      [ "/v1/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 (@PutDeliverabilityDashboardOption@ operation)+-- 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/PinpointEmail/ListEmailIdentities.hs view
@@ -0,0 +1,256 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-binds #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.PinpointEmail.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 Pinpoint 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 paginated results.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to list all of the email identities associated with your+-- Amazon Pinpoint 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.AWSPager ListEmailIdentities where+  page rq rs+    | Core.stop+        ( rs+            Lens.^? listEmailIdentitiesResponse_nextToken+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Core.stop+        ( rs+            Lens.^? listEmailIdentitiesResponse_emailIdentities+            Prelude.. Lens._Just+        ) =+        Prelude.Nothing+    | Prelude.otherwise =+        Prelude.Just+          Prelude.$ rq+          Prelude.& listEmailIdentities_nextToken+          Lens..~ rs+          Lens.^? listEmailIdentitiesResponse_nextToken+          Prelude.. Lens._Just++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 "/v1/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 for use+-- with Amazon Pinpoint, regardless of whether or not those identities were+-- successfully verified.+--+-- /See:/ 'newListEmailIdentitiesResponse' smart constructor.+data ListEmailIdentitiesResponse = ListEmailIdentitiesResponse'+  { -- | An array that includes all of the identities associated with your Amazon+    -- Pinpoint 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 identities associated with your Amazon+-- Pinpoint 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 identities associated with your Amazon+-- Pinpoint 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/PinpointEmail/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.PinpointEmail.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 in Amazon Pinpoint. 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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /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 "/v1/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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Pinpoint account in the+    -- current AWS 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 Pinpoint account in the+-- current AWS 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 Pinpoint account in the+-- current AWS 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+      "/v1/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/PinpointEmail/PutAccountSendingAttributes.hs view
@@ -0,0 +1,176 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 AWS 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 AWS 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 AWS 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 "/v1/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/PinpointEmail/PutConfigurationSetDeliveryOptions.hs view
@@ -0,0 +1,243 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 that you want 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 that you want 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 that you want 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 that you want 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 that you want 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 that you want 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+      [ "/v1/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/PinpointEmail/PutConfigurationSetReputationOptions.hs view
@@ -0,0 +1,221 @@+{-# 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.PinpointEmail.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 AWS Region.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 that you want to enable or disable+    -- reputation metric tracking for.+    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 that you want to enable or disable+-- reputation metric tracking for.+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 that you want to enable or disable+-- reputation metric tracking for.+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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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 AWS Region.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to enable or disable the ability of Amazon Pinpoint 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 that you want 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 that you want 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 that you want 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+      [ "/v1/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/PinpointEmail/PutConfigurationSetTrackingOptions.hs view
@@ -0,0 +1,215 @@+{-# 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.PinpointEmail.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 using Amazon Pinpoint.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 that you want to use to track open and click events.+    customRedirectDomain :: Prelude.Maybe Prelude.Text,+    -- | The name of the configuration set that you want to add a custom tracking+    -- domain to.+    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 that you want to use to track open and click events.+--+-- 'configurationSetName', 'putConfigurationSetTrackingOptions_configurationSetName' - The name of the configuration set that you want to add a custom tracking+-- domain to.+newPutConfigurationSetTrackingOptions ::+  -- | 'configurationSetName'+  Prelude.Text ->+  PutConfigurationSetTrackingOptions+newPutConfigurationSetTrackingOptions+  pConfigurationSetName_ =+    PutConfigurationSetTrackingOptions'+      { customRedirectDomain =+          Prelude.Nothing,+        configurationSetName =+          pConfigurationSetName_+      }++-- | The domain that you want 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 that you want to add a custom tracking+-- domain to.+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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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 Pinpoint account.+--+-- The dedicated IP pool you specify must already exist. You can create a+-- new pool by using the @CreateDedicatedIpPool@ operation.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Pinpoint 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 Pinpoint 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 Pinpoint 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+      ["/v1/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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+      ["/v1/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/PinpointEmail/PutDeliverabilityDashboardOption.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.PinpointEmail.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 for your Amazon Pinpoint+-- account. 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 Pinpoint. 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 Pinpoint. For more information about the features and cost+-- of a Deliverability dashboard subscription, see+-- <http://aws.amazon.com/pinpoint/pricing/ Amazon Pinpoint Pricing>.+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | Enable or disable the Deliverability dashboard for your Amazon Pinpoint+-- account. 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 Pinpoint. 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 Pinpoint. 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 for your Amazon+    -- Pinpoint account. 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 for your Amazon+-- Pinpoint account. 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 for your Amazon+-- Pinpoint account. 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 "/v1/email/deliverability-dashboard"++instance+  Data.ToQuery+    PutDeliverabilityDashboardOption+  where+  toQuery = Prelude.const Prelude.mempty++-- | A response that indicates whether the Deliverability dashboard is+-- enabled for your Amazon Pinpoint account.+--+-- /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/PinpointEmail/PutEmailIdentityDkimAttributes.hs view
@@ -0,0 +1,215 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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 Amazon Pinpoint+    -- sends from the identity are DKIM-signed. When you set this value to+    -- @false@, then the messages that Amazon Pinpoint sends from the identity+    -- aren\'t DKIM-signed.+    signingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The email identity that you want to change the DKIM settings for.+    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 Amazon Pinpoint+-- sends from the identity are DKIM-signed. When you set this value to+-- @false@, then the messages that Amazon Pinpoint sends from the identity+-- aren\'t DKIM-signed.+--+-- 'emailIdentity', 'putEmailIdentityDkimAttributes_emailIdentity' - The email identity that you want to change the DKIM settings for.+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 Amazon Pinpoint+-- sends from the identity are DKIM-signed. When you set this value to+-- @false@, then the messages that Amazon Pinpoint sends from the identity+-- aren\'t DKIM-signed.+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 that you want to change the DKIM settings for.+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+      [ "/v1/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/PinpointEmail/PutEmailIdentityFeedbackAttributes.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.PinpointEmail.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.+--+-- When you enable feedback forwarding, Amazon Pinpoint sends you email+-- notifications when bounce or complaint events occur. Amazon Pinpoint+-- sends this notification to the address that you specified in the+-- Return-Path header of the original email.+--+-- When you disable feedback forwarding, Amazon Pinpoint sends+-- notifications through other mechanisms, such as by notifying an Amazon+-- SNS topic. 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, Amazon Pinpoint sends an email+-- notification when these events occur (even if this setting is disabled).+module Amazonka.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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@, Amazon Pinpoint sends you email notifications+    -- when bounce or complaint events occur. Amazon Pinpoint sends this+    -- notification to the address that you specified in the Return-Path header+    -- of the original email.+    --+    -- When you set this value to @false@, Amazon Pinpoint sends notifications+    -- through other mechanisms, such as by notifying an Amazon SNS topic or+    -- another event destination. 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, Amazon Pinpoint sends an+    -- email notification when these events occur (even if this setting is+    -- disabled).+    emailForwardingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | The email identity that you want to configure bounce and complaint+    -- feedback forwarding for.+    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@, Amazon Pinpoint sends you email notifications+-- when bounce or complaint events occur. Amazon Pinpoint sends this+-- notification to the address that you specified in the Return-Path header+-- of the original email.+--+-- When you set this value to @false@, Amazon Pinpoint sends notifications+-- through other mechanisms, such as by notifying an Amazon SNS topic or+-- another event destination. 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, Amazon Pinpoint sends an+-- email notification when these events occur (even if this setting is+-- disabled).+--+-- 'emailIdentity', 'putEmailIdentityFeedbackAttributes_emailIdentity' - The email identity that you want to configure bounce and complaint+-- feedback forwarding for.+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@, Amazon Pinpoint sends you email notifications+-- when bounce or complaint events occur. Amazon Pinpoint sends this+-- notification to the address that you specified in the Return-Path header+-- of the original email.+--+-- When you set this value to @false@, Amazon Pinpoint sends notifications+-- through other mechanisms, such as by notifying an Amazon SNS topic or+-- another event destination. 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, Amazon Pinpoint sends 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 that you want to configure bounce and complaint+-- feedback forwarding for.+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+      [ "/v1/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/PinpointEmail/PutEmailIdentityMailFromAttributes.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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to configure the custom MAIL FROM domain for a verified+-- identity.+--+-- /See:/ 'newPutEmailIdentityMailFromAttributes' smart constructor.+data PutEmailIdentityMailFromAttributes = PutEmailIdentityMailFromAttributes'+  { -- | The action that you want Amazon Pinpoint to take if it can\'t read the+    -- required MX record when you send an email. When you set this value to+    -- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+    -- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+    -- 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 that you want to set up the custom MAIL FROM+    -- domain for.+    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 that you want Amazon Pinpoint to take if it can\'t read the+-- required MX record when you send an email. When you set this value to+-- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+-- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+-- 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 that you want to set up the custom MAIL FROM+-- domain for.+newPutEmailIdentityMailFromAttributes ::+  -- | 'emailIdentity'+  Prelude.Text ->+  PutEmailIdentityMailFromAttributes+newPutEmailIdentityMailFromAttributes pEmailIdentity_ =+  PutEmailIdentityMailFromAttributes'+    { behaviorOnMxFailure =+        Prelude.Nothing,+      mailFromDomain = Prelude.Nothing,+      emailIdentity = pEmailIdentity_+    }++-- | The action that you want Amazon Pinpoint to take if it can\'t read the+-- required MX record when you send an email. When you set this value to+-- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+-- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+-- 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 that you want to set up the custom MAIL FROM+-- domain for.+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+      [ "/v1/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/PinpointEmail/SendEmail.hs view
@@ -0,0 +1,308 @@+{-# 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.PinpointEmail.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 Pinpoint Email API to+-- send two 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 Pinpoint 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.+module Amazonka.PinpointEmail.SendEmail+  ( -- * Creating a Request+    SendEmail (..),+    newSendEmail,++    -- * Request Lenses+    sendEmail_configurationSetName,+    sendEmail_emailTags,+    sendEmail_feedbackForwardingEmailAddress,+    sendEmail_fromEmailAddress,+    sendEmail_replyToAddresses,+    sendEmail_destination,+    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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | A request to send an email message.+--+-- /See:/ 'newSendEmail' smart constructor.+data SendEmail = SendEmail'+  { -- | The name of the configuration set that you want 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.+    emailTags :: Prelude.Maybe [MessageTag],+    -- | The address that Amazon Pinpoint should send bounce and complaint+    -- notifications to.+    feedbackForwardingEmailAddress :: Prelude.Maybe Prelude.Text,+    -- | The email address that you want to use as the \"From\" address for the+    -- email. The address that you specify has to be verified.+    fromEmailAddress :: 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 recipients of the email message.+    destination :: Destination,+    -- | An object that contains the body of the message. You can send either a+    -- Simple message or a Raw 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 that you want to use when sending the+-- email.+--+-- '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 Amazon Pinpoint should send bounce and complaint+-- notifications to.+--+-- 'fromEmailAddress', 'sendEmail_fromEmailAddress' - The email address that you want to use as the \"From\" address for the+-- email. The address that you specify has to be verified.+--+-- '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.+--+-- 'destination', 'sendEmail_destination' - An object that contains the recipients of the email message.+--+-- 'content', 'sendEmail_content' - An object that contains the body of the message. You can send either a+-- Simple message or a Raw message.+newSendEmail ::+  -- | 'destination'+  Destination ->+  -- | 'content'+  EmailContent ->+  SendEmail+newSendEmail pDestination_ pContent_ =+  SendEmail'+    { configurationSetName = Prelude.Nothing,+      emailTags = Prelude.Nothing,+      feedbackForwardingEmailAddress = Prelude.Nothing,+      fromEmailAddress = Prelude.Nothing,+      replyToAddresses = Prelude.Nothing,+      destination = pDestination_,+      content = pContent_+    }++-- | The name of the configuration set that you want 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)++-- | 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 Amazon Pinpoint should send bounce and complaint+-- notifications to.+sendEmail_feedbackForwardingEmailAddress :: Lens.Lens' SendEmail (Prelude.Maybe Prelude.Text)+sendEmail_feedbackForwardingEmailAddress = Lens.lens (\SendEmail' {feedbackForwardingEmailAddress} -> feedbackForwardingEmailAddress) (\s@SendEmail' {} a -> s {feedbackForwardingEmailAddress = a} :: SendEmail)++-- | The email address that you want 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)++-- | 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 recipients of the email message.+sendEmail_destination :: Lens.Lens' SendEmail Destination+sendEmail_destination = Lens.lens (\SendEmail' {destination} -> destination) (\s@SendEmail' {} a -> s {destination = a} :: SendEmail)++-- | An object that contains the body of the message. You can send either a+-- Simple message or a Raw 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` emailTags+      `Prelude.hashWithSalt` feedbackForwardingEmailAddress+      `Prelude.hashWithSalt` fromEmailAddress+      `Prelude.hashWithSalt` replyToAddresses+      `Prelude.hashWithSalt` destination+      `Prelude.hashWithSalt` content++instance Prelude.NFData SendEmail where+  rnf SendEmail' {..} =+    Prelude.rnf configurationSetName+      `Prelude.seq` Prelude.rnf emailTags+      `Prelude.seq` Prelude.rnf feedbackForwardingEmailAddress+      `Prelude.seq` Prelude.rnf fromEmailAddress+      `Prelude.seq` Prelude.rnf replyToAddresses+      `Prelude.seq` Prelude.rnf destination+      `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,+            ("EmailTags" Data..=) Prelude.<$> emailTags,+            ("FeedbackForwardingEmailAddress" Data..=)+              Prelude.<$> feedbackForwardingEmailAddress,+            ("FromEmailAddress" Data..=)+              Prelude.<$> fromEmailAddress,+            ("ReplyToAddresses" Data..=)+              Prelude.<$> replyToAddresses,+            Prelude.Just ("Destination" Data..= destination),+            Prelude.Just ("Content" Data..= content)+          ]+      )++instance Data.ToPath SendEmail where+  toPath = Prelude.const "/v1/email/outbound-emails"++instance Data.ToQuery SendEmail where+  toQuery = Prelude.const Prelude.mempty++-- | A unique message ID that you receive when Amazon Pinpoint accepts an+-- email for sending.+--+-- /See:/ 'newSendEmailResponse' smart constructor.+data SendEmailResponse = SendEmailResponse'+  { -- | A unique identifier for the message that is generated when Amazon+    -- Pinpoint accepts the message.+    --+    -- It is possible for Amazon Pinpoint to accept a message without sending+    -- it. This can happen when the message you\'re trying to send has an+    -- attachment doesn\'t pass a virus check, 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 Amazon+-- Pinpoint accepts the message.+--+-- It is possible for Amazon Pinpoint to accept a message without sending+-- it. This can happen when the message you\'re trying to send has an+-- attachment doesn\'t pass a virus check, 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 Amazon+-- Pinpoint accepts the message.+--+-- It is possible for Amazon Pinpoint to accept a message without sending+-- it. This can happen when the message you\'re trying to send has an+-- attachment doesn\'t pass a virus check, 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/PinpointEmail/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.PinpointEmail.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 in Amazon Pinpoint. 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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /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 "/v1/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/PinpointEmail/Types.hs view
@@ -0,0 +1,521 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types+  ( -- * Service Configuration+    defaultService,++    -- * Errors+    _AccountSuspendedException,+    _AlreadyExistsException,+    _BadRequestException,+    _ConcurrentModificationException,+    _LimitExceededException,+    _MailFromDomainNotVerifiedException,+    _MessageRejected,+    _NotFoundException,+    _SendingPausedException,+    _TooManyRequestsException,++    -- * BehaviorOnMxFailure+    BehaviorOnMxFailure (..),++    -- * DeliverabilityDashboardAccountStatus+    DeliverabilityDashboardAccountStatus (..),++    -- * DeliverabilityTestStatus+    DeliverabilityTestStatus (..),++    -- * DimensionValueSource+    DimensionValueSource (..),++    -- * DkimStatus+    DkimStatus (..),++    -- * EventType+    EventType (..),++    -- * IdentityType+    IdentityType (..),++    -- * MailFromDomainStatus+    MailFromDomainStatus (..),++    -- * TlsPolicy+    TlsPolicy (..),++    -- * WarmupStatus+    WarmupStatus (..),++    -- * BlacklistEntry+    BlacklistEntry (..),+    newBlacklistEntry,+    blacklistEntry_description,+    blacklistEntry_listingTime,+    blacklistEntry_rblName,++    -- * Body+    Body (..),+    newBody,+    body_html,+    body_text,++    -- * CloudWatchDestination+    CloudWatchDestination (..),+    newCloudWatchDestination,+    cloudWatchDestination_dimensionConfigurations,++    -- * CloudWatchDimensionConfiguration+    CloudWatchDimensionConfiguration (..),+    newCloudWatchDimensionConfiguration,+    cloudWatchDimensionConfiguration_dimensionName,+    cloudWatchDimensionConfiguration_dimensionValueSource,+    cloudWatchDimensionConfiguration_defaultDimensionValue,++    -- * Content+    Content (..),+    newContent,+    content_charset,+    content_data,++    -- * DailyVolume+    DailyVolume (..),+    newDailyVolume,+    dailyVolume_domainIspPlacements,+    dailyVolume_startDate,+    dailyVolume_volumeStatistics,++    -- * DedicatedIp+    DedicatedIp (..),+    newDedicatedIp,+    dedicatedIp_poolName,+    dedicatedIp_ip,+    dedicatedIp_warmupStatus,+    dedicatedIp_warmupPercentage,++    -- * 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_signingEnabled,+    dkimAttributes_status,+    dkimAttributes_tokens,++    -- * 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,++    -- * 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,++    -- * IdentityInfo+    IdentityInfo (..),+    newIdentityInfo,+    identityInfo_identityName,+    identityInfo_identityType,+    identityInfo_sendingEnabled,++    -- * InboxPlacementTrackingOption+    InboxPlacementTrackingOption (..),+    newInboxPlacementTrackingOption,+    inboxPlacementTrackingOption_global,+    inboxPlacementTrackingOption_trackedIsps,++    -- * IspPlacement+    IspPlacement (..),+    newIspPlacement,+    ispPlacement_ispName,+    ispPlacement_placementStatistics,++    -- * KinesisFirehoseDestination+    KinesisFirehoseDestination (..),+    newKinesisFirehoseDestination,+    kinesisFirehoseDestination_iamRoleArn,+    kinesisFirehoseDestination_deliveryStreamArn,++    -- * MailFromAttributes+    MailFromAttributes (..),+    newMailFromAttributes,+    mailFromAttributes_mailFromDomain,+    mailFromAttributes_mailFromDomainStatus,+    mailFromAttributes_behaviorOnMxFailure,++    -- * Message+    Message (..),+    newMessage,+    message_subject,+    message_body,++    -- * MessageTag+    MessageTag (..),+    newMessageTag,+    messageTag_name,+    messageTag_value,++    -- * 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,++    -- * ReputationOptions+    ReputationOptions (..),+    newReputationOptions,+    reputationOptions_lastFreshStart,+    reputationOptions_reputationMetricsEnabled,++    -- * SendQuota+    SendQuota (..),+    newSendQuota,+    sendQuota_max24HourSend,+    sendQuota_maxSendRate,+    sendQuota_sentLast24Hours,++    -- * SendingOptions+    SendingOptions (..),+    newSendingOptions,+    sendingOptions_sendingEnabled,++    -- * SnsDestination+    SnsDestination (..),+    newSnsDestination,+    snsDestination_topicArn,++    -- * Tag+    Tag (..),+    newTag,+    tag_key,+    tag_value,++    -- * Template+    Template (..),+    newTemplate,+    template_templateArn,+    template_templateData,++    -- * TrackingOptions+    TrackingOptions (..),+    newTrackingOptions,+    trackingOptions_customRedirectDomain,++    -- * 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 Amazonka.PinpointEmail.Types.BehaviorOnMxFailure+import Amazonka.PinpointEmail.Types.BlacklistEntry+import Amazonka.PinpointEmail.Types.Body+import Amazonka.PinpointEmail.Types.CloudWatchDestination+import Amazonka.PinpointEmail.Types.CloudWatchDimensionConfiguration+import Amazonka.PinpointEmail.Types.Content+import Amazonka.PinpointEmail.Types.DailyVolume+import Amazonka.PinpointEmail.Types.DedicatedIp+import Amazonka.PinpointEmail.Types.DeliverabilityDashboardAccountStatus+import Amazonka.PinpointEmail.Types.DeliverabilityTestReport+import Amazonka.PinpointEmail.Types.DeliverabilityTestStatus+import Amazonka.PinpointEmail.Types.DeliveryOptions+import Amazonka.PinpointEmail.Types.Destination+import Amazonka.PinpointEmail.Types.DimensionValueSource+import Amazonka.PinpointEmail.Types.DkimAttributes+import Amazonka.PinpointEmail.Types.DkimStatus+import Amazonka.PinpointEmail.Types.DomainDeliverabilityCampaign+import Amazonka.PinpointEmail.Types.DomainDeliverabilityTrackingOption+import Amazonka.PinpointEmail.Types.DomainIspPlacement+import Amazonka.PinpointEmail.Types.EmailContent+import Amazonka.PinpointEmail.Types.EventDestination+import Amazonka.PinpointEmail.Types.EventDestinationDefinition+import Amazonka.PinpointEmail.Types.EventType+import Amazonka.PinpointEmail.Types.IdentityInfo+import Amazonka.PinpointEmail.Types.IdentityType+import Amazonka.PinpointEmail.Types.InboxPlacementTrackingOption+import Amazonka.PinpointEmail.Types.IspPlacement+import Amazonka.PinpointEmail.Types.KinesisFirehoseDestination+import Amazonka.PinpointEmail.Types.MailFromAttributes+import Amazonka.PinpointEmail.Types.MailFromDomainStatus+import Amazonka.PinpointEmail.Types.Message+import Amazonka.PinpointEmail.Types.MessageTag+import Amazonka.PinpointEmail.Types.OverallVolume+import Amazonka.PinpointEmail.Types.PinpointDestination+import Amazonka.PinpointEmail.Types.PlacementStatistics+import Amazonka.PinpointEmail.Types.RawMessage+import Amazonka.PinpointEmail.Types.ReputationOptions+import Amazonka.PinpointEmail.Types.SendQuota+import Amazonka.PinpointEmail.Types.SendingOptions+import Amazonka.PinpointEmail.Types.SnsDestination+import Amazonka.PinpointEmail.Types.Tag+import Amazonka.PinpointEmail.Types.Template+import Amazonka.PinpointEmail.Types.TlsPolicy+import Amazonka.PinpointEmail.Types.TrackingOptions+import Amazonka.PinpointEmail.Types.VolumeStatistics+import Amazonka.PinpointEmail.Types.WarmupStatus+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Sign.V4 as Sign++-- | API version @2018-07-26@ of the Amazon Pinpoint Email Service SDK configuration.+defaultService :: Core.Service+defaultService =+  Core.Service+    { Core.abbrev = "PinpointEmail",+      Core.signer = Sign.v4,+      Core.endpointPrefix = "email",+      Core.signingName = "ses",+      Core.version = "2018-07-26",+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,+      Core.endpoint = Core.defaultEndpoint defaultService,+      Core.timeout = Prelude.Just 70,+      Core.check = Core.statusSuccess,+      Core.error = Core.parseJSONError "PinpointEmail",+      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++-- | 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 that you want Amazon Pinpoint to take if it can\'t read the+-- required MX record for a custom MAIL FROM domain. When you set this+-- value to @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the+-- MAIL FROM domain. When you set this value to @RejectMessage@, Amazon+-- Pinpoint 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/PinpointEmail/Types/BlacklistEntry.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.PinpointEmail.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.PinpointEmail.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, shown in Unix time+    -- format.+    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, shown in Unix time+-- format.+--+-- '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, shown in Unix time+-- format.+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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.Body where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.Content+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.CloudWatchDestination where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.CloudWatchDimensionConfiguration+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/Types/CloudWatchDimensionConfiguration.hs view
@@ -0,0 +1,195 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types.CloudWatchDimensionConfiguration where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.DimensionValueSource+import qualified Amazonka.Prelude as Prelude++-- | An object that defines the dimension configuration to use when you send+-- Amazon Pinpoint 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 Amazon Pinpoint finds the value of a dimension to+    -- publish to Amazon CloudWatch. If you want Amazon Pinpoint to use the+    -- message tags that you specify using an X-SES-MESSAGE-TAGS header or a+    -- parameter to the SendEmail\/SendRawEmail API, choose @messageTag@. If+    -- you want Amazon Pinpoint to use your own email headers, choose+    -- @emailHeader@. If you want Amazon Pinpoint 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:+    --+    -- -   It can only contain ASCII letters (a-z, A-Z), numbers (0-9),+    --     underscores (_), or dashes (-).+    --+    -- -   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 Amazon Pinpoint finds the value of a dimension to+-- publish to Amazon CloudWatch. If you want Amazon Pinpoint to use the+-- message tags that you specify using an X-SES-MESSAGE-TAGS header or a+-- parameter to the SendEmail\/SendRawEmail API, choose @messageTag@. If+-- you want Amazon Pinpoint to use your own email headers, choose+-- @emailHeader@. If you want Amazon Pinpoint 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:+--+-- -   It can only contain ASCII letters (a-z, A-Z), numbers (0-9),+--     underscores (_), or dashes (-).+--+-- -   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 Amazon Pinpoint finds the value of a dimension to+-- publish to Amazon CloudWatch. If you want Amazon Pinpoint to use the+-- message tags that you specify using an X-SES-MESSAGE-TAGS header or a+-- parameter to the SendEmail\/SendRawEmail API, choose @messageTag@. If+-- you want Amazon Pinpoint to use your own email headers, choose+-- @emailHeader@. If you want Amazon Pinpoint 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:+--+-- -   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_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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Pinpoint 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 Pinpoint 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 Pinpoint 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.DailyVolume where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.DomainIspPlacement+import Amazonka.PinpointEmail.Types.VolumeStatistics+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/Types/DedicatedIp.hs view
@@ -0,0 +1,146 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types.DedicatedIp where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.WarmupStatus+import qualified Amazonka.Prelude as Prelude++-- | Contains information about a dedicated IP address that is associated+-- with your Amazon Pinpoint account.+--+-- /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 IP address that is reserved for use by your Amazon Pinpoint account.+    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 IP address that is reserved for use by your Amazon Pinpoint account.+--+-- '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 IP address that is reserved for use by your Amazon Pinpoint account.+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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/Types/DeliverabilityTestReport.hs view
@@ -0,0 +1,159 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.PinpointEmail.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.PinpointEmail.Types.DeliverabilityTestReport where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.DeliverabilityTestStatus+import qualified Amazonka.Prelude as Prelude++-- | 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,+    -- in Unix time format.+    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,+-- in Unix time format.+--+-- '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,+-- in Unix time format.+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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.DeliveryOptions where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.TlsPolicy+import qualified Amazonka.Prelude as Prelude++-- | 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 that you want 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 that you want 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 that you want 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/PinpointEmail/Types/Destination.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.PinpointEmail.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.PinpointEmail.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.+--+-- /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/PinpointEmail/Types/DimensionValueSource.hs view
@@ -0,0 +1,83 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 Amazon Pinpoint finds the value of a dimension to+-- publish to Amazon CloudWatch. If you want Amazon Pinpoint to use the+-- message tags that you specify using an X-SES-MESSAGE-TAGS header or a+-- parameter to the SendEmail\/SendRawEmail API, choose @messageTag@. If+-- you want Amazon Pinpoint to use your own email headers, choose+-- @emailHeader@. If you want Amazon Pinpoint 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/PinpointEmail/Types/DkimAttributes.hs view
@@ -0,0 +1,182 @@+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE DuplicateRecordFields #-}+{-# LANGUAGE NamedFieldPuns #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE StrictData #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-unused-matches #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module      : Amazonka.PinpointEmail.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.PinpointEmail.Types.DkimAttributes where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.DkimStatus+import qualified Amazonka.Prelude as Prelude++-- | An object that contains information about the DKIM configuration for an+-- email identity.+--+-- /See:/ 'newDkimAttributes' smart constructor.+data DkimAttributes = DkimAttributes'+  { -- | If the value is @true@, then the messages that Amazon Pinpoint sends+    -- from the identity are DKIM-signed. If the value is @false@, then the+    -- messages that Amazon Pinpoint sends from the identity aren\'t+    -- DKIM-signed.+    signingEnabled :: Prelude.Maybe Prelude.Bool,+    -- | Describes whether or not Amazon Pinpoint has successfully located the+    -- DKIM records in the DNS records for the domain. The status can be one of+    -- the following:+    --+    -- -   @PENDING@ – Amazon Pinpoint hasn\'t yet located the DKIM records in+    --     the DNS configuration for the domain, but will continue to attempt+    --     to locate them.+    --+    -- -   @SUCCESS@ – Amazon Pinpoint located the DKIM records in the DNS+    --     configuration for the domain and determined that they\'re correct.+    --     Amazon Pinpoint can now send DKIM-signed email from the identity.+    --+    -- -   @FAILED@ – Amazon Pinpoint was unable to locate the DKIM records in+    --     the DNS settings for the domain, and won\'t continue to search for+    --     them.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+    --     Amazon Pinpoint from determining the DKIM status for the domain.+    --+    -- -   @NOT_STARTED@ – Amazon Pinpoint hasn\'t yet started searching for+    --     the DKIM records in the DKIM records for the domain.+    status :: Prelude.Maybe DkimStatus,+    -- | 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+    -- Pinpoint detects these records in the DNS configuration for your domain,+    -- the DKIM authentication process is complete. Amazon Pinpoint usually+    -- detects these records within about 72 hours of adding them to the DNS+    -- configuration for your domain.+    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:+--+-- 'signingEnabled', 'dkimAttributes_signingEnabled' - If the value is @true@, then the messages that Amazon Pinpoint sends+-- from the identity are DKIM-signed. If the value is @false@, then the+-- messages that Amazon Pinpoint sends from the identity aren\'t+-- DKIM-signed.+--+-- 'status', 'dkimAttributes_status' - Describes whether or not Amazon Pinpoint has successfully located the+-- DKIM records in the DNS records for the domain. The status can be one of+-- the following:+--+-- -   @PENDING@ – Amazon Pinpoint hasn\'t yet located the DKIM records in+--     the DNS configuration for the domain, but will continue to attempt+--     to locate them.+--+-- -   @SUCCESS@ – Amazon Pinpoint located the DKIM records in the DNS+--     configuration for the domain and determined that they\'re correct.+--     Amazon Pinpoint can now send DKIM-signed email from the identity.+--+-- -   @FAILED@ – Amazon Pinpoint was unable to locate the DKIM records in+--     the DNS settings for the domain, and won\'t continue to search for+--     them.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon Pinpoint from determining the DKIM status for the domain.+--+-- -   @NOT_STARTED@ – Amazon Pinpoint hasn\'t yet started searching for+--     the DKIM records in the DKIM records for the domain.+--+-- 'tokens', 'dkimAttributes_tokens' - 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+-- Pinpoint detects these records in the DNS configuration for your domain,+-- the DKIM authentication process is complete. Amazon Pinpoint usually+-- detects these records within about 72 hours of adding them to the DNS+-- configuration for your domain.+newDkimAttributes ::+  DkimAttributes+newDkimAttributes =+  DkimAttributes'+    { signingEnabled = Prelude.Nothing,+      status = Prelude.Nothing,+      tokens = Prelude.Nothing+    }++-- | If the value is @true@, then the messages that Amazon Pinpoint sends+-- from the identity are DKIM-signed. If the value is @false@, then the+-- messages that Amazon Pinpoint sends 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 Pinpoint has successfully located the+-- DKIM records in the DNS records for the domain. The status can be one of+-- the following:+--+-- -   @PENDING@ – Amazon Pinpoint hasn\'t yet located the DKIM records in+--     the DNS configuration for the domain, but will continue to attempt+--     to locate them.+--+-- -   @SUCCESS@ – Amazon Pinpoint located the DKIM records in the DNS+--     configuration for the domain and determined that they\'re correct.+--     Amazon Pinpoint can now send DKIM-signed email from the identity.+--+-- -   @FAILED@ – Amazon Pinpoint was unable to locate the DKIM records in+--     the DNS settings for the domain, and won\'t continue to search for+--     them.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon Pinpoint from determining the DKIM status for the domain.+--+-- -   @NOT_STARTED@ – Amazon Pinpoint hasn\'t yet started searching for+--     the DKIM records in the DKIM records 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)++-- | 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+-- Pinpoint detects these records in the DNS configuration for your domain,+-- the DKIM authentication process is complete. Amazon Pinpoint usually+-- detects these records within about 72 hours of adding them to the DNS+-- configuration for your domain.+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..:? "SigningEnabled")+            Prelude.<*> (x Data..:? "Status")+            Prelude.<*> (x Data..:? "Tokens" Data..!= Prelude.mempty)+      )++instance Prelude.Hashable DkimAttributes where+  hashWithSalt _salt DkimAttributes' {..} =+    _salt+      `Prelude.hashWithSalt` signingEnabled+      `Prelude.hashWithSalt` status+      `Prelude.hashWithSalt` tokens++instance Prelude.NFData DkimAttributes where+  rnf DkimAttributes' {..} =+    Prelude.rnf signingEnabled+      `Prelude.seq` Prelude.rnf status+      `Prelude.seq` Prelude.rnf tokens
+ gen/Amazonka/PinpointEmail/Types/DkimStatus.hs view
@@ -0,0 +1,105 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 DKIM verification process was initiated, and Amazon+--     Pinpoint is still waiting for the required CNAME records to appear+--     in the DNS configuration for the domain.+--+-- -   @SUCCESS@ – The DKIM authentication process completed successfully.+--+-- -   @FAILED@ – The DKIM authentication process failed. This can happen+--     when Amazon Pinpoint fails to find the required CNAME records in the+--     DNS configuration of the domain.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue is preventing Amazon+--     Pinpoint 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/PinpointEmail/Types/DomainDeliverabilityCampaign.hs view
@@ -0,0 +1,289 @@+{-# 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.PinpointEmail.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.PinpointEmail.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. Amazon Pinpoint automatically+    -- generates and assigns this identifier to a campaign. This value is not+    -- the same as the campaign identifier that Amazon Pinpoint assigns to+    -- campaigns that you create and manage by using the Amazon Pinpoint API or+    -- the Amazon Pinpoint console.+    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, in Unix time format, 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, in Unix time format, 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. Amazon Pinpoint automatically+-- generates and assigns this identifier to a campaign. This value is not+-- the same as the campaign identifier that Amazon Pinpoint assigns to+-- campaigns that you create and manage by using the Amazon Pinpoint API or+-- the Amazon Pinpoint console.+--+-- '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, in Unix time format, 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, in Unix time format, 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. Amazon Pinpoint automatically+-- generates and assigns this identifier to a campaign. This value is not+-- the same as the campaign identifier that Amazon Pinpoint assigns to+-- campaigns that you create and manage by using the Amazon Pinpoint API or+-- the Amazon Pinpoint console.+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, in Unix time format, 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, in Unix time format, 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.DomainDeliverabilityTrackingOption where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.InboxPlacementTrackingOption+import qualified Amazonka.Prelude as Prelude++-- | 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 AWS 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, in Unix time format, 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 AWS 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, in Unix time format, 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 AWS 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, in Unix time format, 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.EmailContent where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.Message+import Amazonka.PinpointEmail.Types.RawMessage+import Amazonka.PinpointEmail.Types.Template+import qualified Amazonka.Prelude as Prelude++-- | 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+    --     Amazon Pinpoint 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+--     Amazon Pinpoint 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+--     Amazon Pinpoint 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/PinpointEmail/Types/EventDestination.hs view
@@ -0,0 +1,205 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types.EventDestination where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.CloudWatchDestination+import Amazonka.PinpointEmail.Types.EventType+import Amazonka.PinpointEmail.Types.KinesisFirehoseDestination+import Amazonka.PinpointEmail.Types.PinpointDestination+import Amazonka.PinpointEmail.Types.SnsDestination+import qualified Amazonka.Prelude as Prelude++-- | In Amazon Pinpoint, /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.+--+-- /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 a Amazon Pinpoint destination for email events.+    -- You can use Amazon Pinpoint events to create attributes in Amazon+    -- Pinpoint projects. You can use these attributes to create segments for+    -- your campaigns.+    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 Pinpoint 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 a Amazon Pinpoint destination for email events.+-- You can use Amazon Pinpoint events to create attributes in Amazon+-- Pinpoint projects. You can use these attributes to create segments for+-- your campaigns.+--+-- '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 Pinpoint 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 a Amazon Pinpoint destination for email events.+-- You can use Amazon Pinpoint events to create attributes in Amazon+-- Pinpoint projects. You can use these attributes to create segments for+-- your campaigns.+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 Pinpoint 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/PinpointEmail/Types/EventDestinationDefinition.hs view
@@ -0,0 +1,190 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types.EventDestinationDefinition where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.CloudWatchDestination+import Amazonka.PinpointEmail.Types.EventType+import Amazonka.PinpointEmail.Types.KinesisFirehoseDestination+import Amazonka.PinpointEmail.Types.PinpointDestination+import Amazonka.PinpointEmail.Types.SnsDestination+import qualified Amazonka.Prelude as Prelude++-- | 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 Amazon Pinpoint should send to the+    -- destinations in this @EventDestinationDefinition@.+    matchingEventTypes :: Prelude.Maybe [EventType],+    -- | An object that defines a Amazon Pinpoint destination for email events.+    -- You can use Amazon Pinpoint events to create attributes in Amazon+    -- Pinpoint projects. You can use these attributes to create segments for+    -- your campaigns.+    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 Amazon Pinpoint should send to the+-- destinations in this @EventDestinationDefinition@.+--+-- 'pinpointDestination', 'eventDestinationDefinition_pinpointDestination' - An object that defines a Amazon Pinpoint destination for email events.+-- You can use Amazon Pinpoint events to create attributes in Amazon+-- Pinpoint projects. You can use these attributes to create segments for+-- your campaigns.+--+-- '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 Amazon Pinpoint 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 a Amazon Pinpoint destination for email events.+-- You can use Amazon Pinpoint events to create attributes in Amazon+-- Pinpoint projects. You can use these attributes to create segments for+-- your campaigns.+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/PinpointEmail/Types/EventType.hs view
@@ -0,0 +1,103 @@+{-# 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.PinpointEmail.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.PinpointEmail.Types.EventType+  ( EventType+      ( ..,+        EventType_BOUNCE,+        EventType_CLICK,+        EventType_COMPLAINT,+        EventType_DELIVERY,+        EventType_OPEN,+        EventType_REJECT,+        EventType_RENDERING_FAILURE,+        EventType_SEND+      ),+  )+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_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"++{-# COMPLETE+  EventType_BOUNCE,+  EventType_CLICK,+  EventType_COMPLAINT,+  EventType_DELIVERY,+  EventType_OPEN,+  EventType_REJECT,+  EventType_RENDERING_FAILURE,+  EventType_SEND,+  EventType'+  #-}
+ gen/Amazonka/PinpointEmail/Types/IdentityInfo.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.PinpointEmail.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.PinpointEmail.Types.IdentityInfo where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.IdentityType+import qualified Amazonka.Prelude as Prelude++-- | 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. The identity type can be one of the following:+    --+    -- -   @EMAIL_ADDRESS@ – The identity is an email address.+    --+    -- -   @DOMAIN@ – The identity is a domain.+    --+    -- -   @MANAGED_DOMAIN@ – The identity is a domain that is managed by AWS.+    identityType :: Prelude.Maybe IdentityType,+    -- | Indicates whether or not you can send email from the identity.+    --+    -- In Amazon Pinpoint, 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+    -- Pinpoint to send email from that identity.+    sendingEnabled :: Prelude.Maybe Prelude.Bool+  }+  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. The identity type can be one of the following:+--+-- -   @EMAIL_ADDRESS@ – The identity is an email address.+--+-- -   @DOMAIN@ – The identity is a domain.+--+-- -   @MANAGED_DOMAIN@ – The identity is a domain that is managed by AWS.+--+-- 'sendingEnabled', 'identityInfo_sendingEnabled' - Indicates whether or not you can send email from the identity.+--+-- In Amazon Pinpoint, 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+-- Pinpoint to send email from that identity.+newIdentityInfo ::+  IdentityInfo+newIdentityInfo =+  IdentityInfo'+    { identityName = Prelude.Nothing,+      identityType = Prelude.Nothing,+      sendingEnabled = 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. The identity type can be one of the following:+--+-- -   @EMAIL_ADDRESS@ – The identity is an email address.+--+-- -   @DOMAIN@ – The identity is a domain.+--+-- -   @MANAGED_DOMAIN@ – The identity is a domain that is managed by AWS.+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.+--+-- In Amazon Pinpoint, 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+-- Pinpoint 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)++instance Data.FromJSON IdentityInfo where+  parseJSON =+    Data.withObject+      "IdentityInfo"+      ( \x ->+          IdentityInfo'+            Prelude.<$> (x Data..:? "IdentityName")+            Prelude.<*> (x Data..:? "IdentityType")+            Prelude.<*> (x Data..:? "SendingEnabled")+      )++instance Prelude.Hashable IdentityInfo where+  hashWithSalt _salt IdentityInfo' {..} =+    _salt+      `Prelude.hashWithSalt` identityName+      `Prelude.hashWithSalt` identityType+      `Prelude.hashWithSalt` sendingEnabled++instance Prelude.NFData IdentityInfo where+  rnf IdentityInfo' {..} =+    Prelude.rnf identityName+      `Prelude.seq` Prelude.rnf identityType+      `Prelude.seq` Prelude.rnf sendingEnabled
+ gen/Amazonka/PinpointEmail/Types/IdentityType.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.PinpointEmail.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.PinpointEmail.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++-- | The email identity type. The identity type can be one of the following:+--+-- -   @EMAIL_ADDRESS@ – The identity is an email address.+--+-- -   @DOMAIN@ – The identity is a domain.+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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 AWS account.+-- This data is available only if you enabled the Deliverability dashboard+-- for the domain (@PutDeliverabilityDashboardOption@ operation).+--+-- /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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.IspPlacement where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.PlacementStatistics+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazon Pinpoint uses+    -- when sending 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 Amazon Pinpoint 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 Amazon Pinpoint uses+-- when sending 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 Amazon Pinpoint 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 Amazon Pinpoint uses+-- when sending 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 Amazon Pinpoint 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.MailFromAttributes where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.BehaviorOnMxFailure+import Amazonka.PinpointEmail.Types.MailFromDomainStatus+import qualified Amazonka.Prelude as Prelude++-- | 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 Pinpoint hasn\'t started searching for the MX+    --     record yet.+    --+    -- -   @SUCCESS@ – Amazon Pinpoint detected the required MX record for the+    --     MAIL FROM domain.+    --+    -- -   @FAILED@ – Amazon Pinpoint can\'t find the required MX record, or+    --     the record no longer exists.+    --+    -- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+    --     Amazon Pinpoint from determining the status of the MAIL FROM domain.+    mailFromDomainStatus :: MailFromDomainStatus,+    -- | The action that Amazon Pinpoint to takes if it can\'t read the required+    -- MX record for a custom MAIL FROM domain. When you set this value to+    -- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+    -- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+    -- 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 Pinpoint hasn\'t started searching for the MX+--     record yet.+--+-- -   @SUCCESS@ – Amazon Pinpoint detected the required MX record for the+--     MAIL FROM domain.+--+-- -   @FAILED@ – Amazon Pinpoint can\'t find the required MX record, or+--     the record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon Pinpoint from determining the status of the MAIL FROM domain.+--+-- 'behaviorOnMxFailure', 'mailFromAttributes_behaviorOnMxFailure' - The action that Amazon Pinpoint to takes if it can\'t read the required+-- MX record for a custom MAIL FROM domain. When you set this value to+-- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+-- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+-- 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 Pinpoint hasn\'t started searching for the MX+--     record yet.+--+-- -   @SUCCESS@ – Amazon Pinpoint detected the required MX record for the+--     MAIL FROM domain.+--+-- -   @FAILED@ – Amazon Pinpoint can\'t find the required MX record, or+--     the record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon Pinpoint 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 that Amazon Pinpoint to takes if it can\'t read the required+-- MX record for a custom MAIL FROM domain. When you set this value to+-- @UseDefaultValue@, Amazon Pinpoint uses /amazonses.com/ as the MAIL FROM+-- domain. When you set this value to @RejectMessage@, Amazon Pinpoint+-- 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Pinpoint hasn\'t started searching for the MX+--     record yet.+--+-- -   @SUCCESS@ – Amazon Pinpoint detected the required MX record for the+--     MAIL FROM domain.+--+-- -   @FAILED@ – Amazon Pinpoint can\'t find the required MX record, or+--     the record no longer exists.+--+-- -   @TEMPORARY_FAILURE@ – A temporary issue occurred, which prevented+--     Amazon Pinpoint 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.Message where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.Body+import Amazonka.PinpointEmail.Types.Content+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Types.OverallVolume where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Types.DomainIspPlacement+import Amazonka.PinpointEmail.Types.VolumeStatistics+import qualified Amazonka.Prelude as Prelude++-- | 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/PinpointEmail/Types/PinpointDestination.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.PinpointEmail.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.PinpointEmail.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 a Amazon Pinpoint destination for email events.+-- You can use Amazon Pinpoint events to create attributes in Amazon+-- Pinpoint projects. You can use these attributes to create segments for+-- your campaigns.+--+-- /See:/ 'newPinpointDestination' smart constructor.+data PinpointDestination = PinpointDestination'+  { -- | The Amazon Resource Name (ARN) of the Amazon Pinpoint project that you+    -- want 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 that you+-- want to send email events to.+newPinpointDestination ::+  PinpointDestination+newPinpointDestination =+  PinpointDestination'+    { applicationArn =+        Prelude.Nothing+    }++-- | The Amazon Resource Name (ARN) of the Amazon Pinpoint project that you+-- want 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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++-- | The raw 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 Amazon Pinpoint 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 Amazon Pinpoint 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 Amazon Pinpoint 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/PinpointEmail/Types/ReputationOptions.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.PinpointEmail.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.PinpointEmail.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 AWS 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/PinpointEmail/Types/SendQuota.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.PinpointEmail.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.PinpointEmail.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 Pinpoint account in the current AWS+-- Region.+--+-- /See:/ 'newSendQuota' smart constructor.+data SendQuota = SendQuota'+  { -- | The maximum number of emails that you can send in the current AWS Region+    -- over a 24-hour period. This value is also called your /sending quota/.+    max24HourSend :: Prelude.Maybe Prelude.Double,+    -- | The maximum number of emails that you can send per second in the current+    -- AWS 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 Pinpoint account in the+    -- current AWS 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 AWS Region+-- over a 24-hour period. This value is also called your /sending quota/.+--+-- 'maxSendRate', 'sendQuota_maxSendRate' - The maximum number of emails that you can send per second in the current+-- AWS 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 Pinpoint account in the+-- current AWS 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 AWS Region+-- over a 24-hour period. This value is also called 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+-- AWS 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 Pinpoint account in the+-- current AWS 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 AWS 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/PinpointEmail/Types/SnsDestination.hs view
@@ -0,0 +1,86 @@+{-# 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.PinpointEmail.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.PinpointEmail.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 that you want 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 that you want 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 that you want 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/PinpointEmail/Types/Tag.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.PinpointEmail.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.PinpointEmail.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 in Amazon Pinpoint. 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 AWS; 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 AWS account, not any other accounts that+--     share the resource. In addition, the tags are available only for+--     resources that are located in the specified AWS Region for your AWS+--     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. Amazon Pinpoint will set 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. Amazon Pinpoint will set 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. Amazon Pinpoint will set 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/PinpointEmail/Types/Template.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.PinpointEmail.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.PinpointEmail.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++-- | /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+  }+  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.+newTemplate ::+  Template+newTemplate =+  Template'+    { templateArn = Prelude.Nothing,+      templateData = 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)++instance Prelude.Hashable Template where+  hashWithSalt _salt Template' {..} =+    _salt+      `Prelude.hashWithSalt` templateArn+      `Prelude.hashWithSalt` templateData++instance Prelude.NFData Template where+  rnf Template' {..} =+    Prelude.rnf templateArn+      `Prelude.seq` Prelude.rnf templateData++instance Data.ToJSON Template where+  toJSON Template' {..} =+    Data.object+      ( Prelude.catMaybes+          [ ("TemplateArn" Data..=) Prelude.<$> templateArn,+            ("TemplateData" Data..=) Prelude.<$> templateData+          ]+      )
+ gen/Amazonka/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazon Pinpoint 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 AWS.+-- You can optionally configure Amazon Pinpoint to use a domain that you+-- operate for these images and links.+--+-- /See:/ 'newTrackingOptions' smart constructor.+data TrackingOptions = TrackingOptions'+  { -- | The domain that you want 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 that you want to use for tracking open and click events.+newTrackingOptions ::+  -- | 'customRedirectDomain'+  Prelude.Text ->+  TrackingOptions+newTrackingOptions pCustomRedirectDomain_ =+  TrackingOptions'+    { customRedirectDomain =+        pCustomRedirectDomain_+    }++-- | The domain that you want 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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | /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:+    -- @\/v1\/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:+-- @\/v1\/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:+-- @\/v1\/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 "/v1/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/PinpointEmail/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.PinpointEmail.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.+--+-- In Amazon Pinpoint, /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.PinpointEmail.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 Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude+import qualified Amazonka.Request as Request+import qualified Amazonka.Response as Response++-- | 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+    -- that you want to modify.+    configurationSetName :: Prelude.Text,+    -- | The name of the event destination that you want to modify.+    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+-- that you want to modify.+--+-- 'eventDestinationName', 'updateConfigurationSetEventDestination_eventDestinationName' - The name of the event destination that you want to modify.+--+-- '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+-- that you want 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 that you want to modify.+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+      [ "/v1/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/PinpointEmail/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.PinpointEmail.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.PinpointEmail.Waiters where++import qualified Amazonka.Core as Core+import qualified Amazonka.Core.Lens.Internal as Lens+import qualified Amazonka.Data as Data+import Amazonka.PinpointEmail.Lens+import Amazonka.PinpointEmail.Types+import qualified Amazonka.Prelude as Prelude
+ 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.PinpointEmail+import Test.Amazonka.PinpointEmail.Internal+import Test.Tasty++main :: IO ()+main =+  defaultMain $+    testGroup+      "PinpointEmail"+      [ testGroup "tests" tests,+        testGroup "fixtures" fixtures+      ]
+ test/Test/Amazonka/Gen/PinpointEmail.hs view
@@ -0,0 +1,878 @@+{-# 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.PinpointEmail+-- 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.PinpointEmail where++import Amazonka.PinpointEmail+import qualified Data.Proxy as Proxy+import Test.Amazonka.Fixture+import Test.Amazonka.PinpointEmail.Internal+import Test.Amazonka.Prelude+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"+--         [ requestCreateConfigurationSet $+--             newCreateConfigurationSet+--+--         , requestCreateConfigurationSetEventDestination $+--             newCreateConfigurationSetEventDestination+--+--         , requestCreateDedicatedIpPool $+--             newCreateDedicatedIpPool+--+--         , requestCreateDeliverabilityTestReport $+--             newCreateDeliverabilityTestReport+--+--         , requestCreateEmailIdentity $+--             newCreateEmailIdentity+--+--         , requestDeleteConfigurationSet $+--             newDeleteConfigurationSet+--+--         , requestDeleteConfigurationSetEventDestination $+--             newDeleteConfigurationSetEventDestination+--+--         , requestDeleteDedicatedIpPool $+--             newDeleteDedicatedIpPool+--+--         , requestDeleteEmailIdentity $+--             newDeleteEmailIdentity+--+--         , requestGetAccount $+--             newGetAccount+--+--         , requestGetBlacklistReports $+--             newGetBlacklistReports+--+--         , requestGetConfigurationSet $+--             newGetConfigurationSet+--+--         , requestGetConfigurationSetEventDestinations $+--             newGetConfigurationSetEventDestinations+--+--         , requestGetDedicatedIp $+--             newGetDedicatedIp+--+--         , requestGetDedicatedIps $+--             newGetDedicatedIps+--+--         , requestGetDeliverabilityDashboardOptions $+--             newGetDeliverabilityDashboardOptions+--+--         , requestGetDeliverabilityTestReport $+--             newGetDeliverabilityTestReport+--+--         , requestGetDomainDeliverabilityCampaign $+--             newGetDomainDeliverabilityCampaign+--+--         , requestGetDomainStatisticsReport $+--             newGetDomainStatisticsReport+--+--         , requestGetEmailIdentity $+--             newGetEmailIdentity+--+--         , requestListConfigurationSets $+--             newListConfigurationSets+--+--         , requestListDedicatedIpPools $+--             newListDedicatedIpPools+--+--         , requestListDeliverabilityTestReports $+--             newListDeliverabilityTestReports+--+--         , requestListDomainDeliverabilityCampaigns $+--             newListDomainDeliverabilityCampaigns+--+--         , requestListEmailIdentities $+--             newListEmailIdentities+--+--         , requestListTagsForResource $+--             newListTagsForResource+--+--         , requestPutAccountDedicatedIpWarmupAttributes $+--             newPutAccountDedicatedIpWarmupAttributes+--+--         , requestPutAccountSendingAttributes $+--             newPutAccountSendingAttributes+--+--         , requestPutConfigurationSetDeliveryOptions $+--             newPutConfigurationSetDeliveryOptions+--+--         , requestPutConfigurationSetReputationOptions $+--             newPutConfigurationSetReputationOptions+--+--         , requestPutConfigurationSetSendingOptions $+--             newPutConfigurationSetSendingOptions+--+--         , requestPutConfigurationSetTrackingOptions $+--             newPutConfigurationSetTrackingOptions+--+--         , requestPutDedicatedIpInPool $+--             newPutDedicatedIpInPool+--+--         , requestPutDedicatedIpWarmupAttributes $+--             newPutDedicatedIpWarmupAttributes+--+--         , requestPutDeliverabilityDashboardOption $+--             newPutDeliverabilityDashboardOption+--+--         , requestPutEmailIdentityDkimAttributes $+--             newPutEmailIdentityDkimAttributes+--+--         , requestPutEmailIdentityFeedbackAttributes $+--             newPutEmailIdentityFeedbackAttributes+--+--         , requestPutEmailIdentityMailFromAttributes $+--             newPutEmailIdentityMailFromAttributes+--+--         , requestSendEmail $+--             newSendEmail+--+--         , requestTagResource $+--             newTagResource+--+--         , requestUntagResource $+--             newUntagResource+--+--         , requestUpdateConfigurationSetEventDestination $+--             newUpdateConfigurationSetEventDestination+--+--           ]++--     , testGroup "response"+--         [ responseCreateConfigurationSet $+--             newCreateConfigurationSetResponse+--+--         , responseCreateConfigurationSetEventDestination $+--             newCreateConfigurationSetEventDestinationResponse+--+--         , responseCreateDedicatedIpPool $+--             newCreateDedicatedIpPoolResponse+--+--         , responseCreateDeliverabilityTestReport $+--             newCreateDeliverabilityTestReportResponse+--+--         , responseCreateEmailIdentity $+--             newCreateEmailIdentityResponse+--+--         , responseDeleteConfigurationSet $+--             newDeleteConfigurationSetResponse+--+--         , responseDeleteConfigurationSetEventDestination $+--             newDeleteConfigurationSetEventDestinationResponse+--+--         , responseDeleteDedicatedIpPool $+--             newDeleteDedicatedIpPoolResponse+--+--         , responseDeleteEmailIdentity $+--             newDeleteEmailIdentityResponse+--+--         , responseGetAccount $+--             newGetAccountResponse+--+--         , responseGetBlacklistReports $+--             newGetBlacklistReportsResponse+--+--         , responseGetConfigurationSet $+--             newGetConfigurationSetResponse+--+--         , responseGetConfigurationSetEventDestinations $+--             newGetConfigurationSetEventDestinationsResponse+--+--         , responseGetDedicatedIp $+--             newGetDedicatedIpResponse+--+--         , responseGetDedicatedIps $+--             newGetDedicatedIpsResponse+--+--         , responseGetDeliverabilityDashboardOptions $+--             newGetDeliverabilityDashboardOptionsResponse+--+--         , responseGetDeliverabilityTestReport $+--             newGetDeliverabilityTestReportResponse+--+--         , responseGetDomainDeliverabilityCampaign $+--             newGetDomainDeliverabilityCampaignResponse+--+--         , responseGetDomainStatisticsReport $+--             newGetDomainStatisticsReportResponse+--+--         , responseGetEmailIdentity $+--             newGetEmailIdentityResponse+--+--         , responseListConfigurationSets $+--             newListConfigurationSetsResponse+--+--         , responseListDedicatedIpPools $+--             newListDedicatedIpPoolsResponse+--+--         , responseListDeliverabilityTestReports $+--             newListDeliverabilityTestReportsResponse+--+--         , responseListDomainDeliverabilityCampaigns $+--             newListDomainDeliverabilityCampaignsResponse+--+--         , responseListEmailIdentities $+--             newListEmailIdentitiesResponse+--+--         , responseListTagsForResource $+--             newListTagsForResourceResponse+--+--         , responsePutAccountDedicatedIpWarmupAttributes $+--             newPutAccountDedicatedIpWarmupAttributesResponse+--+--         , responsePutAccountSendingAttributes $+--             newPutAccountSendingAttributesResponse+--+--         , responsePutConfigurationSetDeliveryOptions $+--             newPutConfigurationSetDeliveryOptionsResponse+--+--         , responsePutConfigurationSetReputationOptions $+--             newPutConfigurationSetReputationOptionsResponse+--+--         , responsePutConfigurationSetSendingOptions $+--             newPutConfigurationSetSendingOptionsResponse+--+--         , responsePutConfigurationSetTrackingOptions $+--             newPutConfigurationSetTrackingOptionsResponse+--+--         , responsePutDedicatedIpInPool $+--             newPutDedicatedIpInPoolResponse+--+--         , responsePutDedicatedIpWarmupAttributes $+--             newPutDedicatedIpWarmupAttributesResponse+--+--         , responsePutDeliverabilityDashboardOption $+--             newPutDeliverabilityDashboardOptionResponse+--+--         , responsePutEmailIdentityDkimAttributes $+--             newPutEmailIdentityDkimAttributesResponse+--+--         , responsePutEmailIdentityFeedbackAttributes $+--             newPutEmailIdentityFeedbackAttributesResponse+--+--         , responsePutEmailIdentityMailFromAttributes $+--             newPutEmailIdentityMailFromAttributesResponse+--+--         , responseSendEmail $+--             newSendEmailResponse+--+--         , responseTagResource $+--             newTagResourceResponse+--+--         , responseUntagResource $+--             newUntagResourceResponse+--+--         , responseUpdateConfigurationSetEventDestination $+--             newUpdateConfigurationSetEventDestinationResponse+--+--           ]+--     ]++-- Requests++requestCreateConfigurationSet :: CreateConfigurationSet -> TestTree+requestCreateConfigurationSet =+  req+    "CreateConfigurationSet"+    "fixture/CreateConfigurationSet.yaml"++requestCreateConfigurationSetEventDestination :: CreateConfigurationSetEventDestination -> TestTree+requestCreateConfigurationSetEventDestination =+  req+    "CreateConfigurationSetEventDestination"+    "fixture/CreateConfigurationSetEventDestination.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"++requestDeleteConfigurationSet :: DeleteConfigurationSet -> TestTree+requestDeleteConfigurationSet =+  req+    "DeleteConfigurationSet"+    "fixture/DeleteConfigurationSet.yaml"++requestDeleteConfigurationSetEventDestination :: DeleteConfigurationSetEventDestination -> TestTree+requestDeleteConfigurationSetEventDestination =+  req+    "DeleteConfigurationSetEventDestination"+    "fixture/DeleteConfigurationSetEventDestination.yaml"++requestDeleteDedicatedIpPool :: DeleteDedicatedIpPool -> TestTree+requestDeleteDedicatedIpPool =+  req+    "DeleteDedicatedIpPool"+    "fixture/DeleteDedicatedIpPool.yaml"++requestDeleteEmailIdentity :: DeleteEmailIdentity -> TestTree+requestDeleteEmailIdentity =+  req+    "DeleteEmailIdentity"+    "fixture/DeleteEmailIdentity.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"++requestGetDedicatedIp :: GetDedicatedIp -> TestTree+requestGetDedicatedIp =+  req+    "GetDedicatedIp"+    "fixture/GetDedicatedIp.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"++requestListConfigurationSets :: ListConfigurationSets -> TestTree+requestListConfigurationSets =+  req+    "ListConfigurationSets"+    "fixture/ListConfigurationSets.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"++requestListTagsForResource :: ListTagsForResource -> TestTree+requestListTagsForResource =+  req+    "ListTagsForResource"+    "fixture/ListTagsForResource.yaml"++requestPutAccountDedicatedIpWarmupAttributes :: PutAccountDedicatedIpWarmupAttributes -> TestTree+requestPutAccountDedicatedIpWarmupAttributes =+  req+    "PutAccountDedicatedIpWarmupAttributes"+    "fixture/PutAccountDedicatedIpWarmupAttributes.yaml"++requestPutAccountSendingAttributes :: PutAccountSendingAttributes -> TestTree+requestPutAccountSendingAttributes =+  req+    "PutAccountSendingAttributes"+    "fixture/PutAccountSendingAttributes.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"++requestPutConfigurationSetTrackingOptions :: PutConfigurationSetTrackingOptions -> TestTree+requestPutConfigurationSetTrackingOptions =+  req+    "PutConfigurationSetTrackingOptions"+    "fixture/PutConfigurationSetTrackingOptions.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"++requestPutEmailIdentityDkimAttributes :: PutEmailIdentityDkimAttributes -> TestTree+requestPutEmailIdentityDkimAttributes =+  req+    "PutEmailIdentityDkimAttributes"+    "fixture/PutEmailIdentityDkimAttributes.yaml"++requestPutEmailIdentityFeedbackAttributes :: PutEmailIdentityFeedbackAttributes -> TestTree+requestPutEmailIdentityFeedbackAttributes =+  req+    "PutEmailIdentityFeedbackAttributes"+    "fixture/PutEmailIdentityFeedbackAttributes.yaml"++requestPutEmailIdentityMailFromAttributes :: PutEmailIdentityMailFromAttributes -> TestTree+requestPutEmailIdentityMailFromAttributes =+  req+    "PutEmailIdentityMailFromAttributes"+    "fixture/PutEmailIdentityMailFromAttributes.yaml"++requestSendEmail :: SendEmail -> TestTree+requestSendEmail =+  req+    "SendEmail"+    "fixture/SendEmail.yaml"++requestTagResource :: TagResource -> TestTree+requestTagResource =+  req+    "TagResource"+    "fixture/TagResource.yaml"++requestUntagResource :: UntagResource -> TestTree+requestUntagResource =+  req+    "UntagResource"+    "fixture/UntagResource.yaml"++requestUpdateConfigurationSetEventDestination :: UpdateConfigurationSetEventDestination -> TestTree+requestUpdateConfigurationSetEventDestination =+  req+    "UpdateConfigurationSetEventDestination"+    "fixture/UpdateConfigurationSetEventDestination.yaml"++-- Responses++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)++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)++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)++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)++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)++responseGetDedicatedIp :: GetDedicatedIpResponse -> TestTree+responseGetDedicatedIp =+  res+    "GetDedicatedIpResponse"+    "fixture/GetDedicatedIpResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy GetDedicatedIp)++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)++responseListConfigurationSets :: ListConfigurationSetsResponse -> TestTree+responseListConfigurationSets =+  res+    "ListConfigurationSetsResponse"+    "fixture/ListConfigurationSetsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy ListConfigurationSets)++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)++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)++responsePutAccountSendingAttributes :: PutAccountSendingAttributesResponse -> TestTree+responsePutAccountSendingAttributes =+  res+    "PutAccountSendingAttributesResponse"+    "fixture/PutAccountSendingAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutAccountSendingAttributes)++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)++responsePutConfigurationSetTrackingOptions :: PutConfigurationSetTrackingOptionsResponse -> TestTree+responsePutConfigurationSetTrackingOptions =+  res+    "PutConfigurationSetTrackingOptionsResponse"+    "fixture/PutConfigurationSetTrackingOptionsResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutConfigurationSetTrackingOptions)++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)++responsePutEmailIdentityDkimAttributes :: PutEmailIdentityDkimAttributesResponse -> TestTree+responsePutEmailIdentityDkimAttributes =+  res+    "PutEmailIdentityDkimAttributesResponse"+    "fixture/PutEmailIdentityDkimAttributesResponse.proto"+    defaultService+    (Proxy.Proxy :: Proxy.Proxy PutEmailIdentityDkimAttributes)++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)++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)++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)
+ test/Test/Amazonka/PinpointEmail.hs view
@@ -0,0 +1,20 @@+-- |+-- Module      : Test.Amazonka.PinpointEmail+-- 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.PinpointEmail+  ( tests,+    fixtures,+  )+where++import Test.Tasty (TestTree)++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/Amazonka/PinpointEmail/Internal.hs view
@@ -0,0 +1,8 @@+-- |+-- Module      : Test.Amazonka.PinpointEmail.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.PinpointEmail.Internal where